Shadowsocks pepa aloaia

AEAD

AEAD o lo'o fa'atusaina mo le Fa'amaonia Fa'amaonia ma Fa'amatalaga Fa'atasi. AEAD ciphers e tu'uina atu i le taimi e tasi le agatapuia, fa'amaoni, ma le fa'amaoni. O lo'o i ai a latou fa'atinoga lelei ma le fa'aogaina o le malosi i mea fa'aonaponei. E tatau i tagata fa'aoga ona fa'aoga AEAD ciphers pe a mafai.

O fa'ailoga AEAD nei e fautuaina. O fa'atinoga o le Shadowsocks e tatau ona lagolagoina AEAD_CHACHA20_POLY1305. Fa'atinoga mo masini e iai meafaigaluega AES fa'avavevave e tatau fo'i ona fa'atino AEAD_AES_128_GCM ma AEAD_AES_256_GCM.

 

 

 

igoa

igoa pepelo

Tele Ki

Tele masima

Nonce Size

pine tele

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

Faamolemole silasila i IANA AEAD resitala mo le fa'aigoaina o polokalame ma fa'amatalaga.

Fa'afuaaga Autu

O le ki matai e mafai ona tu'u sa'o mai le tagata fa'aoga pe fa'atupu mai se fa'aupuga.

HKDF_SHA1 o se galuega e ave ai se ki faalilolilo, se masima e le faalilolilo, se manoa faʻamatalaga, ma maua ai se subkey e malosi faʻataʻitaʻi e tusa lava pe vaivai le ki faalilolilo ulufale.

HKDF_SHA1(ki, masima, fa'amatalaga) => subkey

O le manoa fa'amatalaga e fusifusia ai le so'oga fa'atupu i se fa'amatalaga fa'atatau. I la matou tulaga, e tatau ona avea ma manoa "ss-subkey" e aunoa ma ni upusii.

Matou te maua se subkey ta'itasi mai se ki matua fa'asoa muamua e fa'aaoga ai le HKDF_SHA1. E tatau ona tulaga ese le masima i le olaga atoa o le ki matua fa'asoa muamua.

Fa'amaonia Fa'ailoga/Decryption

AE_encrypt o se galuega e manaʻomia ai se ki faalilolilo, se mea e le faalilolilo, se feʻau, ma maua ai le ciphertext ma se faʻamaoniga faʻamaonia. O le Nonce e tatau ona tulaga ese mo se ki e tu'uina atu i talosaga ta'itasi.

AE_encrypt(ki, leai, fe'au) => (ciphertext, tag)

 

AE_decrypt o se galuega e ave ai se ki faalilolilo, leai se mea lilo, faʻamatalaga, se pine faʻamaonia, ma maua ai se feʻau muamua. Afai e iai se mea e fa'aogaina e fa'afefeteina, o le a fa'aletonu le decryption.

AE_decrypt(key, nonce, ciphertext, tag) => feʻau

TCP

O le AEAD encrypted TCP stream e amata i se masima fa'atupu fa'afuase'i e maua mai ai le subkey ta'itasi, sosoo ai ma so'o se numera o pusi fa'ailoga. O pusa taʻitasi e iai lona faʻatulagaga:

[fa'ailogaina le umi o le uta [fa'ailoga umi][fa'ailoga le uta fa'ailoga][tag fa'ailoga]

 

Ole umi ole uta ole 2-byte big-endian unsigned integer fa'apipi'i ile 0x3FFF. O pito maualuga e lua o loʻo faʻaagaga ma e tatau ona seti i le zero. O lea la e fa'atapula'aina le uta i le 16*1024 - 1 bytes.

O le fa'ailoga muamua a le AEAD e fa'aaoga ai le numera nonce e amata mai i le 0. A mae'a ta'itasi encrypt/decrypt fa'agaioiga, o le nonce e fa'aopoopoina e le tasi e pei o se numera itiiti-endian e le'i sainia. Manatua o pusa TCP taʻitasi e aofia ai le lua AEAD encrypt/decrypt faagaioiga: tasi mo le umi o le uta, ma le tasi mo le uta. O le mea lea e fa'aopoopoina fa'aluaina e pusi ta'itasi le nonce.

TCP

O le AEAD encrypted TCP stream e amata i se masima fa'atupu fa'afuase'i e maua mai ai le subkey ta'itasi, sosoo ai ma so'o se numera o pusi fa'ailoga. O pusa taʻitasi e iai lona faʻatulagaga:

[fa'ailogaina le umi o le uta [fa'ailoga umi][fa'ailoga le uta fa'ailoga][tag fa'ailoga]

 

Ole umi ole uta ole 2-byte big-endian unsigned integer fa'apipi'i ile 0x3FFF. O pito maualuga e lua o loʻo faʻaagaga ma e tatau ona seti i le zero. O lea la e fa'atapula'aina le uta i le 16*1024 - 1 bytes.

O le fa'ailoga muamua a le AEAD e fa'aaoga ai le numera nonce e amata mai i le 0. A mae'a ta'itasi encrypt/decrypt fa'agaioiga, o le nonce e fa'aopoopoina e le tasi e pei o se numera itiiti-endian e le'i sainia. Manatua o pusa TCP taʻitasi e aofia ai le lua AEAD encrypt/decrypt faagaioiga: tasi mo le umi o le uta, ma le tasi mo le uta. O le mea lea e fa'aopoopoina fa'aluaina e pusi ta'itasi le nonce.

Amata lau su'ega e 5 aso e leai se totogi