Nějak jsem nepochopil, proč
- si zařízení nemůže vygenerovat klíč samo a lokálně, nikam ho neposílat
- zprávy bufferovat u odesílatele
- po spojení zařízení se spárovat třeba pomocí D-H a vyměnit si zprávy a potvrzení
Role serveru by byla jenom v tom, že by zařízením sdělil, že je protistrana online a zprostředkoval výměnu. Bez znalosti klíčů by hack serveru provozovatele byl na úrovni MiTM, třeba ISP. A navíc má metadata o tom, kdo, kdy a s kým komunikoval, jak požaduje legislativa...
Zařízení si klíče samo vygeneruje, ale veřejný klíč je potřeba předat protistraně. A ta nemůže bez ručního ověření vědět, zda dostala skutečně veřejný klíč vygenerovaný kamarádem nebo jakýkoliv jiný. Ověření předání veřejného klíče je obecně problém asymetrické kryptografie a třeba na webu ho řeší certifikáty. Pokud uživatel přijme libovolný klíč, pak není odolný proti MitM útoku.
Naopak, jedina cesta, jak mit jistotu, ze jde o me klice, je si je vygenerovat sam. Jakym zpusobem se dostane verejny klic, kam ma, je vec druha. A nejbezpecnejsi bude, dojit tam pesky treba s flash klicenkou :) Pokud nekdo chce co nejvice bezpecnosti, neni lepsi cesty. Stejne tak, jako kdyz si treba firma udela vlastni certifikacni autoritu, sice neoverenou, ale vsem zamestancum ji rucne prida do pocitace. Neni nad duverovat ruznym komodam apod.
Pokial potrebujem taku uroven bezpecnosti, ze mam kluce prenasat osobne offline kanalom, nebudem spravy prenasat komunikatorom typu what's app.
Tiez mam vaznu pochybnost o tom, ci je sprava lokalnej CA-cky spravcom, ktory vacsinou nema absolutne ziadnu bezpecnostnu previerku + vo vacsine pripadov firma ani len nepreveri, ci ma cisty register, naozaj bezpecnejsia ako dovera v nahodnu CA s akym-takym trackom.
Ale tady jsou servery, změna klíče může proběhnout tak, že se ověří proti serveru:
1. Zařízení si vytvoří servisní klíč (SK), s pomocí kterýho komunikuje se serverem.
2. Zařízení pošle veřejný SK na server.
3. Uživatel schválí na základě otisku na webu, že jde o jeho SK.
-- Změna klíče --
4. zařízení vygeneruje komunikační klíč (KK)
5. Zařízení oznámí serveru, že má nový KK a pošle podepsaný veřejný KK
-- Komunikace --
6. Protistrana chce poslat zprávu. Zašifruje ji a odešle na server (přímo to bez IPv6 nejde).
7. Server informuje, že je nový klíč a zprostředkuje jejich výměnu.
8. Protistrana obdrží klíč, jako by se nechumelilo (klidně na každou komunikaci jiný)
9. Protistrana pošle zašifrovanou zprávu
Za pravost certu pak ručí server, ale nemá k dispozici ani jeden KK a nemůže dešifrovat jinou komunikaci, než s ním s pomocí SK. Slabina je pak ověření KK na serveru, ale neumožní to podstrčit klíč třetí strany.
Takže jediná možnost je krádež identity, ale potom uživatel vidí, že krom mobilu a tabletu je na seznamu třetí zařízení a že mu nechodí zprávy.