Locked History Actions

Skirtumas „ChaCha“

Pakeitimai tarp versijų 2 ir 3
Versija 2 nuo 2021-04-26 17:01:48
Dydis: 3611
Redaktorius: edgark
Komentaras:
Versija 3 nuo 2021-04-26 17:03:34
Dydis: 3622
Redaktorius: edgark
Komentaras:
Pašalinimai yra pažymėti taip. Pridėjimai yra pažymėti taip.
Eilutė 19: Eilutė 19:
 * 2018 metais išleidus TLS 1.3 standartą ChaCha20 tapo oficialią jo dalimi  * 2018 metais išleidus TLS 1.3 standartą [[ChaCha|ChaCha20]] tapo oficialią jo dalimi

ChaCha šifras

ChaCha ir jos pradinė versija Salsa20 yra srauto šifrai ( angl. Stream cipher). Skirtingai nuo įprastų blokinių šriftų, srautiniai šifrai nereikalauja duomenų grupuoti į šifruojamus blogus ir gali būti naudojami šifruojant nuoseklų duomenų srautą. Pagrindinis šių ChaCha ir Salsa20 privalumas yra tai, kad jie naudoja tik ARX (add-rotate-XOR) operacijas ir leidžia pasiekti dideli šifravimo greiti be aparatinės akceleracijos.

ChaCha šifro istorija

  • 2005 m. publikuota primoji šifro versija Salsa20 (Daniel Julius Bernstein)
  • 2008 m. eSTREAM Salsa20 išrinko kaip vieną iš 4 geriausių “software” kandidatų
  • 2008 m. D. J. Bersteinas publikavo patobulintą Salsa20 versiją, pavadinta ChaCha.

  • 2014 m. Google pradėjo naudoti ChaCha20 TLS šifravimui tarp Android mobiliųjų telefonų ir savo servisų.

  • Nuo 2014 m. ChaCha20 naudojama FreeBSD, NetBSD, OpenBSD pseudo-atsitiktinų numerių generavimui.

  • Nuo 2016 m. ChaCha20 naudojama Linux kernel 4.8 neblokuojančiam atsitiktinų numerių generavimui (/dev/urandom)

  • 2016 m. pirmosios WireGuard VPN versijos

  • 2018 metais išleidus TLS 1.3 standartą ChaCha20 tapo oficialią jo dalimi

Salsa20 ir ChaCha šifro veikimo principas

Salsa20 ir ChaCha skirtingai negu įprasti blokiniai šriftai nenaudoja specialaus algoritmo šifravimo operacijai, šifravimas ir dešifravimas čia yra atliekamas naudojant paprastą XOR operaciją tarp datos bitų ir rakto bitų srautų. Nors šis metodas ir supaprastina pačią šifravimo operaciją, saugiam jo realizavimui reikalingas saugus rakto srauto generavimo algoritmas

ChaCha rakto sudėtis

Salsa20 ir ChaCha vienas rakto srautas yra 512 bitų ilgio ir generuojamas iš:

  1. 128 bitų konstantos, skirtos užtikrinti algoritmo saugumą jeigu visi kiti bitai butų lygus nuliui, pagal Salsa20 ir ChaCha standartą ši konstanta yra ASCII koduotas „expand 32-byte k“ sakinys.

  2. 256 bitų vartotojo sugeneruoto rakto.
  3. 64 bitų srauto pozicijos numerio, pasirenkamo pagal tai kurioje srauto pozicijoje yra norima informacija. Srauto pozicijos numeris suteikia šifrui unikalią savybę „peršokti“ srauto dalį ir šifruoti/dešifruoti sekančia dalį, be ankstesnių duomenų iššifravimo ar naujo rakto poreikio.
  4. 64 bitų nonce (angl. number used once), tik viena karta sraute naudojamo skaičiaus (dažniausiai naudojamas kaip pozicijos numerio tęsinys).

ChaCha rakto srauto algoritmas

  1. 512 bitų rinkinys yra patalpinamas į 4x4 matricą
  2. Su kiekvienu matricos stulpeliu iš eilės atliekama speciali quarter-round funkcija turinti 4 įėjimus ir 4 išėjimus, vėliau ta pati operacija yra atliekama nuosekliai ir su kiekviena įstrižaine
  3. Punktas b yra kartojamas 4, 6 arba 10 kartų nuo pasirinkto ChaCha sunkumo lygio ir galiausiai gautam 512 bitų rezultatui yra atliekamas XOR su pradinių 512 bitų rinkinių, taip apsaugant algoritmą nuo atvirkštino proceso.

ChaCha quarter-round funkcija

  •  a += b; d ^= a; d <<<= 16; 
     c += d; b ^= c; b <<<= 12; 
     a += b; d ^= a; d <<<= 8;  
     c += d; b ^= c; b <<<= 7; 

Literatūra

https://cr.yp.to/snuffle/salsafamily-20071225.pdf

https://cr.yp.to/chacha/chacha-20080128.pdf

https://link.springer.com/chapter/10.1007%2F978-3-642-37682-5_24

https://en.wikipedia.org/wiki/Salsa20


CategoryŽodis