Backend/Network

SDP - SRTP 원리

petitCoding 2011. 5. 13. 09:40

 

 

일하다가 정리가 필요할 것 같아 급 포스팅.

 

 

SIP 기반의 VoIP 통신에서 SRTP를 이용할 때,

INVITE의 SDP - INVITE에 대한 200 OK의 SDP 를 통해 네고가 성립된다.

 

INVITE메시지의 밑단에는 다른 요청들과는 달리 "SDP"라는 내용이 딸려있다.

그중에서 유심히 봐야할 부분은 media field , attribute field  요 두녀석이다.

 

다음 내용은 Invite / 200 OK 의  Offer - Answer model에서 SDP만 따온 거다.

(위에껀 INVITE, 아래껀 200OK)

 

c=IN IP4 10.0.0.22
m=audio 51372 RTP/SAVP 31
a=crypto:1 AES_CM_128_HMAC_SHA1_80
Inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32

c=IN IP4 10.0.0.201
m=audio 33265 RTP/SAVP 31
a=crypto:1 AES_CM_128_HMAC_SHA1_80
Inline:PS1uQcVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:32

 

아..마치 TLS 핸드셰이킹을 보는것 같아 ㅋㅋㅋㅋ

 

우선 c 로 시작하는 부분은 RTP통신을 할 자기자신의 IP를 의미한다.

그리고 m 필드에는 미디어 타입(비디오, 오디오 등), 사용할 포트 번호, 프로토콜 .. 등으로 되어 있는데

SRTP 일 경우는 대개 RTP/SAVP로 간다.

보통때는 RTP/AVP . 근데 SAVP를 안쓰는 경우에는 SRTP를 쓰더라도 RTP/AVP가 가기도 하더라공. 이건 뭐 클라이언트마다 틀리다.

프로토콜이 이상한건지, 프로토콜을 안지킨건진 모르겠지만 (RFC에 아마 자세히 나올듯)..ㅎㅎ

* AVP를 찾아보니 Audio/Video Profile의 약자이긴 한데.. 이부분이 상세히 안나오네용 SAVP와 SRTP 차이점에 대해

아시는분은 저에게 댓글이나 쪽지좀!!!

 

그리고 INVITE를 보면, a 필드에 암호화할 알고리즘 및 keyring matrial이 나오는데, INVITE시에는 자신이 사용할 것을 여러 개 보낼 수 있다. 그러면 Answer는 이중 자신이 사용할 알고리즘을 고르고 keyring matrial을 생성하여 200OK의 a field에 붙여 보내게 되는거다.

 

여기서 Keyring matrial은 자신의 RTP 페이로드를 암호화 하고 복호화 하기 위해 사용될 키 값을 의미한다.

 

 

그다음부터는  골라진 알고리즘으로 RTP를 암호화 하여 보내고 받는 쪽에서 복호화 하면 끝!!

 

 


반응형

'Backend > Network' 카테고리의 다른 글

실시간 전송 프로토콜, RTP.  (0) 2011.05.13
SRTP  (0) 2011.05.13
FEC  (0) 2011.05.13
SRTCP  (0) 2011.05.13
TLS Protocol (SSL)  (0) 2011.05.12