Noise je radni okvir za izgradnju sigurnih kriptografskih protokola baziranih na Diffie-Hellman razmjeni ključeva.
Glavna ideja je da on pruža bazu koju korisnici nadopunjavaju kombiniranjem elemenata skupa osnovnih kriptografskih operacija da bi dobili različita sigurnosna svojstva. To omogućuje stvaranje protokola sa točno onim mogućnostima koje korisnicima trebaju što je idealno za IoT uređaje kojima su potrebni mali i jednostavni protokoli.
Ključne riječi: Noise, Diffie-Hellman, razmjena ključeva, kriptografija
Kriptografija je znanstvena disciplina koja se bavi proučavanjem metoda za slanje poruka u obliku da ih samo onaj kome su namijenjene može pročitati. Njezin osnovni zadatak je da omogući dvjema osobama (pošiljatelj i primatelj) da međusobno komuniciraju preko nesigurnog komunikacijskog kanala na način da treća osoba kojoj poruka nije namijenjena, istu ne razumije. Za takav način komuniciranja nerazumljiv trećoj osobi potreban je unaprijed dogovoreni ključ. Kako ključ posjeduje samo osoba (pošiljatelj) koja je poruku šifrirala; potrebno je izvršiti razmjenu ključeva.
Razmjena ključeva je metoda u kriptografiji u kojoj se kriptografski ključevi razmjenjuju između dvije stranke omogućavajući korištenje kriptografskih algoritama kako bi se datoteke mogle poslati sigurno kroz protokole kao što su FTPS, HTTPS i SFTP. Ako dvije stranke ne mogu uspostaviti sigurnu inicijalnu razmjenu ključeva, tada neće biti u mogućnosti komunicirati privatno bez rizika od presretanja i dešifriranja poruka od treće strane koja je stekla ključ tijekom početne razmjene ključeva.
Prije izuma kriptografije javnim ključem, simetrična kriptografija koristila je jedan ključ i za šifriranje i za dešifriranje. Kriptografija javnim ključem koristi sistem dva ključa koji se sastoje od javnog i privatnog ključa, gdje se poruke šifriraju jednim, a dešifriraju drugim ključem. Na primjer u RSA javni ključ se koristi za šifriranje, a privatni za dešifriranje.
Dva najpoznatija protokola za razmjenu ključeva su RSA i Diffie-Hellman. Oni su omogućili klijentu i poslužitelju ili poslužitelju i poslužitelju da razmijene kriptografske ključeve kroz nesiguran medij kao što je Internet. U ovom radu će biti naglasak na Diffie-Hellman protokol (ili kraće DH).
Diffie-Hellman metoda razmjena ključeva omogućuje dvjema strankama koje nemaju prethodno znanje jedna o drugoj da uspostave zajednički tajni ključ preko nesigurnog kanala. Taj se ključ tada može koristiti za šifriranje budućih komunikacija koristeći algoritam simetričnog ključa. Ni u kojem trenutku u DH razmjeni ključeva je bilo koja osjetljiva informacija pod rizikom od kompromitacije, kao što je to u slučaju simetrične razmjene ključeva.
Da bi objasnili kako protokol radi, koristit ćemo uobičajena imena u kriptografskoj literaturi: pošiljatelja Anu i primatelja Branka.
Generalni opis protokola:
Sada Ana i Branko oboje imaju element gab koji služi kao dijeljeni tajni ključ. Grupa G zadovoljava potreban uvjet sigurne komunikacije jer ne postoji efikasan algoritam za određivanje gab uz dane g, ga, gb.
Iako je zadovoljen potreban uvjet, on nije dovoljan za sigurnu komunikaciju.
Kako biti siguran da javni ključ zapravo pripada njegovom navodnom vlasniku budući da je vrlo lako imitirati tuđi identitet? To može biti veliki problem ako se uključeni korisnici nikad nisu susreli i ne znaju ništa jedan o drugome. Nažalost Diffie-Hellman razmjena ključeva ne adresira taj problem.
Noise je radni okvir za izgradnju sigurnih kriptografskih protokola baziranih na Diffie-Hellman razmjeni ključeva. Fokusira se specifično na sigurnosne kanale.
Glavna ideja Noise radnog okvira je da on pruža bazu koju korisnici nadopunjavaju kombiniranjem skupa osnovnih kriptografskih operacija da bi dobili različita sigurnosna svojstva. Na taj način se olakšava stvaranje novog protokola korisnicima jer ne moraju raditi protokol od nule. Jedna od primarnih prednosti Noise radnog okvira je da omogućuje stvaranje protokola sa točno onim mogućnostima koje korisniku trebaju kao i analizu prisutnosti tih mogućnosti. U tome pomaže i alat Noise Explorer koji automatski analizira uzorke rukovanja te grafički demonstrira razinu sigurnosti u svakom koraku rukovanja.
Noise zahtjeva minimalan skup osnovnih operacija:
Svaki Noise protokol počinje rukovanjem jedinstvenim uzorkom. Tijekom te faze stranke razmjenjuju DH javne ključeve i obavljaju niz DH operacija. Krajnji rezultat rukovanja je šifrirani kanal koji jamči povjerljivost, integritet i autentičnost.
Jezgra Noise sustava je skup varijabla koje održavaju stranke tijekom faze rukovanja, te pravila slanja i primanja poruka rukovanja dobivenih procesiranjem tokena.
Svaka stranka održava sljedeće varijable:
Kako se svaki token procesira, tako se i odgovarajuće varijable ažuriraju.
Mogući tokeni su:
Strelice → i ← pokazuju smjer slanja.
Uzorak poruke dobiva se iz nekog niza tokena iz skupa {‘e’, ‘s’, ‘ee’, ‘es’, ‘se’, ‘ss’, ‘psk’}.
Imena uzoraka sastoje se od dva znaka, a označavaju stanje statičkog ključeva inicijatora i odgovaratelja.
Prvi znak odnosi se na statički ključ inicijatora:
Drugi znak odnosi se na statički ključ odgovaratelja:
Primjeni nekih imenovanih uzoraka:
NN(): | XX(ss, rs): | KN(s): | IK(s, rs): |
---|---|---|---|
→ e ← e, eez | → e ← e, ee, s, es → s, se | → s … → e ← e, ee, se | ← s … → e, es, s, ss ← e, ee, se |
U prvom primjeru, uzorak NN opisuje neautentificirano DH rukovanje.
Ime protokola započinje prefiksom Noise_ kojeg slijede četiri sekcije odvoje znakom _. Sekcije su redom imena uzorka rukovanja, DH funkcije, funkcije šifriranja i funkcije sažimanja.
Primjeri:
Do sada se pretpostavljalo da Ana i Branko žele izvršiti jedan Noise protokol izabran od strane inicijatora. Neka to bude Ana. No postoje brojni razlozi zašto bi možda Branko želio zamijeniti protokol s nekim drugim Noise protokolom nakon primitka poruke od Ane.
Na primjer:
Rješavanje takvog scenarija zahtjeva složeni protokol gdje se Branko prebacuje s inicijalnog Noise protokola odabranog od Ane u novi Noise protokol. U takvom složenom protokolu role inicijatora i odgovaratelja bi bile obrnute. Branko bi postao inicijator novog Noise protokola, a Ana odgovaratelj.
Složeni protokoli uvode kompleksnost budući da Ana treba objaviti Noise protokol s kojim počinje i Noise protokole u koje se može prebaciti, a obje stranke moraju ugovoriti sigurnu tranziciju.
Tipični složeni protokol za zero-RTT šifriranje uključuje tri različita Noise protokola:
Noise Pipes podržava sve iznad navedene slučaje, a sljedeća rukovanja ga definiraju:
XX uzorak je korišten za potpuno rukovanje ako obje stranke nisu komunicirale nikad prije, nakon čega će Ana zapamtiti Brankov statički javni ključ.
XX: -> e <- e, ee, s, es -> s, se
IK uzorak korišten je za zero-RTT rukovanje.
IK: <- s ... -> e, es, s, ss <- e, ee, se
XXfallback je rezervni uzorak korišten za obrnuto rukovanje ako Branko ne uspije dešifrirati početnu IK poruku (recimo ako je promijenio svoj statički ključ).
XXfallback: -> e ... <- e, ee, s, es -> s, se
Dane su sljedeće definicije:
Noise Boxes – zaštićene zasebne poruke (slično kao PGP, NaCl, itd.)
Noise Pipes – zaštićene interaktivne sjednice (slično kao SSL, SSH, CurveCP, itd.)
Noise Pipes nadograđuje Noise Boxes protokol, pa nasljeđuje sva njegova svojstva:
Te dodaje nekoliko novih:
Sigurna razmjena ključeva prvi je važan korak za sigurnu i privatnu komunikaciju više različitih stranaka. Protokoli poput TLS, IPsec i SSH razvijani su veliki broj godina i zbog njihove kompleksnosti teško ih je nadograđivati s novim kriptografskim funkcionalnostima koje se svakodnevno pojavljuju.
Uz veliku popularnost Internet svari, raste potreba za malim i jednostavnim protokolima koji se mogu prilagoditi individualnim potrebama.
Implementacija novog protokola uvijek je morala ići od nule što bi zahtijevalo puno posla. Taj posao bi bio ponavljajući budući da su mnogi elementi poput izvedbe ključa, potvrde ključa, analize sigurnosti, modela sigurnosti, dokaza sigurnosti, i dr., jednaki svima.
Noise se pojavio 2015. godine, i rješava upravo te probleme.
Sastoji se od dobre stabilne jezgre kojoj se dodaju nove forme kriptografije, male zajednice, web stranice, specifikacije, kolekcije testova, biblioteka otvorenog koda te podrške za mnoštvo popularnih jezika.
Zbog gore navedenih stvari, Noise ispada kao odličan izbor za ljude koji žele nešto jednostavno i efikasno, a opet sigurno.
Njegov potencijal prepoznaje sve više kompanija koje ga koriste za vlastite projekte: