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 을 제공하게 됩니다.
인증 (Authentication)키를 교환할 상대방이 교부한 인증서가 정말 내가 접속하고자 하는 상대방이 맞는지 상위 인증기관 (CA)를 통하여 확인하게 되는데, 이 때 사용되는 알고리즘을 의미합니다. 보통 RSA, DSS, ECDSA, ANON 등이 있습니다. 인증서를 만들때 인증서 서명 요청 (CSR)을 작성하여 상위 인증기관 (CA)에 요청하게 되는데, 이 때 선택한 알고리즘이 선택되게 됩니다. 만약 인증서 생성시 사용한 CSR에 RSA알고리즘을 넣어서 제출했다면 Cipher Suite는 다음과 같이 선택 될 수 있습니다.
위의 예시와 같이 키교환과 인증을 모두 RSA를 사용하게 될 때는 키교환과 인증을 RSA 하나로 생략하여 표현하게 됩니다. 암호화 (Encryption)실제 데이터를 암호화 하는 부분은 WITH 뒷쪽에 표현된 Cipher Suite 값을 이용하여 처리 합니다. 공개키 알고리즘을 이용하여 대칭키를 만들어 공유한 이후 실데이터 암호화를 진행하게 되는데 이 때 사용되는 알고리즘이 3DES, AES, AES128 같은 것들입니다. 블록 암호 운용 방식 (Block Cipher Operation Mode)실데이터를 AES128 과 같은 것으로 암호화 할 때 실데이터를 일률적으로 암호화 하는 것이 아니라 블록 단위로 쪼개서 암호화 하게 됩니다. 이 때 암호화 된 암호문을 가지고 실데이터를 추측하는 것을 방지하기 위하여 특정한 블록 암호 운용방식을 선택하게 되는데 이것이 블록 암호 운용 방식 입니다.
메시지 인증 (Message Authentication)블록 단위로 암호화 된 메시지들이 상대방이 암호화 한 것이 맞는지 확인하기 위하여 무결성을 검증하게 되는데, 이 때 사용되는 것이 메시지 인증 (Message Authentication) 부분입니다. 이를 보통 MAC (Message Authentication Code) 라고 하는데, 여기에 해쉬 알고리즘 (SHA, SHA256, SHA384, MD5 등) 을 이용하기 때문에 HMAC이라고 부르게 됩니다.
이렇게 6가지 항목을 이용하여 SSL/TLS 암호화 통신에 사용할 여러가지 알고리즘을 선택하게 되며, 이러한 협의 및 선택된 알고리즘의 집합을 Cipher Suite 라고 합니다. 이러한 Cipher Suite는 보안이슈나 취약점에 따라 권고되는 값들이 있으며 보안성이 우수한 Cipher Suite 를 이용하여 암호화 통신을 진행하면 되겠습니다 🙂 감사합니다~ I want nothing, I fear nothing, I am free! - Nikos Kazantzakis |