Shadowsocks iwe
lilọ
AEAD
AEAD duro fun Ìsekóòdù Ifọwọsi pẹlu Data Iṣọkan. Awọn ciphers AEAD nigbakanna n pese aṣiri, iduroṣinṣin, ati ododo. Wọn ni iṣẹ ti o dara julọ ati ṣiṣe agbara lori ohun elo ode oni. Awọn olumulo yẹ ki o lo AEAD ciphers nigbakugba ti o ṣee ṣe.
A ṣe iṣeduro awọn iwe-ipamọ AEAD wọnyi. Awọn imuse Shadowsocks ti o ni ibamu gbọdọ ṣe atilẹyin AEAD_CHACHA20_POLY1305. Awọn imuse fun awọn ẹrọ pẹlu ohun elo AES isare yẹ ki o tun ṣe AEAD_AES_128_GCM ati AEAD_AES_256_GCM.
Name | inagijẹ | Iwọn bọtini | Iwọn Iyọ | Nonce Iwon | tag Iwon |
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 |
Jowo tọka si IANA AEAD iforukọsilẹ fun eto lorukọ ati sipesifikesonu.
Ipilẹṣẹ bọtini
Bọtini titunto si le jẹ titẹ sii taara lati ọdọ olumulo tabi ti ipilẹṣẹ lati ọrọ igbaniwọle kan.
HKDF_SHA1 jẹ iṣẹ kan ti o gba bọtini aṣiri, iyọ ti kii ṣe ikọkọ, okun alaye, ti o ṣe agbejade bọtini kekere ti o lagbara ni cryptograph paapaa ti bọtini aṣiri titẹ sii ko lagbara.
HKDF_SHA1(bọtini, iyọ, info) => koko
Okun alaye naa so bọtini abẹlẹ ti ipilẹṣẹ pọ mọ ipo ohun elo kan pato. Ninu ọran wa, o gbọdọ jẹ okun “ss-subkey” laisi awọn agbasọ ọrọ.
A gba bọtini abẹlẹ fun igba-kọọkan lati bọtini titunto ti a ti ṣajọ tẹlẹ nipa lilo HKDF_SHA1. Iyọ gbọdọ jẹ alailẹgbẹ nipasẹ gbogbo igbesi aye ti bọtini tituntosi ti a ti pin tẹlẹ.
Ifọwọsi ìsekóòdù/Decryption
AE_encrypt jẹ iṣẹ ti o gba bọtini aṣiri kan, ti kii ṣe ikọkọ, ifiranṣẹ kan, ti o ṣe agbejade ọrọ-ọrọ ati aami ijẹrisi. Nonce gbọdọ jẹ alailẹgbẹ fun bọtini ti a fun ni ẹbẹ kọọkan.
AE_encrypt (bọtini, nonce, ifiranṣẹ) => (akọsilẹ, tag)
AE_decrypt jẹ iṣẹ kan ti o gba bọtini aṣiri, ti kii ṣe aṣiri, ọrọ aṣiri, aami ijẹrisi, ati gbejade ifiranṣẹ atilẹba kan. Ti eyikeyi ninu titẹ sii ti wa ni fọwọ ba, iṣiparọ yoo kuna.
AE_decrypt(bọtini, nonce, ciphertext, tag) => ifiranṣẹ
TCP
Oṣan TCP ti AEAD ti paroko bẹrẹ pẹlu iyọ ti ipilẹṣẹ laileto lati gba bọtini-kekere fun igba-kọọkan, atẹle nipasẹ nọmba eyikeyi ti awọn chunks ti paroko. Ẹyọ kọọkan ni eto atẹle wọnyi:
[ipari fifuye isanwo ti paroko [aami gigun] [ẹru isanwo ti paroko].
Ipari isanwo jẹ odidi 2-baiti nla-endian ti a ko fowo si ni 0x3FFF. Awọn die-die meji ti o ga julọ wa ni ipamọ ati pe o gbọdọ ṣeto si odo. Payload Nitorina ni opin si 16 * 1024 - 1 baiti.
Ni igba akọkọ ti AEAD encrypt / decrypt isẹ nlo kika nonce ti o bere lati 0. Lẹhin ti kọọkan encrypt / decrypt isẹ, awọn nonce ti wa ni afikun nipa ọkan bi ẹnipe o jẹ ẹya unsigned kekere-endian odidi. Ṣe akiyesi pe chunk TCP kọọkan pẹlu awọn iṣẹ AEAD encrypt / decrypt meji: ọkan fun ipari isanwo, ati ọkan fun isanwo isanwo. Nitorina kọọkan chunk mu ki awọn nonce lemeji.
TCP
Oṣan TCP ti AEAD ti paroko bẹrẹ pẹlu iyọ ti ipilẹṣẹ laileto lati gba bọtini-kekere fun igba-kọọkan, atẹle nipasẹ nọmba eyikeyi ti awọn chunks ti paroko. Ẹyọ kọọkan ni eto atẹle wọnyi:
[ipari fifuye isanwo ti paroko [aami gigun] [ẹru isanwo ti paroko].
Ipari isanwo jẹ odidi 2-baiti nla-endian ti a ko fowo si ni 0x3FFF. Awọn die-die meji ti o ga julọ wa ni ipamọ ati pe o gbọdọ ṣeto si odo. Payload Nitorina ni opin si 16 * 1024 - 1 baiti.
Ni igba akọkọ ti AEAD encrypt / decrypt isẹ nlo kika nonce ti o bere lati 0. Lẹhin ti kọọkan encrypt / decrypt isẹ, awọn nonce ti wa ni afikun nipa ọkan bi ẹnipe o jẹ ẹya unsigned kekere-endian odidi. Ṣe akiyesi pe chunk TCP kọọkan pẹlu awọn iṣẹ AEAD encrypt / decrypt meji: ọkan fun ipari isanwo, ati ọkan fun isanwo isanwo. Nitorina kọọkan chunk mu ki awọn nonce lemeji.