May 5, 2023

SRTP

SRTP

SRTP(Secure Real-time Transport Protocol)

SRTP는 RTP를 확장하여 암호화를 적용한 보안프레임워크라고 할 수 있다.
실시간 데이타 암호화/복호화를 위하여 기본적으로 AES 알고리즘을 사용한다.

헤더는 아래와 같이 구성되어 있다

srtp01-1
The format of an SRTP packet is illustrated in Figure 1.

V : 버젼 , P : 패딩 , X : Extension
CC : CSRC Count , M : Marker , PT : 페이로드

  • 페이로드 항목까지는 RTP와 동일하며, SRTP MKI, Authentication Tag 항목이 추가되었다.
    이 때 Payload는 암호화 되어 있으며, Payload 길이의 계산 방식은 RTP 패킷과 다르다. Payload 고정 사이즈와 블럭 알고리즘 크기의 최소 공배수가 Payload 길이가 된다.
    MKI : SDP에 설정된 마스터 키가 다수일 경우 사용되는 마스터 인덱스로 옵션 항목이다. SDP의 a 필드에 이 항목 유무가 명시된다. 있을 경우 1:MKI 길이, 없을 경우 필드에 내용이 없다.

Authentication Tag : SRTP 패킷을 인증하는 헤더. ( 무결성 ) 역시 SDP 의 a 필드에 표시된다. 인증 알고리즘이 없거나, 있어도 세션 파라미터에 UNAUTHENTICATED_SRTP 태그가 존재하는 경우에는 Authensication tag가 없다.

Authentication Tag는 SRTP의 무결성을 보장하기 위해서 사용되며, SRTP의 헤더부터 암호화된 페이로드까지의 무결성을 체크하게 된다. 이 때는 인증키 및 인증 알고리즘(해시알고리즘)이 사용된다.


보안 실시간 전송 프로토콜이란 무엇입니까?

SRTP는 RTP를 확장하여 업그레이드된 보안 기능을 제공합니다. 2004년 3월 IETF(Internet Engineering Task Force)에서 RFC 3711 로 처음 게시했습니다 .

SRTP는 RTP 헤더를 포함하지 않고 RTP 페이로드를 암호화하여 기밀성을 제공합니다. 소스 출처 인증을 지원하며 RTP의 보안 메커니즘으로 널리 사용됩니다. 전체를 사용할 수 있지만 특정 보안 기능을 비활성화하거나 활성화할 수도 있습니다. SRTP의 주요 장애물은 DTLS-SRTP, SIP의 MIKEY, SDP의 SDES(보안 설명), ZRTP 등 많은 옵션이 존재하기 때문에 키 관리입니다.

Encryption(암호화)

SRTP는 AES(Advanced Encryption Standard)를 기본 암호로 사용합니다. 여기에는 세그먼트 정수 카운터 모드와 f8 모드의 두 가지 암호 모드가 포함됩니다. 세그먼트 정수 카운터 모드는 표준이며 패킷 손실 가능성이 있는 신뢰할 수 없는 네트워크를 통해 트래픽을 실행하는 데 중요합니다. f8 모드는 3G 모바일 네트워크에 사용되며 변경된 초기화 기능으로 탐색 가능하도록 설계된 출력 피드백 모드의 변형입니다.

SRTP를 사용하면 개발자가 NULL 암호로 암호화를 비활성화할 수도 있습니다. NULL 암호는 암호화를 수행하지 않고 대신 ID 기능으로 작동합니다. 입력 스트림을 변경 없이 출력 스트림에 직접 복사합니다.

WebRTC에서 NULL Cipher는 권장되지 않습니다. 재량은 일반적으로 최종 사용자에게 상당히 중요하기 때문입니다. 사실, 유효한 WebRTC 구현 은 현재 DTLS-SRTP를 사용하여 암호화를 지원 해야 합니다(MUST) .

Integrity

SRTP에서 메시지 무결성을 유지하기 위해 패킷 페이로드와 패킷 헤더의 일부에 대해 알고리즘이 사용되어 RTP 패킷에 추가되는 인증 태그를 생성합니다. 이 인증 태그는 페이로드 내용의 유효성을 검사하는 데 사용되어 잠재적인 데이터 위조를 방지합니다.

인증은 또한 재생 공격을 방지하기 위한 기반을 제공합니다. 재생 공격을 차단하기 위해 각 패킷에는 순서가 지정되고 비교되는 인덱스가 할당됩니다. 새 메시지는 해당 인덱스가 다음 순서이고 아직 수신되지 않은 경우에만 허용될 수 있습니다. 이러한 인덱스는 위에서 구현된 메시지 무결성에 의해 효과적이 됩니다. 그렇지 않으면 메시지 인덱스를 스푸핑할 가능성이 있기 때문입니다.

WebRTC에서 HMAC-SHA1은 SRTP에서 메시지 무결성을 보장하기 위한 기반으로 사용되는 알고리즘이지만 비PFS보다 PFS(완벽한 순방향 비밀성)를 사용하고 AEAD(관련 데이터를 사용한 인증된 암호화)를 사용하는 암호 제품군을 선택하는 것이 좋습니다. 비 AEAD. 대부분의 최신 WebRTC 구현은 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 암호 제품군과 함께 DTLS v1.2를 사용합니다.

KEY

SRTP는 키 파생 기능을 사용하여 하나의 마스터 키를 기반으로 키를 파생합니다. 이 마스터 키는 모든 세션 키를 생성하기 위해 키 관리 프로토콜에 의해 교환됩니다. 마스터 키를 기반으로 세션당 고유 키를 사용하여 개별 세션을 보호할 수 있습니다. 이런 식으로 한 세션이 침투하더라도 다른 모든 세션은 여전히 ​​안전합니다. 마스터 키에는 키 관리 프로토콜이 사용되며 일반적으로 ZRTP 또는 MIKEY이지만 다른 것도 존재합니다.

SRTP와 WebRTC는 어떻습니까?

srtp02
[그림 1: RTP IP 스택]

WebRTC에서 스트림은 SRTP 또는 DTLS(Datagram Transport Layer Security)의 두 가지 프로토콜 중 하나로 보호됩니다. DTLS는 데이터 스트림 암호화에 사용되고 SRTP는 미디어 스트림 암호화에 사용됩니다. 그러나 DTLS-SRTP는 일반적으로 메시지 가로채기(man-in-the-middle) 공격을 감지하기 위해 SRTP 키 교환을 수행하는 데 사용됩니다. IETF 문서 WebRTC 보안 및 보안 아치 는 이러한 측면을 자세히 다룹니다.

보안 실시간 전송 제어 프로토콜(SRTCP)

SRTP에는 또한 보완 프로토콜인 SRTCP(Secure Real-time Transport Control Protocol)가 있습니다. SRTCP는 암호화 및 인증을 포함하여 SRTP가 RTP에 제공하는 것과 동일한 보안 기능을 제공하는 RTCP(실시간 전송 제어 프로토콜)의 확장입니다. SRTP와 유사하게 SRTCP를 사용하는 거의 모든 보안 기능을 비활성화할 수 있습니다. 이에 대한 유일한 예외는 SRTCP에 필요한 메시지 인증입니다.

SRTP의 잠재적인 함정은 무엇입니까?

SRTP 는 RTP 패킷 의 페이로드 를 암호화 하지만 RTP 확장 헤더는 암호화 하지 않습니다. 이것은 RTP 패킷의 확장 헤더에 RTP 페이로드에 있는 미디어 데이터의 패킷별 사운드 레벨과 같은 민감한 정보를 포함할 수 있기 때문에 보안 취약성을 남깁니다. 이것은 네트워크의 도청자에게 두 개인 간의 특정 대화가 발생하고 있음을 나타낼 수 있으며, 이는 활용되어 개인 정보를 침해할 수 있습니다. 이 문제는 IETF의 Request for Comments: 6904에 의해 해결되었으며, 모든 향후 SRTP 암호화 변환은 RTP 헤더 확장이 암호화되는 방식을 지정해야 합니다.

다자간 회의와 같은 일부 경우에는 스트림의 하위 집합을 전달할 때 일부 RTP 매개변수를 최적화하기 위해 SFM(Selective Forwarding Mixer)과 같은 중개자가 필요할 수 있습니다. 이것은 순수한 P2P 시스템에 의해 유지되는 종단 간 보안을 방해하는 중개자를 도입합니다. 현재, 이를 위해서는 엔드포인트가 추가 소스인 중개자를 신뢰해야 합니다. 이러한 제한을 극복하기 위해 IETF의 PERC(Privacy Enhanced RTP Conferencing)는 SRTP 이중 암호화 절차(PERC) 와 같은 솔루션에 대해 작업하고 있습니다 . PERC는 2개의 별개이지만 관련된 암호화 컨텍스트를 기반으로 홉별 및 종단 간 보안 보장을 제공합니다. 이에 대해서는 향후 블로그 게시물에서 다루도록 하겠습니다!