본문 바로가기

NETWORK

JWT이해하기(RSA암호화 방식, RFC에 대하여)

https://www.youtube.com/watch?v=edyjcg7_Lyc&list=PL93mKxaRDidERCyMaobSLkvSPzYtIk0Ah&index=16

내가  정처기 공부하며 배운 것처럼 RSA암호화 방식은 양방향 암호화 방식중 비대칭 암호화 방식(공개키 암호화 방식)이다.  공개키 암호화 방식은 기존의 열쇠전달 문제와 인증 문제를 해결할 수 있다.

A가 B에게 비밀 내용을 전달하려면 B의 공개키로 메시지를 암호화 한다. 이것은 B개인키를 가지고 있는 사람만 풀수 있다. 반대로B가 A에게 답장을 보내려고 할때는 A의 공개키로 메시지를 암호화 해야 하고 이것은 A개인키를 가지고 있는 사람만이 열어볼 수 있다. 이와 같은 방식을 통해 열쇠전달 문제가 해결된다.

 

다음으로 아래와 같은 예를 보자. A가 B에게 "A가 C에게 1억을 송금했습니다"라는 내용을 보낼려고 한다. 이 메시지는 A의 개인키로 암호화한다. 그리고 이는 A의 개인키로 암호화 하였기 때문에 A의 공개키로 이것을 풀어 볼수 있다. 즉 공개키를 얼마든지 획득할 수 있는 해커가 이 내용을 얼마든지 가로챌수 있다는 것이다.

여기서 중요한 개념이 개인키로 잠그면 공개키로 열어볼 수 있고 공개키로 잠그면 개인키로 열어 볼수 있다는 것이다. 그리고 개인키로 잠갔다는 것은 전자문서의 서명(인증)을 구현하는 것이고 (인증문제 해결) 공개키로 잠갔다는 것은 암호화를 의미한다는 것(열쇠전달 문제 해결)!!!이것이 RSA입니다!! 

개인키로 잠그면 공개키로 열어볼 수 있고 공개키로 잠그면 개인키로 열어 볼수 있습니다(천생연분). 이것이 RSA입니다.

개인키로 잠그면 인증문제를 해결할 수 있습니다.

 

마지막으로 RSA에 대해 총체적으로 정리하면 이렇다. A가 B에게 아래 그림과 같이 메시지를 전송하려는 상황이다. B의 공개키로 내용을 암호화하고 그것을 A의 개인키로 서명한 내용으로 감싼다. 이러한 문서를 B가 받았다. 우선은 A의 공개키로 열어보고(말 그대로 공개되어 있는 키이므로) 열리면 인증이 되는 것이고 열리지 않으면 인증이 되지 않는 것이므로 더 볼 가치가 없는 것이다. 인증이 되었다면 B의 공개키로 암호화된 메시지를 B의 개인키를 가지고 있는 B가 열어보는 것이다. 이렇게 인증과 암호화된 내용을 확인, 둘다 만족할 수 있는 것이다.

즉 RSA암호화 방식이란 B의 공개키로 먼저 감싸고 A의 개인키로 한번더 감싸는 것이다!!!

 

인터넷은 RFC문서(약속, 프로토콜)들의 모임으로 만들어져 있다. JWT는 RFC7519번 문서에 만들어진 약속이다.