(MS-SRTP) : Secure Real-Time Transport Protocol (SRTP) Extensions
(MS-SRTP) : Secure Real-Time Transport Protocol (SRTP) Extensions
(MS-SRTP) : Secure Real-Time Transport Protocol (SRTP) Extensions
No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.
Patents. Microsoft has patents that may cover your implementations of the technologies
described in the Open Specifications. Neither this notice nor Microsoft's delivery of the
documentation grants any licenses under those or any other Microsoft patents. However, a given
Open Specification may be covered by Microsoft Open Specification Promise or the Community
Promise. If you would prefer a written license, or if the technologies described in the Open
Specifications are not covered by the Open Specifications Promise or Community Promise, as
applicable, patent licenses are available by contacting [email protected].
Trademarks. The names of companies and products contained in this documentation may be
covered by trademarks or similar intellectual property rights. This notice does not grant any
licenses under those rights. For a list of Microsoft trademarks, visit
www.microsoft.com/trademarks.
Fictitious Names. The example companies, organizations, products, domain names, e-mail
addresses, logos, people, places, and events depicted in this documentation are fictitious. No
association with any real company, organization, product, domain name, email address, logo,
person, place, or event is intended or should be inferred.
Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other
than specifically described above, whether by implication, estoppel, or otherwise.
Tools. The Open Specifications do not require the use of Microsoft programming tools or programming
environments in order for you to develop an implementation. If you have access to Microsoft
programming tools and environments you are free to take advantage of them. Certain Open
Specifications are intended for use in conjunction with publicly available standard specifications and
network programming art, and assumes that the reader either is familiar with the aforementioned
material or has immediate access to it.
1 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Revision Summary
Date
Revision
History
Revision
Class
Comments
4/4/2008
0.1
New
Initial version
4/25/2008
0.2
Minor
6/27/2008
1.0
Major
8/15/2008
1.01
Minor
12/12/2008
2.0
Major
2/13/2009
2.01
Minor
3/13/2009
2.02
Minor
7/13/2009
2.03
Major
8/28/2009
2.04
Editorial
11/6/2009
2.05
Editorial
2/19/2010
2.06
Editorial
3/31/2010
2.07
Major
4/30/2010
2.08
Editorial
6/7/2010
2.09
Editorial
6/29/2010
2.10
Editorial
7/23/2010
2.10
None
9/27/2010
3.0
Major
11/15/2010
3.0
None
12/17/2010
3.0
None
3/18/2011
3.0
None
6/10/2011
3.0
None
1/20/2012
4.0
Major
4/11/2012
4.0
None
7/16/2012
4.0
None
10/8/2012
4.1
Minor
2/11/2013
4.1
None
2 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Date
Revision
History
Revision
Class
7/30/2013
4.1
None
11/18/2013
4.1
None
2/10/2014
4.1
None
4/30/2014
4.1
None
7/31/2014
4.1
None
10/30/2014
4.1
None
3/30/2015
5.0
Major
6/30/2015
5.0
None
9/4/2015
5.0
None
11/19/2015
6.0
Major
Comments
3 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Table of Contents
1
Introduction ............................................................................................................ 5
1.1
Glossary ........................................................................................................... 5
1.2
References ........................................................................................................ 7
1.2.1
Normative References ................................................................................... 7
1.2.2
Informative References ................................................................................. 7
1.3
Overview .......................................................................................................... 7
1.4
Relationship to Other Protocols ............................................................................ 7
1.5
Prerequisites/Preconditions ................................................................................. 8
1.6
Applicability Statement ....................................................................................... 8
1.7
Versioning and Capability Negotiation ................................................................... 8
1.8
Vendor-Extensible Fields ..................................................................................... 8
1.9
Standards Assignments....................................................................................... 8
Messages ................................................................................................................. 9
2.1
Transport .......................................................................................................... 9
2.2
Message Syntax ................................................................................................. 9
Security ................................................................................................................. 15
5.1
Security Considerations for Implementers ........................................................... 15
5.2
Index of Security Parameters ............................................................................ 15
Index ..................................................................................................................... 19
4 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Introduction
The Secure Real-time Transport Protocol (SRTP) Extensions Protocol specifies a set of proprietary
extensions to the Secure Real-time Transport Protocol (SRTP). This protocol provides the same
functional capabilities as SRTP, which include providing confidentiality, message authentication, and
replay protection to the RTP traffic and to the control traffic for RTP.
This protocol is a strict subset of SRTP and differs from it in two key aspects:
The first key difference is that this protocol supports a strict subset of the SRTP default
cryptographic transform algorithms and requires that some parameters of the encryption and
authentication algorithms described in [RFC3711] be of specific values. These requirements are
specified in section 3.
The second key difference is that there is a set of "MAY, SHOULD, MUST, SHOULD NOT, MUST
NOT" protocol behaviors that differ between this protocol and [RFC3711]. Section 3 enumerates
these behavioral differences.
Unless explicitly noted in this document, this protocol follows standard SRTP.
Sections 1.8, 2, and 3 of this specification are normative and can contain the terms MAY, SHOULD,
MUST, MUST NOT, and SHOULD NOT as defined in [RFC2119]. Sections 1.5 and 1.9 are also
normative but do not contain those terms. All other sections and examples in this specification are
informative.
1.1
Glossary
NULL cipher: A cipher that does not modify a Real-Time Transport Protocol (RTP) payload and
is defined in the Secure Real-Time Transport Protocol (SRTP) protocol. It is used when RTP
packet encryption is not necessary, but packet authentication (1) is necessary.
Real-Time Transport Control Protocol (RTCP): A network transport protocol that enables
monitoring of Real-Time Transport Protocol (RTP) data delivery and provides minimal control
and identification functionality, as described in [RFC3550].
Real-Time Transport Protocol (RTP): A network transport protocol that provides end-to-end
transport functions that are suitable for applications that transmit real-time data, such as audio
and video, as described in [RFC3550].
RTCP packet: A control packet consisting of a fixed header part similar to that of RTP packets,
followed by structured elements that vary depending upon the RTCP packet type. Typically,
multiple RTCP packets are sent together as a compound RTCP packet in a single packet of the
underlying protocol; this is enabled by the length field in the fixed header of each RTCP packet.
See [RFC3550] section 3.
RTP packet: A data packet consisting of the fixed RTP header, a possibly empty list of contributing
sources, and the payload data. Some underlying protocols may require an encapsulation of the
RTP packet to be defined. Typically one packet of the underlying protocol contains a single RTP
packet, but several RTP packets can be contained if permitted by the encapsulation method. See
[RFC3550] section 3.
RTP profile: A collection that contains payload type codes and mappings to payload formats, such
as media encodings. It can also define extensions or modifications to the Real-Time Transport
Protocol (RTP) that are specific to a particular class of applications. Typically, an application
operates under only one profile.
salt: An additional random quantity, specified as input to an encryption function that is used to
increase the strength of the encryption.
Secure Real-Time Transport Protocol (SRTP): A profile of Real-Time Transport Protocol
(RTP) that provides encryption, message authentication (2), and replay protection to the RTP
data, as described in [RFC3711].
Session Description Protocol (SDP): A protocol that is used for session announcement, session
invitation, and other forms of multimedia session initiation. For more information see [MS-SDP]
and [RFC3264].
session key: A symmetric key that is derived from a master key and is used to encrypt or
authenticate a specific media stream by using the Secure Real-Time Transport Protocol
(SRTP) and Scale Secure Real-Time Transport Protocol (SSRTP).
SHA-1: An algorithm that generates a 160-bit hash value from an arbitrary amount of input data,
as described in [RFC3174]. SHA-1 is used with the Digital Signature Algorithm (DSA) in the
Digital Signature Standard (DSS), in addition to other algorithms and standards.
SHA-1 hash: A hashing algorithm as specified in [FIPS180-2] that was developed by the National
Institute of Standards and Technology (NIST) and the National Security Agency (NSA).
Synchronization Source (SSRC): A 32-bit identifier that uniquely identifies a media stream (2)
in a Real-Time Transport Protocol (RTP) session. An SSRC value is part of an RTP packet
header, as described in [RFC3550].
MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as defined
in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.
6 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
1.2
References
Links to a document in the Microsoft Open Specifications library point to the correct section in the
most recently published version of the referenced document. However, because individual documents
in the library are not updated at the same time, the section numbers in the documents may not
match. You can confirm the correct section numbering by checking the Errata.
1.3
Overview
This protocol provides the same functionality as the Secure Real-Time Transport Protocol (SRTP)
by providing confidentiality, message authentication, and replay protection to Real-Time Transport
Protocol (RTP) traffic and to the control traffic for RTP, the Real-Time Transport Control Protocol
(RTCP).
This protocol is a strict subset of SRTP and differs from it in the following two key aspects. In all other
cases, this protocol follows standard SRTP.
1.4
The first key difference is that this protocol supports a subset of the SRTP default
cryptographic transform algorithms, and it requires certain encryption and authentication
algorithm parameters to be fixed values. For example, the NULL cipher transform is not
supported.
The second key difference is that there is a set of "MAY, SHOULD, MUST, SHOULD NOT, MUST
NOT" protocol behaviors where this protocol differs in behavior from [RFC3711]. Section 3
enumerates these behavioral differences.
This protocol relies on Session Description Protocol (SDP) to exchange master keys and key
parameters. Refer to [MS-SDPEXT] for SDP information pertinent to this protocol.
This protocol works with other RTP profiles; for example, dual-tone multi-frequency (DTMF), as
described in [MS-DTMF]. This protocol treats all other RTP profile outputs the same as audio or video
7 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
data. It encrypts and authenticates after processing is performed on the sending side and
authenticates and decrypts before passing RTP packets and RTCP packets on the receiving side.
The Secure Real-time Transport Control Protocol (SRTCP) is considered a sub-protocol to SRTP, and
they are described together in [RFC3711]. The proprietary implementation of SRTCP is specified in this
document in a similar way.
1.5
Prerequisites/Preconditions
This protocol requires that encryption and authentication algorithms are negotiated using SDP, as
described in [MS-SDPEXT] section 3.1.5.8.
This protocol requires that the master keys are exchanged using SDP, as described in [MSSDPEXT] section 3.1.5.8, and the keys are configured properly.
This protocol only provides message confidentiality, authentication, and replay protection for RTP
packets and RTCP packets.
1.6
Applicability Statement
This protocol is used where users require secure RTP traffic. This protocol is required to be used with
the SDP extension described in [MS-SDPEXT] section 3.1.5.8 to set up the shared master key
securely.
1.7
None.
1.8
Vendor-Extensible Fields
None.
1.9
Standards Assignments
None.
8 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
2
2.1
Messages
Transport
This protocol transforms RTP/RTCP packets only. Refer to [MS-RTP] section 2.1 for transports that the
RTP protocol uses.
2.2
Message Syntax
9 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Protocol Details
3.1
Endpoint Details
This protocol can be used to secure any RTP traffic. All behavior described here applies to both
protocol client and server roles.
The following sections specify the differences between this protocol and SRTP, as specified in
[RFC3711].
3.1.2 Timers
None.
3.1.3 Initialization
3.1.3.1 Cryptographic Contexts
SRTP requires that each endpoint in an SRTP session maintain cryptographic contexts. For more
information, see [RFC3711] section 3.2.3. This protocol maintains cryptographic contexts differently
from SRTP [RFC3711].
This protocol maintains two cryptographic contexts per SRTP session:
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
This protocol supports multiple media streams sharing the same SRTP session. Each media stream
MUST be uniquely identified by one Synchronization Source (SSRC). This protocol maintains per
SSRC transform independent parameters in cryptographic contexts, as specified in section 3.1.3.2.
When sending or receiving an SRTP packet, this protocol first uses the SRTP session and direction to
identify the cryptographic context, then uses the SSRC in the packet to decide the per SSRC transform
independent parameters in the cryptographic context.
The encryption algorithm MUST be AES Counter Mode, and encryption MUST be used.
The master key lifetime MUST be 248 -1 packets for RTP and 231 -1 for RTCP.
SRTCP and SRTP MUST have the same parameter settings with the exceptions specified in
[RFC3711] section 3.2.1.
This protocol maintains the following transform independent parameters per SSRC.
For information regarding transform dependent parameters, see sections 3.1.3.3.1 and 3.1.3.3.2.
Unless explicitly noted, this protocol follows SRTP, as specified in [RFC3711], to set other mandatory
parameters.
n_b (block cipher size) MUST be 128-bit (AES algorithm's fixed cipher block size).
The Session salt key MUST be used and n_s MUST be 112-bit.
SRTP_PREFIX_LENGTH MUST be 0.
This protocol uses the method specified in section 3.1.3.1 to identify the cryptographic context
and the SSRC to identify the transform independent parameters in the cryptographic context.
This protocol logs the number of SRTP failures. Individual replay check failures or
authentication failures are not logged.
12 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
This protocol does not honor the e-bit. All incoming RTCP packets MUST be encrypted
regardless of the e-bit setting.
This protocol uses the method specified in section 3.1.3.1 to identify the cryptographic context
to use.
This protocol logs the number of SRTCP failures. Individual replay check failures or
authentication failures are not logged.
13 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Protocol Examples
This protocol does not introduce new protocol behaviors. The test vectors in [RFC3711] apply to this
protocol. For more information, see [RFC3711] Appendix B.
14 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Security
5.1
5.2
Master keys are randomly generated. The send and receive directions in the same SRTP
session do not use the same master key.
Master key exchange is done through external mechanisms in SDP. SDP is transferred on a
secure transport, for instance Transport Layer Security TLS.
The Initial RTP sequence number is randomly generated. But it cannot use a value close to
65535, because this could cause a rollover counter mismatch if there is packet loss at the
beginning of session startup. For example, the server products supported by this protocol use
a random value between 0 and 32767.
SRTP cannot terminate the connection when a replay attack is detected. Some RTP profiles
intentionally send the same packet multiple times, and the duplicated packets fail replay
check. For example, DTMF as described in [MS-DTMF].
Security parameter
Section
Encryption algorithm
3.1.3.2
Authentication algorithm
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.2
3.1.3.3.1
3.1.3.3.1
3.1.3.3.2
15 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
The information in this specification is applicable to the following Microsoft products or supplemental
software. References to product versions include released service packs.
Exceptions, if any, are noted below. If a service pack or Quick Fix Engineering (QFE) number appears
with the product version, behavior changed in that service pack or QFE. The new behavior also applies
to subsequent service packs of the product unless otherwise specified. If a product edition appears
with the product version, behavior is different in that product edition.
Unless otherwise specified, any statement of optional behavior in this specification that is prescribed
using the terms SHOULD or SHOULD NOT implies product behavior in accordance with the SHOULD or
SHOULD NOT prescription. Unless otherwise specified, the term MAY implies that the product does not
follow the prescription.
16 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Change Tracking
This section identifies changes that were made to this document since the last release. Changes are
classified as New, Major, Minor, Editorial, or No change.
The revision class New means that a new document is being released.
The revision class Major means that the technical content in the document was significantly revised.
Major changes affect protocol interoperability or implementation. Examples of major changes are:
The revision class Minor means that the meaning of the technical content was clarified. Minor changes
do not affect protocol interoperability or implementation. Examples of minor changes are updates to
clarify ambiguity at the sentence, paragraph, or table level.
The revision class Editorial means that the formatting in the technical content was changed. Editorial
changes apply to grammatical, formatting, and style issues.
The revision class No change means that no new technical changes were introduced. Minor editorial
and formatting changes may have been made, but the technical content of the document is identical
to the last released version.
Major and minor changes can be described further using the following change types:
Content updated.
Content removed.
Editorial changes are always classified with the change type Editorially updated.
Some important terms used in the change type descriptions are defined as follows:
17 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Protocol syntax refers to data elements (such as packets, structures, enumerations, and
methods) as well as interfaces.
Protocol revision refers to changes made to a protocol that affect the bits that are sent over the
wire.
The changes made to this document are listed in the following table. For more information, please
contact [email protected].
Section
Major change
(Y or N)
Change type
6 Appendix A:
Product Behavior
18 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
Index
C
Capability negotiation 8
Change tracking 17
Cryptographic contexts 10
Cryptographic transform default SRTP 11
E
Endpoint - abstract data model 10
transform dependent parameters 10
transform independent parameters 10
Endpoint - higher-layer triggered events 12
Endpoint - initialization
cryptographic contexts 10
session key derivation 12
SRTP default cryptographic transform 11
SRTP parameter settings 11
Endpoint - local events 13
Endpoint - message processing
receive an SRTCP packet 13
receive an SRTP packet 12
send an SRTCP packet 13
send an SRTP packet 12
Endpoint - overview 10
Endpoint - sequencing rules
receive an SRTCP packet 13
receive an SRTP packet 12
send an SRTCP packet 13
send an SRTP packet 12
Endpoint - timer events 13
Endpoint - timers 10
Examples
overview 14
F
Fields - vendor-extensible 8
G
Glossary 5
N
Normative references 7
O
Overview (synopsis) 7
P
Parameter settings - SRTP 11
Parameters - security index 15
Preconditions 8
Prerequisites 8
Product behavior 16
R
References 7
informative 7
normative 7
Relationship to other protocols 7
S
Security
implementer considerations 15
parameter index 15
Sequencing rules - endpoint
receive an SRTCP packet 13
receive an SRTP packet 12
send an SRTCP packet 13
19 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015
T
Timer events - endpoint 13
Timers - endpoint 10
Tracking changes 17
Transport 9
Triggered events
endpoint 12
V
Vendor-extensible fields 8
Versioning 8
20 / 20
[MS-SRTP] - v20151119
Secure Real-time Transport Protocol (SRTP) Extensions
Copyright 2015 Microsoft Corporation
Release: November 19, 2015