rtp header encryption changes - #256
Conversation
| <p> | ||
| In addition, the user agent MUST consider the use of [[RFC9335]] | ||
| mandatory, as described in [[RFC9335]] Section 5.2. Received RTP packets | ||
| which are not encrypted with cryptex are not processed further. |
There was a problem hiding this comment.
Is it clear how these dropped packets would appear on webrtc-stats? Will they even appear?
There was a problem hiding this comment.
we don't have a SRTP unprotect failure counter so they would be dropped silently. Might be a useful thing to have regardless (I am looking at you error=9)
| Negotiate RTP header encryption as defined in [[RFC9335]]. If the remote | ||
| endpoint does not indicate that it is capable of receiving RTP packets | ||
| encrypted with cryptex, RTP header extensions and CSRCs are sent in the | ||
| clear. |
There was a problem hiding this comment.
What happens in case the remote endpoint supports cryptex in that case?
Now that we have disable, I would think that the UA MUST send cryptex packets.
If it cannot be a MUST, a SHOULD would be good.
There was a problem hiding this comment.
Good point. The current definition of disable leans towards "don't use it" but that needs text clarifying that it is supposed to ignore cryptex in the remote description too.
I'm generally in favor of "opportunistic cryptography" so :+1 for adding a "if the remote offers, you may use it"
If disable stays such a opt-out it might be good to mark it at risk upfront to make it clear we aim for more crypto.
(the case where the offerer is configured with disable and the answerer with require would break in both cases I think, it just depends how badly... don't shoot yourself in the foot)
There was a problem hiding this comment.
So something like this?
| clear. | |
| clear. | |
| If the remote endpoint indicates that it is capable of | |
| receiving RTP packets encrypted with cryptex, the | |
| user agent SHOULD apply cryptex. |
There was a problem hiding this comment.
I do not think we should narrow cryptex which says
Once each peer has verified that the other party supports receiving RTP packets encrypted with Cryptex, senders can unilaterally decide whether or not to use the Cryptex mechanism on a per-packet basis.
|
Overall looks good to me. |
| Negotiate RTP header encryption as defined in [[RFC9335]]. If the remote | ||
| endpoint does not indicate that it is capable of receiving RTP packets | ||
| encrypted with cryptex, RTP header extensions and CSRCs are sent in the | ||
| clear. |
There was a problem hiding this comment.
So something like this?
| clear. | |
| clear. | |
| If the remote endpoint indicates that it is capable of | |
| receiving RTP packets encrypted with cryptex, the | |
| user agent SHOULD apply cryptex. |
| In setConfiguration in [[RTCWEB-JSEP]] section 4.1.18, replace | ||
| "The bundle and RTCP-multiplexing policies MUST NOT be changed after the construction of the PeerConnection." | ||
| with | ||
| "The bundle policy, the RTCP-multiplexing policy and the RTP header encryption policy | ||
| MUST NOT be changed after the construction of the PeerConnection." |
There was a problem hiding this comment.
We probably don't need to modify JSEP to add an additional restriction. Might it suffice to say:
| In setConfiguration in [[RTCWEB-JSEP]] section 4.1.18, replace | |
| "The bundle and RTCP-multiplexing policies MUST NOT be changed after the construction of the PeerConnection." | |
| with | |
| "The bundle policy, the RTCP-multiplexing policy and the RTP header encryption policy | |
| MUST NOT be changed after the construction of the PeerConnection." | |
| This spec adds the following restriction above and beyond what is described for | |
| setConfiguration in [[RTCWEB-JSEP]] section 4.1.18: | |
| "The RTP header encryption policy MUST NOT be changed after the construction of the PeerConnection." |
Either way.
There was a problem hiding this comment.
We always did however and also do in 15.3 - https://w3c.github.io/webrtc-extensions/#always-negotiating-datachannels-interface-extensions
Co-authored-by: Jan-Ivar Bruaroey <jan-ivar@users.noreply.github.com>
as proposed in
https://www.w3.org/2026/06/16-webrtc-minutes.html#9a7b
(finally got around to doing it)
Preview | Diff