우리가 파일을 보낼 때 평문으로 보내면 해커들이 탈취할 위험이 있다. 이 문제를 해결하기 위해서 통신 내용을 암호화하는 과정이 필요하다. 이때 대칭키를 사용하면 양쪽이 같은 키를 가져야 하는데, 이 키를 안전하게 공유하지 못하면 보안 대책이 되지 않는다. TLS는 이 문제를 해결하기 위해 대칭키 암호와 비대칭키 기반 인증/키 교환을 함께 사용한다.

배경

대칭키

개념

하나의 키로 암호화와 복호화를 진행한다.

특징

  • 빠름
  • 대용량 처리에 적합함

대표 알고리즘

  • AES
  • DES: 현재는 안전하지 않아 사용하지 않음

비대칭키

교환 과정

  1. 키(key) 쌍 생성
    • public key (PC)
    • private key (PC)
    • public key (Server)
    • private key (Server)
  2. 키 교환
    • 각자의 public 키를 서로 전달한다.
    • 예전 TLS의 RSA key exchange에서는 public key로 pre-master secret을 암호화하고 private key로 복호화했다.
    • 현대 TLS에서는 주로 (EC)DHE로 세션키를 합의하고, 인증서는 서버 신원 검증에 사용한다.

왜 대칭키 통신에 비대칭키 기반 키 교환을 함께 사용할까?

위에서 말했듯 대칭키 알고리즘은 대용량 처리에 적합하며 빠르다. 반면 비대칭키 알고리즘은 상대적으로 느리기 때문에 실제 데이터 통신 전체를 비대칭키로 처리하지 않는다. 대신 비대칭키 기반 인증과 키 교환으로 안전하게 세션키를 만들고, 이후 데이터는 대칭키로 암호화한다.