Saksa teadlaste, arendajate ja krüptograafide rühm avaldas projekti Rosenpass esimese väljaande, mis arendab VPN-i ja võtmevahetuse mehhanismi, mis on kvantkompuutrite häkkimise suhtes kaitstud. Transpordina kasutatakse WireGuard VPN-i koos standardsete krüpteerimisalgoritmidega ja võtmetega, ning Rosenpass täiendab seda kvantkompuutrite häkkimise suhtes kaitstud võtmevahetusmeetoditega (st Rosenpass kaitseb lisaks võtmevahetust, muutes samas WireGuardi töömeetodeid ja krüpteerimise meetodeid). Rosenpassi saab kasutada ka eraldi WireGuardist, kui universaalne tööriistakomplekt võtmevahetamiseks, mis sobib teiste protokollide kaitsmiseks kvantkompuutrite rünnakute eest.
Tööriistakomplekti kood on kirjutatud Rust keeles ja jagatakse MIT- ja Apache 2.0 litsentside alusel. Krüptograafilised algoritmid ja primitiivid on laenatud C keeles kirjutatud teekidest liboqs ja libsodium. Avaldatud koodibaas positsioneeritakse kui standardlahendus — vastavalt esitatud spetsifikatsioonidele saavad teised programmeerimiskeeled arendada alternatiivseid tööriistakomplekse. Praegu käib protokolli, krüptoalgoritmide ja rakenduse formaalne verifitseerimine, et pakkuda matemaatilist tõendit usaldusväärsuse kohta. ProVerifi abil on juba läbi viidud protokolli ja selle põhiversiooni sümboolne analüüs Rust keeles.
Rosenpassi protokoll põhineb postkvantisel autentitud võtmevahetuse mehhanismil PQWG (Post-quantum WireGuard), mis on ehitatud McEliece krüptosüsteemi põhjal, mille korral on kvantkompuutritel proovimise suhtes vastupidav. Rosenpassis genereeritud võti kasutatakse WireGuardi jagatud sümmeetrilise võtmena (PSK, eelnevalt jagatud võti), rakendades hübriidkatte jaoks täiendava kihi VPN-ühenduste.
Rosenpass pakub iseseisvat taustaprotsessi, mis on mõeldud WireGuardi ettenähtud võtmete genereerimiseks ja võtmevahetuse kaitsmiseks ühenduse (handshake) sõlmpunktide vahel, kasutades postkvantotellimise krüptograafia meetodeid. Nagu WireGuardis, uuendatakse Rosenpassis sümmeetrilisi võtmeid iga kahe minuti järel. Ühenduse kaitsmiseks kasutatakse jagatud võtmeid (igal osalusel genereeritakse avatud ja kaetud võtme paar, seejärel vahetavad osalised omavahel avatud võtmeid).
Allikas: opennet.ru
