Shadowsocks belgeleri

AEAD

AEAD İlişkili Verilerle Doğrulanmış Şifreleme anlamına gelir. AEAD şifreleri aynı anda gizlilik, bütünlük ve özgünlük sağlar. Modern donanımda mükemmel performansa ve güç verimliliğine sahiptirler. Kullanıcılar mümkün olduğunda AEAD şifrelerini kullanmalıdır.

Aşağıdaki AEAD şifreleri önerilir. Uyumlu Shadowsocks uygulamaları, AEAD_CHACHA20_POLY1305'i desteklemelidir. Donanım AES hızlandırmalı cihazlara yönelik uygulamalar ayrıca AEAD_AES_128_GCM ve AEAD_AES_256_GCM'yi de uygulamalıdır.

 

 

 

İsim

Takma ad

Anahtar Boyutu

Tuz Ölçüsü

Nonce Boyut

Etiket boyutu

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

Bakın IANA AEAD kaydı adlandırma şeması ve özellikleri için.

Anahtar Türetme

Ana anahtar, doğrudan kullanıcıdan girilebilir veya bir paroladan oluşturulabilir.

HKDF_SHA1 gizli bir anahtar, gizli olmayan bir salt, bir bilgi dizesi alan ve giriş gizli anahtarı zayıf olsa bile kriptografik olarak güçlü bir alt anahtar üreten bir işlevdir.

HKDF_SHA1(anahtar, tuz, bilgi) => alt anahtar

Bilgi dizesi, oluşturulan alt anahtarı belirli bir uygulama içeriğine bağlar. Bizim durumumuzda, tırnak işaretleri olmadan “ss-subkey” dizisi olmalıdır.

HKDF_SHA1 kullanarak önceden paylaşılan bir ana anahtardan oturum başına bir alt anahtar türetiyoruz. Salt, önceden paylaşılan ana anahtarın tüm ömrü boyunca benzersiz olmalıdır.

Kimliği Doğrulanmış Şifreleme/Şifre Çözme

AE_encrypt, gizli bir anahtar, gizli olmayan bir nonce, bir mesaj alan ve şifreli metin ve bir kimlik doğrulama etiketi üreten bir işlevdir. Nonce, her çağrıda belirli bir anahtar için benzersiz olmalıdır.

AE_encrypt(anahtar, nonce, mesaj) => (şifreli metin, etiket)

 

AE_decrypt, gizli bir anahtar, gizli olmayan nonce, şifreli metin, bir kimlik doğrulama etiketi alan ve orijinal bir mesaj üreten bir işlevdir. Girişlerden herhangi biri kurcalanırsa, şifre çözme başarısız olur.

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

TCP

AEAD şifreli bir TCP akışı, oturum başına alt anahtarı türetmek için rastgele oluşturulmuş bir salt ile başlar ve ardından herhangi bir sayıda şifrelenmiş yığın gelir. Her yığın aşağıdaki yapıya sahiptir:

[şifreli yük uzunluğu][uzunluk etiketi][şifreli yük][yük etiketi]

 

Yük uzunluğu, 2x0FFF ile sınırlandırılmış 3 baytlık bir big-endian işaretsiz tamsayıdır. Daha yüksek olan iki bit ayrılmıştır ve sıfıra ayarlanmalıdır. Yük bu nedenle 16*1024 – 1 bayt ile sınırlıdır.

İlk AEAD şifreleme/şifre çözme işlemi, 0'dan başlayan bir nonce sayımı kullanır. Her şifreleme/şifre çözme işleminden sonra, nonce, sanki işaretsiz bir küçük endian tamsayıymış gibi bir artırılır. Her TCP yığınının iki AEAD şifreleme/şifre çözme işlemi içerdiğini unutmayın: biri yük uzunluğu için ve diğeri yük için. Bu nedenle, her bir yığın no'yu iki kez artırır.

TCP

AEAD şifreli bir TCP akışı, oturum başına alt anahtarı türetmek için rastgele oluşturulmuş bir salt ile başlar ve ardından herhangi bir sayıda şifrelenmiş yığın gelir. Her yığın aşağıdaki yapıya sahiptir:

[şifreli yük uzunluğu][uzunluk etiketi][şifreli yük][yük etiketi]

 

Yük uzunluğu, 2x0FFF ile sınırlandırılmış 3 baytlık bir big-endian işaretsiz tamsayıdır. Daha yüksek olan iki bit ayrılmıştır ve sıfıra ayarlanmalıdır. Yük bu nedenle 16*1024 – 1 bayt ile sınırlıdır.

İlk AEAD şifreleme/şifre çözme işlemi, 0'dan başlayan bir nonce sayımı kullanır. Her şifreleme/şifre çözme işleminden sonra, nonce, sanki işaretsiz bir küçük endian tamsayıymış gibi bir artırılır. Her TCP yığınının iki AEAD şifreleme/şifre çözme işlemi içerdiğini unutmayın: biri yük uzunluğu için ve diğeri yük için. Bu nedenle, her bir yığın no'yu iki kez artırır.

5 günlük Ücretsiz denemenizi başlatın