安全即時傳輸協定（SRTP）通過提供以下幾個主要功能來保障即時傳輸協定（RTP）中的資料及訊息的安全性：

1. **加密**：SRTP 主要使用 AES（高級加密標準）進行資料流的加密，以保護資料的保密性。它提供兩種加密模式，即分段整型計數器模式和 f8 模式，這些模式能夠將原始的 AES 塊密文轉換為流密文。此外，SRTP 也支援「零加密演算法」，允許在不進行加密的情況下，依然提供其他安全特性。

2. **訊息認證與完整性保障**：SRTP 使用 HMAC-SHA1 演算法來進行訊息認證，這確保了資料在傳輸過程中的完整性，防止攻擊者偽造或竄改資料。

3. **重放保護**：除了認證與完整性保護外，SRTP 也有針對重放攻擊的防護機制。接收方透過維護對過去接收到的訊息的索引，來檢查每個新接收到的訊息是否為未曾重放過的資料。

這些功能的結合使得 SRTP 能有效保障即時傳輸協定中數據的機密性、完整性以及防止重播攻擊的能力。通過加密、認證和防重放，SRTP 提供了一個安全的即時傳輸框架，滿足了多媒體通訊中對資料安全的需求。
安全即時傳輸協定（SRTP）是如何保障即時傳輸協定中的資料及訊息的安全性？
**安全即時傳輸協定**（Secure Real-time Transport Protocol 或 **SRTP**）是在即時傳輸協定（Real-time Transport Protocol 或 **RTP**）基礎上所定義的一個協定，旨在為單播和多播應用程式中的即時傳輸協定的資料提供加密、訊息認證、完整性保證和重放保護。它是由 David Oran（思科）和 Rolf Blom（愛立信）開發的，並最早由 IETF 於 2004 年 3 月作為 RFC 3711 發布。

由於即時傳輸協定和即時傳輸控制協定（Real-time Transport Control Protocol 或 RTCP）有著緊密的聯絡，安全即時傳輸協定同樣也有一個伴生協定，它被稱為**安全即時傳輸控制協定**（Secure RTCP 或 SRTCP）；安全即時傳輸控制協定為即時傳輸控制協定提供類似的與安全有關的特性，就像安全即時傳輸協定為即時傳輸協定提供的那些一樣。

對於 RTP 和 RTCP 應用程式來說，SRTP 和 SRTCP 是可選項，而且即使使用了 SRTP 和 SRTCP 協定，它們提供的各種功能 (例如加密和認證) 也都是可以獨立選擇使用或者不使用的。唯一的例外就是當使用 SRTCP 的時候訊息認證 (message authentication) 是必選的.

## 資料流加密

為了提供對資料流的保密，需要對資料流進行加密和解密。關於這一點，安全即時傳輸協定（結合安全即時傳輸控制協定）只為一種加密演算法，即 AES 制定了使用標準。這種加密演算法有兩種加密模式，它們能將原始的 AES 塊密文轉換成流密文：

* 分段整型計數器模式 —— 一種典型的計數器模式，它允許對任意塊的隨機存取 —— 這一點對於即時傳輸協定的資料流在可能丟包的不可靠網路上進行傳輸是非常必要的。一般情況下，幾乎所有的函式都能被作為計數器使用，只要它在一次迴圈中重複的次數不要太多就可以。但是，用於即時傳輸協定資料加密的僅僅是一個普通的整型遞增計數器。執行在這一模式下的 AES 是其預設的加密演算法，它使用的是預設 128 位元長度的加密金鑰和預設 112 位元長度的對談鹽金鑰。
* f8 模式 —— 輸出回饋模式的一個變種，它增加了定位功能並改變了初始化功能。其加密金鑰和鹽金鑰的預設值和計數器模式下的 AES 是一樣的。執行在這種模式下的 AES 被用於 UMTS 3G 行動網路。

除了 AES 加密演算法，安全即時傳輸協定還允許徹底禁用加密，此時使用的是所謂的「零加密演算法」。它可以被認為是安全即時傳輸協定支援的第二種加密演算法，或者說是它所支援的第三種加密模式。事實上，零加密演算法並不進行任何加密，也就是說，加密演算法把金鑰流想像成只包含「0」的流，並原封不動地將輸入流複製到輸出流。這種模式是所有與安全即時傳輸協定相容的系統都必須實現的，因為它可以被用在不需要安全即時傳輸協定提供保密性保證而只要求它提供其它特性（如認證和訊息完整性）的場合。

儘管從技術上來說安全即時傳輸協定能輕鬆地納入新的加密演算法，但安全即時傳輸協定標準指出除上述加密演算法以外的新的加密演算法不一定能被簡單地添加到一些安全即時傳輸協定的具體實現中去。添加一種新的加密演算法並確保它與安全即時傳輸協定標準相容的唯一有效方式是發布一個明確定義該演算法的新的伴生的標準跟蹤 RFC。

## 認證、完整性和重放保護

以上列舉的加密演算法本身並不能保護訊息的完整性，攻擊者仍然可以偽造資料 —— 至少可以重放過去傳輸過的資料。因此，安全即時傳輸協定標準同時還提供了保護資料完整性以及防止重放的方法。

為了進行訊息認證並保護訊息的完整性，安全即時傳輸協定使用了 HMAC-SHA1 演算法（在 RFC 2104 中定義）。這種演算法使用的是預設 160 位元長度的 HMAC-SHA1 認證金鑰。但是它不能抵禦重放攻擊；重放保護方法建議接收方維護好先前接收到的訊息的索引，將它們與每個新接收到的訊息進行比對，並只接收那些過去沒有被播放過的新訊息。這種方法十分依賴於完整性保護的使用（以杜絕針對訊息索引的欺騙技術）。

## 參見

* ZRTP

## 外部連結

* RFC 3711, Proposed Standard, The Secure Real-time Transport Protocol (SRTP)
* RFC 3551, Standard 65, RTP Profile for Audio and Video Conferences with Minimal Control
* RFC 3550, Standard 64, RTP: A Transport Protocol for Real-Time Applications
* RFC 2104, Informational, HMAC: Keyed-Hashing for Message Authentication
## 資料流加密

為了提供對資料流的保密，需要對資料流進行加密和解密。關於這一點，安全即時傳輸協定（結合安全即時傳輸控制協定）只為一種加密演算法，即 AES 制定了使用標準。這種加密演算法有兩種加密模式，它們能將原始的 AES 塊密文轉換成流密文：

* 分段整型計數器模式 —— 一種典型的計數器模式，它允許對任意塊的隨機存取 —— 這一點對於即時傳輸協定的資料流在可能丟包的不可靠網路上進行傳輸是非常必要的。一般情況下，幾乎所有的函式都能被作為計數器使用，只要它在一次迴圈中重複的次數不要太多就可以。但是，用於即時傳輸協定資料加密的僅僅是一個普通的整型遞增計數器。執行在這一模式下的 AES 是其預設的加密演算法，它使用的是預設 128 位元長度的加密金鑰和預設 112 位元長度的對談鹽金鑰。
* f8 模式 —— 輸出回饋模式的一個變種，它增加了定位功能並改變了初始化功能。其加密金鑰和鹽金鑰的預設值和計數器模式下的 AES 是一樣的。執行在這種模式下的 AES 被用於 UMTS 3G 行動網路。 **安全即時傳輸協定**（Secure Real-time Transport Protocol 或 **SRTP**）是在即時傳輸協定（Real-time Transport Protocol 或 **RTP**）基礎上所定義的一個協定，旨在為單播和多播應用程式中的即時傳輸協定的資料提供加密、訊息認證、完整性保證和重放保護。它是由 David Oran（思科）和 Rolf Blom（愛立信）開發的，並最早由 IETF 於 2004 年 3 月作為 RFC 3711 發布。

由於即時傳輸協定和即時傳輸控制協定（Real-time Transport Control Protocol 或 RTCP）有著緊密的聯絡，安全即時傳輸協定同樣也有一個伴生協定，它被稱為**安全即時傳輸控制協定**（Secure RTCP 或 SRTCP）；安全即時傳輸控制協定為即時傳輸控制協定提供類似的與安全有關的特性，就像安全即時傳輸協定為即時傳輸協定提供的那些一樣。

對於 RTP 和 RTCP 應用程式來說，SRTP 和 SRTCP 是可選項，而且即使使用了 SRTP 和 SRTCP 協定，它們提供的各種功能 (例如加密和認證) 也都是可以獨立選擇使用或者不使用的。唯一的例外就是當使用 SRTCP 的時候訊息認證 (message authentication) 是必選的. **安全即時傳輸協定**（Secure Real-time Transport Protocol 或 **SRTP**）是在即時傳輸協定（Real-time Transport Protocol 或 **RTP**）基礎上所定義的一個協定，旨在為單播和多播應用程式中的即時傳輸協定的資料提供加密、訊息認證、完整性保證和重放保護。它是由 David Oran（思科）和 Rolf Blom（愛立信）開發的，並最早由 IETF 於 2004 年 3 月作為 RFC 3711 發布。

由於即時傳輸協定和即時傳輸控制協定（Real-time Transport Control Protocol 或 RTCP）有著緊密的聯絡，安全即時傳輸協定同樣也有一個伴生協定，它被稱為**安全即時傳輸控制協定**（Secure RTCP 或 SRTCP）；安全即時傳輸控制協定為即時傳輸控制協定提供類似的與安全有關的特性，就像安全即時傳輸協定為即時傳輸協定提供的那些一樣。

對於 RTP 和 RTCP 應用程式來說，SRTP 和 SRTCP 是可選項，而且即使使用了 SRTP 和 SRTCP 協定，它們提供的各種功能 (例如加密和認證) 也都是可以獨立選擇使用或者不使用的。唯一的例外就是當使用 SRTCP 的時候訊息認證 (message authentication) 是必選的. ## 資料流加密

為了提供對資料流的保密，需要對資料流進行加密和解密。關於這一點，安全即時傳輸協定（結合安全即時傳輸控制協定）只為一種加密演算法，即 AES 制定了使用標準。這種加密演算法有兩種加密模式，它們能將原始的 AES 塊密文轉換成流密文：

* 分段整型計數器模式 —— 一種典型的計數器模式，它允許對任意塊的隨機存取 —— 這一點對於即時傳輸協定的資料流在可能丟包的不可靠網路上進行傳輸是非常必要的。一般情況下，幾乎所有的函式都能被作為計數器使用，只要它在一次迴圈中重複的次數不要太多就可以。但是，用於即時傳輸協定資料加密的僅僅是一個普通的整型遞增計數器。執行在這一模式下的 AES 是其預設的加密演算法，它使用的是預設 128 位元長度的加密金鑰和預設 112 位元長度的對談鹽金鑰。
* f8 模式 —— 輸出回饋模式的一個變種，它增加了定位功能並改變了初始化功能。其加密金鑰和鹽金鑰的預設值和計數器模式下的 AES 是一樣的。執行在這種模式下的 AES 被用於 UMTS 3G 行動網路。