대칭키
Ks(Ks(m)) = m
수신자와 발신자가 같은 key (Ks) 를 갖는다. 즉 복호화, 암호화에 쓰이는 key 가 같다.
하지만 둘다 같은 key를 갖게 하기 위한 절차를 거치지 않는 이상 같은 것을 공유하고 있기 힘든 문제점이 있고 key 를 뺏기면 모든 정보가 노출되는 문제점이 생긴다. 이를 보완하기 위해 나온 것이 비대칭키이다.
비대칭키
암호화와 복호화할 때 쓰는 키가 다르다. 모두에게 공개되어 있는 공개키와 본인만 갖는 비밀키로 나뉜다.
Alice가 Bob에게 데이터를 보내고 싶으면 공개키 (Kb+) 로 암호화를 해서 보낸다. Bob은 받은 데이터를 비밀키(Kb-) 로 복호화하여 내용을 확인한다.
비대칭키는 이렇게 안전성을 보장하지만 _현저히 느린 문제 _때문에 이를 대칭키와 적절히 활용하여 통신한다. https가 이러한 방식을 택한다.
Kb+(Kb-(m)) = m
Message Digest
지금까지의 암호화를 하기엔 내용이 너무 길다. 그렇기 때문에 내용을 압축하는 것은 Message Digest
라고 한다. Hash Function
를 이용한다.
비밀키를 이용한 서명
Bob 이 Alice에게 데이터를 보내는데 이게 Bob 이 했다는 것을 어떻게 보장할 수 있을까? 이럴 때 쓰는 방법이 서명이다.
서명은 본인만 갖고 있는 private key
로 암호화를 하여 전송한다. 절차는 다음과 같다. 다음의 내용에서는 digest는 생략한다.
- Bob이 private key로 암호화한 내용 Kb-(m) 과 원본 내용 m 를 전송한다.
- 받은 Alice는 암호화한 내용은 복호화한다. Kb+(Kb-(m)) = m
- 그리고 같이 받은 원본 내용 m 과 비교해본다. 같으면 서명이 인증된 것이다.
public key certificate authorities (CA)
public key를 인증해주는 기관이다. 웹사이트 또는 사람과 등록하려는 공개키를 받아 CA의 비밀키로 암호화한다. 이렇게 암호화된 것이 공개키에 대한certificate
이다.
Alice 가 Bob의 공개키를 받는 방법은 certificate를 통해서이다. Bob의 공개키에 대한 certificate를 인증해준 기관의 공개키로 복호화하면 bob의 공개키를 얻을 수 있다.https
앞의 설명은 결국엔 https를 이해하기 위함이다. 웹 브라우저의 자물쇠를 꼭 눌러보도록 하자.
우리가 필요한건 암호화이니 자물쇠를 또 눌러보자.
인증서가 지금까지 말한 그 인증서다! 인증서에는 웹사이트에 대한 정보와 공개키가 들어있다.
인증서 구경도 꽤 재미있다. velog 는 아마존에서 CA를 받았음이 공개되어있다. 인증서를 통한 보안 통신은 다음과 같이 인증된 연결 세션
을 만들게 된다.
이러한 세션은 통신이 끊기면 세션키를 폐기 처리하며 끝난다.
https 연결을 하며 보였던 단어들을 이렇게 정리하니 좋은 듯 하다.
'💻Computer Science > Network' 카테고리의 다른 글
[Network] 여러 개의 Websocket connection 은 어떻게 가능할까 (0) | 2023.08.30 |
---|