Documentație Shadowsocks

AEAD

AEAD reprezintă Authenticated Encryption cu date asociate. Cifrurile AEAD oferă simultan confidențialitate, integritate și autenticitate. Au performanțe excelente și eficiență energetică pe hardware-ul modern. Utilizatorii ar trebui să utilizeze cifrurile AEAD ori de câte ori este posibil.

Sunt recomandate următoarele cifruri AEAD. Implementările Shadowsocks compatibile trebuie să accepte AEAD_CHACHA20_POLY1305. Implementările pentru dispozitivele cu accelerare AES hardware ar trebui să implementeze și AEAD_AES_128_GCM și AEAD_AES_256_GCM.

 

 

 

Nume si Prenume

Alias

Dimensiunea cheii

Dimensiunea sării

Nonce Size

Dimensiunea etichetei

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

Va rog, referiti-va la Registrul IANA AEAD pentru schema de denumire și specificație.

Derivarea cheii

Cheia principală poate fi introdusă direct de la utilizator sau generată dintr-o parolă.

HKDF_SHA1 este o funcție care preia o cheie secretă, o sare non-secretă, un șir de informații și produce o subcheie care este criptografic puternică, chiar dacă cheia secretă de intrare este slabă.

HKDF_SHA1(cheie, sare, informații) => subcheie

Șirul de informații leagă subcheia generată la un context de aplicație specific. În cazul nostru, trebuie să fie șirul „ss-subkey” fără ghilimele.

Obținem o subcheie per sesiune dintr-o cheie principală pre-partajată folosind HKDF_SHA1. Sarea trebuie să fie unică pe toată durata de viață a cheii principale pre-partajate.

Criptare/Decriptare autentificată

AE_encrypt este o funcție care preia o cheie secretă, un nonce non-secret, un mesaj și produce text cifrat și o etichetă de autentificare. Nonce trebuie să fie unic pentru o anumită cheie în fiecare invocare.

AE_encrypt(cheie, nonce, mesaj) => (text cifrat, etichetă)

 

AE_decrypt este o funcție care preia o cheie secretă, nonce non-secret, text cifrat, o etichetă de autentificare și produce un mesaj original. Dacă oricare dintre intrări este modificată, decriptarea va eșua.

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

TCP

Un flux TCP criptat AEAD începe cu o sare generată aleatoriu pentru a obține subcheia per sesiune, urmată de orice număr de bucăți criptate. Fiecare bucată are următoarea structură:

[lungimea încărcăturii criptate][etichetă de lungime][sarcină criptată][etichetă de încărcare]

 

Lungimea sarcinii utile este un număr întreg nesemnat big-endian de 2 octeți, limitat la 0x3FFF. Cei doi biți mai mari sunt rezervați și trebuie setați la zero. Sarcina utilă este, prin urmare, limitată la 16*1024 – 1 octet.

Prima operație de criptare/decriptare AEAD folosește un nonce de numărare începând de la 0. După fiecare operație de criptare/decriptare, nonce este incrementat cu unu, ca și cum ar fi un număr întreg little-endian nesemnat. Rețineți că fiecare fragment TCP implică două operațiuni de criptare/decriptare AEAD: una pentru lungimea încărcăturii utile și una pentru încărcarea utilă. Prin urmare, fiecare bucată crește nonce de două ori.

TCP

Un flux TCP criptat AEAD începe cu o sare generată aleatoriu pentru a obține subcheia per sesiune, urmată de orice număr de bucăți criptate. Fiecare bucată are următoarea structură:

[lungimea încărcăturii criptate][etichetă de lungime][sarcină criptată][etichetă de încărcare]

 

Lungimea sarcinii utile este un număr întreg nesemnat big-endian de 2 octeți, limitat la 0x3FFF. Cei doi biți mai mari sunt rezervați și trebuie setați la zero. Sarcina utilă este, prin urmare, limitată la 16*1024 – 1 octet.

Prima operație de criptare/decriptare AEAD folosește un nonce de numărare începând de la 0. După fiecare operație de criptare/decriptare, nonce este incrementat cu unu, ca și cum ar fi un număr întreg little-endian nesemnat. Rețineți că fiecare fragment TCP implică două operațiuni de criptare/decriptare AEAD: una pentru lungimea încărcăturii utile și una pentru încărcarea utilă. Prin urmare, fiecare bucată crește nonce de două ori.

Începeți perioada de încercare gratuită de 5 zile