작성
·
310
답변 1
11
안녕하세요. 손지우 님, 공식 서포터즈 codesweaver 입니다.
.
암호화는 과거부터 현대에 이르기까지 메시지를 제3자에게 노출되지 않도록 하기 위해 사용합니다. 암호화의 방식은 아시다시피 두가지가 있습니다.
1 대칭키: 암호화와 복호화에 동일한 키를 사용.
2 비대칭키: 암호화와 복호화에 다른 키를 사용.
.
대칭키의 문제는 A가 B에게 암호화된 메시지를 전달할 때 이를 풀 수 있는 '키'도 같이 전달해야 한다는 점입니다. 만약 이 메시지를 중간에 누가 가로챈다면, 암호를 풀 수 있는 중요한 키도 같이 빼았기게 됩니다.
.
이런 문제를 해결하기 위해 비대칭 키 암호화를 사용합니다. 비대칭 키 암호화는 '공개키'(public key)와 '비공개 키'(private key)를 사용합니다. 핵심은 '공개 키'로 암호화 한 문서는 '비공개 키'로만 복호화가 가능하다는 점입니다. 그래서 공개 키는 모두에게 노출하되, 비밀 키는 외부에 노출하지 않도록 해야 합니다.
.
클라이언트가 서버에 접속을 요청합니다.
서버가 인증서를 클라이언트에 전달합니다. (여기에 서버의 공개 키를 포함합니다).
클라이언트는 이 인증서를 검증하고 서버의 '공개 키'로 자신의 요청 데이터를 암호화 해서 전송합니다.
3-1. 이 응답엔 클라이언트의 공개 키가 포함되어 있습니다.
서버는 암호화된 데이터를 자신의 '비밀 키'로 해독하여 적절한 처리를 진행합니다.
서버는 클라이언트의 '공개 키'로 자신의 응답값을 암호화 하여 전송합니다.
클라이언트는 서버의 응답을 자신의 '비밀 키'로 해독하여 처리합니다.
.
만약 해커가 중간에 이런 요청과 응답을 탈취했다고 가정하겠습니다. 그렇다면 해커는 암호화 된 데이터와 '공개 키'를 손에 넣을 수 있습니다. 그러나 비밀 키는 손에 넣을 수 없습니다. (요청과 응답 어느쪽에서도 비밀 키를 전달한적이 없기 때문입니다) 해커가 탈취한 데이터를 복호화 하기 위해선 서버를 추가적으로 해킹해야 하니 메시지를 탈취하기 위한 난이도가 높아집니다.
.
HTTPS는 이런 암호화 과정이 추가 되었을 뿐, 그 외에 동작방식은 HTTP와 동일합니다. stateless 특징이 적용되는 것도 동일합니다.
.
대칭키를 이용한 방법이라고 말씀하신 것은 세션 키(Session key)를 말씀하신것 같습니다. 저도 세션 키에 대해서는 답변을 위해 조사하다 알게 되어 정확하지 않을 수 있으나, HTTPS 로 인증 과정을 거친 이후, 세션 키를 발행하여 대칭 키 암호화를 사용하는 것으로 보입니다. 말씀하신 것처럼 대칭키 암호화가 속도면에서 월등히 빠르기 때문입니다. 속도를 최적화 하기 위한 방법중 하나라는 생각이 듭니다.
세션키와 HTTPS인증에 대한 자세한 이미지와 내용은 아래의 링크를 참조하시기 바랍니다.
What is a session key and how does it work? (techtarget.com)
.
감사합니다.