Security

1. HS256과 RS256은 무엇일까?

쩨비 2021. 11. 25. 17:06
728x90

HS256과 RS256의 차이는 무엇일까? 

 

위의 궁금증을 갖게 된 이유는 JWT로 생성된 Token을 가지고 인터페이스 인증을 하다 JWT 변환 방식에 HS256과 RS256이 있음을 알고 포스팅을 하게 되었다. 추후 JWT에 대해서도 다룰 기회가 있으면 좋겠다.

 

1. 해싱이란?

   - 임의의 길이로 데이터를 고정된 길이의 값으로 암호화 하여 바꾸며 변경된 코드는 항상 동일하다.

   - 해싱은 단방향으로 암호화를 하면 복호화를 할 수 없다.

2. HS256 이란?

    - HS256은 HMAC SHA256의 합성어이다. 그렇다면 HMAC와 SHA256에 대해서도 공부가 필요할 것으로 보인다.

    2-1. HMAC이란?

        Hash-based Message Authentication Code 로 해싱된 검증코드를 통한 대칭키, 대칭비교를 통해 검증을 한다

    2-2. SHA256이란?

        Secure Hash Algorithm으로 여러 해시 함수의 종류중 하나이다. 

 

    * 결론적으로 SHA256이란 함수로 해싱된 인증코드를 베이스로한 인증방식이다 라고 보면될것 같다. 

 

3. RS256(RSA + SHA256) 이란?

    - 위의 HS256은 대칭키 방식으로 하지만 RS256은 비대칭키 방식으로 인증을 진행한다.

    3-1. RSA

        RSA인증방식을 개발한 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir),

        레너드 애들먼(Leonard Adleman) 의 앞글자를 따서 RSA라고 한다. 공개키(Public key)와

        비밀키(Private key)를 사용하여 인증을 한다.

        쉽게설명하면 인증방식에는 2가지가 있다.

        (1) 인증요청을 할 A서버의 Public key를 가지고 내용을 암호화해 A서버에 보내면 A서버는 Private key를

            사용해 복호화를 하여 안에 내용을 볼 수 있다.

        (2) 인증요청할 A 서버에서 내용을 Private key를 가지고 내용을 암호화해 Public key와 함께 요청자에게

             보낸다. 요청자가 가지고 있는 Public key를 사용해 내용을 복후화 하고 인증을 한다. (전자서명)

             (

              예시 :  금융기관 로그인시 공동인증서 로그인을 한다. 그러면 공동인증서에서는 Public key와 사용자 정보

                        가 담긴 private key로 암호화된 데이터를 보내줄것이다. 그러면 로그인한 요청자는 Public key로

                         private key를 복후화 한후 로그인을 진행한다.

             )

 

자세한건    

https://blog.naver.com/PostView.naver?blogId=chodahi&logNo=221385524980 블로그를 참고하도록 하자

 

공부를 하며 햇걸렸던 부분은 JWT사용시 알고리즘을 HS256으로 했는데 왜 DECODE가 될까 였다.

바보같은 생각이였는데 JWT는 BASE64기반으로 Encoding 하고 VERIFY SIGNATURE(서명확인) 인증 파트 부분만 HS256으로 Encoding 한다는 의미였다.

728x90