kyzer-davis / srtp-assurance-rfc-draft

A template repository for Internet-Draft management
0 stars 2 forks source link

Add Appendix further discussing why SDP Security Session Parameters extension not used #5

Closed kyzer-davis closed 1 year ago

kyzer-davis commented 1 year ago

From RFC4568

6.3.7.  Defining New SRTP Session Parameters
   New SRTP session parameters are by default mandatory.  A newly
   defined SRTP session parameter that is prefixed with the dash
   character ("-"), however, is considered optional and MAY be ignored.
   If an SDP crypto attribute is received with an unknown session
   parameter that is not prefixed with a "-" character, that crypto
   attribute MUST be considered invalid.

7.1.1.  Generating the Initial Offer - Unicast Streams
   The offerer MAY include one or more other SRTP session parameters, as
   defined in Section 6.3.  Note, however, that if any SRTP session
   parameters are included that are not known to the answerer, but that
   are nonetheless mandatory (see Section 6.3.6), the negotiation will
   fail if the answerer does not support them.

9.2.  SRTP "Crypto" Attribute Grammar
      srtp-session-extension = ["-"] 1*(VCHAR)  ;visible chars [RFC4234]
                               ; first character must not be dash ("-")

10.3.2.2.  SRTP Session Parameter Registration
   The IANA has created a new subregistry for SRTP session parameters
   under the SRTP transport of the SDP Security Descriptions.  An IANA
   SRTP session parameter registration MUST indicate the session
   parameter name (srtp-session-extension as defined in Section 9.2);
   the name MUST NOT begin with the dash character ("-"). 

Examples of theoretical declarative SDP Security Session Parameters for ROC, SEQ, SSRC conveyance:

a=crypto:1 [..omitted..] SSRC=0x00845FED ROC=0x00000000 SEQ=0x005D
a=crypto:1 AEAD_AES_256_GCM \
 inline:3/sxOxrbg3CVDrxeaNs91Vle+wW1RvT/zJWTCUNP1i6L45S9qcstjBv+eo0=\
 |2^20|1:32 SSRC=0x00845FED ROC=0x0000 SEQ=0x0150
a=crypto:1 AES_CM_128_HMAC_SHA1_80 \    
  inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|2:18\ 
  ;inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|21|3:4 \ 
  KDR=23 FEC_ORDER=SRTP_FEC UNENCRYPTED_SRTP \  
  SSRC=0xDD148F16 ROC=0x0 SEQ=0x5A53    
a=crypto:2 AES_CM_128_HMAC_SHA1_32 \    
  inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|2^20 \    
  FEC_KEY=inline:QUJjZGVmMTIzNDU2Nzg5QUJDREUwMTIzNDU2Nzg5|2^20|2:4 \    
  WSH=60 SSRC=0xD903 ROC=0x0002 SEQ=0xB043  
a=crypto:3 AEAD_AES_256_GCM \   
  inline:HGAPy4Cedy/qumbZvpuCZSVT7rNDk8vG4TdUXp5hkyWqJCqiLRGab0KJy1g= \ 
  UNAUTHENTICATED_SRTP SSRC=0x05 ROC=0x02 SEQ=unknown   
a=crypto:4 AEAD_AES_128_GCM \   
  inline:bQJXGzEPXJPClrd78xwALdaZDs/dLttBLfLE5Q== \ 
  UNENCRYPTED_SRTCP SSRC=0x6500

My Analysis:

So in closing:

Would also need to consider how this scales as per #1, the a=crypto gets very long even if you coupled them nicely wrapped in start/stop delimiters.

kyzer-davis commented 1 year ago

Paraphrasing feedback from IETF individual discussions: "We know how implementations will handle unknown SDP attributes; we do not know well how well how implementations will handle unknown SDP Security Session Parameters"

valvo27 commented 1 year ago

Nothing to add here, this is more of a discovery based on feedback, if Jonathan Lennox sees this as a potential interop issue, I rather go with the least impacting for better adoption.