Nyaraka za Shadowsocks

AEAD

AEAD inawakilisha Usimbaji Umeidhinishwa na Data Husika. Sifa za AEAD kwa wakati mmoja hutoa usiri, uadilifu na uhalisi. Wana utendaji bora na ufanisi wa nguvu kwenye vifaa vya kisasa. Watumiaji wanapaswa kutumia misimbo ya AEAD inapowezekana.

Nakala zifuatazo za AEAD zinapendekezwa. Utekelezaji wa Shadowsocks unaotii sheria lazima usaidie AEAD_CHACHA20_POLY1305. Utekelezaji wa vifaa vilivyo na kuongeza kasi ya maunzi ya AES lazima pia utekeleze AEAD_AES_128_GCM na AEAD_AES_256_GCM.

 

 

 

jina

Alias

Ukubwa muhimu

Ukubwa wa Chumvi

Ukubwa wa Nonce

Ukubwa wa Tag

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

Tafadhali rejea kwa Usajili wa IANA AEAD kwa mpango wa kutaja na vipimo.

Utoaji Muhimu

Ufunguo mkuu unaweza kuingizwa moja kwa moja kutoka kwa mtumiaji au kuzalishwa kutoka kwa nenosiri.

HKDF_SHA1 ni chaguo la kukokotoa ambalo huchukua ufunguo wa siri, chumvi isiyo ya siri, kamba ya maelezo, na kutoa ufunguo mdogo ambao una nguvu ya siri hata kama ufunguo wa siri wa kuingiza ni dhaifu.

HKDF_SHA1(ufunguo, chumvi, maelezo) => kitufe kidogo

Mfuatano wa maelezo hufunga kitufe kidogo kilichozalishwa kwa muktadha mahususi wa programu. Kwa upande wetu, lazima iwe kamba "ss-subkey" bila nukuu.

Tunapata ufunguo mdogo wa kila kipindi kutoka kwa ufunguo mkuu ulioshirikiwa awali kwa kutumia HKDF_SHA1. Chumvi lazima iwe ya kipekee katika maisha yote ya ufunguo mkuu ulioshirikiwa awali.

Usimbaji/Usimbuaji Ulioidhinishwa

AE_encrypt ni chaguo la kukokotoa ambalo huchukua ufunguo wa siri, nonce isiyo ya siri, ujumbe, na kutoa maandishi ya siri na lebo ya uthibitishaji. Nonce lazima iwe ya kipekee kwa ufunguo fulani katika kila ombi.

AE_encrypt(ufunguo, nonce, ujumbe) => (maandishi ya siri, lebo)

 

AE_decrypt ni chaguo la kukokotoa ambalo huchukua ufunguo wa siri, nonce isiyo ya siri, maandishi ya siri, lebo ya uthibitishaji, na kutoa ujumbe asili. Iwapo ingizo lolote litaingiliwa, usimbaji fiche hautafaulu.

AE_decrypt(key, nonce, ciphertext, tag) => ujumbe

TCP

Mtiririko wa TCP uliosimbwa kwa njia fiche wa AEAD huanza na chumvi inayozalishwa nasibu ili kupata ufunguo wa kila kipindi, ikifuatiwa na idadi yoyote ya vipande vilivyosimbwa. Kila sehemu ina muundo ufuatao:

[urefu wa mzigo uliosimbwa kwa njia fiche][lebo ya urefu][mzigo uliosimbwa kwa njia fiche][lebo ya malipo]

 

Urefu wa upakiaji ni nambari kamili isiyo na saini ya baiti 2 iliyo na 0x3FFF. Biti mbili za juu zimehifadhiwa na lazima ziwekwe hadi sifuri. Kwa hivyo, upakiaji ni mdogo kwa baiti 16 * 1024 - 1.

Operesheni ya kwanza ya usimbaji/usimbuaji wa AEAD hutumia nukta ya kuhesabu kuanzia 0. Baada ya kila usimbaji fiche/usimbuaji, nonce huongezwa kwa moja kana kwamba ni nambari kamili ya mwisho isiyo na saini. Kumbuka kuwa kila sehemu ya TCP inahusisha shughuli mbili za usimbaji/usimbuaji wa AEAD: moja kwa urefu wa upakiaji, na moja ya upakiaji. Kwa hivyo kila chunk huongeza nonce mara mbili.

TCP

Mtiririko wa TCP uliosimbwa kwa njia fiche wa AEAD huanza na chumvi inayozalishwa nasibu ili kupata ufunguo wa kila kipindi, ikifuatiwa na idadi yoyote ya vipande vilivyosimbwa. Kila sehemu ina muundo ufuatao:

[urefu wa mzigo uliosimbwa kwa njia fiche][lebo ya urefu][mzigo uliosimbwa kwa njia fiche][lebo ya malipo]

 

Urefu wa upakiaji ni nambari kamili isiyo na saini ya baiti 2 iliyo na 0x3FFF. Biti mbili za juu zimehifadhiwa na lazima ziwekwe hadi sifuri. Kwa hivyo, upakiaji ni mdogo kwa baiti 16 * 1024 - 1.

Operesheni ya kwanza ya usimbaji/usimbuaji wa AEAD hutumia nukta ya kuhesabu kuanzia 0. Baada ya kila usimbaji fiche/usimbuaji, nonce huongezwa kwa moja kana kwamba ni nambari kamili ya mwisho isiyo na saini. Kumbuka kuwa kila sehemu ya TCP inahusisha shughuli mbili za usimbaji/usimbuaji wa AEAD: moja kwa urefu wa upakiaji, na moja ya upakiaji. Kwa hivyo kila chunk huongeza nonce mara mbili.

Anza kujaribu bila malipo kwa siku 5