Double Ratchet Algorithm ( aiemmin Axolotl Ratchet [1] [2] ) on Trevor Perrinin ja Moxie Marlinspiken vuonna 2013 kehittämä avainten hallintaalgoritmi . Tätä algoritmia voidaan käyttää osana kryptografista protokollaa päästä päähän -salauksen tarjoamiseen pikaviestinnässä. Alkuperäisen avaintenvaihdon jälkeen se hoitaa lyhyiden istuntoavainten jatkuvan uusimisen ja ylläpidon. Siinä yhdistyvät Diffie-Hellman- avainten vaihtoon perustuva salausräikkä ja avaimen johtamistoimintoon perustuva räikkä ., kuten esimerkiksi hash-funktio . Siten algoritmi on kaksoisräikkämekanismi, mikä näkyy sen nimessä.
Kehittäjät kuvailevat algoritmia itsekorjaavaksi, koska se tietyissä olosuhteissa estää hyökkääjää pääsemästä viestin selkeään tekstiin sen jälkeen, kun istuntoavain on vaarantunut [3] . Tämä ehto on, että avaimen vaarantumisen ja kyseisen viestin välillä oli ainakin yksi viesti, jota hyökkääjä ei ole peukaloinut. Tämä pakottaa hyökkääjän tehokkaasti sieppaamaan kaiken rehellisten osapuolten välisen viestinnän, koska hän menettää pääsyn heti, kun heidän välillään lähetetään yksi tinkimätön viesti. Tätä ominaisuutta kutsuttiin myöhemmin Future Secrecy tai Post-Compromise Security [ 4] .
Kaksi osapuolta käyttävät tätä algoritmia salattujen viestien vaihtamiseen jaetun salaisen avaimen perusteella. Tyypillisesti osapuolet käyttävät Extended Triple Diffie-Hellman (X3DH) [5] alkuperäistä sopimusprotokollaa , jossa tapahtuu kolminkertaisen avaimen vaihto yhteisestä salaisuudesta sopiakseen. Yhteyden osallistujat käyttävät sitten Double Ratchetiä salattujen viestien lähettämiseen ja vastaanottamiseen. Jokaisen Double Ratchet -sanoman yhteydessä osapuolten on hankittava uudet avaimet jokaiselle Double Ratchet -sanomille, jotta aikaisempia avaimia ei voida laskea myöhemmistä. Yhteyden osallistujat lähettävät myös yleisiä Diffie-Hellman-arvoja viesteihinsä. Diffie-Hellmanin laskelmien tulokset sekoitetaan johdettuihin avaimiin, jotta myöhempiä avaimia ei voida laskea aiemmista avaimista. Nämä ominaisuudet antavat jonkin verran suojaa salatuille viesteille, jotka saapuvat ennen hyökkäystä tai sen jälkeen, mikäli osapuolen avaimet vaarantuvat [6] .
Kaksoisräikkäalgoritmin kehittivät vuonna 2013 Trevor Perrin ja Moxie Marlinspike, voittoa tavoittelemattoman avoimen lähdekoodin ohjelmistoorganisaation Open Whisper Systems perustaja . Tämän organisaation tavoitteena on kehittää helppokäyttöinen mobiilisovellussarja turvalliseen viestintään [7] . Organisaatio on perustettu vuonna 2013 ja se koostuu pienestä ryhmästä lahjoituksin ja apurahoilla rahoitettuja kehittäjiä sekä laajasta vapaaehtoisten kehittäjien yhteisöstä. Helmikuussa 2014 Trevor Perrin ja Moxie Marlinspike esittelivät algoritmin osana Signal Protocol -protokollaa . Kaksoisräikkäalgoritmin konsepti perustuu Diffie-Hellmanin räikkämekanismiin, joka otettiin käyttöön pikaviestinnän salausprotokollalla ( Off-The-Record Messaging (OTR)) ja joka yhdistää sen symmetrisen avaimen räikkämekanismin kanssa, joka on mallinnettu pikaviestintäprotokolla - Silent Circle Instant Messaging Protocol (SCIMP). Räikkä on alun perin nimetty uhanalaisen eläimen, aksolotlin, mukaan, jolla on poikkeukselliset itseparantumisominaisuudet. Maaliskuussa 2016 kehittäjät nimesivät Axolotl Ratchetin uudelleen Double Ratchet Algorithm -algoritmiksi erottaakseen paremmin räikkä- ja täyden protokollan [2] , koska jotkut käyttivät Axolotl-nimeä viittaamaan signalointiprotokollaan [8] [2] .
Kaksoisräikkäalgoritmissa on ominaisuuksia, jotka ovat olleet laajasti saatavilla päästä päähän -salausjärjestelmissä jo pitkään: sisällön salaus koko siirtotien varrella sekä etäisännän todennus ja suojaus viestien manipulointia vastaan. Diffie-Hellman-räikän ja avaimen sukupolven hybridinä se yhdistää useita molempien periaatteiden toivottavia ominaisuuksia. OTR-viestinnästä se ottaa välityssalaisuuden ominaisuudet ja palauttaa automaattisesti salaisuuden vaarantuneen istuntoavaimen sattuessa, lähettää luottamuksellisia tietoja murretulla salaisella pysyvällä pääavaimella ja uskottavalla viestien kiellolla. Lisäksi se mahdollistaa istuntoavainten päivittämisen ilman vuorovaikutusta etäisännän kanssa käyttämällä avaimen johtamistoimintoon perustuvia toissijaisia räikkäsäteitä. Ylimääräistä avainten luontivaihetta käytetään sallimaan istuntoavainten säilyttäminen epäjärjestyksessä oleville viesteille vaarantamatta myöhempiä avaimia, jotta voidaan havaita lähetettyjen viestien uudelleenjärjestäminen, poistaminen ja uudelleenlähetys ja parantaa luottamuksellisuusominaisuuksia OTR-sanomiin verrattuna.
Yhdessä julkisen avaimen infrastruktuurin kanssa ennalta luotujen kertaluontoisten avainten (esiavainten) tallentamiseen, sen avulla voit alustaa viestintäistuntoja ilman etäisännän läsnäoloa (asynkroninen viestintä). Triple Diffie-Hellman Key Exchangen (X3DH) käyttäminen alkuperäisenä avaimenvaihtomenetelmänä parantaa negaatio-ominaisuuksia. Esimerkki tästä on signalointiprotokolla, joka yhdistää kaksoisräikkäalgoritmin, esiavaimet ja alkuperäisen avaimenvaihdon käyttämällä kolminkertaista Diffie-Hellman-avaimenvaihtoa [9] . Protokolla tarjoaa luottamuksellisuuden, eheyden, autentikoinnin, osallistujien johdonmukaisuuden, vastaanottajan vahvistuksen, edelleen luottamuksellisuuden, tulevaisuuden salaisuuden (tunnetaan myös nimellä tulevaisuuden salassapito), syy-seuraussuhteen, viestin hyväksyttävyyden, viestin hylkäämisen, osallistumatta jättämisen ja asynkronisuuden [9] . Se ei tarjoa nimettömyyttä ja vaatii palvelimia välittämään viestejä ja tallentamaan julkisen avaimen materiaalia [9] .
Asiakas päivittää istuntoavaimen kommunikoidessaan etäisännän kanssa käyttämällä Diffie-Hellman-räikkää, kun mahdollista, muutoin itsenäisesti käyttämällä hash-räikkää. Siksi jokaisessa viestissä kaksoisräikkää käyttävä asiakas työntää toista kahdesta tiivisteratchista (yksi lähettääkseen ja toisen vastaanottamiseen), jotka ottavat jaetun avaimen Diffie-Hellman-räikkäästä. Samaan aikaan se yrittää kaikki mahdollisuudet tarjota etäsolmulle uusi julkinen Diffie-Hellman-arvo ja edistää Diffie-Hellman-räikkää aina, kun uusi Diffie-Hellman-arvo saapuu etäsolmusta. Kun uusi jaettu avain on luotu, uusi hash-räikkä alustetaan.
Kaksinkertainen räikkäalgoritmi käyttää kryptografisina primitiivinä:
joukkueelle Diffie-Hellman ratchet
viestien todennuskoodeille ( MAC , todennus)
symmetriseen salaukseen
hash-pohjaiselle räikkälle
Joissakin tapauksissa voi olla toivottavaa salata otsikot, jotta salakuuntelija ei voi määrittää, mitkä viestit kuuluvat mihinkin istuntoon tai missä järjestyksessä viestit istunnossa ovat. Kun otsikkoa salataan, kumpikin puoli tallentaa symmetrisen otsikkoavaimen ja seuraavan otsikkoavaimen sekä lähetystä että vastaanottoa varten. Lähettävän otsikon avainta käytetään nykyisen lähetysketjun otsikoiden salaamiseen. Kun viesti saapuu vastaanottajalle, sen on ensin yhdistettävä viesti sopivaan Double Ratchet -istuntoon, jos istunnon lisäksi on muita istuntoja muiden osapuolten kanssa. Kun vastaanottaja on liittänyt viestin istuntoon, se yrittää purkaa otsikon salauksen käyttämällä vastaanottavan istunnon otsikkoavainta, seuraavaa otsikkoavainta ja mitä tahansa muita vastaamattomia viestejä vastaavia otsikkoavaimia. Onnistunut salauksen purku seuraavalla otsikkoavaimella osoittaa, että vastaanottajan tulee suorittaa Diffie-Hellman-räikkävaihe. Diffie-Hellmanin räikkävaiheen aikana seuraavat otsikkonäppäimet korvaavat nykyiset otsikkoavaimet, ja uudet seuraavan otsikon avaimet vastaanotetaan lisälähtömuuttujina juurihajauksesta.
Seuraavassa on luettelo sovelluksista, jotka käyttävät kaksoisräikkäalgoritmia tai mukautettua toteutusta:
ChatSecure tuloksia Cryptocat facebook messenger G Data Secure Chat Gajim Google Allo Haven Lampi Mellakka signaali hiljainen puhelin Skype Viber whatsapp LankaSalausohjelmisto | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Sähköpostiohjelmat |
| ||||||||||||||
Turvallinen viestintä |
| ||||||||||||||
Levyn salaus ( vertailu ) |
| ||||||||||||||
Nimettömyys |
| ||||||||||||||
Tiedostojärjestelmät ( luettelo ) | |||||||||||||||
turvallisuuteen keskittyvä käyttöjärjestelmä | |||||||||||||||
Palveluntarjoajat |
| ||||||||||||||
Koulutuksellinen | |||||||||||||||
liittyvät aiheet |
| ||||||||||||||
|