인디노트

SSL TLS에서 사용되는 암호화 스위트 (Cipher Suite) 란 무엇일까? 본문

인증기술/OpenSSL

SSL TLS에서 사용되는 암호화 스위트 (Cipher Suite) 란 무엇일까?

인디개발자 2019. 3. 2. 15:17

SSL/TLS 에 대해서 연구하시는 분들은 친숙하게 보셨을 부분이 바로 Cipher Suites 입니다. 이 Cipher Suite 는 TLS 핸드쉐이크를 통해서 클라이언트/서버간 최종 협의하게 되는데, 여기에는 어떤프로토콜을 사용할 지, 어떻게 암호화 하여 통신 할 지 에 대한 여러가지 정보가 포함되게 됩니다.

이번 포스팅에서는 Cipher Suites 에 포함되어 있는 이 정보들이 어떤 의미를 나타내는지 확인해 보도록 하겠습니다.

 

암호화 스위트 (Cipher Suite) 의 구조

암호화 스위트 (Cipher Suite) 는 일반적으로 다음과 같은 구조를 가지고 있습니다. 

프로토콜 (Protocol)

SSLv3, TLSv1, TLSv1.1, TLSv1.2 와 같이 암호화 통신에 사용할 프로토콜을 명시하는 부분 입니다. 일반적으로 SSLv3는 취약점으로 인하여 브라우저에서 지원을 중단하고 있는 추세 입니다.

키교환 (Key Exchange)

WITH 앞쪽 부분이 보통 키교환과 인증 (전자서명을 통한 인증서 검증) 을 담당하는 부분입니다. 키 교환 알고리즘은 RSA, DH, DHE, ECDH, ECDHE 을 제공하게 됩니다. 

  • RSA : 비대칭키를 이용한 키교환 방식
  • DH : 디피 헬만 (Diffie Hellman) 방식
  • DHE : Ephermeral 을 지원하는 디피 헬만 (Diffie Hellman) 방식 (PFS, Perfect Foward Secrecy  지원)
  • ECDH : Elliptic Curve Diffie Hellman, Propose Cheme 방식
  • ECDHE : Elliptic Curve 및 Ephermeral 을 지원하는 디피 헬만 (Diffie Hellman) 방식 (PFS, Perfect Foward Secrecy  지원)

 

인증 (Authentication)

키를 교환할 상대방이 교부한 인증서가 정말 내가 접속하고자 하는 상대방이 맞는지 상위 인증기관 (CA)를 통하여 확인하게 되는데, 이 때 사용되는 알고리즘을 의미합니다. 보통 RSA, DSS, ECDSA, ANON 등이 있습니다. 인증서를 만들때 인증서 서명 요청 (CSR)을 작성하여 상위 인증기관 (CA)에 요청하게 되는데, 이 때 선택한 알고리즘이 선택되게 됩니다. 

만약 인증서 생성시 사용한 CSR에 RSA알고리즘을 넣어서 제출했다면 Cipher Suite는 다음과 같이 선택 될 수 있습니다. 

  • RSA : 키교환 및 인증을 모두 RSA 알고리즘을 이용
  • DH-RSA : 키교환은 디피 헬만 (Diffie Hellman), 인증은 RSA
  • ECDHE-RSA : 키교환은 ECDHE, 인증은 RSA

위의 예시와 같이 키교환과 인증을 모두 RSA를 사용하게 될 때는 키교환과 인증을 RSA 하나로 생략하여 표현하게 됩니다.

 

암호화 (Encryption)

실제 데이터를 암호화 하는 부분은 WITH 뒷쪽에 표현된 Cipher Suite 값을 이용하여 처리 합니다. 공개키 알고리즘을 이용하여 대칭키를 만들어 공유한 이후 실데이터 암호화를 진행하게 되는데 이 때 사용되는 알고리즘이 3DES, AES, AES128 같은 것들입니다. 

 

블록 암호 운용 방식 (Block Cipher Operation Mode)

실데이터를 AES128 과 같은 것으로 암호화 할 때 실데이터를 일률적으로 암호화 하는 것이 아니라 블록 단위로 쪼개서 암호화 하게 됩니다. 이 때 암호화 된 암호문을 가지고 실데이터를 추측하는 것을 방지하기 위하여 특정한 블록 암호 운용방식을 선택하게 되는데 이것이 블록 암호 운용 방식 입니다. 

  • CBC : Chipher Block Chaining, 암호 블록 체인 모드, CTR과 CBC-MAC을 조합하여 계산, 느림
  • GCM : Galois/Counter Mode, 갈르와 카운터 모드, CTR과 GHASH를 조합하여 계산, 빠름

 

메시지 인증 (Message Authentication)

블록 단위로 암호화 된 메시지들이 상대방이 암호화 한 것이 맞는지 확인하기 위하여 무결성을 검증하게 되는데, 이 때 사용되는 것이 메시지 인증 (Message Authentication) 부분입니다. 이를 보통 MAC (Message Authentication Code) 라고 하는데, 여기에 해쉬 알고리즘 (SHA, SHA256, SHA384, MD5 등) 을 이용하기 때문에 HMAC이라고 부르게 됩니다. 

  • 송신자/수신자는 HMAC에 사용할 대칭키를 알고 있습니다
  • 송신자는 암호화 메시지와 대칭키를 결합한 후, SHA등의 해쉬 알고리즘을 이용하여 MAC 을 추출하여 이것을 메시지와 함께 보냅니다. 
  • 수신자도 암호화 메시지와 대칭키를 결합한 후, SHA등의 해쉬 알고리즘을 이용하여 MAC을 추출합니다. 그 다음 송신자가 보낸 MAC과 수신자가 스스로 계산한 MAC을 비교하여 동일하면 암호화 메시지의 무결성에 문제가 없다고 판단합니다.

 

이렇게 6가지 항목을 이용하여 SSL/TLS 암호화 통신에 사용할 여러가지 알고리즘을 선택하게 되며, 이러한 협의 및 선택된 알고리즘의 집합을 Cipher Suite 라고 합니다. 이러한 Cipher Suite는 보안이슈나 취약점에 따라 권고되는 값들이 있으며 보안성이 우수한 Cipher Suite 를 이용하여 암호화 통신을 진행하면 되겠습니다 

반응형

'인증기술 > OpenSSL' 카테고리의 다른 글

ssh 키 생성 - 가끔 잊어버려서 기록  (0) 2021.06.10
OpenSSL의 crypto library 뜯어보기  (0) 2019.03.02
openssl_server.c  (0) 2019.01.21
An Introduction to OpenSSL Programming, Part I of II  (0) 2019.01.21
non blocking SSL  (0) 2018.11.16
Comments