Nový PJSIP přitvrdil?

tls,srtp,zrtp a bezpečnostní potíže VoIP
Netolish
Příspěvky: 23
Registrován: pon 04. bře 2013 12:24:16

Nový PJSIP přitvrdil?

Příspěvek od Netolish »

Přeji dobrý den.

Před se omlouvám za chabé znalosti SIP, ale v nové verzi PJSIP resp. klienta PJSUA
mi přestalo fungovat SRTP + SIPS. Registrace je v pořádku, ale při pokusu o hovor
dojde na straně klienta k odmítnutí. Hlavička od serveru vypadá takto:

SIP/2.0 200 OK
Via: SIP/2.0/TLS 37.157.194.179:46498;received=37.157.194.179;rport=46498;branch=z9hG4bKPj1d6e75ee-0729-4c17-9ff4-a9721e2a6b33;alias
Record-Route: <sips:*081@81.31.45.51;r2=on;lr=on;ftag=d6af760d-db4f-4ef4-aa9d-1f2825abd4c8;did=9a22.7ff3>
Record-Route: <sips:*081@81.31.45.51:5061;transport=tls;r2=on;lr=on;ftag=d6af760d-db4f-4ef4-aa9d-1f2825abd4c8;did=9a22.7ff3>
From: sips:707664@sip.odorik.cz;tag=d6af760d-db4f-4ef4-aa9d-1f2825abd4c8
To: sips:*081@sip.odorik.cz;tag=as73bbe8d3
Call-ID: 35eaab0b-1d0f-4162-9629-19ea6cdc8df7
CSeq: 3781 INVITE
Server: Odorik_UAC
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces
Contact: <sip:*081@81.31.45.56:5060>
Content-Type: application/sdp
Content-Length: 319

Problematickou položkou se zdá být Contact - PJSIP knihovna si stěžuje že:
Secure dialog requires SIPS scheme in Contact and Record-Route headers, ending the session

Mimochodem stejně přestal fungovat i CSipSimple, který v nové verzi zřejmě použil také
novou verzi PJSIP. V případě, že v nastaveních vynutím SIPS + SRTP hovor se hned po
vytočení ukončí.

Nevím zda jde o chybu v knihovně PJSIP (příliš restriktivní) nebo na straně serveru
Odorik, který do hlavičky Contact "neopíše" původně volaný kontakt se "sips".

Koukám do RFC 3261 a tam se v bodu 8.1.1.8 píše:

If the Request-URI or top Route header field value contains a SIPS
URI, the Contact header field MUST contain a SIPS URI as well.

Chápu správně, že když volám sips měl by server v hlavičce
Contact také použít sips?
Uživatelský avatar
kovik
Příspěvky: 505
Registrován: stř 16. lis 2011 11:07:52

Re: Nový PJSIP přitvrdil?

Příspěvek od kovik »

Dobry den,
zrejme to tak bude, proverim.

Diky za nahlaseni.
Uživatelský avatar
kovik
Příspěvky: 505
Registrován: stř 16. lis 2011 11:07:52

Re: Nový PJSIP přitvrdil?

Příspěvek od kovik »

Dobry den,
mel jste pravdu!

Po nocnim restartu by to melo byt opraveno.

Diky za pripadne otestovani.
Netolish
Příspěvky: 23
Registrován: pon 04. bře 2013 12:24:16

Re: Nový PJSIP přitvrdil?

Příspěvek od Netolish »

Uff, to jsem rád. Měl jsem obavy abych zbytečně neprudil kvůli mé neznalosti SIP
protokolu. Díky za prověření a nápravu. SIPS + SRTP používám já i to radím přátelům,
kterým jsem VOIP u Odoriku zřídil, neboť oba naši vesničtí provideři nepoužívají
pro Wifi žádné šifrování.
Zítra to prověřím jak z PJSUA tak i z CSipSimple a dám vědět.
Díky za rychlou reakci.
Netolish
Příspěvky: 23
Registrován: pon 04. bře 2013 12:24:16

Re: Nový PJSIP přitvrdil?

Příspěvek od Netolish »

Tak jsem to o víkendu otestoval a vše funguje parádně. Jak CSipSimple
s vynuceným SIPS + SRTP, tak i konzolový PJSUA s novou PJSIP
knihovnou.
Díky moc za rychlé vyřešení.
Uživatelský avatar
kovik
Příspěvky: 505
Registrován: stř 16. lis 2011 11:07:52

Re: Nový PJSIP přitvrdil?

Příspěvek od kovik »

Diky.
Netolish
Příspěvky: 23
Registrován: pon 04. bře 2013 12:24:16

Re: Nový PJSIP přitvrdil?

Příspěvek od Netolish »

Zdá se, že projekt PJSIP ve verzi 2.6 opět trochu restriktivněji trvá na
dodržování standardů. Tentokrát je problém v dohadování se o použitém algoritmu
pro šifrování SRTP streamu. PJSIP pošle:

Kód: Vybrat vše

INVITE sips:*081@sip.odorik.cz SIP/2.0
Via: SIP/2.0/TLS 172.16.3.6:58949;rport;branch=z9hG4bKPj9f99f93a-2b6c-4c84-b8f1-7e1df6726bdc;alias
Max-Forwards: 70
From: sips:701458@sip.odorik.cz;tag=93663eaf-5b82-42f7-9d16-995dea2a85c3
To: sips:*081@sip.odorik.cz
Contact: <sips:701458@172.16.3.6:39037;transport=TLS;ob>
Call-ID: 3e07d851-4a49-4dfd-8f9c-26ea42cc7d9e
CSeq: 19946 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
User-Agent: PJSUA v2.6 Linux-4.11.2/x86_64/glibc-2.24
Proxy-Authorization: Digest username="701458", realm="sip.odorik.cz", nonce="WSVJLFklSAAZ80u8eKPBEwmUJJvkL56T", uri="sips:*081@sip.odorik.cz", response="f1e98d2f2b16eab73f06cf330c7bc1b3"
Content-Type: application/sdp
Content-Length:   887

v=0
o=- 3704604288 3704604288 IN IP4 172.16.3.6
s=pjmedia
b=AS:117
t=0 0
a=X-nat:0
m=audio 4000 RTP/SAVP 104 3 98 97 99 8 9 120 96
c=IN IP4 172.16.3.6
b=TIAS:96000
a=rtcp:4001 IN IP4 172.16.3.6
a=sendrecv
a=rtpmap:104 iLBC/8000
a=fmtp:104 mode=30
a=rtpmap:3 GSM/8000
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:99 speex/32000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:120 opus/48000/2
a=fmtp:120 useinbandfec=1
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=crypto:1 AES_256_CM_HMAC_SHA1_80 inline:sRptuO2x2VDs6fMprrubQZe1K8g9SLpfLg0Rah3OxH6ww+1uCbEjDP18qScPyQ==
a=crypto:2 AES_256_CM_HMAC_SHA1_32 inline:VOVi2R4QRe7CEfZMkpGKonSOPepBgsgDIZs5NeLUxlQ/53+tavgRenhaipPeFw==
a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:lqVpNRdqRhNQNcSs/bujny3UwdFQpw2l0UCH/6gp
a=crypto:4 AES_CM_128_HMAC_SHA1_32 inline:oXzhGTySTkVEQ8YKYRkh2nHvwZHsJfbJ8Gmzyjst
a server sip.odorik.cz odpoví:

Kód: Vybrat vše

SIP/2.0 200 OK
Via: SIP/2.0/TLS 172.16.3.6:58949;received=37.157.194.179;rport=58949;branch=z9hG4bKPj9f99f93a-2b6c-4c84-b8f1-7e1df6726bdc;alias
Record-Route: <sips:*081@81.31.45.51;r2=on;lr=on;ftag=93663eaf-5b82-42f7-9d16-995dea2a85c3;did=496c.0ee51;nat=yes>
Record-Route: <sips:*081@81.31.45.51:5061;transport=tls;r2=on;lr=on;ftag=93663eaf-5b82-42f7-9d16-995dea2a85c3;did=496c.0ee51;nat=yes>
From: sips:701458@sip.odorik.cz;tag=93663eaf-5b82-42f7-9d16-995dea2a85c3
To: sips:*081@sip.odorik.cz;tag=as081e8b80
Call-ID: 3e07d851-4a49-4dfd-8f9c-26ea42cc7d9e
CSeq: 19946 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces
Contact: <sips:*081@89.185.255.45:5060;alias=89.185.255.45~5060~1>
Content-Type: application/sdp
Content-Length: 370

v=0
o=root 543590420 543590420 IN IP4 89.185.255.45
s=-
c=IN IP4 89.185.255.45
t=0 0
m=audio 27954 RTP/SAVP 8 3 104 96
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:104 iLBC/8000
a=fmtp:104 mode=30
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=ptime:20
a=sendrecv
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:pVw6jdme1swBqSfTk1Jce9y43MYkUk0naPxIcTgN
V logu je pak hláška:

Kód: Vybrat vše

Error updating media call01:0: SRTP crypto-suite name not match the offerer tag (PJMEDIA_SRTP_ECRYPTONOTMATCH)
Laděním jsem zjistil, že problém je v odlišném, tagu vybraného šifrování v odpovědi:

klient a=crypto:3 AES_CM_128_HMAC_SHA1_80 inline:lqVpNRdqRhNQNcSs/bujny3UwdFQpw2l0UCH/6gp
server a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:pVw6jdme1swBqSfTk1Jce9y43MYkUk0naPxIcTgN

název šifry sice souhlasí, ale nesouhlasí tag - já jsem tuto šifru nabídl pod tagem 3
v odpovědi je ale tag 1.

Jestli správně chápu RFC4568 sekce 5.1.2 https://tools.ietf.org/html/rfc4568#page-10
tak by hodnota tagu v opdvědi měla zůstat zachována. Tak to i kontroluje kód PJSIP knihovny.

Mohu vás poprosit o prověření?

Díky, Netolish
Uživatelský avatar
kovik
Příspěvky: 505
Registrován: stř 16. lis 2011 11:07:52

Re: Nový PJSIP přitvrdil?

Příspěvek od kovik »

Dobry den,
proveril jsem to a mate pravdu, po nocnim restratu by to melo byt funkcni.

Dekuji za nahlaseni.
Netolish
Příspěvky: 23
Registrován: pon 04. bře 2013 12:24:16

Re: Nový PJSIP přitvrdil?

Příspěvek od Netolish »

Děkuji za úpravu. Tak test volání z PJSIP (419194) na *081 už funguje.
Při té příležitosti jsem ale zjistill, že se mi nedá dovolat na žádnou z linek kde mám
zapnuto SRTP pro příchozí hovory. Log s "pevne" SPA112 (linka 687543)
nemám - telefon zazvoní, ale po zvednutí je hovor ukončen,
Když jsem zkusil zavolat na zaregistrovaný PJSIP (linka 419194) bylo v logu toto:

Kód: Vybrat vše

INVITE sips:419194@10.0.2.2:60433;transport=TLS;ob SIP/2.0
Record-Route: <sip:419194@81.31.45.51:5061;transport=tls;r2=on;lr=on;ftag=as059d1a52;did=565c.8de7;nat=yes>
Record-Route: <sip:419194@81.31.45.51;r2=on;lr=on;ftag=as059d1a52;did=565c.8de7;nat=yes>
Via: SIP/2.0/TLS 81.31.45.51:5061;branch=z9hG4bK534e.816519078fa33827019c2ebb7a71304c.0
Via: SIP/2.0/UDP 89.185.255.45:5060;received=89.185.255.45;branch=z9hG4bK58fcea6f;rport=5060
Max-Forwards: 69
From: "566466420" <sip:*735139@sip.odorik.cz>;tag=as059d1a52
To: <sip:419194@81.31.45.51>
Contact: <sip:*735139@89.185.255.45:5060>
Call-ID: 59437b356989f4dd26ef69526ca7d59d@sip.odorik.cz
CSeq: 102 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces
Content-Type: application/sdp
Content-Length: 361
P-Asserted-Identity: "566466420" <sip:*735139@sip.odorik.cz>
                                                                                
v=0
o=root 116683090 116683090 IN IP4 89.185.255.45
s=-                                     
c=IN IP4 89.185.255.45
t=0 0
m=audio 42362 RTP/AVP 8 18 110 3 97 101
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:110 speex/8000
a=rtpmap:3 GSM/8000
a=rtpmap:97 iLBC/8000
a=fmtp:97 mode=30
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
PJSIP odpověděl

Kód: Vybrat vše

SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/TLS 81.31.45.51:5061;received=81.31.45.51;branch=z9hG4bK534e.816519078fa33827019c2ebb7a71304c.0
Via: SIP/2.0/UDP 89.185.255.45:5060;rport=5060;received=89.185.255.45;branch=z9hG4bK58fcea6f
Record-Route: <sip:419194@81.31.45.51:5061;transport=tls;lr;r2=on;ftag=as059d1a52;did=565c.8de7;nat=yes>
Record-Route: <sip:419194@81.31.45.51;lr;r2=on;ftag=as059d1a52;did=565c.8de7;nat=yes>
Call-ID: 59437b356989f4dd26ef69526ca7d59d@sip.odorik.cz
From: "566466420" <sip:*735139@sip.odorik.cz>;tag=as059d1a52
To: <sip:419194@81.31.45.51>;tag=z9hG4bK534e.816519078fa33827019c2ebb7a71304c.0
CSeq: 102 INVITE
Warning: 381 dell "SIPS Required"
Content-Length:  0
a ve sluchátku se ozvalo že je volaný účastník nedostupný.

Vypadá to jako by se průchodem přes další SIP proxy (89.185.255.45) někde potratil požadavek na šifrování.
V Contact už neni sips (viz začátek tohoto vlákna) a v SDP není crypto.
Já vím že pořád otravuji, ale jak už jsem zmínil náš obecní provider zatím stále
odmítá šifrovat wifi a vps wedosu kde mám openvpn tunel poslední dobou taky
nějak drhne :?
Diky Netolish
Uživatelský avatar
kovik
Příspěvky: 505
Registrován: stř 16. lis 2011 11:07:52

Re: Nový PJSIP přitvrdil?

Příspěvek od kovik »

Dobry den,
mate pravdu, pracuji na naprave.

Dekuji
Odpovědět