[asterisk-bugs] [JIRA] (ASTERISK-25642) SRTCP broken with DTLS - bad video is one of the consequences

Stefan Engström (JIRA) noreply at issues.asterisk.org
Tue Dec 22 04:49:33 CST 2015


     [ https://issues.asterisk.org/jira/browse/ASTERISK-25642?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Engström updated ASTERISK-25642:
---------------------------------------

    Description: 
symtoms: When dialing webrtc peers, asterisk gets lots  warning logs SRTP unprotect failed with: authentication failure 110 upon receiving rtcp and the webrtc client also gets unprotect failures - in particular when trying to unprotect RTCP FIR which asterisk send on vp8-capable channels. This means bad video.

When dialing sipml chan_sip chrome webrtc peers, we do not mux rtcp and rtp, so there is a seperate dtls handshake for rtcp and rtp for both audio and video. In res_rtp_asterisk.c we extract keying materials from the rtp-dtls-session (to be used for srtp) when the handshake is complete, but we do nothing with the results of the rtcp->dtls handshake. The extracted key from rtp->dtls is passed to libsrtp in res_srtp.c via the srtp_policy_t struct but from the struct reference for that in http://srtp.sourceforge.net/libsrtp.pdf it looks like it is not possible to supply different keys for rtp and rtcp? 

So, can anyone think of a solution or work-around?

  was:
symtoms: When dialing webrtc peers, asterisk gets lots  warning logs SRTP unprotect failed with: authentication failure 110 upon receiving rtcp and the webrtc client also gets unprotect failures - in particular when trying to unprotect RTCP FIR which asterisk send on vp8-capable channels. This means bad video.

When dialing sipml chan_sip chrome webrtc peers, we do not mux rtcp and rtp, so there is a seperate dtls handshake for rtcp and rtp for both audio and media. In res_rtp_asterisk.c we extract keying materials from the rtp-dtls-session (to be used for srtp) when the handshake is complete, but we do nothing with the results of the rtcp->dtls handshake. The extracted key from rtp->dtls is passed to libsrtp in res_srtp.c via the srtp_policy_t struct but from the struct reference for that in http://srtp.sourceforge.net/libsrtp.pdf it looks like it is not possible to supply different keys for rtp and rtcp? 

So, can anyone think of a solution or work-around?


> SRTCP broken with DTLS  - bad video is one of the consequences
> --------------------------------------------------------------
>
>                 Key: ASTERISK-25642
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-25642
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Resources/res_rtp_asterisk, Resources/res_srtp
>    Affects Versions: 13.5.0
>         Environment: fedora20.x86_64 , libsrtp 1.4.4 , chan_sip webrtc peers
>            Reporter: Stefan Engström
>
> symtoms: When dialing webrtc peers, asterisk gets lots  warning logs SRTP unprotect failed with: authentication failure 110 upon receiving rtcp and the webrtc client also gets unprotect failures - in particular when trying to unprotect RTCP FIR which asterisk send on vp8-capable channels. This means bad video.
> When dialing sipml chan_sip chrome webrtc peers, we do not mux rtcp and rtp, so there is a seperate dtls handshake for rtcp and rtp for both audio and video. In res_rtp_asterisk.c we extract keying materials from the rtp-dtls-session (to be used for srtp) when the handshake is complete, but we do nothing with the results of the rtcp->dtls handshake. The extracted key from rtp->dtls is passed to libsrtp in res_srtp.c via the srtp_policy_t struct but from the struct reference for that in http://srtp.sourceforge.net/libsrtp.pdf it looks like it is not possible to supply different keys for rtp and rtcp? 
> So, can anyone think of a solution or work-around?



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list