The Double Ratchet Algorithm ( tidigare Axolotl Ratchet [1] [2] ) är en nyckelhanteringsalgoritm som utvecklades av Trevor Perrin och Moxie Marlinspike 2013 . Denna algoritm kan användas som en del av ett kryptografiskt protokoll för att tillhandahålla end-to-end-kryptering för snabbmeddelanden. Efter det första nyckelutbytet hanterar den den pågående förnyelsen och underhållet av korta sessionsnycklar. Den kombinerar en kryptografisk ratchet baserad på Diffie-Hellman nyckelutbyte och en ratchet baserad på en nyckelhärledningsfunktion , som till exempel en hashfunktion . Algoritmen är alltså en dubbel spärrmekanism, vilket återspeglas i dess namn.
Utvecklarna beskriver algoritmen som självläkande eftersom den under vissa förhållanden hindrar en angripare från att komma åt meddelandets klartext efter att sessionsnyckeln har äventyrats [3] . Detta villkor är att det mellan nyckelns kompromiss och meddelandet i fråga fanns minst ett meddelande som inte manipulerades av angriparen. Detta tvingar effektivt angriparen att avlyssna all kommunikation mellan ärliga parter, eftersom han förlorar åtkomst så snart ett kompromisslöst meddelande skickas mellan dem. Denna funktion kallades senare Future Secrecy , eller Post-Compromise Security [ 4] .
Denna algoritm används av två parter för att utbyta krypterade meddelanden baserat på en delad hemlig nyckel. Vanligtvis använder parterna det initiala avtalsprotokollet Extended Triple Diffie-Hellman (X3DH) [5] , där ett trippelnyckelutbyte sker för att komma överens om en delad hemlighet. Deltagarna i anslutningen kommer sedan att använda Double Ratchet för att skicka och ta emot krypterade meddelanden. Med varje Double Ratchet-meddelande måste parterna skaffa nya nycklar för varje Double Ratchet-meddelande så att tidigare nycklar inte kan beräknas från senare. Deltagarna i kopplingen skickar också generiska Diffie-Hellman-värden bifogade till sina meddelanden. Resultaten av Diffie-Hellman-beräkningar blandas med härledda nycklar så att senare nycklar inte kan beräknas från tidigare. Dessa egenskaper ger visst skydd åt krypterade meddelanden som kommer före eller efter attacken, i fall partens nycklar äventyras [6] .
Algoritmen med dubbla spärrar utvecklades 2013 av Trevor Perrin och Moxie Marlinspike, grundare av den icke-vinstdrivande open source-mjukvaruorganisationen Open Whisper Systems . Målet med denna organisation är att utveckla en lättanvänd uppsättning mobilapplikationer för säker kommunikation [7] . Organisationen grundades 2013 och består av en liten grupp utvecklare finansierade av donationer och bidrag, samt en stor gemenskap av frivilliga utvecklare. I februari 2014 presenterade Trevor Perrin och Moxie Marlinspike algoritmen som en del av Signal Protocol . Konceptet med dubbelspärralgoritmen är baserat på Diffie-Hellman-spärrmekanismen, som introducerades av det kryptografiska protokollet för snabbmeddelanden ( Off-The-Record Messaging (OTR)) och kombinerar det med en spärrmekanism med symmetrisk nyckel modellerad efter snabbmeddelandeprotokoll - Silent Circle Instant Messaging Protocol (SCIMP). Spärrhatten var ursprungligen uppkallad efter det utrotningshotade djuret, axolotlen, som har exceptionella självläkande egenskaper. I mars 2016 döpte utvecklare om Axolotl Ratchet till Double Ratchet Algorithm för att bättre kunna skilja mellan ratchet och fullt protokoll [2] , eftersom vissa använde namnet Axolotl för att referera till signaleringsprotokollet [8] [2] .
Den dubbla spärralgoritmen har funktioner som har varit allmänt tillgängliga i end-to-end-krypteringssystem under lång tid: kryptering av innehåll längs hela transportvägen, samt autentisering av fjärrvärden och skydd mot meddelandemanipulation. Som en hybrid av Diffie-Hellman spärrhake och nyckelgenerering, kombinerar den flera önskvärda egenskaper hos båda principerna. Från OTR-meddelanden tar den egenskaperna för vidarebefordran av sekretess och återställer automatiskt sekretessen i händelse av en komprometterad sessionsnyckel, skickar konfidentiell information med knäckt hemlig permanent huvudnyckel och rimlig förnekelse av meddelanden. Dessutom tillåter det att sessionsnycklar uppdateras utan att interagera med en fjärrvärd med hjälp av sekundära ratchets baserade på nyckelhärledningsfunktionen. Ett ytterligare nyckelgenereringssteg tillämpas för att tillåta sessionsnycklar att behållas för meddelanden som inte fungerar utan att kompromissa med efterföljande nycklar för att upptäcka omordning, radering och återsändning av skickade meddelanden och förbättra konfidentialitetsegenskaper jämfört med OTR-meddelanden.
I kombination med en offentlig nyckelinfrastruktur för lagring av förgenererade engångsnycklar (förnycklar), låter den dig initiera meddelandesessioner utan närvaro av en fjärrvärd (asynkron kommunikation). Att använda Triple Diffie-Hellman Key Exchange (X3DH) som den initiala nyckelutbytesmetoden förbättrar negationsegenskaperna. Ett exempel på detta är ett signaleringsprotokoll som kombinerar en dubbelspärralgoritm, förnycklar och ett initialt nyckelutbyte med hjälp av trippel Diffie-Hellman nyckelutbyte [9] . Protokollet tillhandahåller konfidentialitet, integritet, autentisering, deltagarkonsistens, adressatens validering, vidarebefordran av konfidentialitet, framtida sekretess (även känd som framtidssekretess), kausalitet, meddelande otillåtlighet, meddelandeavvisande, icke-deltagande och asynkroni [9] . Det ger inte anonymitet och kräver att servrar vidarebefordrar meddelanden och lagrar material för publika nyckel [9] .
Klienten uppdaterar sessionsnyckeln när den kommunicerar med fjärrvärden med hjälp av en Diffie-Hellman-spärr när det är möjligt, annars självständigt med en hash-spärr. Därför, med varje meddelande, trycker en klient som använder en dubbelspärr en av två hash-spärrar (en att skicka, en att ta emot) som tar en delad nyckel från Diffie-Hellman-spärren. Samtidigt försöker den alla möjligheter att förse fjärrnoden med ett nytt offentligt Diffie-Hellman-värde och avancera Diffie-Hellman-spärren när ett nytt Diffie-Hellman-värde kommer från fjärrnoden. När en ny delad nyckel har etablerats, initieras en ny hash-spärr.
Som kryptografiska primitiver använder dubbelspärralgoritmen:
för Diffie-Hellman spärrhake
för meddelandeautentiseringskoder ( MAC , autentisering)
för symmetrisk kryptering
för hash-baserad spärr
I vissa fall kan det vara önskvärt att kryptera rubrikerna så att en avlyssnare inte kan avgöra vilka meddelanden som hör till vilka sessioner eller vilken ordning meddelandena är i en session. Vid kryptering av en rubrik lagrar varje sida den symmetriska huvudnyckeln och nästa huvudnyckel för både sändning och mottagning. Sändningshuvudnyckeln används för att kryptera rubrikerna för den aktuella sändningskedjan. När ett meddelande kommer till mottagaren måste det först associera meddelandet med lämplig Double Ratchet-session om det finns andra sessioner med andra parter utöver den sessionen. När mottagaren väl har associerat ett meddelande med en session, försöker den att dekryptera rubriken med användning av den mottagande sessionens huvudnyckel, nästa huvudnyckel och alla andra huvudnycklar som motsvarar de missade meddelandena. Framgångsrik dekryptering med följande huvudnyckel indikerar att mottagaren ska utföra Diffie-Hellman-spärrsteget. Under Diffie-Hellman ratchet-steget ersätter nästa header-nycklar de nuvarande header-nycklarna, och de nya nästa header-nycklarna tas emot som ytterligare utdatavariabler från root-hash.
Följande är en lista över applikationer som använder dubbelspärralgoritmen eller en anpassad implementering:
ChatSecure konverteringar Cryptocat facebook messenger G Data Säker Chat Gajim Google Allo Hamn Damm Upplopp Signal tyst telefon Skype Viber whatsapp TrådProgramvara för kryptering | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
E-postklienter |
| ||||||||||||||
Säker kommunikation |
| ||||||||||||||
Diskkryptering ( jämförelse ) |
| ||||||||||||||
Anonymitet |
| ||||||||||||||
Filsystem ( Lista ) | |||||||||||||||
säkerhetsfokuserat operativsystem | |||||||||||||||
Tjänsteleverantörer |
| ||||||||||||||
Pedagogisk | |||||||||||||||
Relaterade ämnen |
| ||||||||||||||
|