💡 HTTPS는 대칭키와 비대칭키 방식을 이용해 데이터를 암호화한다!
대칭키와 비대칭키
대칭키(one key): 암/복호화 키가 동일한 키, 키가 1개
비대칭키(two key): 암호화, 복호화 키가 서로 다른 경우, 키가 2개
대칭키 방식의 문제점
- 송수신자가 동일한 키를 가지고 있어야 한다
- 이는 키 분배, 보관에 큰 문제가 있음
- 당장 키 1개로 암/복호화가 다 가능하니 키가 탈취되거나 복사된다면 보안 측면에서 불안해짐
- 개수가 무한정 발생할 수 있다.
- 다양한 사람이 대칭키를 사용한다면, 송신자와 수신자간의 신뢰를 지키기 위해서라도 키가 서로 달라야하니 대칭키를 매번 새로 발급해야 함
이를 해결하기 위해 비대칭키 방식이 고안되었다.
암호화 예시:철수와 영희
철수와 영희는 오글거리는 내용이 담긴 러브레터를 둘이서만 주고받으려고 한다.
철수는 영희와 안전하게 편지를 주고받기 위해서는 5개의 키가 필요하다고 생각했다.
(1) 세션키
편지의 내용을 잠그는 데 사용하는 비밀번호를 누르는 방식의 키다.(대칭키 방식으로 쓰일 것임)
(2) 철수🚹의 공개키
역할1. 세션 키가 무엇인지 알 수 없도록 잠구는 데 사용한다. 소지자는 영희🚺다.
역할2. 철수의 서명을 확인 할 때 사용한다.
(3) 영희🚺의 공개키
역할1. 세션 키가 무엇인지 알 수 없도록 잠구는 데 사용한다. 소지자는 철수🚹다.
역할2. 영희의 서명을 확인 할 때 사용한다.
(4) 철수의 개인키
역할1. 영희가 잠군 자물쇠를 풀기 위한 철수만의 개인 키.
역할2. 철수 자신의 도장을 찍기 위해 필요한 키
(5) 영희의 개인키
역할1. 철수가 잠군 자물쇠를 풀기 위한 영희만의 개인 키.
역할2. 영희 자신의 도장을 사용하기 위해 필요한 키
이제, 철수가 영희에게 편지를 보내고 영희가 이 편지를 읽고자 한다고 하자.
- 철수는 영희에게 철수의 공개키, 영희의 공개키와 개인키를 전달한다.
- 철수는 편지를 쓴 뒤, 철수 개인키를 활용해 서명을 포함하여 편지를 완성한다.
- 편지를 아무나 읽을 수 없도록 암호화하기 위한 세션키를 생성했다.
- 세션키를 가지고 대칭키 방식을 이용해 편지를 암호화 했다. 대칭키 알고리즘은 SAH-256을 채택했다.
- 이 세션키가 노출되지 않고, 영희만 볼 수 있도록 영희의 공개키로 세션키를 암호화한다. 이제 이 편지는 영희의 개인키로만 풀 수 있다. 비대칭키 방식을 사용했음을 알 수 있다.
- 이제 우편함에 편지를 넣었다.
- 영희는 편지의 내용을 확인하고자 한다. 철수가 영희의 공개키로 암호화했으니 영희는 영희개인키로 세션키가 담긴 보관함을 열었다.
- 이제 세션키로 편지가 담긴 보관함을 열었다.
- 편지가 철수가 쓴게 맞는지 보기위해 철수의 공개키로 서명을 확인했다.
- 이젠 영희가 똑같이 세션키와 철수의 공개키를 가지고 위처럼 철수에게 답장하면 되겠다.
- 편지발신할때 : 철수개인키+서명+편지완성 -> 세션키로 편지 암호화 -> 영희공개키로 세션키를 암호화 -> 편지발송
- 편지수신할때 : 발신 마지막단계에서 영희공개키로 암호화했으니, 영희개인키로 세션키가 담긴 보관함을 연다 -> 세션키로 편지가 담긴 보관함을 연다 -> 철수의 공개키로 철수의 서명을 확인한다.
Ref
https://m.blog.naver.com/ehcibear314/221992210012