Signal protocol [1] A Formal Security Analysis of the Signal Messaging Protocol K.Cohn-Gordon, C. Cremers, B. Dowling, L. Garrant, D. Stebila November 2017
Signal protokol Signal aplikácia, Whatsapp, Facebook Messenger, Google Allo,... generovanie kľúča cez ratcheting asynchrónny prenos 03/12/2018 Signal protocol 2
Ciele protokolu end-to-end šifrovanie len priami účastníci komunikácie vidia dešifrované správy perfect forward secrecy únik dlhodobého kľúča neumožní odhalenie session kľúčov minulé správy sú chránené budúcim únikom kľúča future secrecy zotavenie sa z úniku kľúčov ku pasívnemu útočníkovi 03/12/2018 Signal protocol 3
Komponenty implementácie eliptické krivky pre X3DH: X25519 KDF: HMAC-SHA256 encrypt-then-mac: AES256 v CBC móde s PKCS#5 paddingom HMAC-SHA256 03/12/2018 Signal protocol 4
03/12/2018 Signal protocol 5
Asymetrické kľúče 03/12/2018 Signal protocol 6
Symetrické kľúče 03/12/2018 Signal protocol 7
Fázy protokolu 1. Registrácia 2. Nastavenie session 3. Komunikácia cez symetrickú západku 4. Aktualizácia asymetrickej západky 03/12/2018 Signal protocol 8
Registrácia 1. Generovanie súkromných DH kľúčov: dlhodobý kľúč identity ik strednodobý podpísaný predkľúč prek viacero krátkodobých jednorazových kľúčov eprek 2. Nahranie verejných kľúčov na server a podpisu prek s použitím ik 03/12/2018 Signal protocol 9
Nastavenie session Odosielateľ - Alica 1. získanie kľúčov od príjemcu 2. vygenerovanie vlastného krátkodobého kľúča ek A 3. násobenie kľúčov navzájom (nasl. slajd) 4. odvodenie koreňového kľúča rk a kľúča pre odosielaciu reťaz ck sym-ir 5. odvodenie kľúča pre západku rchk verejný krátkodobý kľúč epk A sa posiela so všetkými správami kým nie je nejaká správa prijatá 03/12/2018 Signal protocol 10
Nastavenie session Prijímateľ - Bob 1. overenie, či pozná súkromné kľúče ku verejným kľúčom použitými Alicou 2. odvodenie rovnakého koreňového kľúča a kľúča pre odosielaciu reťaz 3. odvodenie vlastného kľúča pre západku 03/12/2018 Signal protocol 11
Násobenie kľúčov 03/12/2018 Signal protocol 12
Nastavenie session 03/12/2018 Signal protocol 13
Komunikácia cez symetrickú západku 03/12/2018 Signal protocol 14
Komunikácia cez symetrickú západku 03/12/2018 Signal protocol 15
Komunikácia cez symetrickú západku Odoslanie novej správy z aktuálneho kľúča pre odosielaciu reťaz ck sa vygenerujú 2 nové kľúče: nový kľúč pre odosielaciu reťaz ck kľúč pre šifrovanie správy mk zašifrovanie odchádzajúcej správy vymazanie starého kľúča pre odosielaciu reťaz 03/12/2018 Signal protocol 16
Komunikácia cez symetrickú západku Dešifrovanie práve prijatej správy vykonanie aktualizácie asymetrickej západky (nasl. slajdy) určenie indexu správy v prijímacej reťazi a prináležiaci posun v reťazi odvodenie potrebného kľúča pre prijatú správu Alicin prijímací mk je rovný Bobovmu odosielaciemu mk 03/12/2018 Signal protocol 17
Aktualizácia asymetrickej západky 03/12/2018 Signal protocol 18
Aktualizácia asymetrickej západky 1. odvodenie nových kľúčov pre prijímaciu reťaz a prijímané správy vyrátanie prvého DH zdieľaného tajomstva (medzi prijatým západkovým kľúčom od Boba a jej starým súkromným západkovým kľúčom) kombinácia s koreňovým kľúčom 2. odvodenie nových kľúčov pre odosielaciu reťaz a odosielané správy, a koreňového kľúča pre nasledujúcu fázu vyrátanie druhého DH zdieľaného tajomstva (medzi prijatým západkovým kľúčom od Boba a jej novým súkromným západkovým kľúčom) kombinácia s koreňovým kľúčom a prvým DH zdieľaným tajomstvom 3. Pošle nový západkový verejný kľúč Bobovi 03/12/2018 Signal protocol 20
Bezpečnostný model Správnosť rozličné výmeny kľúčov odvodia rozličné kľúče Tajomstvo Kľúč poznajú len účastníci, ktorí sa zúčastnili jeho generovania Implicitná autentifikácia Forward secrecy Minulé správy sú ochránené pred budúcim únikom kľúča Skrytie identity Identity partnerov sú skryté pred pasívnym útočníkom 03/12/2018 Signal protocol 21