본문 바로가기

취업/준비

[보안] 대칭키 / 비대칭키(공개키) / SSL handshaking

 

 

대칭키 방식

암호화/복호화를 같은 키를 통해 수행하는 것.

장점

  • 키의 크기가 상대적으로 작고, 알고리즘 내부 구조가 단순하여 개발이 쉽다.
  • 연산 속도도 빠르다

단점

  • 키 자체는 암호화 되지 않기 때문에 분실되거나, 타인에게 노출되면 큰일(...)난다.
  • 키를 매우 신경써서 관리해야 한다.
  • 키를 전달하기가 어렵기 때문에 잦은 키 변경이 있는 경우 불편함을 초래한다.
  • 전자서명에는 적용할 수 없다.
  • 안정성을 분석하기가 어렵고, 중재자가 필요하다.
  • 결국 보안에 취약하다.

종류

  • 블록 암호
  • 스트림 암호

 

 

비대칭키 (공개키) 방식

암호화/복호화를 각각 다른 키로 수행하는 것.

 

  • 암호화를 public key, 복호화를 private key로 사용하는 경우
    • 어떤 내용이든 자신만 복호화할 수 있어야 하는 경우 사용
    • 일반적인 데이터 전송 상황
  • 암호화를 private key, 복호화를 public key로 사용하는 경우
    • SSL 인증서 / 전자서명과 같이 인증을 해야하는 상황에서 사용
    • 인증서의 내용은 누구나 읽어볼 수 있지만, 누구나 만들 수는 없기 때문에 위변조를 막을 수 있게 된다.
  • RSA - 대표적인 공개키 알고리즘

 

장점

  • 대칭키에서의 키 전달 문제를 해결했다.
  • 보안 수준이 대칭키보다 높아졌다.

단점

  • 암호화/복호화를 위해 더욱 복잡한 수학 연산을 수행하기 때문에 대칭키에 비해 느리다.

 

현재 대칭키 방식과 공개키 방식의 장점을 모두 취하기 위해, 하이브리드 암호화 방식을 주로 사용한다.
대칭키를 공개키로 암호화 해서 보내는 방식을 말하며, 아래 나올 SSL handshaking에서 다시 설명한다.

 

 

SSL 인증서

  • 클라이언트와 서버 간의 통신을 서드파티인 CA가 보증하는 전자화된 문서.
  • 클라이언트 측에서 해당 서버가 신뢰할 수 있는 서버인지 판단할 수 있게 하고,
    해당 서버의 공개키 또한 알 수 있게 한다.
  • SSL 인증서에 들어가는 내용
    1. 서비스의 정보 (CA, 도메인)
    2. 서버 측 공개키

 

 

CA (Certificate Authority)

  • SSL 인증서를 발급해 주는 서드파티
  • CA들에 대해서는 브라우저가 그 리스트를 알고 있고, CA마다의 공개키도 갖고 있다.
  • 그 공개키들을 이용해 각각의 SSL 인증서를 브라우저가 복호화할 수 있다.

 

 

SSL handshaking

 

  1. 웹사이트는 인증기관(CA)로부터 SSL 인증서를 발급받아둔다.
    1. CA가 인증서를 발급해줄 때는 CA의 private key를 통해 웹사이트의 정보와 public key를 암호화하여 저장한다.
    2. 따라서 SSL 인증서는 CA의 public key로 복호화할 수 있으며, 해당 키는 브라우저에 내장되어 있다.
  2. 사용자가 웹사이트에 접속을 요청하면, 해당 사이트가 발급받았던 SSL 인증서를 받을 수 있다.
  3. 해당 인증서의 내용을 CA의 public key를 통해 복호화하여
    1. 위변조 여부를 판단할 수 있고
    2. 사이트 정보와 public key를 알아낼 수 있다.
  4. 사용자 측에서 알아낸 웹사이트의 public key를 통해 대칭키를 암호화하여 전송한다.
  5. 웹사이트는 사용자로부터 받은 대칭키를 자신의 private key로 복호화하여 확인한다.
  6. 양측에서 해당 대칭키를 사용해 통신할 수 있게 된다.

 

이렇게 디지털 인증서를 이용해 공개키가 어떤 특정한 사람의 것이라는 걸 보장하고, 관리도 할 수 있는 것을 공개키 기반 구조라고 부른다.

 

References