Locked History Actions

Skirtumas „ChaCha“

Pakeitimai tarp versijų 1 ir 3 (patvirtinamos 2 versijos)
Versija 1 nuo 2021-04-26 17:01:20
Dydis: 3608
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ė 1: Eilutė 1:
=  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 š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.
Eilutė 6: Eilutė 5:
 * 2005 m. publikuota primoji šifro versija Salsa20 (Daniel Julius Bernstein)
Eilutė 7: Eilutė 7:
 * 2005 m. publikuota primoji šifro versija Salsa20 (Daniel Julius Bernstein)  * 2008 m. eSTREAM Salsa20 išrinko kaip vieną iš 4 geriausių “software” kandidatų
Eilutė 9: Eilutė 9:
 * 2008 m. eSTREAM Salsa20 išrinko kaip vieną iš 4 geriausių “software” kandidatų

* 2008 m. D. J. Bersteinas publikavo patobulintą Salsa20 versiją, pavadinta [[ChaCha|ChaCha]].
 * 2008 m. D. J. Bersteinas publikavo patobulintą Salsa20 versiją, pavadinta ChaCha.
Eilutė 21: 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
Eilutė 24: Eilutė 22:
Eilutė 28: Eilutė 25:
Eilutė 31: Eilutė 27:
 a. 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.    a. 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.
Eilutė 33: Eilutė 29:
 a. 256 bitų vartotojo sugeneruoto rakto.    a. 256 bitų vartotojo sugeneruoto rakto.
Eilutė 35: Eilutė 31:
 a. 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.    a. 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.
Eilutė 37: Eilutė 33:
 a. 64 bitų nonce (angl. number used once), tik viena karta sraute naudojamo skaičiaus (dažniausiai naudojamas kaip pozicijos numerio tęsinys).    a. 64 bitų nonce (angl. number used once), tik viena karta sraute naudojamo skaičiaus (dažniausiai naudojamas kaip pozicijos numerio tęsinys).
Eilutė 40: Eilutė 36:

a. 512 bitų rinkinys yra patalpinamas į 4x4 matricą 
 a. 512 bitų rinkinys yra patalpinamas į 4x4 matricą
Eilutė 46: Eilutė 41:
 {{{ a += b; d ^= a; d <<<= 16; }}} <<BR>>
{{{ c += d; b ^= c; b <<<= 12; }}} <<BR>>
{{{ a += b; d ^= a; d <<<= 8; }}} <<BR>>
{{{ c += d; b ^= c; b <<<= 7; }}} <<BR>>
 . {{{ a += b; d ^= a; d <<<= 16; }}} <<BR>> {{{ c += d; b ^= c; b <<<= 12; }}} <<BR>> {{{ a += b; d ^= a; d <<<= 8; }}} <<BR>> {{{ c += d; b ^= c; b <<<= 7; }}} <<BR>>
Eilutė 52: Eilutė 44:
https://cr.yp.to/snuffle/salsafamily-20071225.pdf
Eilutė 53: Eilutė 46:
https://cr.yp.to/snuffle/salsafamily-20071225.pdf  https://cr.yp.to/chacha/chacha-20080128.pdf
Eilutė 55: Eilutė 48:
https://cr.yp.to/chacha/chacha-20080128.pdf [[https://link.springer.com/chapter/10.1007/978-3-642-37682-5_24|https://link.springer.com/chapter/10.1007%2F978-3-642-37682-5_24]]
Eilutė 57: Eilutė 50:
https://link.springer.com/chapter/10.1007%2F978-3-642-37682-5_24

https://en.wikipedia.org/wiki/Salsa20  
https://en.wikipedia.org/wiki/Salsa20
Eilutė 63: Eilutė 53:
CategoryŽodis CategoryŽodis CategoryŽodis

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