Takze ubehlo dalsich par tydnu a jsme zase o neco blize dokonalemu komunikatoru pro siroke masy.
Moxie Marlinspike, autor sifrovaneho komunikatoru Signal a jeho tym u
Open Whisper Systems se pochlapili a odstranili problem zvany "server-side-metadata-leak", a to zpusobem o kterem Matthew Green, cryptograf z Hopkins University jez napr. inicializoval security audit TrueCryptu prohlasil, ze bude znamenat prulom v messagingu.
O co jde?
Signal protocol odjakziva byl P2P s defaultnim varovanim uzivatelu pokud dojde ke zmene klice jez obe strany pouzivaji/overily pro vzajemnou komunikaci (na rozdil od Fejsbukvicoveho WhatsApp vychazejiciho ze stejneho protocolu)
Signalizacni server ktery "dava obe strany dohromady" nema tedy zadnou moznost nahlizet do komunikace.
Jeho slabinou vsak je ze pokud by se utocnik dostal primo na server, je/bylo mozne odchytit metadata, a z nich si udelat predstavu o tom "jake tlf cislo v systemu je, pripadne koho ma klient v seznamu kontaktu", coz casto muze byt pro utocnika cennejsi nez samotny obsah hovoru.
viz.
https://arstechnica.com/tech-policy/2016/10/fbi-demands-signal-user-data-but-theres-not-much-to-hand-over/A jak jiz dlouho tvrdi Julian Assange: Data ktera nemate, nemuzete (vlade) vydat.
Jak tedy zatajit pred serverem "kdo se s kym zna"??
V principu se to da resit trivialne tak, ze koncovy klient zaHASHuje seznam svych tlf cisel a posle je na centralni server ktery ma uplny seznam hashu tlf cisel VSECH ucastniku v systemu.
Server nasledne porovna prichozi hashe s temi co sam zna + oTAGuje ty ktere jsou na obou seznamech shodne alias pouzivaji tedy Signal protocol a vysledek odesle zpet klientovi.
Ten si podle toho upravi ikonky u svych kontaktu.
Problem tohoto reseni vsak spociva v male entropii telefonnich cisel, obzvlaste v dnesni dobe pokrocileho hashovani pro Bitcoin na specialnich HW..........
Je tedy pomerne snadne pred-hashovat si veskera potencialni tlf cisla a vyrobit si tak znamou "rainbow table" ktera pri vlozeni hashe vyplivne rovnou spravnou tlf kombinaci.
Moxie se tedy rozhodl vyuzit ficury zvane
Intel SGX (ARM ma obdobny koncept pod nazvem
TrustZone ,
kterou obsahuji CPU od verze Intel Skylake a mladsi, a ktera umoznuje vytvorit tzv. security enclave coz je jakysi zabezpeceny kontejner se zajimavymi vlastnostmi:
Je uvnitr sifrovany a zvenku do nej tudiz nelze nahhlizet.
Zvenku ale je mozne na dalku overit integritu kontejneru na serveru a to drive nez do nej zacne napr.klient sypat citliva data.
Puvodne tato ficura byla vymyslena pro DRM, safe skladovani RSA sifrovacich klicu apod, a ikdyz neni velka, pouhych 128MB, Marlinspike & Co. tvrdi ze je pro Signal dostatecna a umoznuje skalovani az do 1 miliardy uzivatelu.
Jak to cele tedy funguje?
Klient zhashuje vsechna tlf cisla jez ma ve svem lokalnim seznamu, cele to zasifruje verejnym klicem serveru a tento blob odesle na server do SGX kontejneru.
Tam se obsah rozsifruje, hashe se porovnaji s megaseznamem hashu veskerych kontaktu v Signal-systemu, nasledne se oTAGuji ty shodne, vysledek se zasifruje verejnym klicem klienta a blob se odesle zpet.
Klient rozsifruje, provede porovnani + odznaceni "Signalistu" ve svem seznamu a je hotovo.
Vzhledem k tomu ze existuje znamy
cache-DRAM-side-channel-attack na SGX ktery Moxie Marlinspike jako hacker samozrejme zna, bylo rovnejz nutne rozhodit "timing" pri zpracovani instrukci v RAMce, coz se povedlo.
Takze pokud Intel nema ve svych cipech
dalsi a
dalsi backdoory, zda se ze se nam rysuje dobre komunikacni reseni pro siroke masy odolne proti plosnemu fizlovani.
PS: Pokud nekdo preferuje datlovani zprav na PC radeji nez na founu, doporucuju plugin pro Chromium se kterym se Signal appka na mobilu sparuje a dokud fungujou data na founu veskera komunikace se replikuje i na PC vcetne video/audio/picture/pdf priloh.
Sam to delsi dobu pouzivam a funguje to OK, ovsem pozor na soukromi, protoze po zapnuti PC se i stare zpravy posilane mezi mobily "updatuji"/sesynchronizuji aka presypou do PC kde si je kdokoliv kdo ma pristup k PC muze precist...... A jsou to veskere zpravy mezi veskerymi vasimi Signal kontakty(!)