Šifrované hovory ZRTP a Odorik

tls,srtp,zrtp a bezpečnostní potíže VoIP
Odpovědět
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: Šifrované hovory s pomocí Odoriku, jak na to.

Příspěvek od xsouku04 »

Máme zde nové návody v podobě němých filmečků na jitsi a zphone, které nám poskytl uživatel voipkredit_cz, čímž mu za ně děkuji.
Filmečky jsem nahrál na youtube a umístil na wiki.
http://www.odorik.cz/w/zrtp
aiwan
Příspěvky: 98
Registrován: pát 12. črc 2013 0:16:11

Re: Šifrované hovory s pomocí Odoriku, jak na to.

Příspěvek od aiwan »

Dobrý deň,
mám problém so šifrovaním hovorov cez program Jitsi. Šifrovanie ZRTP v sieti Odorik funguje bezproblémovo. Problém mám pri volaní a prijímaní hovorov mimo Odorik. Chcel by som pri týchto typoch nastaviť šifrovanie TLS + SRTP. No pri odchádzajúcich hovoroch sa Jitsi tvári, že šifruje len TLS a pri prichádzajúcich hovoroch po zdvihnutí hovor spadne. (V nastaveniach Odoriku mám aktivované vynútenie SRTP pri prichádzajúcich hovoroch).

Je možné nakonfigurovať Jitsi tak, aby fungoval s TLS + SRTP pri prichádzajúcich a odchádzajúcich hovoroch mimo sieť Odorik? (Teda aby bolo šifrované spojenie IN aj OUT medzi Jitsi - Odorik).
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Re: Šifrované hovory s pomocí Odoriku, jak na to.

Příspěvek od xsouku04 »

Můžete udělat nějaké obrázky nastavení, jaké používáte, a dát to sem?
aiwan
Příspěvky: 98
Registrován: pát 12. črc 2013 0:16:11

Re: Šifrované hovory s pomocí Odoriku, jak na to.

Příspěvek od aiwan »

Vybral som zopár nastavení, ktoré by s tým podľa mňa mohli súvisieť. Dúfam, že to zobrazí správne.

Obrázek Obrázek Obrázek Obrázek Obrázek Obrázek Obrázek Obrázek Obrázek
aiwan
Příspěvky: 98
Registrován: pát 12. črc 2013 0:16:11

Re: Šifrované hovory s pomocí Odoriku, jak na to.

Příspěvek od aiwan »

V správe z roku 2011 sa píše, že Jitsi nepodporuje samostatné SRTP:

Jitsi does support SRTP but it does so through ZRTP key negotiation.
This has the advantage of providing end-to-end encryption (contrary to
the standard SRTP impl in Asterisk that can be eavesdropped on the server).

It is however not supported by Asterisk and you would hence need to use
an actual SIP and RTP proxy in order to have it work.
aiwan
Příspěvky: 98
Registrován: pát 12. črc 2013 0:16:11

Re: Šifrované hovory s pomocí Odoriku, jak na to.

Příspěvek od aiwan »

momentálne testujem šifrované volania. Jedná sa mi o spojenie ZRTP. Na jednej strane PC s programom Jitsi, na druhej strane mobil, android s programom CsipSimple.

Nastavenia CSipSimple:

Srtp mode: Optional; ZRTP mode: Create ZRTP.
Skúsenosti:

Smer volania: Jitsi->CsipSimple:
*cislo - Zvoní, Hovor spojený, šifrovaný SRTP
**cislo - Zvoní, Hovor spojený, šifrovaný ZRTP

Smer volania: CsipSimple->Jitsi:
*cislo - 488 Not aceptable here (kodeky sú nastavené správne)
**cislo - Zvoní, Po zdvihnutí odpojí a Jitsi vyhodí chybu: Internal Error: Failed to parse the SDP description of the peer.

Zmena nastavení CSipSimple:
Srtp mode: Mandatory; ZRTP mode: Create ZRTP.

Smer volania: Jitsi->CsipSimple:
*cislo - Zvoní, Hovor spojený, šifrovaný SRTP
**cislo - Jitsi hlási Request Timeout (Spôsobené pravdepodobne tým, že CSipSimple prijme povinne len SRTP mod, nie ZRTP)

Smer volania: CsipSimple->Jitsi:
*cislo - Zvoní, Hovor spojený, šifrovaný SRTP
**cislo - Zvoní, Po zdvihnutí spadne a Jitsi zahlási "odpojeno"

Vyhodnotenie:
Pri nastavení CSipSimple hodnoty SRTP na optional, funguje volanie a šifrovanie jak SRTP, tak ZRTP len v smere Jitsi->CsipSimple. Smer CsipSimple->Jitsi nefunguje.
Pri nastavení CSipSimple hodnoty SRTP na mandatory, funguje len sifrovanie SRTP. ZRTP je nefunkčné v pri oboch smeroch.

Má niekto návrhy, ako sfunkčniť šifrovanie ZRTP v oboch smeroch? Prípadne to máte úspešne otestované s inou kombináciou programov?
kapetr
Příspěvky: 224
Registrován: stř 12. říj 2011 7:14:21

Re: Šifrované hovory ZRTP a Odorik

Příspěvek od kapetr »

Dovolím si uvést svou první zkušenost se šifrováním hovorů.

Jsem v situaci, kdy mě (momentálně) netrápí možnost úředního zásahu - odposlechu hovorů, zabezpečení PSTN/GSM sítí, důvěra v operátora, atd.
Spíše řeším, nikoli vzácnou, situaci, kdy volání jde po nezabezpečené síti - např. veřejná WiFi bez zabezpečení, která umožňuje bezproblémový odposlech síťového provozu, tedy i VoIP hovorů.

Konkrétně mi jde o hovory z/do (PSTN/GSM), tedy o zabezpečení trasy můj VoIP adaptér (sw/hw) a Odorik (jeho transparentní RTP proxy). S tím, že spojení Odorik-PSTN/GSM snad není jen tak každému dostupné/napíchnutelné.

Jak jsem si zachytáváním paketů ověřil tak

1. ZRTP (klient Twinkle) - tato volba zdá se nefunguje. Zvuk se přenáší nešifrovaným RTP, jen Twinkle průběžně marně posílá také ZRTP "Hello paket". na nějž však protistrana (kterou je v tomto případě pouze RTP proxy Odoriku) nijak nereaguje.
Je otázkou, zda by měla:
PRO - šifrování alespoň úseku cesty hovoru má smysl, viz výše
PROTI - neinformovanému dává falešný počet bezpečí, kdy očekává, že ZRTP šifrování probíhá opravdu až v koncových bodech hovoru, což však při spojení do PSTN/GSM sítě nepadá v úvahu.

2. jen SRTP (klient SFLPhone) - tuto volbu jsem realizoval ponechání klasické nešifrované SIP UDP komunikace a zatržením SRTP s výměnou klíčů SDES (domnívám se, že je tím myšlena výměna klíčů v SDP v rámci navazování SIP (INVITE, ...)

Kód: Vybrat vše

Media Attribute (a): crypto:1 AES_CM_128_HMAC_SHA1_80 inline:ASd9GdlX4jyC93ah62dz53Rwqwcq6cMk/Q2iDR3a
Tak jsem uviděl v packet snifferu (wireshark), že audio se přenáší jako SRTP.
Předpokládám, že je to důsledek inteligentního pochopení wiresharkem, který viděl do datagramů SIP a tudíž očekával, že následný UDP "stream" je RTP - konkrétně SRTP.

Jak však již zde i jinde bylo upozorněno, tak klíče pro šifru (AES128) jsou otevřeně přístupné v SIP/SDP komunikaci, takže pro znalého je možné audio dešifrovat. Nicméně méně znalého i to odradí.

3. SIPS (= SIP over TLS) + SRTP (SFLPhone)
Toto je už bezpečné (v úvodu uvedeném smyslu slova) - žádný šmírák odposlouchávající data na cestě mezi mnou a Odorikem nemá (snad) šanci audio získat.

Ve wiresharku není vůbec nic k rozpoznání. Jelikož je kódována i komunikace SIP, tak wireshark o ní neví a tudíž i následný tok audia SRTP prezentuje jen jako UDP data.
Pozn.: nicméně si myslím, že by SRTP mohl rozpoznat jako ad 2, neboť snad i SRTP má svou strukturu shodnou s RTP - tedy že šifrován je jen payload RTP paketu, nikoli jeho hlavička, ne ?

Pokud k tomu má nějakou poznámku, budu rád. Nerad bych se totiž opájel pocitem falešného bezpečí.
Také dávám do pranice, zda by RTP proxy odoriku neměla (při volání do PSTN/GSM) reagovat na ZRTP Hello, resp. dle volby ho naopak sama posílat při příchodu hovoru z PSTN/GSM.

Zdravím.
alfi
Příspěvky: 718
Registrován: čtv 03. led 2013 15:31:10

Re: Šifrované hovory ZRTP a Odorik

Příspěvek od alfi »

Ono spíš záleží, co vás trápí - jestli riziko odposlouchávání (zajímají moje "kecy" náhodného posluchače na stejné wifi? - ten to kolikrát může slyšet i naživo u vedlejšího stolu někde v restauraci) a nebo zneužití přihlašovacích údajů = vyluxování kreditu, které bude pro toho náhodného posluchače rozhodně zajímavější. SIP heslo se sice neposílá v plaintextu, ale v jednoduchém vypočitatelném hashi, který se hrubou silou dneska dá s nějakým výpočetním výkonem hrubou silou rozlousknout (sipcrack, standardní výbava každé linuxové distribuce http://manpages.ubuntu.com/manpages/nat ... ack.1.html).

Tj. na cizích wifi doporučuju napřed hlídat SIP+TLS na signalizaci, až v druhém kroku potom i něco na audio. Mi bez problémů funguje CsipSimple na TLS i SRTP. Jen s TLS je potom třeba hlídat i správný certifikát na připojovaném serveru - postavit vlastní MITM taky není velký problém (https://www.google.com/search?q=ssl+mitm+proxy). To už ale CsipSimple zdá se neumí...

Když už je třeba poslat heslo bez šifrování (ne každý provider nabízí TLS), mělo by být dlouhé a generované, aby si posluchač to louskání řádně užil :-)
kapetr
Příspěvky: 224
Registrován: stř 12. říj 2011 7:14:21

Re: Šifrované hovory ZRTP a Odorik

Příspěvek od kapetr »

Mě trápil spíše nešifrovaný přenos audia. Dostal jsem se totiž do situace, kdy mi náhle z důvodu zatím nezjištěné nekompatibility přestal fungovat jeden internetbanking. A představa, že si na odposlouchávatelné lince vyměňuji s tel. bankéřem důvěrné údaje, mě animovala k vyššímu zájmu o tuto věc.

Riziko zcizení přihl. údajů k účtu Odoriku mě až tak netrápí, neboť nikdy neudržují kredit vyšší než 300,- Nicméně děkuji za zajímavou informaci o reálné možnosti prolomení hashe hrubou silou.

Ohledně kontroly certifikátu se musím teprve polepšit - napoprvé mi totiž SIPS+SRTP nefungoval vůbec (registration timeout), takže jsem dokonce zakázal jakékoli kontroly. Pak to (bez mého přičinění) samo od sebe začalo fungovat (?!), takže již mám prostor o doladění zabezpečení.

Ještě jsem zvědav na nastavení vynucení šifrovaného spojení pro příchozí hovory, ale to musím nejdříve zprovoznit příchozí hovory jako takové. S panem Soukupem jsme totiž narazili na to, že můj klient (SFLPhone) začal z nenadání nepřijímat hovory - nereaguje na INVITE.

Aneb - vždy se po.... více věcí najednou, aby se problémy hledaly řešily co nejhůře. Tedy alespoň u mě je to žel standard!

Děkuji a zdravím.

EDIT: mám problém s nastavením certifikátu Odoriku pro TLS (SFLPhone klient):

- certifikát Odoriku jsem našel jednak zde: http://www.odorik.cz/w/srtp a jednak jsem ho získal takto:

Kód: Vybrat vše

openssl s_client -connect sip.odorik.cz:5061
Jejich porovnáním je však patrno, že se liší.

Kód: Vybrat vše

openssl x509 -nameopt "multiline,-esc_msb,utf8 -in /tmp/odorik_ca1.pem  -noout -text
Který je ten správný ?

- hlavně však nevím, jak a kam ho zadat, aby můj klient ověřil pravost protistrany (tedy Odorika). Viz obrázek v příloze.
Ten první (nejspíš špatný) certifikát jsem zadal jednou jako "Certificate of authority list" a podruhé jako "Public certificate endpoint file". Ať byla zadán tak nebo tak nebo vůbec, vždy registrace i hovor proběhl bez jakýchkoli hlášek či varování, ačkoli myslím neměly proběhnout ani jedinkrát.

Nějaký nápad ?
Přílohy
SFLP-TLS.png
SFLP-TLS.png (77.69 KiB) Zobrazeno 9611 x
alfi
Příspěvky: 718
Registrován: čtv 03. led 2013 15:31:10

Re: Šifrované hovory ZRTP a Odorik

Příspěvek od alfi »

Pravda, nešifrované audio se na volání do banky moc nehodí (ale už si ani nevzpomínám, kdy jsem do banky potřeboval telefonovat).

Certifikát na webu je dle popisu "certifikační autorita", klíč na serveru je tou CA potom podepsaný - viz taky detail toho openssl a "certificate chain":

Kód: Vybrat vše

depth=0 /C=CZ/ST=czech/L=brno/O=odorik.cz/OU=odorik.cz/CN=odorik.cz
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=CZ/ST=czech/L=brno/O=odorik.cz/OU=odorik.cz/CN=odorik.cz
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=CZ/ST=czech/L=brno/O=odorik.cz/OU=odorik.cz/CN=odorik.cz
   i:/C=CZ/ST=czech/L=brno/O=odorik.cz/OU=odorik.cz/CN=odorik.cz
---
Trochu zvláštní/matoucí je to, že oba mají stejné common name, obvykle ta autorita má v CN, že je autoritou a nikoli doménové jméno :-)

Do klienta bych zkusil CA z webu jako "certificate of authority list" (v souboru jich může být i víc) a certifikát ze serveru jako "public endpoint", ale ty popisky taky nejsou úplně jednoznačné, tj. chovat se to může i jinak. Obvykle by mělo stačit zadat CA + common name v serverovém certifikátu = certifikát se potom může v čase měnit, dokud je podepsaný stále stejnou CA a se stejným jménem (např. v případě vyzrazení privátního klíče je třeba hned udělat nový a tisícům klientů se to těžko oznamuje předem)
Odpovědět