dokuméntasi Shadowsocks

AeAD

AeAD nangtung pikeun Énkripsi Dioténtikasi sareng Data Patali. Cipher AEAD sakaligus nyadiakeun karusiahan, integritas, jeung kaaslian. Aranjeunna mibanda kinerja alus teuing jeung efisiensi kakuatan dina hardware modern. Pamaké kedah nganggo cipher AEAD sabisana.

Cipher AEAD di handap ieu disarankeun. Palaksanaan Shadowsocks anu patuh kedah ngadukung AEAD_CHACHA20_POLY1305. Implementasi pikeun alat anu gaduh akselerasi AES hardware ogé kedah nerapkeun AEAD_AES_128_GCM sareng AEAD_AES_256_GCM.

 

 

 

nami

alias

Ukuran konci

Ukuran uyah

Ukuran Nonce

Tag Ukuran

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

Mangga tingal IANA AEAD pendaptaran pikeun skéma ngaran jeung spésifikasi.

Turunan konci

Konci master tiasa input langsung ti pangguna atanapi didamel tina kecap akses.

HKDF_SHA1 mangrupa fungsi nu nyokot konci rusiah, uyah non-rusiah, string info, sarta ngahasilkeun subkonci nu cryptographically kuat sanajan konci rusiah input lemah.

HKDF_SHA1(konci, uyah, info) => subkonci

Inpo string ngabeungkeut subkonci dihasilkeun kana konteks aplikasi husus. Dina kasus urang, éta kedah janten senar "ss-subkey" tanpa tanda petik.

Urang nurunkeun subkonci per-sesi tina konci master anu tos dibagikeun nganggo HKDF_SHA1. Uyah kedah unik sapanjang kahirupan konci master anu tos dibagikeun.

Énkripsi / Dekripsi Dioténtikasi

AE_encrypt mangrupakeun fungsi nu nyokot konci rusiah, nonce non-rusiah, pesen, sarta ngahasilkeun ciphertext sarta tag auténtikasi. Nonce kedah unik pikeun konci anu dipasihkeun dina unggal invocation.

AE_encrypt(konci, nonce, pesen) => (ciphertext, tag)

 

AE_decrypt mangrupikeun fungsi anu nyandak konci rusiah, nonce non-rusiah, ciphertext, tag auténtikasi, sareng ngahasilkeun pesen asli. Upami aya salah sahiji input anu dirusak, dekripsi bakal gagal.

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

TCP

Aliran TCP énkripsi AEAD dimimitian ku uyah anu dihasilkeun sacara acak pikeun nurunkeun subkonci per-sesi, dituturkeun ku sajumlah sakumpulan énkripsi. Unggal sapotong boga struktur handap:

[panjang payload énkripsi][tag panjang][payload énkripsi][tag payload]

 

Payload panjang nyaéta 2-bait badag-endian unsigned integer capped dina 0x3FFF. Dua bit anu langkung luhur ditangtayungan sareng kedah disetel ka nol. Payload ku kituna dugi ka 16 * 1024 - 1 bait.

Operasi encrypt / ngadekrip AEAD munggaran ngagunakeun nonce cacah mimitian ti 0. Sanggeus unggal operasi encrypt / ngadekrip, nonce ieu incremented ku hiji saolah-olah éta hiji integer saeutik-endian unsigned. Catet yén unggal chunk TCP ngalibatkeun dua operasi énkripsi / ngadekrip AEAD: hiji pikeun panjang payload, sareng hiji kanggo payload. Kituna unggal chunk naek nonce dua kali.

TCP

Aliran TCP énkripsi AEAD dimimitian ku uyah anu dihasilkeun sacara acak pikeun nurunkeun subkonci per-sesi, dituturkeun ku sajumlah sakumpulan énkripsi. Unggal sapotong boga struktur handap:

[panjang payload énkripsi][tag panjang][payload énkripsi][tag payload]

 

Payload panjang nyaéta 2-bait badag-endian unsigned integer capped dina 0x3FFF. Dua bit anu langkung luhur ditangtayungan sareng kedah disetel ka nol. Payload ku kituna dugi ka 16 * 1024 - 1 bait.

Operasi encrypt / ngadekrip AEAD munggaran ngagunakeun nonce cacah mimitian ti 0. Sanggeus unggal operasi encrypt / ngadekrip, nonce ieu incremented ku hiji saolah-olah éta hiji integer saeutik-endian unsigned. Catet yén unggal chunk TCP ngalibatkeun dua operasi énkripsi / ngadekrip AEAD: hiji pikeun panjang payload, sareng hiji kanggo payload. Kituna unggal chunk naek nonce dua kali.

Mimitian percobaan Gratis 5 dinten anjeun