[Security] JWT - 이해하기 1(RSA)
RSA란?
- 공개키로 암호화하는 시스템의 하나로 개인키 개념까지 넣어 전자서명으로 인증까지 해결하는 알고리즘이다.
말이 너무 어려워 그림과 함께 천천히 내용을 풀어보려고 한다.
이 개념을 이해하려면 공개키와 개인키의 의미를 알아야 하고 각 키고 문서를 암호화했을 때 어떻게 열 수 있는지 까지 알아야 한다.!!
공개키(public key)
- 공개키는 말 그대로 공개해도 되는 키로 블로그 나 아무 사이트에나 공개가 가능하다!!
- 공개키로 문서를 암호화하고 개인키로 이 문서를 열 수가 있다.
이때 공개키는 전달하려는 상대의 공개키를 사용하여 암호화해야 하고 이 암호화 문서를 풀기 위한 키도 상대방의
개인키 여야 한다!!
* 공개키만 사용하였을 때 문제점
- 해당 메시지를 A가 보냈는지 해커가 보냈는지 알 수없다. 즉 , 전자서명에 인증 부분을 해결할 수 없게 된다.
- 인증 부분까지 해결하기 위해 개인키로 전자서명을 해야 한다.
개인키(private key)
- 개인키는 꼭 본인만 알고 있어야 하고 절대 어디서든 공개해서는 안 되는 키이다.
- 공개키 만으로는 해결이 되지 않는 인증 부분을 해결하기 위해 사용된다! 즉 , 이 메시지는 내가 보낸 게 맞다!!라고 상대방에게 알려주어 상대방이 누구로부터 온 건지 알 수가 있게 해 준다.
- 사진에서 B가 A의 개인키로 암 호호된 메시지를 보려면 A의 공개키로 암호화를 풀어야 한다 이때 A의 공개키로 풀리면 A가 보낸 게 맞다고 인증 처리가 된다.
* 공개키를 이용하여 해커가 메세지를 본다면?
- 개인키를 통한 암호화 처리는 인증에 대한 것만 처리하기에 메시지를 보건 말건은 신경 쓸 필요 없다.
예를 들어 아래 사진에서 해커가 메시지를 봤더니 "안녕 친구?"라는 메시지가 있었다. 근데 그걸 봐서 봐서
뭐 어쩔 거냐는 거다. 근데 비밀번호 같은 비밀 데이터를 보낼 때는 문제가 되어 다음 설명할 부분에서 해결하는
예를 보여줄 것이다.
개인키 + 공개키 로 인증과 암호화 처리 하기
- B가 메시지 블록을 받게되면
A의 공개키를 이용하여 개인키로 암호화된것을 품 -> 인증 해결
만약 안풀린다면 A가 보낸게 아니므로 더 이상 가치가 없어 버린다.
만약 풀린다면 이어서 B의 개인키로 암호화를 품 -> 암호화 해결
풀어서 나온 데이터를 B가 확인함
* 해커가 탈취할 경우?
- 탈취하더라도 안에 데이터는 B의 개인키를 모르니 알 수가 없고 A의 공개키로 인증단계를 파괴하여 해커의 개인키로 다시 묶어서 보낸다 한들 B가 A의 공개키로 열리지 않으면 이건 조작된 것이고 A가 보낸 게 아니라고 판단할 수 있어 해커가 더 이상 무언가 할 수 있는 게 없다.