Shadowsocks dokumentazioa

AEAD

AEAD Datu elkartuekin enkriptatutako autentifikazioa esan nahi du. AEAD zifratzeek aldi berean konfidentzialtasuna, osotasuna eta benetakotasuna eskaintzen dituzte. Errendimendu eta energia eraginkortasun bikainak dituzte hardware modernoan. Erabiltzaileek AEAD zifraketak erabili behar dituzte ahal den guztietan.

AEAD zifra hauek gomendatzen dira. Shadowsocks-en inplementazioek AEAD_CHACHA20_POLY1305 onartu behar dute. Hardware AES azelerazioa duten gailuetarako inplementazioek AEAD_AES_128_GCM eta AEAD_AES_256_GCM ere ezarri beharko lituzkete.

 

 

 

izena

Alias

Giltza-tamaina

Gatzaren Tamaina

Nonce Tamaina

Etiketa tamaina

AEAD_CHACHA20_POLY1305

chacha20-ietf-poly1305

32

32

12

16

AEAD_AES_256_GCM

aes-256-gcm

32

32

12

16

AEAD_AES_128_GCM

aes-128-gcm

16

16

12

16

Mesedez, ikus IANA AEAD erregistroa izendatzeko eskema eta zehaztapenerako.

Gako Eratorpena

Gako nagusia erabiltzaileak zuzenean sar daiteke edo pasahitz batetik sortu.

HKDF_SHA1 gako sekretua, sekretua ez den gatz bat, informazio katea hartzen duen funtzioa da, eta kriptografikoki sendoa den azpigako bat sortzen du, nahiz eta sarrerako gako sekretua ahula izan.

HKDF_SHA1(gakoa, gatza, informazioa) => azpigakoa

Informazio-kateak sortutako azpigakoa aplikazioaren testuinguru zehatz batera lotzen du. Gure kasuan, "ss-subkey" katea izan behar du komatxorik gabe.

HKDF_SHA1 erabiliz aurrez partekatutako gako nagusi batetik saio bakoitzeko azpigako bat ateratzen dugu. Gatzak bakarra izan behar du aurrez partekatutako gako nagusiaren bizitza osoan.

Autentifikatutako enkriptatzea/deszifratzea

AE_encrypt gako sekretua, sekretua ez den nonce bat, mezu bat hartzen duen funtzio bat da, eta zifratutako testua eta autentifikazio-etiketa sortzen ditu. Nonce bakarra izan behar da gako jakin baterako dei bakoitzean.

AE_encrypt(gakoa, nonce, mezua) => (zifratua, etiketa)

 

AE_decrypt gako sekretua, sekretua ez den nonce, testu zifratua, autentifikazio-etiketa bat hartzen duen eta jatorrizko mezua sortzen duen funtzio bat da. Sarreraren bat manipulatzen bada, deszifratzeak huts egingo du.

AE_decrypt(gakoa, nonce, testu zifratua, etiketa) => mezua

TCP

AEAD enkriptatutako TCP korronte bat ausaz sortutako gatz batekin hasten da saio bakoitzeko azpigakoa ateratzeko, eta ondoren enkriptatutako zati kopuru bat. Zati bakoitzak egitura hau du:

[karga enkriptatutako luzera][luzera etiketa][karga enkriptatua][karga etiketa]

 

Kargaren luzera 2 byteko big-endian sinatu gabeko zenbaki oso bat da 0x3FFF mugatua. Bi bit altuenak erreserbatuta daude eta zeroan ezarri behar dira. Karga erabilgarria, beraz, 16*1024 - 1 byte-ra mugatuta dago.

Lehen AEAD zifratu/deszifratu eragiketak 0tik hasten den nonce zenbaketa bat erabiltzen du. Zifratu/deszifratu eragiketa bakoitzaren ondoren, nonce-a bat handitzen da sinatu gabeko little-endian zenbaki oso bat balitz bezala. Kontuan izan TCP zati bakoitzak bi AEAD zifratu/deszifratu eragiketa dakartzala: bat karga luzerako eta beste bat kargarako. Beraz, zati bakoitzak bi aldiz handitzen du nonce.

TCP

AEAD enkriptatutako TCP korronte bat ausaz sortutako gatz batekin hasten da saio bakoitzeko azpigakoa ateratzeko, eta ondoren enkriptatutako zati kopuru bat. Zati bakoitzak egitura hau du:

[karga enkriptatutako luzera][luzera etiketa][karga enkriptatua][karga etiketa]

 

Kargaren luzera 2 byteko big-endian sinatu gabeko zenbaki oso bat da 0x3FFF mugatua. Bi bit altuenak erreserbatuta daude eta zeroan ezarri behar dira. Karga erabilgarria, beraz, 16*1024 - 1 byte-ra mugatuta dago.

Lehen AEAD zifratu/deszifratu eragiketak 0tik hasten den nonce zenbaketa bat erabiltzen du. Zifratu/deszifratu eragiketa bakoitzaren ondoren, nonce-a bat handitzen da sinatu gabeko little-endian zenbaki oso bat balitz bezala. Kontuan izan TCP zati bakoitzak bi AEAD zifratu/deszifratu eragiketa dakartzala: bat karga luzerako eta beste bat kargarako. Beraz, zati bakoitzak bi aldiz handitzen du nonce.

Hasi zure 5 eguneko doako proba