Dvojitý ráčnový algoritmus

Double Ratchet Algorithm ( dříve Axolotl Ratchet [ 1] [2] ) je klíčový manažerský algoritmus vyvinutý Trevorem Perrinem a Moxie Marlinspike v roce 2013 . Tento algoritmus lze použít jako součást kryptografického protokolu k zajištění end-to-end šifrování pro instant messaging. Po úvodní výměně klíčů spravuje průběžnou obnovu a údržbu krátkých klíčů relace. Kombinuje kryptografickou ráčnu založenou na výměně klíčů Diffie-Hellman a ráčnu založenou na funkci odvození klíče., jako je například hashovací funkce . Algoritmus je tedy dvojitý rohatkový mechanismus, což se odráží v jeho názvu.

Vývojáři popisují algoritmus jako samoopravný, protože za určitých podmínek znemožní útočníkovi přístup k otevřenému textu zprávy poté, co je kompromitován klíč relace [3] . Touto podmínkou je, že mezi kompromitací klíče a dotyčnou zprávou byla alespoň jedna zpráva, se kterou útočník nemanipuloval. To účinně nutí útočníka zachytit veškerou komunikaci mezi čestnými stranami, protože ztratí přístup, jakmile je mezi nimi odeslána jedna nekompromisní zpráva. Tato funkce byla později nazvána Future Secrecy nebo Post-Compromise Security [ 4] .

Úvod

Tento algoritmus používají dvě strany k výměně šifrovaných zpráv na základě sdíleného tajného klíče. Strany obvykle používají protokol počáteční dohody Extended Triple Diffie-Hellman (X3DH) [5] , ve kterém dochází k výměně trojitého klíče za účelem dohody o sdíleném tajemství. Účastníci spojení pak budou používat Double Ratchet k odesílání a přijímání šifrovaných zpráv. S každou zprávou Double Ratchet musí strany získat nové klíče pro každou zprávu Double Ratchet, aby nebylo možné vypočítat dřívější klíče z pozdějších. Účastníci spojení také posílají obecné hodnoty Diffie-Hellman připojené k jejich zprávám. Výsledky výpočtů Diffie-Hellman jsou smíchány s odvozenými klíči, takže pozdější klíče nelze vypočítat z dřívějších. Tyto vlastnosti poskytují určitou ochranu šifrovaným zprávám, které dorazí před útokem nebo po něm, pro případ, že by byly kompromitovány klíče strany [6] .

Origins

Algoritmus dvojité ráčny byl vyvinut v roce 2013 Trevorem Perrinem a Moxiem Marlinspikem, zakladatelem neziskové open source softwarové organizace Open Whisper Systems . Cílem této organizace je vyvinout snadno použitelnou sadu mobilních aplikací pro bezpečnou komunikaci [7] . Organizace byla založena v roce 2013 a skládá se z malé skupiny vývojářů financovaných z darů a grantů a také z velké komunity dobrovolných vývojářů. V únoru 2014 Trevor Perrin a Moxie Marlinspike představili algoritmus jako součást Signal Protocol . Koncepce algoritmu dvojité ráčny je založena na ráčně Diffie-Hellman, která byla zavedena kryptografickým protokolem pro rychlé zasílání zpráv ( Off-The-Record Messaging (OTR)) a kombinuje jej s ráčnovým mechanismem se symetrickým klíčem po vzoru protokol pro rychlé zasílání zpráv - Silent Circle Instant Messaging Protocol (SCIMP). Ráčna byla původně pojmenována po ohroženém zvířeti, axolotlovi, který má výjimečné samoléčebné schopnosti. V březnu 2016 vývojáři přejmenovali Axolotl Ratchet na Double Ratchet Algorithm, aby lépe rozlišili mezi ratchet a plným protokolem [2] , protože někteří používali název Axolotl pro označení signalizačního protokolu [8] [2] .

Vlastnosti

Algoritmus dvojité ráčny má funkce, které jsou již dlouhou dobu široce dostupné v end-to-end šifrovacích systémech: šifrování obsahu podél celé přenosové cesty, stejně jako autentizace vzdáleného hostitele a ochrana proti manipulaci se zprávami. Jako hybrid ráčny Diffie-Hellman a generace klíčů kombinuje několik žádoucích vlastností obou principů. Z OTR zpráv přebírá vlastnosti dopředného utajení a automaticky obnovuje utajení v případě kompromitovaného klíče relace, odesílá důvěrné informace s prolomeným tajným trvalým hlavním klíčem a hodnověrnou popřením zpráv. Kromě toho umožňuje aktualizaci klíčů relace bez interakce se vzdáleným hostitelem pomocí sekundárních ratchet založených na funkci odvození klíče. Je použit další krok generování klíče, aby bylo možné uchovat klíče relace pro zprávy mimo pořadí, aniž by došlo k ohrožení následných klíčů pro detekci změny pořadí, mazání a opětovného přenosu odeslaných zpráv a zlepšení vlastností důvěrnosti ve srovnání se zprávami OTR.

V kombinaci s infrastrukturou veřejných klíčů pro ukládání předem vygenerovaných jednorázových klíčů (prekeys) umožňuje inicializovat relace zasílání zpráv bez přítomnosti vzdáleného hostitele (asynchronní komunikace). Použití Triple Diffie-Hellman Key Exchange (X3DH) jako počáteční metody výměny klíčů zlepšuje vlastnosti negace. Příkladem toho je signalizační protokol, který kombinuje algoritmus dvojité ráčny, předběžné klíče a počáteční výměnu klíčů pomocí trojité výměny klíčů Diffie-Hellman [9] . Protokol poskytuje důvěrnost, integritu, autentizaci, konzistenci účastníka, ověření adresáta, dopřednou důvěrnost, budoucí utajení (také známé jako budoucí utajení), kauzalitu, nepřípustnost zprávy, odmítnutí zprávy, neúčast a asynchronnost [9] . Neposkytuje anonymitu a vyžaduje, aby servery předávaly zprávy a ukládaly materiály veřejného klíče [9] .

Schéma provozu

Klient aktualizuje klíč relace při komunikaci se vzdáleným hostitelem pomocí Diffie-Hellman ratchet, pokud je to možné, jinak nezávisle pomocí hash ratchet. Proto s každou zprávou klient používající dvojitou ráčnu vloží jeden ze dvou hash ratch (jeden k odeslání, jeden k přijetí), které převezmou sdílený klíč z ráčny Diffie-Hellman. Zároveň zkouší každou příležitost poskytnout vzdálenému uzlu novou veřejnou hodnotu Diffie-Hellman a posunout ráčnu Diffie-Hellman, kdykoli ze vzdáleného uzlu dorazí nová hodnota Diffie-Hellman. Jakmile je vytvořen nový sdílený klíč, inicializuje se nový hash ratchet.

Jako kryptografická primitiva používá algoritmus dvojité rohatky:

pro ráčnu Diffie-Hellman

pro ověřovací kódy zpráv ( MAC , autentizace)

pro symetrické šifrování

pro ráčnu na bázi hash

Double Ratchet Header Encryption

V některých případech může být žádoucí zašifrovat hlavičky, aby odposlech nemohl určit, které zprávy patří ke kterým relacím nebo v jakém pořadí jsou zprávy v relaci. Při šifrování hlavičky každá strana ukládá klíč symetrické hlavičky a klíč další hlavičky pro odesílání i přijímání. Klíč odesílající hlavičky se používá k šifrování hlaviček pro aktuální řetězec odesílání. Když zpráva dorazí k příjemci, musí ji nejprve přiřadit k příslušné relaci Double Ratchet, pokud kromě této relace existují další relace s jinými stranami. Jakmile příjemce přiřadí zprávu k relaci, pokusí se dešifrovat hlavičku pomocí klíče hlavičky přijímající relace, klíče další hlavičky a jakýchkoli dalších klíčů hlavičky odpovídajících zmeškaným zprávám. Úspěšné dešifrování pomocí následujícího klíče hlavičky znamená, že příjemce by měl provést krok Diffie-Hellman ratchet. Během ráčnového kroku Diffie-Hellman nahradí klíče další hlavičky aktuální klíče hlavičky a nové klíče další hlavičky se přijmou jako další výstupní proměnné z kořenového hashe.

Seznam aplikací

Následuje seznam aplikací používajících algoritmus dvojité západky nebo vlastní implementaci:

ChatSecure konverze Kryptocat facebookový messenger G Data Secure Chat Gajim Google Allo Útočiště Rybník Nepokoje signál tichý telefon Skype Viber Whatsapp Drát

Poznámky

  1. Perrin, Trevor. "Porovnat revize", GitHub (30. března 2016). Získáno 7. prosince 2018. Archivováno z originálu 7. května 2017.
  2. 1 2 3 Marlinspike, Moxie. „Signál navenek, Signál zevnitř“ (30. března 2016). Získáno 7. prosince 2018. Archivováno z originálu 15. listopadu 2018.
  3. Marlinspike, Moxie. „Pokročilá kryptografická ráčna“ (26. listopadu 2013). Získáno 7. prosince 2018. Archivováno z originálu dne 7. srpna 2019.
  4. Katriel Cohn-Gordon; Cas Cremers; Luke Garratt. „O bezpečnosti po kompromitaci“ (11. srpna 2016). Datum přístupu: 7. prosince 2018. Archivováno z originálu 7. června 2018.
  5. Trevor Perrin (redaktor), Moxie Marlinspike. „Protokol X3DH Key Agreement“ (4. listopadu 2016). Získáno 7. prosince 2018. Archivováno z originálu dne 23. listopadu 2020.
  6. Trevor Perrin (redaktor), Moxie Marlinspike. "Algoritmus dvojité ráčny" (20. listopadu 2016). Získáno 7. prosince 2018. Archivováno z originálu dne 21. srpna 2019.
  7. whispersystems.org. Otevřít Whisper Systems >> Domů . Staženo 7. prosince 2018. Archivováno z originálu 9. prosince 2018.
  8. Katriel Cohn-Gordon , Cas Cremers, Benjamin Dowling, Luke Garratt, Douglas Stebila. „Formální bezpečnostní analýza protokolu Signal Messaging Protocol“ (listopad 2017). Datum přístupu: 7. prosince 2018. Archivováno z originálu 22. února 2017.
  9. 1 2 3 Nik Unger , Sergej Dechand Joseph Bonneau, Sascha Fahl, Henning Perl Ian Goldberg, Matthew Smith. "SoK: Secure Messaging" (2015). Získáno 7. prosince 2018. Archivováno z originálu 1. listopadu 2020.
  10. Tilman Frosch , Christian Mainka, Christoph Bader, Florian Bergsma, Jorg Schwenk, Thorsten Holz. "Jak bezpečný je TextSecure?" (2014). Získáno 7. prosince 2018. Archivováno z originálu dne 28. února 2019.