Double Ratchet -algoritmi

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] .

Johdanto

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] .

Origins

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] .

Ominaisuudet

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] .

Toimintasuunnitelma

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

Double Ratchet Header Encryption

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.

Sovellusluettelo

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 Lanka

Muistiinpanot

  1. Perrin, Trevor. "Vertaa versioita", GitHub (30. maaliskuuta 2016). Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 7. toukokuuta 2017.
  2. 1 2 3 Marlinspike, Moxie. "Signaali ulkopuolella, signaali sisäpuolella" (30. maaliskuuta 2016). Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 15. marraskuuta 2018.
  3. Marlinspike, Moxie. "Kehittynyt kryptografinen räikkätoiminto" (26. marraskuuta 2013). Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 7. elokuuta 2019.
  4. Katriel Cohn-Gordon; Cas Cremers; Luke Garratt. "On Post-Compromise Security" (11. elokuuta 2016). Käyttöpäivä: 7. joulukuuta 2018. Arkistoitu alkuperäisestä 7. kesäkuuta 2018.
  5. Trevor Perrin (toimittaja), Moxie Marlinspike. "X3DH Key Agreement Protocol" (4. marraskuuta 2016). Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 23. marraskuuta 2020.
  6. Trevor Perrin (toimittaja), Moxie Marlinspike. "The Double Ratchet Algorithm" (20. marraskuuta 2016). Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 21. elokuuta 2019.
  7. whispersystems.org. Avaa Whisper Systems >> Etusivu . Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 9. joulukuuta 2018.
  8. Katriel Cohn-Gordon , Cas Cremers, Benjamin Dowling, Luke Garratt, Douglas Stebila. "Signaaliviestiprotokollan muodollinen suojausanalyysi" (marraskuu 2017). Käyttöpäivä: 7. joulukuuta 2018. Arkistoitu alkuperäisestä 22. helmikuuta 2017.
  9. 1 2 3 Nik Unger , Sergej Dechand Joseph Bonneau, Sascha Fahl, Henning Perl, Ian Goldberg, Matthew Smith. "SoK: Secure Messaging" (2015). Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 1. marraskuuta 2020.
  10. Tilman Frosch , Christian Mainka, Christoph Bader, Florian Bergsma, Jorg Schwenk, Thorsten Holz. "Kuinka Secure is TextSecure?" (2014). Haettu 7. joulukuuta 2018. Arkistoitu alkuperäisestä 28. helmikuuta 2019.