Dokumentasyon sa Shadowsocks

AEAD

AEAD nagpasabot sa Authenticated Encryption with Associated Data. Ang mga cipher sa AEAD dungan nga naghatag ug kompidensyal, integridad, ug kasaligan. Sila adunay maayo kaayo nga performance ug power efficiency sa modernong hardware. Ang mga tiggamit kinahanglan nga mogamit sa AEAD ciphers kung mahimo.

Ang mosunod nga mga AEAD ciphers girekomendar. Ang pagsunod sa mga pagpatuman sa Shadowsocks kinahanglang mosuporta sa AEAD_CHACHA20_POLY1305. Ang mga pag-implementar para sa mga device nga adunay hardware nga AES acceleration kinahanglan usab nga ipatuman ang AEAD_AES_128_GCM ug AEAD_AES_256_GCM.

 

 

 

ngalan

alyas

Gidak-on sa yawe

Gidak-on sa asin

Nonce Size

Tag Gidak

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

Palihug tan-awa IANA AEAD rehistro alang sa pamaagi sa pagngalan ug espesipikasyon.

Key Derivation

Ang master key mahimong direktang input gikan sa user o namugna gikan sa usa ka password.

HKDF_SHA1 mao ang usa ka function nga nagkinahanglan sa usa ka sekreto nga yawe, usa ka dili tinago nga asin, usa ka info string, ug naghimo sa usa ka subkey nga cryptographically lig-on bisan kon ang input sekreto nga yawe huyang.

HKDF_SHA1(key, asin, impormasyon) => subkey

Ang info string nagbugkos sa nahimo nga subkey sa usa ka piho nga konteksto sa aplikasyon. Sa among kaso, kini kinahanglan nga ang string nga "ss-subkey" nga walay mga kinutlo.

Nagkuha mi og subkey kada-session gikan sa usa ka pre-shared master key gamit ang HKDF_SHA1. Ang asin kinahanglan nga talagsaon sa tibuok kinabuhi sa pre-shared master key.

Gipamatud-an nga Encryption/Decryption

Ang AE_encrypt usa ka function nga nagkuha usa ka sekreto nga yawe, usa ka dili sekreto nga nonce, usa ka mensahe, ug naghimo og ciphertext ug usa ka tag sa pag-authenticate. Ang Nonce kinahanglan nga talagsaon alang sa gihatag nga yawe sa matag pag-ampo.

AE_encrypt(key, nonce, message) => (ciphertext, tag)

 

Ang AE_decrypt kay usa ka function nga nagkuha ug sekreto nga yawe, dili sekreto nga nonce, ciphertext, usa ka authentication tag, ug naghimo ug orihinal nga mensahe. Kung adunay bisan unsang input nga gisamok, ang pag-decryption mapakyas.

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

TCP

Ang AEAD nga naka-encrypt nga TCP stream nagsugod sa usa ka random nga namugna nga asin aron makuha ang matag-sesyon nga subkey, nga gisundan sa bisan unsang gidaghanon sa mga na-encrypt nga tipik. Ang matag tipak adunay mosunod nga istruktura:

[naka-encrypt nga payload length][length tag][encrypted payload][payload tag]

 

Ang gitas-on sa payload usa ka 2-byte nga big-endian nga unsigned integer nga gitakpan sa 0x3FFF. Ang mas taas nga duha ka bit kay gireserba ug kinahanglang ibutang sa zero. Busa ang payload limitado sa 16*1024 – 1 bytes.

Ang unang AEAD encrypt/decrypt nga operasyon naggamit ug counting nonce sugod sa 0. Human sa matag encrypt/decrypt operation, ang nonce gidugangan sa usa nga murag unsigned little-endian integer. Timan-i nga ang matag TCP chunk naglakip sa duha ka AEAD encrypt/decrypt operations: usa alang sa payload length, ug usa alang sa payload. Busa ang matag tipik nagdugang sa dili kaduha kaduha.

TCP

Ang AEAD nga naka-encrypt nga TCP stream nagsugod sa usa ka random nga namugna nga asin aron makuha ang matag-sesyon nga subkey, nga gisundan sa bisan unsang gidaghanon sa mga na-encrypt nga tipik. Ang matag tipak adunay mosunod nga istruktura:

[naka-encrypt nga payload length][length tag][encrypted payload][payload tag]

 

Ang gitas-on sa payload usa ka 2-byte nga big-endian nga unsigned integer nga gitakpan sa 0x3FFF. Ang mas taas nga duha ka bit kay gireserba ug kinahanglang ibutang sa zero. Busa ang payload limitado sa 16*1024 – 1 bytes.

Ang unang AEAD encrypt/decrypt nga operasyon naggamit ug counting nonce sugod sa 0. Human sa matag encrypt/decrypt operation, ang nonce gidugangan sa usa nga murag unsigned little-endian integer. Timan-i nga ang matag TCP chunk naglakip sa duha ka AEAD encrypt/decrypt operations: usa alang sa payload length, ug usa alang sa payload. Busa ang matag tipik nagdugang sa dili kaduha kaduha.

Sugdi ang imong 5 ka adlaw nga Libre nga pagsulay