[CS 정리] 대칭키 vs 비대칭키

June·2021년 6월 2일
0

[CS] CS 지식 정리

목록 보기
14/27

HTTPS가 뭐고 왜 쓰나요? (Feat. 대칭키 vs. 비대칭키)

순한 맛

HTTPS는 HTTP보다 안전하다.

  1. HTTP로 보내면 중간에 누가 가로채서 그대로 볼 수 있다.
  2. 접속한 사이트가 진품인지 판별해준다. 기관으로부터 검증된 사이트만 https를 쓸 수 있다.

피싱 사이트로부터 구별해준다.

중간 맛

대칭키

메시지를 보내고 받는 쪽이 메시지를 암호화하고 다시 메시지로 복호화하는 같은 방식을 공유하는 것이다.

내 컴퓨터와 네이버가 동일한 키를 가지고 있으면 암호화해서 보내고 받은 사람은 복호화할 수 있다. 그러면 애초에 처음에 어떻게 이 키를 공유할까?

비대칭키

공개키라고도 부른다.

A키로 암호화하면 B키로만 복호화할 수 있고, B키로 암호화하면 A키로만 복호화할 수 있다.

네이버는 이 두 개중 하나를 개인키로 갖고, 나머지는 대중들에게 공개키로 공개한다

사용자가 암호화해서 네이버에 보내면 제 3자는 개인키가 없어서 복호화 불가능이다.

그럼 이제 이 사이트가 네이버인 것을 어떻게 증명할까?

네이버가 우리에게 보내는 정보들은 그 일부가 네이버의 개인키로 암호화되어있다. 우리가 네이버의 공개키로 복호화할 수 있는건 네이버의 개인키로 암호화된 정보뿐이다.

네이놈에서 온 정보들은 네이버의 공개키로 풀리지 않는다. 네이버의 공개키로 열려고하면 오류가 난다.

매운 맛

네이버가 뿌린 공개키가 정품인지를 어떻게 알까? 피싱 사이트꺼라면?

Certificate Authority 라고 검증된 민간 회사들이 검증을 해준다.

클라이언트는 서버에게 무작위의 데이터를 보내고, 서버 역시 무작위의 데이터와 해당 서버의 인증서를 실어 보낸다. 클라이언트는 인증서가 진짜인지 브라우저에 내장된 CA를 통해 검증한다.

CA의 인증을 받은 인증서들은 해당 CA의 개인키로 암호화되어있다. 이게 진짜라면 브라우저에 저장된 CA의 공개키로 복호화할 수 있다.

성공적으로 복호화된 인증서에는 서버의 공개키가 포함되어있다. 이제부터는 대칭키와 비대칭키를 혼합한다

대칭키로 데이터를 암호화 및 복호화하는 것은 연산 부담을 많이 분다. 따라서 비대칭키로 대칭키를 공유하고, 그 대칭키로 데이터를 주고 받는다. 처음 무작위 데이터를 이용해서 대칭키를 만든다.

0개의 댓글