SRTP-Erklärung


Das Secure Real-Time Transport Protocol (SRTP) ist ein Sicherheitssystem, das das Real-Time Transport Protocol (RTP) um eine Reihe von Sicherheitsmechanismen erweitert.

WebRTC verwendet DTLS-SRTP zur Verschlüsselung, Authentifizierung und Nachrichtenintegrität sowie zum Schutz vor Wiederholungsangriffen. Dies bietet Datenschutz durch RTP-Lastverschlüsselung und -authentifizierung. SRTP ist eine der Sicherheitskomponenten. Es ist sehr praktisch für Entwickler, die nach einer zuverlässigen und sicheren API suchen. Aber was ist SRTP und wie funktioniert es?

Was ist SRTP?


SRTP erhöht die RTP-Sicherheit. Das Protokoll wurde im März 2004 von der IETF (Internet Engineering Task Force) in RFC 3711 veröffentlicht.

SRTP bietet Datenschutz durch Verschlüsselung der RTP-Last ohne die RTP-Header. Es wird auch die Authentifizierung unterstützt, die häufig als Sicherheitsmechanismus in RTP verwendet wird. Während SRTP in seiner Gesamtheit verwendet werden kann, ist es auch möglich, bestimmte Funktionen zu deaktivieren / aktivieren. Das Haupt-Plugin in SRTP ist die Schlüsselverwaltung, da es viele Optionen gibt: DTLS-SRTP, MIKEY in SIP, SDES (Sicherheitsbeschreibung) in SDP, ZRTP usw.

Verschlüsselung


SRTP verwendet AES (Advanced Encryption Standard) als Standardverschlüsselung. AES verfügt über zwei Verschlüsselungsmodi: Segmented Integer Counter Mode und f8 Mode. Der Zählermodus wird normalerweise verwendet - er ist von entscheidender Bedeutung, wenn Datenverkehr über ein unzuverlässiges Netzwerk mit potenziellem Paketverlust übertragen wird. Der f8-Modus wird in 3G-Mobilfunknetzen verwendet und ist eine Variante des Ausgangsrückkopplungsmodus, bei dem die Entschlüsselung auf die gleiche Weise wie die Verschlüsselung erfolgt.

Mit SRTP können Entwickler auch die Verschlüsselung mithilfe einer Null-Verschlüsselung deaktivieren. Zero Cipher verschlüsselt nicht, sondern kopiert den eingehenden Stream ohne Änderungen direkt in den ausgehenden.

WebRTC empfiehlt die Verwendung einer Null-Verschlüsselung nicht, da die Datensicherheit für Endbenutzer sehr wichtig ist. Tatsächlich MÜSSEN gültige WebRTC-Implementierungen die Verschlüsselung unterstützen, derzeit mit DTLS-SRTP .

Integrität


Um die Nachrichtenintegrität in SRTP zu gewährleisten, wird basierend auf dem Inhalt und einem Teil der Paket-Header ein Authentifizierungsetikett erstellt, das dann dem RTP-Paket hinzugefügt wird. Dieses Etikett wird verwendet, um den Inhalt der Nutzdaten zu validieren, was wiederum eine Datenfälschung verhindert.

Die Authentifizierung ist auch die Grundlage für die Abwehr von Re-Access-Angriffen. Um sie zu blockieren, wird jedem Paket ein sequentieller Index zugewiesen. Eine neue Nachricht wird nur akzeptiert, wenn ihr Index der nächste in der Reihenfolge ist und noch nicht empfangen wurde. Indizes sind aufgrund der oben beschriebenen Integrität wirksam. ohne sie besteht die Möglichkeit einer Substitution von Indizes.

Obwohl WebRTC hauptsächlich den HMAC-SHA1-Algorithmus für die SRTP-Integrität verwendet, wird dringend empfohlen, Sätze von Algorithmen mit PFS (Perfect Forward Secrecy) anstelle von Nicht-PFS und AEAD (Authenticated Encryption with Associated Data) anstelle von Nicht-AEAD auszuwählen. Neuere WebRTC-Implementierungen verwenden DTLS v1.2 mit der Algorithmus-Suite TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.

Die Schlüssel


SRTP verwendet die Schlüsselgenerierungsfunktion (KDF), um Schlüssel basierend auf dem Hauptschlüssel zu erstellen. Das Schlüsselverwaltungsprotokoll erstellt alle Schlüssel in einer Sitzung mithilfe eines Hauptschlüssels. Aufgrund der Tatsache, dass jede Sitzung einen eigenen eindeutigen Schlüssel hat, sind alle Sitzungen geschützt. Wenn daher eine Sitzung kompromittiert wurde, ist der Rest weiterhin geschützt. Das Schlüsselverwaltungsprotokoll wird für den Hauptschlüssel verwendet - normalerweise ist es ZRTP oder MIKEY, es gibt jedoch auch andere Variationen.


RTP IP Stack

Streams in WebRTC werden durch eines von zwei Protokollen geschützt: SRTP oder DTLS (Datagram Transport Layer Security). DTLS - zur Verschlüsselung von Datenströmen, SRTP - für Medienströme. Für den Schlüsselaustausch in SRTP wird DTLS-SRTP jedoch verwendet, um Broker-Angriffe zu erkennen. Dies wird in den IETF-Dokumenten beschrieben: WebRTC-Sicherheit und Sicherheitsbogen .

SRTCP (Secure Real-Time Transport Control Protocol)


SRTP hat ein Schwesterprotokoll - SRTCP (Secure Real-Time Transport Control Protocol). SRTCP erweitert RTCP (Real-Time Transport Control Protocol) mit denselben Funktionen wie SRTP erweitert RTP, einschließlich Verschlüsselung und Authentifizierung. Wie bei SRTP können fast alle SRTCP-Sicherheitsfunktionen deaktiviert werden, mit Ausnahme der Nachrichtenauthentifizierung - dies ist für SRTCP erforderlich.

Fallstricke von SRTP


SRTP verschlüsselt die Nutzdaten von RTP-Paketen, nicht jedoch die Header-Erweiterung. Dies führt zu einer Sicherheitsanfälligkeit, da die Header-Erweiterung im RTP-Paket möglicherweise wichtige Informationen enthält, z. B. die Lautstärke jedes Pakets im Medienstrom. Möglicherweise ist einem Angreifer bekannt, dass zwei Personen im Netzwerk kommunizieren - die Privatsphäre der Konversation kann beeinträchtigt sein. Dies wurde in IETF Request for Comments: 6904 erläutert, für das alle nachfolgenden Implementierungen von SRTP erforderlich sind, um Header-Erweiterungen zu verschlüsseln.

In einigen Fällen - beispielsweise bei einer Konferenz mit vielen Teilnehmern - kann ein Vermittler in Form von SFM (Selective Forwarding Mixer) erforderlich sein, um die RTP-Parameter während der Weiterleitung von Streams zu optimieren. Ein solcher Vermittler verstößt gegen das in Peer-to-Peer-Systemen verwendete End-to-End-Verschlüsselungsprinzip. Mit anderen Worten, Endgeräte müssen einem anderen Teilnehmer „vertrauen“. Um diese Einschränkung zu umgehen, arbeitet die Privacy Enhanced RTP Conferencing (PERC, eine der IETF-Arbeitsgruppen) an Lösungen wie den Doppelverschlüsselungsverfahren von SRTP . PERCs bieten Garantien, die durch Hop-by-Hop- und End-to-End-Verschlüsselung in zwei getrennten, aber verwandten Kontexten unterstützt werden. Wir werden es euch in den nächsten Beiträgen erzählen!

Source: https://habr.com/ru/post/de413165/


All Articles