brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Dec 24. 2018

32장. SIP 보안의 이해 (중)- TLS

1. TLS와 SRTP의 개요 

공공기관과 보안을 중요시하는 기업들은 보안이 강화된 Secure IP Telephony를 구현합니다. Secure IP Telephony는 매우 복잡한 체계로 구현되지만 주요 프로토콜은 TLS (Transport Layer Security)와 SRTP(Secure RTP)입니다. TLS는 SIP 시그널링 메시지를 암호화하고, SRTP는 음성과 영상 트래픽을 암호화합니다. Secure IP Telephony 가 구현된 네트워크에서 중간에 패킷을 캡처하더라도 내용을 유추할 수 없습니다.  


<그림 32-1> TLS & SRTP


TLS는 넷스케이프 사에 전자 상거래 등의 보안을 위해 개발한 SSL (Secure Socket Layer Protocol) 프로토콜이 RFC 2246으로 1999년에 표준화된 후 현재는 RFC 5246 TLS 1.2가 표준화되었습니다. RFC 8446 TLS 1.3도 표준화되었지만, 가장 널리 쓰이는 것은 TLS 1.2입니다. TLS는  OSI 7 계층 중 전송 계층에서 수행되는 프로토콜이므로 응용계층의 프로토콜인 HTTP, XMPP, FTP 등 사용할 수 있습니다. TLS는 기밀성, 무결성 및 사용자 인증까지 제공할 수 있는 프로토콜로써 확장성 및 효율성이 뛰어나 광범위하게 사용됩니다. 



2. SIP 프로토콜을 위한 TLS  

TLS는 이름 그대로 전송 계층인 TCP에 신뢰성을 강화할 수 있는 프로토콜입니다. TLS가 적용할 경우 SIP 프로토콜이 전송 프로토콜로 TCP만 사용해야 합니다.  


<그림 32-2> Hop-by-Hop 전송 프로토콜

 

앨리스와 밥 간에 직접 단대단(End-to-End) TLS 세션이 만들어져 SIP 프로토콜을 주고받는다고 가정해 봅시다. SIP Proxy 서버는 Via 헤더와 같은 SIP 메시지를 추가 변경 삭제를 할 수 없고, SIP 메시지를 확인할 수 없으므로 호의 상태를 전혀 추적할 수 없습니다. 따라서, TLS는 홉바이홉(Hop-by-hop)으로 세션을 생성합니다.


<그림 33-3> TLS 세션으로 전달되는 SIP


홉 바이 홉으로 생성된 TLS 세션을 통해 SIP 프로토콜의 운영 방식을 변경하지 않고도 안전하게 전달할 수 있습니다. 두 개의 SIP  Proxy 서버가 모두 사용자 인증을 요구할 경우에는 사용자 인증을 모두 수행합니다.



3. TLS 협상 절차

TLS 세션을 생성하기 위한 파라미터 교환은 TLS Handshake 프로토콜이 진행합니다. TLS 클라이언트와 서버가 통신하기 위해서는 TLS 버전, 암호화 알고리즘 및 상호 인증을 수행하니다. 그리고,  공개키 암호화 기법을 이용하여 암호화 키를 생성하고 교환합니다.  


<그림 33-4> TLS Full Handshake



처음에는 Full Handshake 절차로 진행되고, 세션이 다시 시작할 때는 간소한 Abbreviated Handshake를 진행합니다 앨리스 전화기와 SIP Proxy 서버 간의 TLS Full Handshake 절차입니다. 


1) TLS Hello 교환 

TLS 버전과 속성 그리고  암호화 알고리즘을 협상합니다. Client Hello와 Server Hello가 교환됩니다.



2) Certificate Exchange (인증서 교환) 

SIP Proxy 서버 인증서를 전달하면서 클라이언트 인증서를 요청합니다. 클라이언트는 서버 인증서를 검증하기 위해 자신의 인증서 목록에 인증서 발행 기관 (CA, Certificate Authority)의 인증서가 있는 지를 확인합니다. 인증서 목록에 있다면 검증을 수행하고 서버의 인증서를 신뢰합니다. 없다면 TLS 세션은 종료됩니다. SIP Proxy 서버도 동일한 과정을 거쳐 인증서를 신뢰합니다.



3) 상호 인증 (Server to Phone, Phone to Server) 

클라이언트는 랜덤 문자열을 생성하여 서버로 전송합니다. 서버는 개인키 (Private Key)로 랜덤 문자열을 서명한 후 전달합니다. 클라이언트는 서버가 서명을 서버의 공개키로 검증합니다. 이와 마찬가지로 수행되지만 옵션입니다. 



4) TLS Session Key 교환

SIP Proxy 서버와 클라이언트가 상호 인증을 완료하였습니다. SIP 시그널링을 암호화할 때 사용할 대칭 암호키를 교환합니다. 공개키와 개인키를 이용한 비대칭 암호화는 엄청난 리소스 소모가 발생하므로 많은 내용을 실시간으로 암호화할 수 없습니다. 그래서, 대칭 암호화 기법을 사용하여 암호화하고, 비대칭 암호화 방식은 대칭 암호화를 위한 암호화 키를 교환하기 위해 사용합니다. 키 교환 (Key Exchange)은 대칭 암호화 키를 교환하는 과정입니다.


클라이언트는 암호화 키를 생성한 후에 서버의 공개키로 암호화하여 전달합니다. 오직 서버의 개인키로만 복호화가 가능하므로 해커에 의해 패킷이 중간에 탈취되더라도 서버만이 확인할 수 있습니다. 클라이언트 전화기와 CUCM 서버는 동일한 세션 키를 안전하게 확보합니다. 



5) Finished

세션 암호화 키를 교환 후에 암호화 방식을 변경하거나 세션을 종료합니다.



'엔지니어를 위한 인터넷 전화와 SIP의 이해'를 책으로 만들다


https://brunch.co.kr/@linecard/188


매거진의 이전글 31. SIP 보안의 이해 (상) - 사용자 인증
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari