| rfc9335.original.xml | rfc9335.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!-- draft submitted in xml v3 --> | ||||
| <!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.15 (Ruby 2.7. 0) --> | <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.15 (Ruby 2.7. 0) --> | |||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
| -ietf-avtcore-cryptex-08" category="std" consensus="true" updates="3711" tocIncl | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| ude="true" sortRefs="true" symRefs="true" version="3"> | -ietf-avtcore-cryptex-08" number="9335" submissionType="IETF" | |||
| <!-- xml2rfc v2v3 conversion 3.13.1 --> | category="std" consensus="true" updates="3711" obsoletes="" tocInclude="true" so | |||
| rtRefs="true" symRefs="true" xml:lang="en" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.13.1 --> | ||||
| <front> | <front> | |||
| <title>Completely Encrypting RTP Header Extensions and Contributing Sources< | <title abbrev="Completely Encrypting RTP Header Extensions and CSRCs">Comple | |||
| /title> | tely Encrypting RTP Header Extensions and Contributing Sources</title> | |||
| <seriesInfo name="Internet-Draft" value="draft-ietf-avtcore-cryptex-08"/> | <seriesInfo name="RFC" value="9335"/> | |||
| <author initials="J." surname="Uberti" fullname="Justin Uberti"> | <author initials="J." surname="Uberti" fullname="Justin Uberti"> | |||
| <organization>Clubhouse</organization> | <organization></organization> | |||
| <address> | <address> | |||
| <email>justin@uberti.name</email> | <email>justin@uberti.name</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="C." surname="Jennings" fullname="Cullen Jennings"> | <author initials="C." surname="Jennings" fullname="Cullen Jennings"> | |||
| <organization>Cisco</organization> | <organization>Cisco</organization> | |||
| <address> | <address> | |||
| <email>fluffy@iii.ca</email> | <email>fluffy@iii.ca</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="S." surname="Garcia Murillo" fullname="Sergio Garcia Muril lo"> | <author initials="S." surname="Garcia Murillo" fullname="Sergio Garcia Muril lo"> | |||
| <organization>Millicast</organization> | <organization>Millicast</organization> | |||
| <address> | <address> | |||
| <email>sergio.garcia.murillo@cosmosoftware.io</email> | <email>sergio.garcia.murillo@cosmosoftware.io</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2022" month="August" day="04"/> | <date year="2023" month="January"/> | |||
| <area>ART</area> | <area>ART</area> | |||
| <workgroup>AVTCORE</workgroup> | <workgroup>AVTCORE</workgroup> | |||
| <keyword>SRTP</keyword> | <keyword>SRTP</keyword> | |||
| <abstract> | <abstract> | |||
| <t>While the Secure Real-time Transport Protocol (SRTP) provides confident iality | <t>While the Secure Real-time Transport Protocol (SRTP) provides confident iality | |||
| for the contents of a media packet, a significant amount of metadata is left | for the contents of a media packet, a significant amount of metadata is left | |||
| unprotected, including RTP header extensions and contributing sources (CSRCs). | unprotected, including RTP header extensions and contributing sources (CSRCs). | |||
| However, this data can be moderately sensitive in many applications. While | However, this data can be moderately sensitive in many applications. While | |||
| there have been previous attempts to protect this data, they have had limited | there have been previous attempts to protect this data, they have had limited | |||
| deployment, due to complexity as well as technical limitations.</t> | deployment, due to complexity as well as technical limitations.</t> | |||
| skipping to change at line 55 ¶ | skipping to change at line 61 ¶ | |||
| header extensions and CSRCs and uses simpler Session Description Protocol (SDP) signaling with the goal of | header extensions and CSRCs and uses simpler Session Description Protocol (SDP) signaling with the goal of | |||
| facilitating deployment.</t> | facilitating deployment.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction"> | <section anchor="introduction"> | |||
| <name>Introduction</name> | <name>Introduction</name> | |||
| <section anchor="problem-statement"> | <section anchor="problem-statement"> | |||
| <name>Problem Statement</name> | <name>Problem Statement</name> | |||
| <t>The Secure Real-time Transport Protocol (SRTP) <xref target="RFC3711" /> mechanism provides message | <t>The Secure Real-time Transport Protocol (SRTP) <xref target="RFC3711" /> mechanism provides message | |||
| authentication for the entire RTP packet, but only encrypts the RTP payload. | authentication for the entire RTP packet but only encrypts the RTP payload. | |||
| This has not historically been a problem, as much of the information carried | This has not historically been a problem, as much of the information carried | |||
| in the header has minimal sensitivity (e.g., RTP timestamp); in addition, | in the header has minimal sensitivity (e.g., RTP timestamp); in addition, | |||
| certain fields need to remain as cleartext because they are used for key | certain fields need to remain as cleartext because they are used for key | |||
| scheduling (e.g., RTP SSRC and sequence number).</t> | scheduling (e.g., RTP synchronization source (SSRC) and sequence number).</t> | |||
| <t>However, as noted in <xref target="RFC6904"/>, the security requireme nts can be different for | <t>However, as noted in <xref target="RFC6904"/>, the security requireme nts can be different for | |||
| information carried in RTP header extensions, including the per-packet sound | information carried in RTP header extensions, including the per-packet sound | |||
| levels defined in <xref target="RFC6464"/> and <xref target="RFC6465"/>, which a re specifically noted as | levels defined in <xref target="RFC6464"/> and <xref target="RFC6465"/>, which a re specifically noted as | |||
| being sensitive in the Security Considerations section of those RFCs.</t> | being sensitive in the Security Considerations sections of those RFCs.</t> | |||
| <t>In addition to the contents of the header extensions, there are now e nough | <t>In addition to the contents of the header extensions, there are now e nough | |||
| header extensions in active use that the header extension identifiers | header extensions in active use that the header extension identifiers | |||
| themselves can provide meaningful information in terms of determining the | themselves can provide meaningful information in terms of determining the | |||
| identity of the endpoint and/or application. Accordingly, these identifiers | identity of the endpoint and/or application. Accordingly, these identifiers | |||
| can be considered a fingerprinting issue.</t> | can be considered a fingerprinting issue.</t> | |||
| <t>Finally, the CSRCs included in RTP packets can also be sensitive, pot entially | <t>Finally, the CSRCs included in RTP packets can also be sensitive, pot entially | |||
| allowing a network eavesdropper to determine who was speaking and when during | allowing a network eavesdropper to determine who was speaking and when during | |||
| an otherwise secure conference call.</t> | an otherwise secure conference call.</t> | |||
| </section> | </section> | |||
| <section anchor="previous-solutions"> | <section anchor="previous-solutions"> | |||
| <name>Previous Solutions</name> | <name>Previous Solutions</name> | |||
| <t>Encryption of Header Extensions in SRTP <xref target="RFC6904"/> was proposed in 2013 as a solution to the problem of unprotected | <t>Encryption of Header Extensions in SRTP <xref target="RFC6904"/> was proposed in 2013 as a solution to the problem of unprotected | |||
| header extension values. However, it has not seen significant adoption, and | header extension values. However, it has not seen significant adoption and | |||
| has a few technical shortcomings.</t> | has a few technical shortcomings.</t> | |||
| <t>First, the mechanism is complicated. Since it allows encryption to be | ||||
| <t>First, the mechanism is complicated. Since it allows encryption to be | ||||
| negotiated on a per-extension basis, a fair amount of signaling logic is | negotiated on a per-extension basis, a fair amount of signaling logic is | |||
| required. And in the SRTP layer, a somewhat complex transform is required | required. And in the SRTP layer, a somewhat complex transform is required | |||
| to allow only the selected header extension values to be encrypted. One of | to allow only the selected header extension values to be encrypted. One of | |||
| the most popular SRTP implementations had a significant bug in this area | the most popular SRTP implementations had a significant bug in this area | |||
| that was not detected for five years.</t> | that was not detected for five years.</t> | |||
| <t>Second, it only protects the header extension values, and not their i ds or | <t>Second, the mechanism only protects the header extension values and n ot their identifiers or | |||
| lengths. It also does not protect the CSRCs. As noted above, this leaves | lengths. It also does not protect the CSRCs. As noted above, this leaves | |||
| a fair amount of potentially sensitive information exposed.</t> | a fair amount of potentially sensitive information exposed.</t> | |||
| <t>Third, it bloats the header extension space. Because each extension m ust | <t>Third, the mechanism bloats the header extension space. Because each extensio n must | |||
| be offered in both unencrypted and encrypted forms, twice as many header | be offered in both unencrypted and encrypted forms, twice as many header | |||
| extensions must be offered, which will in many cases push implementations | extensions must be offered, which will in many cases push implementations | |||
| past the 14-extension limit for the use of one-byte extension headers | past the 14-extension limit for the use of one-byte extension headers | |||
| defined in <xref target="RFC8285"/>. Accordingly, implementations will need to u | defined in <xref target="RFC8285"/>. Accordingly, in many cases, implementations | |||
| se | will need to use | |||
| two-byte headers in many cases, which are not supported well by some | two-byte headers, which are not supported well by some | |||
| existing implementations.</t> | existing implementations.</t> | |||
| <t>Finally, the header extension bloat combined with the need for backwa rds | <t>Finally, the header extension bloat combined with the need for backwa rd | |||
| compatibility results in additional wire overhead. Because two-byte | compatibility results in additional wire overhead. Because two-byte | |||
| extension headers may not be handled well by existing implementations, | extension headers may not be handled well by existing implementations, | |||
| one-byte extension identifiers will need to be used for the unencrypted | one-byte extension identifiers will need to be used for the unencrypted | |||
| (backwards compatible) forms, and two-byte for the encrypted forms. | (backward-compatible) forms, and two-byte for the encrypted forms. | |||
| Thus, deployment of <xref target="RFC6904"/> encryption for header extensions wi | Thus, deployment of encryption for header extensions <xref target="RFC6904"/> wi | |||
| ll | ll | |||
| typically result in multiple extra bytes in each RTP packet, compared | typically result in multiple extra bytes in each RTP packet, compared | |||
| to the present situation.</t> | to the present situation.</t> | |||
| </section> | </section> | |||
| <section anchor="goals"> | <section anchor="goals"> | |||
| <name>Goals</name> | <name>Goals</name> | |||
| <t>From the previous analysis, the desired properties of a solution are: </t> | <t>From the previous analysis, the desired properties of a solution are: </t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li>Build on existing <xref target="RFC3711"/> SRTP framework (simple | <li>Built on the existing SRTP framework <xref target="RFC3711"/> (sim | |||
| to understand)</li> | ple to understand)</li> | |||
| <li>Build on existing <xref target="RFC8285"/> header extension framew | <li>Built on the existing header extension framework <xref target="RFC | |||
| ork (simple to implement)</li> | 8285"/> (simple to implement)</li> | |||
| <li>Protection of header extension ids, lengths, and values</li> | <li>Protection of header extension identifiers, lengths, and values</l | |||
| i> | ||||
| <li>Protection of CSRCs when present</li> | <li>Protection of CSRCs when present</li> | |||
| <li>Simple signaling</li> | <li>Simple signaling</li> | |||
| <li>Simple crypto transform and SRTP interactions</li> | <li>Simple crypto transform and SRTP interactions</li> | |||
| <li>Backward compatible with unencrypted endpoints, if desired</li> | <li>Backward compatibility with unencrypted endpoints, if desired</li> | |||
| <li>Backward compatible with existing RTP tooling</li> | <li>Backward compatibility with existing RTP tooling</li> | |||
| </ul> | </ul> | |||
| <t>The last point deserves further discussion. While considering possibl | <t>The last point deserves further discussion. While other possible | |||
| e solutions that would have encrypted more of the RTP header (e.g., the number o | solutions that would have encrypted more of the RTP | |||
| f CSRCs), lack of support on current tools was inevitable and the additional com | header (e.g., the number of CSRCs) were considered, the inability to pars | |||
| plexity outweighed the slight improvement in confidentiality by fixing previous | e the | |||
| solutions. Hence, a new approach was needed to solve the described problem in <x | resultant packets with current tools and a generally higher level of | |||
| ref target="problem-statement"/>.</t> | complexity outweighed the slight improvement in confidentiality in | |||
| these solutions. Hence, a more pragmatic approach was taken to solve | ||||
| the problem described in <xref target="problem-statement"/>.</t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="terminology"> | <section anchor="terminology"> | |||
| <name>Terminology</name> | <name>Terminology</name> | |||
| <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14 | <t> | |||
| >REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| nterpreted as | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | be interpreted as | |||
| only when, they | described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | |||
| appear in all capitals, as shown here.</t> | when, and only when, they appear in all capitals, as shown here. | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="design"> | <section anchor="design"> | |||
| <name>Design</name> | <name>Design</name> | |||
| <t>This specification proposes a mechanism to negotiate encryption of all | <t>This specification proposes a mechanism to negotiate encryption of all | |||
| RTP header extensions (ids, lengths, and values) as well as CSRC values. It | RTP header extensions (ids, lengths, and values) as well as CSRC values. It | |||
| reuses the existing SRTP framework, is accordingly simple to implement, and | reuses the existing SRTP framework, is accordingly simple to implement, and | |||
| is backward compatible with existing RTP packet parsing code, even when | is backward compatible with existing RTP packet parsing code, even when | |||
| support for the mechanism has been negotiated.</t> | support for the mechanism has been negotiated.</t> | |||
| <t>Except when explicitly stated otherwise, Cryptex reuses all the framewo rk procedures, transforms and considerations described in <xref target="RFC3711" />.</t> | <t>Except when explicitly stated otherwise, Cryptex reuses all the framewo rk procedures, transforms, and considerations described in <xref target="RFC3711 "/>.</t> | |||
| </section> | </section> | |||
| <section anchor="sdp-considerations"> | <section anchor="sdp-considerations"> | |||
| <name>SDP Considerations</name> | <name>SDP Considerations</name> | |||
| <t>Cryptex support is indicated via a new "a=cryptex" SDP attribute define d in this specification.</t> | <t>Cryptex support is indicated via a new "a=cryptex" SDP attribute define d in this specification.</t> | |||
| <t>The new "a=cryptex" attribute is a property attribute as defined in <xr | <t>The new "a=cryptex" attribute is a property attribute as defined in <xr | |||
| ef target="RFC8866"/> section 5.13 and therefore takes no value, and can be used | ef target="RFC8866" sectionFormat="of" section="5.13"/>; it therefore takes no v | |||
| at the session level or media level.</t> | alue and can be used at the session level or media level.</t> | |||
| <t>The presence of the "a=cryptex" attribute in the SDP (either in an offe | <t>The presence of the "a=cryptex" attribute in the SDP (in either an offe | |||
| r or answer) indicates that | r or an answer) indicates that | |||
| the endpoint is capable of receiving RTP packets encrypted with Cryptex, as defi ned below.</t> | the endpoint is capable of receiving RTP packets encrypted with Cryptex, as defi ned below.</t> | |||
| <t>Once each peer has verified that the other party supports receiving RTP | <t>Once each peer has verified that the other party supports receiving RTP | |||
| packets encrypted with Cryptex, senders can unilaterally decide whether to use | packets encrypted with Cryptex, senders can unilaterally decide whether or not | |||
| or not the Cryptex mechanism on a per packet basis.</t> | to use the Cryptex mechanism on a per-packet basis.</t> | |||
| <t>If BUNDLE is in use as per <xref target="RFC9143"/> and the "a=cryptex" | ||||
| attribute is present for a media line, it <bcp14>MUST</bcp14> be present for al | <t>If BUNDLE is in use as per <xref target="RFC9143"/> and the "a=cryptex" | |||
| l RTP-based "m=" sections belonging to the same bundle group. This ensures that | attribute is present for a media line, it <bcp14>MUST</bcp14> be present for al | |||
| the encrypted MID header extensions can be processed, allowing to associate RTP | l RTP-based "m=" sections belonging to the same bundle group. This ensures that | |||
| streams with the correct "m=" section in each BUNDLE group as specified in <xref | the encrypted Media Identifier (MID) header extensions can be processed, allowin | |||
| target="RFC9143"/> section 9.2. When used with BUNDLE, this attribute is assign | g RTP streams to be associated with the correct "m=" section in each BUNDLE grou | |||
| ed to the TRANSPORT category <xref target="RFC8859"/>.</t> | p as specified in <xref target="RFC9143" sectionFormat="of" section="9.2"/>. Whe | |||
| <t>Both endpoints can change the Cryptex support status by modifying the s | n used with BUNDLE, this attribute is assigned to the TRANSPORT category <xref t | |||
| ession as specified in <xref target="RFC3264"/> section 8. Generating subsequen | arget="RFC8859"/>.</t> | |||
| t SDP offers and answers <bcp14>MUST</bcp14> use the same procedures for includi | <t>Both endpoints can change the Cryptex support status by modifying the s | |||
| ng the "a=cryptex" attribute as the ones on the initial offer and answer.</t> | ession as specified in <xref target="RFC3264" sectionFormat="of" section="8"/>. | |||
| Generating subsequent SDP offers and answers <bcp14>MUST</bcp14> use the same p | ||||
| rocedures for including the "a=cryptex" attribute as the ones on the initial off | ||||
| er and answer.</t> | ||||
| </section> | </section> | |||
| <section anchor="rtp-header-processing"> | <section anchor="rtp-header-processing"> | |||
| <name>RTP Header Processing</name> | <name>RTP Header Processing</name> | |||
| <t>A General Mechanism for RTP Header Extensions <xref target="RFC8285"/> defines two values for the "defined by profile" field for carrying | <t>A General Mechanism for RTP Header Extensions <xref target="RFC8285"/> defines two values for the "defined by profile" field for carrying | |||
| one-byte and two-byte header extensions. In order to allow a receiver to determi ne | one-byte and two-byte header extensions. In order to allow a receiver to determi ne | |||
| if an incoming RTP packet is using the encryption scheme in this specification, | if an incoming RTP packet is using the encryption scheme in this specification, | |||
| two new values are defined:</t> | two new values are defined:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li>0xC0DE for the encrypted version of the one-byte header extensions ( instead of 0xBEDE).</li> | <li>0xC0DE for the encrypted version of the one-byte header extensions ( instead of 0xBEDE).</li> | |||
| <li>0xC2DE for the encrypted versions of the two-byte header extensions (instead of 0x100).</li> | <li>0xC2DE for the encrypted versions of the two-byte header extensions (instead of 0x100).</li> | |||
| </ul> | </ul> | |||
| <t>In the case of using two-byte header extensions, the extension id with | <t>In the case of using two-byte header extensions, the extension identifi | |||
| value 256 <bcp14>MUST NOT</bcp14> | er with value 256 <bcp14>MUST NOT</bcp14> | |||
| be negotiated, as the value of this id is meant to be contained in the "appbits" | be negotiated, as the value of this identifier is meant to be contained in the " | |||
| of the | appbits" of the | |||
| "defined by profile" field, which are not available when using the values above. | "defined by profile" field, which is not available when using the values above.< | |||
| </t> | /t> | |||
| <t>Note that as per <xref target="RFC8285"/> it is not possible to mix one | <t>Note that as per <xref target="RFC8285"/>, it is not possible to mix one-byte | |||
| -byte and two-byte headers on the same RTP packet. Mixing one-byte and two-byte | and two-byte headers on the same RTP packet. Mixing one-byte and two-byte heade | |||
| headers on the same RTP stream requires negotiation of the "extmap-allow-mixed" | rs on the same RTP stream requires negotiation of the "extmap-allow-mixed" SDP a | |||
| SDP attribute as defined in <xref target="RFC8285"/> section 4.1.2.</t> | ttribute as defined in <xref target="RFC8285" sectionFormat="of" section="6"/>.< | |||
| <t>Peers <bcp14>MAY</bcp14> negotiate both Cryptex and the Encryption of H | /t> | |||
| eader Extensions mechanism defined in <xref target="RFC6904"/> via SDP offer/ans | <t>Peers <bcp14>MAY</bcp14> negotiate both Cryptex and the Encryption of H | |||
| wer as described in <xref target="sdp-considerations"/>, and if both mechanisms | eader Extensions mechanism defined in <xref target="RFC6904"/> via SDP offer/ans | |||
| are supported, either one can be used for any given packet. However, if a packet | wer as described in <xref target="sdp-considerations"/>, and if both mechanisms | |||
| is encrypted with Cryptex, it <bcp14>MUST NOT</bcp14> also use <xref target="RF | are supported, either one can be used for any given packet. However, if a packet | |||
| C6904"/> header extension encryption, and vice versa.</t> | is encrypted with Cryptex, it <bcp14>MUST NOT</bcp14> also use header extension | |||
| <t>If one of the peers has advertised both the ability to receive cryptex | encryption <xref target="RFC6904"/>, and vice versa.</t> | |||
| and the ability to receive header extensions encrypted as per <xref target="RFC6 | ||||
| 904"/> in the SDP exchange, it is <bcp14>RECOMMENDED</bcp14> for the other peer | <t> If one of the peers has advertised the ability to receive both Cryptex and | |||
| to use Cryptex rather than <xref target="RFC6904"/> when sending RTP packets so | header extensions encrypted as per <xref target="RFC6904"/> in the SDP | |||
| all the header extensions and CSRCS are encrypted unless there is a compelling r | exchange, it is <bcp14>RECOMMENDED</bcp14> that the other peer use Cryptex | |||
| eason to use <xref target="RFC6904"/> (e.g. a need for some header extensions to | rather than the mechanism in <xref target="RFC6904"/> when sending RTP packets | |||
| be sent in the clear so that so they are processable by RTP middleboxes) in whi | so that all the header extensions and CSRCS are encrypted. However, if there is | |||
| ch case, it <bcp14>SHOULD</bcp14> use <xref target="RFC6904"/> instead.</t> | a | |||
| compelling reason to use the mechanism in <xref target="RFC6904"/> (e.g., a | ||||
| need for some header extensions to be sent in the clear so that so they are | ||||
| processable by RTP middleboxes), the other peer <bcp14>SHOULD</bcp14> use | ||||
| the mechanism in <xref target="RFC6904"/> instead.</t> | ||||
| <section anchor="sending"> | <section anchor="sending"> | |||
| <name>Sending</name> | <name>Sending</name> | |||
| <t>When the mechanism defined by this specification has been negotiated, | <t>When the mechanism defined by this specification has been negotiated, | |||
| sending an RTP packet that has any CSRCs or contains any <xref target="RFC8285"/ | sending an RTP packet that has any CSRCs or contains any header extensions <xref | |||
| > | target="RFC8285"/> follows the steps below. This mechanism <bcp14>MUST NOT</bcp | |||
| header extensions follows the steps below. This mechanism <bcp14>MUST NOT</bcp14 | 14> be | |||
| > be | used with header extensions other than the variety described in <xref target="RF | |||
| used with header extensions other than the <xref target="RFC8285"/> variety.</t> | C8285"/>.</t> | |||
| <t>If the RTP packet contains one-byte headers, the 16-bit RTP header ex | <t>If the RTP packet contains one-byte headers, the 16-bit RTP header | |||
| tension | extension tag <bcp14>MUST</bcp14> be set to 0xC0DE to indicate that the | |||
| tag <bcp14>MUST</bcp14> be set to 0xC0DE to indicate that the encryption has bee | encryption | |||
| n applied, and the | has been applied and the one-byte framing is being used. If the RTP | |||
| one-byte framing is being used. Otherwise, | packet contains two-byte headers, the header extension tag | |||
| the header extension tag <bcp14>MUST</bcp14> be set to 0xC2DE to indicate encryp | <bcp14>MUST</bcp14> be set to 0xC2DE to indicate encryption has been app | |||
| tion has been applied, | lied and the | |||
| and the two-byte framing is being used.</t> | two-byte framing is being used. | |||
| </t> | ||||
| <t>If the packet contains CSRCs but no header extensions, an empty exten sion block | <t>If the packet contains CSRCs but no header extensions, an empty exten sion block | |||
| consisting of the 0xC0DE tag and a 16-bit length field set to zero (explicitly | consisting of the 0xC0DE tag and a 16-bit length field set to zero (explicitly | |||
| permitted by <xref target="RFC3550"/>) <bcp14>MUST</bcp14> be appended, and the X bit <bcp14>MUST</bcp14> be set to 1 to | permitted by <xref target="RFC3550"/>) <bcp14>MUST</bcp14> be appended, and the X bit <bcp14>MUST</bcp14> be set to 1 to | |||
| indicate an extension block is present. This is necessary to provide the receive r | indicate an extension block is present. This is necessary to provide the receive r | |||
| an indication that the CSRCs in the packet are encrypted.</t> | an indication that the CSRCs in the packet are encrypted.</t> | |||
| <t>The RTP packet <bcp14>MUST</bcp14> then be encrypted as described in | ||||
| Encryption Procedure.</t> | <t>The RTP packet <bcp14>MUST</bcp14> then be encrypted as described in | |||
| <xref target="encryption-procedure"/> ("Encryption Procedure").</t> | ||||
| </section> | </section> | |||
| <section anchor="receiving"> | <section anchor="receiving"> | |||
| <name>Receiving</name> | <name>Receiving</name> | |||
| <t>When receiving an RTP packet that contains header extensions, the | <t>When receiving an RTP packet that contains header extensions, the | |||
| "defined by profile" field <bcp14>MUST</bcp14> be checked to ensure the payload is | "defined by profile" field <bcp14>MUST</bcp14> be checked to ensure the payload is | |||
| formatted according to this specification. If the field does not match | formatted according to this specification. If the field does not match | |||
| one of the values defined above, the implementation <bcp14>MUST</bcp14> instead | one of the values defined above, the implementation <bcp14>MUST</bcp14> instead | |||
| handle it according to the specification that defines that value.</t> | handle it according to the specification that defines that value.</t> | |||
| <t>Alternatively, if the implementation considers the use of this specif ication mandatory and the "defined by profile" field does not match one of the v alues defined above, it <bcp14>MUST</bcp14> stop the processing of the RTP packe t and report an error for the RTP stream.</t> | <t>Alternatively, if the implementation considers the use of this specif ication mandatory and the "defined by profile" field does not match one of the v alues defined above, it <bcp14>MUST</bcp14> stop the processing of the RTP packe t and report an error for the RTP stream.</t> | |||
| <t>If the RTP packet passes this check, it is then decrypted according t | <t>If the RTP packet passes this check, it is then decrypted as describe | |||
| o | d in | |||
| Decryption Procedure, and passed to the next layer to process | <xref target="decryption-procedure"/> ("Decryption Procedure") and passed to the | |||
| next layer to process | ||||
| the packet and its extensions. In the event that a zero-length extension | the packet and its extensions. In the event that a zero-length extension | |||
| block was added as indicated above, it can be left as-is and will be | block was added as indicated above, it can be left as is and will be | |||
| processed normally.</t> | processed normally.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="encryption-and-decryption"> | <section anchor="encryption-and-decryption"> | |||
| <name>Encryption and Decryption</name> | <name>Encryption and Decryption</name> | |||
| <section anchor="packet-structure"> | <section anchor="packet-structure"> | |||
| <name>Packet Structure</name> | <name>Packet Structure</name> | |||
| <t>When this mechanism is active, the SRTP packet is protected as follow s:</t> | <t>When this mechanism is active, the SRTP packet is protected as follow s:</t> | |||
| <figure anchor="srtp-packet"> | <figure anchor="srtp-packet"> | |||
| <!-- [rfced] We added a title to Figure 1, as Figure 2 has a title. | ||||
| Please review. Also, the abbreviation MKI appears in Figure 1 but not | ||||
| anywhere else. May we expand this abbreviation in Figure 1? | ||||
| Or is there a better place in the document to expand MKI? --> | ||||
| <name>A Protected SRTP Packet</name> | ||||
| <artwork align="center"><![CDATA[ | <artwork align="center"><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+ | |||
| |V=2|P|X| CC |M| PT | sequence number | | | |V=2|P|X| CC |M| PT | sequence number | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | timestamp | | | | timestamp | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | synchronization source (SSRC) identifier | | | | synchronization source (SSRC) identifier | | | |||
| +>+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | +>+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ | | |||
| | | contributing source (CSRC) identifiers | | | | | contributing source (CSRC) identifiers | | | |||
| | | .... | | | | | .... | | | |||
| +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| X | 0xC0 or 0xC2 | 0xDE | length | | | X | 0xC0 or 0xC2 | 0xDE | length | | | |||
| +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | RFC 8285 header extensions | | | | | RFC 8285 header extensions | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | payload ... | | | | | payload ... | | | |||
| | | +-------------------------------+ | | | | +-------------------------------+ | | |||
| | | | RTP padding | RTP pad count | | | | | | RTP padding | RTP pad count | | | |||
| +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+ | +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+ | |||
| | ~ SRTP MKI (OPTIONAL) ~ | | | ~ SRTP Master Key Identifier (MKI) (OPTIONAL) ~ | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | : authentication tag (RECOMMENDED) : | | | : authentication tag (RECOMMENDED) : | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| +- Encrypted Portion* Authenticated Portion ---+ | +- Encrypted Portion Authenticated Portion ---+ | |||
| ]]></artwork> | ]]></artwork> | |||
| - Encrypted <span class="insert">Portion</span> Authentica ted Portion ---+ | ||||
| </figure> | </figure> | |||
| <ul spacing="normal"> | <t>Note that, as required by <xref target="RFC8285"/>, the 4 bytes at th | |||
| <li>Note that, as required by <xref target="RFC8285"/>, the 4 bytes at | e start of the extension block are not encrypted.</t> | |||
| the start of the extension block are not encrypted.</li> | <t>Specifically, the Encrypted Portion <bcp14>MUST</bcp14> include any C | |||
| </ul> | SRC identifiers, any | |||
| <t>Specifically, the encrypted portion <bcp14>MUST</bcp14> include any C | ||||
| SRC identifiers, any | ||||
| RTP header extension (except for the first 4 bytes), and the RTP payload.</t> | RTP header extension (except for the first 4 bytes), and the RTP payload.</t> | |||
| </section> | </section> | |||
| <section anchor="encryption-procedure"> | <section anchor="encryption-procedure"> | |||
| <name>Encryption Procedure</name> | <name>Encryption Procedure</name> | |||
| <t>The encryption procedure is identical to that of <xref target="RFC371 1"/> except for the | <t>The encryption procedure is identical to that of <xref target="RFC371 1"/> except for the | |||
| Encrypted Portion of the SRTP packet. The plaintext input to the cipher is as fo | Encrypted Portion of the SRTP packet. The plaintext input to the cipher i | |||
| llows:</t> | s as follows:</t> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| Plaintext = CSRC identifiers (if used) || header extension data || | Plaintext = CSRC identifiers (if used) || header extension data || | |||
| RTP payload || RTP padding (if used) || RTP pad count (if used). | RTP payload || RTP padding (if used) || RTP pad count (if used) | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>Here "header extension data" refers to the content of the RTP extensi on field, | <t>Here "header extension data" refers to the content of the RTP extensi on field, | |||
| excluding the first four bytes (the RFC 8285 extension header). The first | excluding the first four bytes (the extension header <xref target="RFC8285"/>). | |||
| <tt>4 * CSRC count (CC)</tt> bytes of the ciphertext are placed in the CSRC fiel | The first <tt>4 * CSRC count (CC)</tt> bytes of the ciphertext are placed in th | |||
| d of the RTP header. | e CSRC field of the RTP header. | |||
| The remainder of the ciphertext is the RTP payload of the encrypted packet.</t> | The remainder of the ciphertext is the RTP payload of the encrypted packet.</t> | |||
| <t>To minimize changes to surrounding code, the encryption mechanism can choose | <t>To minimize changes to surrounding code, the encryption mechanism can choose | |||
| to replace a "defined by profile" field from <xref target="RFC8285"/> with its c ounterpart | to replace a "defined by profile" field from <xref target="RFC8285"/> with its c ounterpart | |||
| defined in RTP Header Processing above and encrypt at the same time.</t> | defined in <xref target="rtp-header-processing"/> ("RTP Header Processing") and | |||
| <t>For AEAD ciphers (e.g., GCM), the 12-byte fixed header and the four-b | encrypt at the same time.</t> | |||
| yte header | ||||
| <t>For Authenticated Encryption with Associated Data (AEAD) ciphers (e.g., AES-G | ||||
| CM), the 12-byte fixed header and the four-byte header | ||||
| extension header (the "defined by profile" field and the length) are considered | extension header (the "defined by profile" field and the length) are considered | |||
| AAD, even though they are non-contiguous in the packet if CSRCs are present.</t> | additional authenticated data (AAD), even though they are non-contiguous in the packet if CSRCs are present.</t> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| Associated Data: fixed header || extension header (if X=1) | Associated Data: fixed header || extension header (if X=1) | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>Here "fixed header" refers to the 12-byte fixed portion of the RTP he ader, and | <t>Here "fixed header" refers to the 12-byte fixed portion of the RTP he ader, and | |||
| "extension header" refers to the four-byte RFC 8285 extension header ("defined | "extension header" refers to the four-byte extension header <xref target="RFC828 5"/> ("defined | |||
| by profile" and extension length).</t> | by profile" and extension length).</t> | |||
| <t>Implementations can rearrange a packet so that the AAD and plaintext are | <t>Implementations can rearrange a packet so that the AAD and plaintext are | |||
| contiguous by swapping the order of the extension header and the CSRC | contiguous by swapping the order of the extension header and the CSRC | |||
| identifiers, resulting in an intermediate representation of the form shown in | identifiers, resulting in an intermediate representation of the form shown in | |||
| <xref target="intermediate-packet"/>. After encryption, the CSRCs (now encrypte d) and | <xref target="intermediate-packet"/>. After encryption, the CSRCs (now encrypte d) and | |||
| extension header would need to be swapped back to their original positions. A | extension header would need to be swapped back to their original positions. A | |||
| similar operation can be done when decrypting to create contiguous ciphertext | similar operation can be done when decrypting to create contiguous ciphertext | |||
| and AAD inputs.</t> | and AAD inputs.</t> | |||
| <figure anchor="intermediate-packet"> | <figure anchor="intermediate-packet"> | |||
| <name>An RTP packet transformed to make Cryptex cipher inputs contiguo us</name> | <name>An RTP Packet Transformed to Make Cryptex Cipher Inputs Contiguo us</name> | |||
| <artwork align="center"><![CDATA[ | <artwork align="center"><![CDATA[ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+<+ | |||
| |V=2|P|X| CC |M| PT | sequence number | | | |V=2|P|X| CC |M| PT | sequence number | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | timestamp | | | | timestamp | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | synchronization source (SSRC) identifier | | | | synchronization source (SSRC) identifier | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | 0xC0 or 0xC2 | 0xDE | length | | | | 0xC0 or 0xC2 | 0xDE | length | | | |||
| +>+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<+ | +>+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+<+ | |||
| | | contributing source (CSRC) identifiers | | | | | contributing source (CSRC) identifiers | | | |||
| | | .... | | | | | .... | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | RFC 8285 header extensions | | | | | RFC 8285 header extensions | | | |||
| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | payload ... | | | | | payload ... | | | |||
| | | +-------------------------------+ | | | | +-------------------------------+ | | |||
| | | | RTP padding | RTP pad count | | | | | | RTP padding | RTP pad count | | | |||
| +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +>+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | |||
| +- Plaintext Input AAD Input ---+ | +- Plaintext Input AAD Input ---+ | |||
| ]]></artwork> | ]]></artwork> | |||
| - Plaintext Input AAD Input ---+ | ||||
| </figure> | </figure> | |||
| <t>Note: This intermediate representation is only displayed as reference for implementations and is not meant to be sent on the wire.</t> | <t>Note that this intermediate representation is only displayed as refer ence for implementations and is not meant to be sent on the wire.</t> | |||
| </section> | </section> | |||
| <section anchor="decryption-procedure"> | <section anchor="decryption-procedure"> | |||
| <name>Decryption Procedure</name> | <name>Decryption Procedure</name> | |||
| <t>The decryption procedure is identical to that of <xref target="RFC371 1"/> except | <t>The decryption procedure is identical to that of <xref target="RFC371 1"/> except | |||
| for the Encrypted Portion of the SRTP packet, which is as shown in the section a bove.</t> | for the Encrypted Portion of the SRTP packet, which is as shown in the section a bove.</t> | |||
| <t>To minimize changes to surrounding code, the decryption mechanism can choose | <t>To minimize changes to surrounding code, the decryption mechanism can choose | |||
| to replace the "defined by profile" field with its no-encryption counterpart | to replace the "defined by profile" field with its no-encryption counterpart | |||
| from <xref target="RFC8285"/> and decrypt at the same time.</t> | from <xref target="RFC8285"/> and decrypt at the same time.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="backwards-compatibility"> | <section anchor="backwards-compatibility"> | |||
| <name>Backwards Compatibility</name> | <name>Backward Compatibility</name> | |||
| <t>This specification attempts to encrypt as much as possible without inte rfering | <t>This specification attempts to encrypt as much as possible without inte rfering | |||
| with backwards compatibility for systems that expect a certain structure from | with backward compatibility for systems that expect a certain structure from | |||
| an RTPv2 packet, including systems that perform demultiplexing based on packet | an RTPv2 packet, including systems that perform demultiplexing based on packet | |||
| headers. Accordingly, the first two bytes of the RTP packet are not encrypted.</ t> | headers. Accordingly, the first two bytes of the RTP packet are not encrypted.</ t> | |||
| <t>This specification also attempts to reuse the key scheduling from SRTP, which | <t>This specification also attempts to reuse the key scheduling from SRTP, which | |||
| depends on the RTP packet sequence number and SSRC identifier. Accordingly, | depends on the RTP packet sequence number and SSRC identifier. Accordingly, | |||
| these values are also not encrypted.</t> | these values are also not encrypted.</t> | |||
| </section> | </section> | |||
| <section anchor="security-considerations"> | <section anchor="security-considerations"> | |||
| <name>Security Considerations</name> | <name>Security Considerations</name> | |||
| <t>All security considerations in <xref target="RFC3711"/> section 9 are a | <t>All security considerations in <xref target="RFC3711" sectionFormat="of | |||
| pplicable to this specification, except section 9.4. Confidentiality of the RTP | " section="9"/> are applicable to this specification; the exception is Section < | |||
| Header which is the purpose of this specification.</t> | xref target="RFC3711" sectionFormat="bare" section="9.4"/>, because confidential | |||
| <t>The risks of using weak or NULL authentication with SRTP, described in | ity of the RTP Header is the purpose of this specification.</t> | |||
| Section 9.5 of <xref target="RFC3711"/>, apply to encrypted header extensions as | <t>The risks of using weak or NULL authentication with SRTP, described in | |||
| well.</t> | <xref target="RFC3711" sectionFormat="of" section="9.5"/>, apply to encrypted he | |||
| ader extensions as well.</t> | ||||
| <t>This specification extends SRTP by expanding the Encrypted Portion of t he RTP packet, | <t>This specification extends SRTP by expanding the Encrypted Portion of t he RTP packet, | |||
| as shown in Packet Structure. It does not change how SRTP authentication | as shown in <xref target="packet-structure"/> ("Packet Structure"). It does not change how SRTP authentication | |||
| works in any way. Given that more of the packet is being encrypted than before, | works in any way. Given that more of the packet is being encrypted than before, | |||
| this is necessarily an improvement.</t> | this is necessarily an improvement.</t> | |||
| <t>The RTP fields that are left unencrypted (see rationale above) are as f ollows:</t> | <t>The RTP fields that are left unencrypted (see rationale above) are as f ollows:</t> | |||
| <ul spacing="normal"> | <ul spacing="normal"> | |||
| <li>RTP version</li> | <li>RTP version</li> | |||
| <li>padding bit</li> | <li>padding bit</li> | |||
| <li>extension bit</li> | <li>extension bit</li> | |||
| <li>number of CSRCs</li> | <li>number of CSRCs</li> | |||
| <li>marker bit</li> | <li>marker bit</li> | |||
| <li>payload type</li> | <li>payload type</li> | |||
| <li>sequence number</li> | <li>sequence number</li> | |||
| <li>timestamp</li> | <li>timestamp</li> | |||
| <li>SSRC identifier</li> | <li>SSRC identifier</li> | |||
| <li>number of <xref target="RFC8285"/> header extensions</li> | <li>number of header extensions <xref target="RFC8285"/></li> | |||
| </ul> | </ul> | |||
| <t>These values contain a fixed set (i.e., one that won't be changed by | <t>These values contain a fixed set (i.e., one that won't be changed by | |||
| extensions) of information that, at present, is observed to have low | extensions) of information that, at present, is observed to have low | |||
| sensitivity. In the event any of these values need to be encrypted, SRTP | sensitivity. In the event any of these values need to be encrypted, SRTP | |||
| is likely the wrong protocol to use and a fully-encapsulating protocol | is likely the wrong protocol to use and a fully encapsulating protocol | |||
| such as DTLS is preferred (with its attendant per-packet overhead).</t> | such as DTLS is preferred (with its attendant per-packet overhead).</t> | |||
| </section> | </section> | |||
| <section anchor="iana-considerations"> | <section anchor="iana-considerations"> | |||
| <name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <section anchor="sdp-cryptex-attribute"> | <t>This document updates the "attribute-name (formerly "att-field")" sub | |||
| <name>SDP cryptex Attribute</name> | registry of the "Session Description Protocol (SDP) Parameters" registry (see <x | |||
| <t>This document updates the "Session Description Protocol Parameters" a | ref target="RFC8866" sectionFormat="of" section="8.2.4"/>). Specifically, it add | |||
| s specified in Section 8.2.4 of <xref target="RFC8866"/>. Specifically, it adds | s the SDP "a=cryptex" attribute for use at both the media level and the session | |||
| the SDP "a=cryptex" attribute to the Attribute Names (<attribute-name>) re | level.</t> | |||
| gistry for both media and session level usage.</t> | <dl spacing="normal"> | |||
| <t>Contact name: IETF AVT Working Group or IESG if AVT is closed</t> | <dt>Contact name:</dt> | |||
| <t>Contact email address: avt@ietf.org</t> | <dd>IETF AVT Working Group or IESG if the AVT Working Group is closed</ | |||
| <t>Attribute name: cryptex</t> | dd> | |||
| <t>Attribute syntax: This attribute takes no values.</t> | <dt>Contact email address:</dt> | |||
| <t>Attribute semantics: N/A</t> | <dd>avt@ietf.org</dd> | |||
| <t>Attribute value: N/A</t> | <dt>Attribute name:</dt> | |||
| <t>Usage level: session, media</t> | <dd>cryptex</dd> | |||
| <t>Charset dependent: No</t> | <dt>Attribute syntax:</dt> | |||
| <t>Purpose: The presence of this attribute in the SDP indicates that the | <dd>This attribute takes no values.</dd> | |||
| endpoint is capable of receiving RTP packets encrypted with Cryptex as describe | <dt>Attribute semantics:</dt> | |||
| d in this document.</t> | <dd>N/A</dd> | |||
| <t>O/A procedures: SDP O/A procedures are described in Section 4 of this | <dt>Attribute value:</dt> | |||
| document.</t> | <dd>N/A</dd> | |||
| <t>Mux Category: TRANSPORT</t> | <dt>Usage level:</dt> | |||
| </section> | <dd>session, media</dd> | |||
| </section> | <dt>Charset dependent:</dt> | |||
| <section anchor="acknowledgements"> | <dd>No</dd> | |||
| <name>Acknowledgements</name> | <dt>Purpose:</dt> | |||
| <t>The authors wish to thank Lennart Grahl for pointing out many of the is | <dd>The presence of this attribute in the SDP indicates that the | |||
| sues with the existing | endpoint is capable of receiving RTP packets encrypted with Cryptex | |||
| header encryption mechanism, as well as suggestions for this proposal. | as described in this document.</dd> | |||
| Thanks also to Jonathan Lennox, Inaki Castillo, and Bernard Aboba for their revi | <dt>O/A procedures:</dt> | |||
| ew and suggestions.</t> | <dd>SDP O/A procedures are described in Section <xref target="sdp-consi | |||
| derations" format="counter"/> of this | ||||
| document.</dd> | ||||
| <dt>Mux Category:</dt> | ||||
| <dd>TRANSPORT</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references> | <references> | |||
| <name>References</name> | <name>References</name> | |||
| <references> | <references> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 550"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3550. | |||
| <front> | xml"/> | |||
| <title>RTP: A Transport Protocol for Real-Time Applications</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3711. | |||
| <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne | xml"/> | |||
| "> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8285. | |||
| <organization/> | xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8859. | |||
| <author fullname="S. Casner" initials="S." surname="Casner"> | xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
| </author> | xml"/> | |||
| <author fullname="R. Frederick" initials="R." surname="Frederick"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | |||
| <organization/> | xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8866. | |||
| <author fullname="V. Jacobson" initials="V." surname="Jacobson"> | xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9143. | |||
| </author> | xml"/> | |||
| <date month="July" year="2003"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3264. | |||
| <abstract> | xml"/> | |||
| <t>This memorandum describes RTP, the real-time transport protocol | ||||
| . RTP provides end-to-end network transport functions suitable for applications | ||||
| transmitting real-time data, such as audio, video or simulation data, over mult | ||||
| icast or unicast network services. RTP does not address resource reservation an | ||||
| d does not guarantee quality-of- service for real-time services. The data trans | ||||
| port is augmented by a control protocol (RTCP) to allow monitoring of the data d | ||||
| elivery in a manner scalable to large multicast networks, and to provide minimal | ||||
| control and identification functionality. RTP and RTCP are designed to be inde | ||||
| pendent of the underlying transport and network layers. The protocol supports t | ||||
| he use of RTP-level translators and mixers. Most of the text in this memorandum | ||||
| is identical to RFC 1889 which it obsoletes. There are no changes in the packet | ||||
| formats on the wire, only changes to the rules and algorithms governing how the | ||||
| protocol is used. The biggest change is an enhancement to the scalable timer al | ||||
| gorithm for calculating when to send RTCP packets in order to minimize transmiss | ||||
| ion in excess of the intended rate when many participants join a session simulta | ||||
| neously. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="64"/> | ||||
| <seriesInfo name="RFC" value="3550"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3550"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3711" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 711"> | ||||
| <front> | ||||
| <title>The Secure Real-time Transport Protocol (SRTP)</title> | ||||
| <author fullname="M. Baugher" initials="M." surname="Baugher"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="D. McGrew" initials="D." surname="McGrew"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="M. Naslund" initials="M." surname="Naslund"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="E. Carrara" initials="E." surname="Carrara"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="K. Norrman" initials="K." surname="Norrman"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="March" year="2004"/> | ||||
| <abstract> | ||||
| <t>This document describes the Secure Real-time Transport Protocol | ||||
| (SRTP), a profile of the Real-time Transport Protocol (RTP), which can provide | ||||
| confidentiality, message authentication, and replay protection to the RTP traffi | ||||
| c and to the control traffic for RTP, the Real-time Transport Control Protocol ( | ||||
| RTCP). [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3711"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3711"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8285" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 285"> | ||||
| <front> | ||||
| <title>A General Mechanism for RTP Header Extensions</title> | ||||
| <author fullname="D. Singer" initials="D." surname="Singer"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="H. Desineni" initials="H." surname="Desineni"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="R. Even" initials="R." role="editor" surname="Even | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="October" year="2017"/> | ||||
| <abstract> | ||||
| <t>This document provides a general mechanism to use the header ex | ||||
| tension feature of RTP (the Real-time Transport Protocol). It provides the opti | ||||
| on to use a small number of small extensions in each RTP packet, where the unive | ||||
| rse of possible extensions is large and registration is decentralized. The actu | ||||
| al extensions in use in a session are signaled in the setup information for that | ||||
| session. This document obsoletes RFC 5285.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8285"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8285"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8859" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 859"> | ||||
| <front> | ||||
| <title>A Framework for Session Description Protocol (SDP) Attributes | ||||
| When Multiplexing</title> | ||||
| <author fullname="S. Nandakumar" initials="S." surname="Nandakumar"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| <abstract> | ||||
| <t>The purpose of this specification is to provide a framework for | ||||
| analyzing the multiplexing characteristics of Session Description Protocol (SDP | ||||
| ) attributes when SDP is used to negotiate the usage of a single 5-tuple for sen | ||||
| ding and receiving media associated with multiple media descriptions.</t> | ||||
| <t>This specification also categorizes the existing SDP attributes | ||||
| based on the framework described herein.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8859"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8859"/> | ||||
| </reference> | ||||
| <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
| 119"> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| le> | ||||
| <author fullname="S. Bradner" initials="S." surname="Bradner"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="March" year="1997"/> | ||||
| <abstract> | ||||
| <t>In many standards track documents several words are used to sig | ||||
| nify the requirements in the specification. These words are often capitalized. | ||||
| This document defines these words as they should be interpreted in IETF document | ||||
| s. This document specifies an Internet Best Current Practices for the Internet | ||||
| Community, and requests discussion and suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author fullname="B. Leiba" initials="B." surname="Leiba"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="May" year="2017"/> | ||||
| <abstract> | ||||
| <t>RFC 2119 specifies common key words that may be used in protoco | ||||
| l specifications. This document aims to reduce the ambiguity by clarifying tha | ||||
| t only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8866" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 866"> | ||||
| <front> | ||||
| <title>SDP: Session Description Protocol</title> | ||||
| <author fullname="A. Begen" initials="A." surname="Begen"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="C. Perkins" initials="C." surname="Perkins"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="M. Handley" initials="M." surname="Handley"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| <abstract> | ||||
| <t>This memo defines the Session Description Protocol (SDP). SDP i | ||||
| s intended for describing multimedia sessions for the purposes of session announ | ||||
| cement, session invitation, and other forms of multimedia session initiation. Th | ||||
| is document obsoletes RFC 4566.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8866"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8866"/> | ||||
| </reference> | ||||
| <reference anchor="RFC9143" target="https://www.rfc-editor.org/info/rfc9 | ||||
| 143"> | ||||
| <front> | ||||
| <title>Negotiating Media Multiplexing Using the Session Description | ||||
| Protocol (SDP)</title> | ||||
| <author fullname="C. Holmberg" initials="C." surname="Holmberg"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="C. Jennings" initials="C." surname="Jennings"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="February" year="2022"/> | ||||
| <abstract> | ||||
| <t>This specification defines a new Session Description Protocol ( | ||||
| SDP) Grouping Framework extension called 'BUNDLE'. The extension can be used wit | ||||
| h the SDP offer/answer mechanism to negotiate the usage of a single transport (5 | ||||
| -tuple) for sending and receiving media described by multiple SDP media descript | ||||
| ions ("m=" sections). Such transport is referred to as a "BUNDLE transport", and | ||||
| the media is referred to as "bundled media". The "m=" sections that use the BUN | ||||
| DLE transport form a BUNDLE group. </t> | ||||
| <t>This specification defines a new RTP Control Protocol (RTCP) So | ||||
| urce Description (SDES) item and a new RTP header extension.</t> | ||||
| <t>This specification updates RFCs 3264, 5888, and 7941. </t> | ||||
| <t>This specification obsoletes RFC 8843.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="9143"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9143"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 264"> | ||||
| <front> | ||||
| <title>An Offer/Answer Model with Session Description Protocol (SDP) | ||||
| </title> | ||||
| <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="June" year="2002"/> | ||||
| <abstract> | ||||
| <t>This document defines a mechanism by which two entities can mak | ||||
| e use of the Session Description Protocol (SDP) to arrive at a common view of a | ||||
| multimedia session between them. In the model, one participant offers the other | ||||
| a description of the desired session from their perspective, and the other part | ||||
| icipant answers with the desired session from their perspective. This offer/ans | ||||
| wer model is most useful in unicast sessions where information from both partici | ||||
| pants is needed for the complete view of the session. The offer/answer model is | ||||
| used by protocols like the Session Initiation Protocol (SIP). [STANDARDS-TRACK | ||||
| ]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3264"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3264"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references> | <references> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <reference anchor="RFC6464" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 464"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6464. | |||
| <front> | xml"/> | |||
| <title>A Real-time Transport Protocol (RTP) Header Extension for Cli | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6465. | |||
| ent-to-Mixer Audio Level Indication</title> | xml"/> | |||
| <author fullname="J. Lennox" initials="J." role="editor" surname="Le | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6904. | |||
| nnox"> | xml"/> | |||
| <organization/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7714. | |||
| </author> | xml"/> | |||
| <author fullname="E. Ivov" initials="E." surname="Ivov"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="E. Marocco" initials="E." surname="Marocco"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="December" year="2011"/> | ||||
| <abstract> | ||||
| <t>This document defines a mechanism by which packets of Real-time | ||||
| Transport Protocol (RTP) audio streams can indicate, in an RTP header extension | ||||
| , the audio level of the audio sample carried in the RTP packet. In large confe | ||||
| rences, this can reduce the load on an audio mixer or other middlebox that wants | ||||
| to forward only a few of the loudest audio streams, without requiring it to dec | ||||
| ode and measure every stream that is received. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6464"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6464"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6465" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 465"> | ||||
| <front> | ||||
| <title>A Real-time Transport Protocol (RTP) Header Extension for Mix | ||||
| er-to-Client Audio Level Indication</title> | ||||
| <author fullname="E. Ivov" initials="E." role="editor" surname="Ivov | ||||
| "> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="E. Marocco" initials="E." role="editor" surname="M | ||||
| arocco"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="J. Lennox" initials="J." surname="Lennox"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="December" year="2011"/> | ||||
| <abstract> | ||||
| <t>This document describes a mechanism for RTP-level mixers in aud | ||||
| io conferences to deliver information about the audio level of individual partic | ||||
| ipants. Such audio level indicators are transported in the same RTP packets as | ||||
| the audio data they pertain to. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6465"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6465"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6904" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 904"> | ||||
| <front> | ||||
| <title>Encryption of Header Extensions in the Secure Real-time Trans | ||||
| port Protocol (SRTP)</title> | ||||
| <author fullname="J. Lennox" initials="J." surname="Lennox"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="April" year="2013"/> | ||||
| <abstract> | ||||
| <t>The Secure Real-time Transport Protocol (SRTP) provides authent | ||||
| ication, but not encryption, of the headers of Real-time Transport Protocol (RTP | ||||
| ) packets. However, RTP header extensions may carry sensitive information for w | ||||
| hich participants in multimedia sessions want confidentiality. This document pr | ||||
| ovides a mechanism, extending the mechanisms of SRTP, to selectively encrypt RTP | ||||
| header extensions in SRTP.</t> | ||||
| <t>This document updates RFC 3711, the Secure Real-time Transport | ||||
| Protocol specification, to require that all future SRTP encryption transforms sp | ||||
| ecify how RTP header extensions are to be encrypted.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6904"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6904"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7714" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 714"> | ||||
| <front> | ||||
| <title>AES-GCM Authenticated Encryption in the Secure Real-time Tran | ||||
| sport Protocol (SRTP)</title> | ||||
| <author fullname="D. McGrew" initials="D." surname="McGrew"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author fullname="K. Igoe" initials="K." surname="Igoe"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date month="December" year="2015"/> | ||||
| <abstract> | ||||
| <t>This document defines how the AES-GCM Authenticated Encryption | ||||
| with Associated Data family of algorithms can be used to provide confidentiality | ||||
| and data authentication in the Secure Real-time Transport Protocol (SRTP).</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7714"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7714"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| </references> | </references> | |||
| <section anchor="test-vectors"> | <section anchor="test-vectors"> | |||
| <name>Test Vectors</name> | <name>Test Vectors</name> | |||
| <t>All values are in hexadecimal and represented in network order (big end ian).</t> | <t>All values are in hexadecimal and represented in network order (big end ian).</t> | |||
| <section anchor="aes-ctr"> | <section anchor="aes-ctr"> | |||
| <name>AES-CTR</name> | <name>AES-CTR</name> | |||
| <t>The following section list the test vectors for using cryptex with AE | <t>The following subsections list the test vectors for using Cryptex wit | |||
| S-CTR as per <xref target="RFC3711"/></t> | h AES-CTR as per <xref target="RFC3711"/>.</t> | |||
| <t>Common values are organized as follows:</t> | ||||
| <t>Common values are organized as follows:</t> | ||||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| Rollover Counter: 00000000 | Rollover Counter: 00000000 | |||
| Master Key: e1f97a0d3e018be0d64fa32c06de4139 | Master Key: e1f97a0d3e018be0d64fa32c06de4139 | |||
| Master Salt: 0ec675ad498afeebb6960b3aabe6 | Master Salt: 0ec675ad498afeebb6960b3aabe6 | |||
| Crypto Suite: AES_CM_128_HMAC_SHA1_80 | Crypto Suite: AES_CM_128_HMAC_SHA1_80 | |||
| Session Key: c61e7a93744f39ee10734afe3ff7a087 | Session Key: c61e7a93744f39ee10734afe3ff7a087 | |||
| Session Salt: 30cbbc08863d8c85d49db34a9ae1 | Session Salt: 30cbbc08863d8c85d49db34a9ae1 | |||
| Authentication Key: cebe321f6ff7716b6fd4ab49af256a156d38baa4 | Authentication Key: cebe321f6ff7716b6fd4ab49af256a156d38baa4 | |||
| ]]></artwork> | ]]></artwork> | |||
| <section anchor="rtp-packet-with-1-byte-header-extension"> | <section anchor="rtp-packet-with-1-byte-header-extension"> | |||
| <name>RTP Packet with 1-byte header extension</name> | <name>RTP Packet with One-Byte Header Extension</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1235 | 900f1235 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| bede0001 | bede0001 | |||
| 51000200 | 51000200 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1235 | 900f1235 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| c0de0001 | c0de0001 | |||
| eb923652 | eb923652 | |||
| 51c3e036 | 51c3e036 | |||
| f8de27e9 | f8de27e9 | |||
| c27ee3e0 | c27ee3e0 | |||
| b4651d9f | b4651d9f | |||
| bc4218a7 | bc4218a7 | |||
| 0244522f | 0244522f | |||
| 34a5 | 34a5 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-2-byte-header-extension"> | <section anchor="rtp-packet-with-2-byte-header-extension"> | |||
| <name>RTP Packet with 2-byte header extension</name> | <name>RTP Packet with Two-Byte Header Extension</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1236 | 900f1236 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 10000001 | 10000001 | |||
| 05020002 | 05020002 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1236 | 900f1236 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| c2de0001 | c2de0001 | |||
| 4ed9cc4e | 4ed9cc4e | |||
| 6a712b30 | 6a712b30 | |||
| 96c5ca77 | 96c5ca77 | |||
| 339d4204 | 339d4204 | |||
| ce0d7739 | ce0d7739 | |||
| 6cab6958 | 6cab6958 | |||
| 5fbce381 | 5fbce381 | |||
| 94a5 | 94a5 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-1-byte-header-extension-and-csrc-fields "> | <section anchor="rtp-packet-with-1-byte-header-extension-and-csrc-fields "> | |||
| <name>RTP Packet with 1-byte header extension and CSRC fields</name> | <name>RTP Packet with One-Byte Header Extension and CSRC Fields</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1238 | 920f1238 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| bede0001 | bede0001 | |||
| 51000200 | 51000200 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1238 | 920f1238 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 8bb6e12b | 8bb6e12b | |||
| 5cff16dd | 5cff16dd | |||
| c0de0001 | c0de0001 | |||
| 92838c8c | 92838c8c | |||
| 09e58393 | 09e58393 | |||
| e1de3a9a | e1de3a9a | |||
| 74734d67 | 74734d67 | |||
| 45671338 | 45671338 | |||
| c3acf11d | c3acf11d | |||
| a2df8423 | a2df8423 | |||
| bee0 | bee0 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-2-byte-header-extension-and-csrc-fields "> | <section anchor="rtp-packet-with-2-byte-header-extension-and-csrc-fields "> | |||
| <name>RTP Packet with 2-byte header extension and CSRC fields</name> | <name>RTP Packet with Two-Byte Header Extension and CSRC Fields</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1239 | 920f1239 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| 10000001 | 10000001 | |||
| 05020002 | 05020002 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1239 | 920f1239 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| f70e513e | f70e513e | |||
| b90b9b25 | b90b9b25 | |||
| c2de0001 | c2de0001 | |||
| bbed4848 | bbed4848 | |||
| faa64466 | faa64466 | |||
| 5f3d7f34 | 5f3d7f34 | |||
| 125914e9 | 125914e9 | |||
| f4d0ae92 | f4d0ae92 | |||
| 3c6f479b | 3c6f479b | |||
| 95a0f7b5 | 95a0f7b5 | |||
| 3133 | 3133 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-empty-1-byte-header-extension-and-csrc- fields"> | <section anchor="rtp-packet-with-empty-1-byte-header-extension-and-csrc- fields"> | |||
| <name>RTP Packet with empty 1-byte header extension and CSRC fields</n ame> | <name>RTP Packet with Empty One-Byte Header Extension and CSRC Fields< /name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123a | 920f123a | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| bede0000 | bede0000 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123a | 920f123a | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 7130b6ab | 7130b6ab | |||
| fe2ab0e3 | fe2ab0e3 | |||
| c0de0000 | c0de0000 | |||
| e3d9f64b | e3d9f64b | |||
| 25c9e74c | 25c9e74c | |||
| b4cf8e43 | b4cf8e43 | |||
| fb92e378 | fb92e378 | |||
| 1c2c0cea | 1c2c0cea | |||
| b6b3a499 | b6b3a499 | |||
| a14c | a14c | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-empty-2-byte-header-extension-and-csrc- fields"> | <section anchor="rtp-packet-with-empty-2-byte-header-extension-and-csrc- fields"> | |||
| <name>RTP Packet with empty 2-byte header extension and CSRC fields</n ame> | <name>RTP Packet with Empty Two-Byte Header Extension and CSRC Fields< /name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123b | 920f123b | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| 10000000 | 10000000 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123b | 920f123b | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| cbf24c12 | cbf24c12 | |||
| 4330e1c8 | 4330e1c8 | |||
| c2de0000 | c2de0000 | |||
| 599dd45b | 599dd45b | |||
| c9d687b6 | c9d687b6 | |||
| 03e8b59d | 03e8b59d | |||
| 771fd38e | 771fd38e | |||
| 88b170e0 | 88b170e0 | |||
| cd31e125 | cd31e125 | |||
| eabe | eabe | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="aes-gcm"> | <section anchor="aes-gcm"> | |||
| <name>AES-GCM</name> | <name>AES-GCM</name> | |||
| <t>The following section list the test vectors for using cryptex with AE S-GCM as per <xref target="RFC7714"/></t> | <t>The following subsections list the test vectors for using Cryptex wit h AES-GCM as per <xref target="RFC7714"/>.</t> | |||
| <t>Common values are organized as follows:</t> | <t>Common values are organized as follows:</t> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| Rollover Counter: 00000000 | Rollover Counter: 00000000 | |||
| Master Key: 000102030405060708090a0b0c0d0e0f | Master Key: 000102030405060708090a0b0c0d0e0f | |||
| Master Salt: a0a1a2a3a4a5a6a7a8a9aaab | Master Salt: a0a1a2a3a4a5a6a7a8a9aaab | |||
| Crypto Suite: AEAD_AES_128_GCM | Crypto Suite: AEAD_AES_128_GCM | |||
| Session Key: 077c6143cb221bc355ff23d5f984a16e | Session Key: 077c6143cb221bc355ff23d5f984a16e | |||
| Session Salt: 9af3e95364ebac9c99c5a7c4 | Session Salt: 9af3e95364ebac9c99c5a7c4 | |||
| ]]></artwork> | ]]></artwork> | |||
| <section anchor="rtp-packet-with-1-byte-header-extension-1"> | <section anchor="rtp-packet-with-1-byte-header-extension-1"> | |||
| <name>RTP Packet with 1-byte header extension</name> | <name>RTP Packet with One-Byte Header Extension</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1235 | 900f1235 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| bede0001 | bede0001 | |||
| 51000200 | 51000200 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1235 | 900f1235 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| c0de0001 | c0de0001 | |||
| 39972dc9 | 39972dc9 | |||
| 572c4d99 | 572c4d99 | |||
| e8fc355d | e8fc355d | |||
| e743fb2e | e743fb2e | |||
| 94f9d8ff | 94f9d8ff | |||
| 54e72f41 | 54e72f41 | |||
| 93bbc5c7 | 93bbc5c7 | |||
| 4ffab0fa | 4ffab0fa | |||
| 9fa0fbeb | 9fa0fbeb | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-2-byte-header-extension-1"> | <section anchor="rtp-packet-with-2-byte-header-extension-1"> | |||
| <name>RTP Packet with 2-byte header extension</name> | <name>RTP Packet with Two-Byte Header Extension</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1236 | 900f1236 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 10000001 | 10000001 | |||
| 05020002 | 05020002 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 900f1236 | 900f1236 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| c2de0001 | c2de0001 | |||
| bb75a4c5 | bb75a4c5 | |||
| 45cd1f41 | 45cd1f41 | |||
| 3bdb7daa | 3bdb7daa | |||
| 2b1e3263 | 2b1e3263 | |||
| de313667 | de313667 | |||
| c9632490 | c9632490 | |||
| 81b35a65 | 81b35a65 | |||
| f5cb6c88 | f5cb6c88 | |||
| b394235f | b394235f | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-1-byte-header-extension-and-csrc-fields -1"> | <section anchor="rtp-packet-with-1-byte-header-extension-and-csrc-fields -1"> | |||
| <name>RTP Packet with 1-byte header extension and CSRC fields</name> | <name>RTP Packet with One-Byte Header Extension and CSRC Fields</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1238 | 920f1238 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| bede0001 | bede0001 | |||
| 51000200 | 51000200 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1238 | 920f1238 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 63bbccc4 | 63bbccc4 | |||
| a7f695c4 | a7f695c4 | |||
| c0de0001 | c0de0001 | |||
| 8ad7c71f | 8ad7c71f | |||
| ac70a80c | ac70a80c | |||
| 92866b4c | 92866b4c | |||
| 6ba98546 | 6ba98546 | |||
| ef913586 | ef913586 | |||
| e95ffaaf | e95ffaaf | |||
| fe956885 | fe956885 | |||
| bb0647a8 | bb0647a8 | |||
| bc094ac8 | bc094ac8 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-2-byte-header-extension-and-csrc-fields -1"> | <section anchor="rtp-packet-with-2-byte-header-extension-and-csrc-fields -1"> | |||
| <name>RTP Packet with 2-byte header extension and CSRC fields</name> | <name>RTP Packet with Two-Byte Header Extension and CSRC Fields</name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1239 | 920f1239 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| 10000001 | 10000001 | |||
| 05020002 | 05020002 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f1239 | 920f1239 | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 3680524f | 3680524f | |||
| 8d312b00 | 8d312b00 | |||
| c2de0001 | c2de0001 | |||
| c78d1200 | c78d1200 | |||
| 38422bc1 | 38422bc1 | |||
| 11a7187a | 11a7187a | |||
| 18246f98 | 18246f98 | |||
| 0c059cc6 | 0c059cc6 | |||
| bc9df8b6 | bc9df8b6 | |||
| 26394eca | 26394eca | |||
| 344e4b05 | 344e4b05 | |||
| d80fea83 | d80fea83 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-empty-1-byte-header-extension-and-csrc- fields-1"> | <section anchor="rtp-packet-with-empty-1-byte-header-extension-and-csrc- fields-1"> | |||
| <name>RTP Packet with empty 1-byte header extension and CSRC fields</n ame> | <name>RTP Packet with Empty One-Byte Header Extension and CSRC Fields< /name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123a | 920f123a | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| bede0000 | bede0000 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123a | 920f123a | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 15b6bb43 | 15b6bb43 | |||
| 37906fff | 37906fff | |||
| c0de0000 | c0de0000 | |||
| b7b96453 | b7b96453 | |||
| 7a2b03ab | 7a2b03ab | |||
| 7ba5389c | 7ba5389c | |||
| e9331712 | e9331712 | |||
| 6b5d974d | 6b5d974d | |||
| f30c6884 | f30c6884 | |||
| dcb651c5 | dcb651c5 | |||
| e120c1da | e120c1da | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rtp-packet-with-empty-2-byte-header-extension-and-csrc- fields-1"> | <section anchor="rtp-packet-with-empty-2-byte-header-extension-and-csrc- fields-1"> | |||
| <name>RTP Packet with empty 2-byte header extension and CSRC fields</n ame> | <name>RTP Packet with Empty Two-Byte Header Extension and CSRC Fields< /name> | |||
| <t>RTP Packet:</t> | <t>RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123b | 920f123b | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| 0001e240 | 0001e240 | |||
| 0000b26e | 0000b26e | |||
| 10000000 | 10000000 | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| abababab | abababab | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>Encrypted RTP Packet:</t> | <t>Encrypted RTP Packet:</t> | |||
| <artwork><![CDATA[ | <sourcecode type="test-vectors"><![CDATA[ | |||
| 920f123b | 920f123b | |||
| decafbad | decafbad | |||
| cafebabe | cafebabe | |||
| dcb38c9e | dcb38c9e | |||
| 48bf95f4 | 48bf95f4 | |||
| c2de0000 | c2de0000 | |||
| 61ee432c | 61ee432c | |||
| f9203170 | f9203170 | |||
| 76613258 | 76613258 | |||
| d3ce4236 | d3ce4236 | |||
| c06ac429 | c06ac429 | |||
| 681ad084 | 681ad084 | |||
| 13512dc9 | 13512dc9 | |||
| 8b5207d8 | 8b5207d8 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </back> | ||||
| <!-- ##markdown-source: | ||||
| H4sIAAAAAAAAA+0863bbxpn/8RSzyo+VGokhCPACbd2NIjmOU8vWWk6bnrYn | ||||
| HQADCWsQ4AKgJNZ2nmVfYV9h98X2u8xgBiSkxI3d9oeVc2ISBGa++31wdHTk | ||||
| pVVSyqU6Fmkts/YoV212JG/apKrVUVJvVq26OxovvDZvC7jptFquCtWqYiMe | ||||
| l/RzXl6Jl68uxDdKpqoWj+9aVTZ5VTZClincX7Z1Hq/ptstqXSeq8RLZqquq | ||||
| 3hyLpk29fFUfi7ZeN+1kPI7GE0/WSh6Lk5evvNuqfn1VV+sVfP3dq9MXLx97 | ||||
| r9UGrqbH4hI29ZoWNvlBFlUJsG1g6fUqhcWbYxHMfd/zVvmx+GNbJYeiqeq2 | ||||
| VlkDnzZL/PBnz5Pr9rqqj70jT8BfXsJj347Ed7Gq25wuMWG+BdDy0r1e1Vey | ||||
| zP8qW8ATaFKs4+tq3Sj6TS1lXhyL/6SHvlzTQyNciLahTU5H4ltVlkCSxjOb | ||||
| nK6LQpXuddgELudNUnndqlmxzrLNl3mejxLp2RUvR+KJrJNcivN1nRdF1a17 | ||||
| qeqrvNr9lVY/hy95IpvW7tDQ/aMrun+05Pu/TKpmWTVV1t4Cc0Z55XllVS8B | ||||
| /xt1DM++/Po0mE7H5iOQXn9cTBZT83ExjY49Ly+zrSdn4Sy0H83ts2gMV72j | ||||
| oyMh46atZdJ63u+v80KJ9loBWsm6VuKlksVRmy+VeFXLslkBk8VFXQHHq0Ls | ||||
| o4gciFVd3eSpakRSlRl8KNtcFnm78QAQWguug8y2jagyIcVSpUColUxeq/YQ | ||||
| vjf5VZlnQKWyFXJZreEfuG+pWgmSJkXeiEJlrbcuYZ9WJa1KD4EnSbFOjWZc | ||||
| s2aovmYkrmY0rBli//Ty5WlzMPK+qW7VjaoPAUDYgXYCCESsxLKCxSRpYIPr | ||||
| ISVhQ7GU5UbI1QoZinLZjASRywMUgVLXEm6LFYjYqlY3OYirkG2rlivAu62E | ||||
| Bt5uhzurDT92LVNR5MsccPNStSqqzRLodSjStcJnE7IJd0BSIRtxq4oC/4Xl | ||||
| rkuApeBHNUye94p2qJI1riG0viLHSWUPmbtItmalEiI8PnlINEtVlpdw9ynb | ||||
| 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 | ||||
| cDKepwu3tef9P5Md+eozcAAA | ||||
| <section anchor="acknowledgements" numbered="false"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>The authors wish to thank <contact fullname="Lennart Grahl"/> for | ||||
| pointing out many of the issues with the existing header encryption | ||||
| mechanism, as well as suggestions for this proposal. Thanks also to | ||||
| <contact fullname="Jonathan Lennox"/>, <contact fullname="Inaki | ||||
| Castillo"/>, and <contact fullname="Bernard Aboba"/> for their reviews | ||||
| and suggestions.</t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 116 change blocks. | ||||
| 827 lines changed or deleted | 369 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||