Shadowsocks zvinyorwa

AEAD

AEAD inomiririra Authenticated Encryption neAssociated Data. AEAD ciphers panguva imwe chete inopa kuvanzika, kutendeseka, uye chokwadi. Ivo vane hunyanzvi hwekuita uye kugona kwesimba pane zvemazuva ano Hardware. Vashandisi vanofanirwa kushandisa AEAD ciphers pese pazvinogoneka.

Aya anotevera AEAD ciphers anokurudzirwa. Zvinoenderana neShadowsocks kuita zvinofanirwa kutsigira AEAD_CHACHA20_POLY1305. Kuitwa kwemidziyo ine Hardware AES kukwidziridzwa kunofanirwawo kuita AEAD_AES_128_GCM uye AEAD_AES_256_GCM.

 

 

 

zita

zita remadunhurirwa

Saizi Yakakosha

Saizi yemunyu

Nonce Size

Tag Taji

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

Ndapota shandisai IANA AEAD registry yechirongwa chekupa zita uye kutsanangurwa.

Key Derivation

Iyo master kiyi inogona kuiswa zvakananga kubva kumushandisi kana kugadzirwa kubva papassword.

HKDF_SHA1 ibasa rinotora kiyi yakavanzika, munyu usiri wakavanzika, tambo yeruzivo, uye inoburitsa subkey ine cryptographically yakasimba kunyangwe kiyi yekuisa yakavanzika isina simba.

HKDF_SHA1(kiyi, munyu, ruzivo) => subkey

Iyo info tambo inosunga iyo yakagadzirwa subkey kune yakatarwa application mamiriro. Kwatiri, inofanirwa kunge iri tambo "ss-subkey" isina makotesheni.

Isu tinowana per-session subkey kubva kune pre-yakagovaniswa master kiyi tichishandisa HKDF_SHA1. Munyu unofanirwa kuve wakasiyana nehupenyu hwese hwe pre-shared master key.

Authenticated Encryption/Decryption

AE_encrypt ibasa rinotora kiyi yakavanzika, isiri-yakavanzika nonce, meseji, uye inogadzira ciphertext uye tag yekusimbisa. Nonce inofanirwa kuve yakasarudzika kune kiyi yakapihwa mukukumbira kwega kwega.

AE_encrypt(kiyi, nonce, meseji) => (ciphertext, tag)

 

AE_decrypt ibasa rinotora kiyi yakavanzika, isiri-yakavanzika nonce, ciphertext, tag yekusimbisa, uye inogadzira meseji yepakutanga. Kana chero ipi zvayo yekupinda ikakanganiswa, iyo decryption ichatadza.

AE_decrypt(kiyi, nonce, ciphertext, tag) => meseji

TCP

Iyo AEAD yakavharidzirwa TCP rukova inotanga nemunyu unogadzirwa zvisina tsarukano kuti utore iyo per-session subkey, inoteverwa nechero nhamba yeakavharirwa chunks. Imwe neimwe chunk ine chimiro chinotevera:

[kureba kwemubhadharo wakavharidzirwa][kureba tag][encrypted payload][payload tag]

 

Kureba kwekubhadhara i2-byte hombe-endian isina kusaina nhamba yakavharirwa pa0x3FFF. Iwo mabheti maviri epamusoro akachengetwa uye anofanirwa kusetwa kune zero. Payload saka inogumira ku16 * 1024 - 1 bytes.

Yekutanga AEAD encrypt/decrypt operation inoshandisa kuverenga nonce kutanga kubva pa 0. Mushure mega ega encrypt/decrypt operation, nonce inowedzerwa neimwe sekunge isina kusaina diki-endian integer. Ziva kuti imwe neimwe TCP chunk inosanganisira maviri AEAD encrypt/decrypt mashandiro: imwe yehurefu hwemubhadharo, uye imwe yemubhadharo. Naizvozvo chunk imwe neimwe inowedzera nonce kaviri.

TCP

Iyo AEAD yakavharidzirwa TCP rukova inotanga nemunyu unogadzirwa zvisina tsarukano kuti utore iyo per-session subkey, inoteverwa nechero nhamba yeakavharirwa chunks. Imwe neimwe chunk ine chimiro chinotevera:

[kureba kwemubhadharo wakavharidzirwa][kureba tag][encrypted payload][payload tag]

 

Kureba kwekubhadhara i2-byte hombe-endian isina kusaina nhamba yakavharirwa pa0x3FFF. Iwo mabheti maviri epamusoro akachengetwa uye anofanirwa kusetwa kune zero. Payload saka inogumira ku16 * 1024 - 1 bytes.

Yekutanga AEAD encrypt/decrypt operation inoshandisa kuverenga nonce kutanga kubva pa 0. Mushure mega ega encrypt/decrypt operation, nonce inowedzerwa neimwe sekunge isina kusaina diki-endian integer. Ziva kuti imwe neimwe TCP chunk inosanganisira maviri AEAD encrypt/decrypt mashandiro: imwe yehurefu hwemubhadharo, uye imwe yemubhadharo. Naizvozvo chunk imwe neimwe inowedzera nonce kaviri.

Tanga yako yemazuva mashanu Yemahara muyedzo