Nā palapala Shadowsocks

AEAD

AEAD kū no ka Authenticated Encryption with Associated Data. Hāʻawi nā ciphers AEAD i ka hūnā, ka pono, a me ka ʻoiaʻiʻo. Loaʻa iā lākou ka hana maikaʻi a me ka hoʻoikaika mana ma nā lako hana hou. Pono nā mea hoʻohana e hoʻohana i nā ciphers AEAD inā hiki.

Manaʻo ʻia kēia mau ciphers AEAD. Pono nā hoʻokō Shadowsocks e kākoʻo iā AEAD_CHACHA20_POLY1305. Pono e hoʻokō ʻia nā mea hana me ka wikiwiki AES lako AEAD_AES_128_GCM a me AEAD_AES_256_GCM.

 

 

 

inoa

Alia

Nui Ki

Ka nui o ka paakai

Nonce Size

Tag Size

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

E nānā iā IANA AEAD kakau no ka papa inoa a me ka kikoʻī.

Ka Hoʻopuka Kiʻi

Hiki ke hoʻokomo pololei ʻia ke kī kumu mai ka mea hoʻohana a i hana ʻia mai kahi ʻōlelo huna.

HKDF_SHA1 He hana ia e lawe ai i ke kī huna, ka paʻakai huna ʻole, ke kaula ʻike, a hoʻopuka i kahi kī liʻiliʻi ikaika i ka cryptographically inā nāwaliwali ke kī huna hoʻokomo.

HKDF_SHA1(kī, paʻakai, ʻike) => subkey

Hoʻopili ke kaula ʻike i ka subkey i hana ʻia i kahi pōʻaiapili noi. I kā mākou hihia, pono ʻo ia ka string "ss-subkey" me ka ʻole o nā huaʻōlelo.

Loaʻa iā mākou kahi kī liʻiliʻi no kēlā me kēia kau mai kahi kī nui i kaʻana like me ka hoʻohana ʻana iā HKDF_SHA1. Pono ʻokoʻa ka paʻakai ma ke ola holoʻokoʻa o ke kī kumu mua.

Hoʻopaʻa ʻia/Decryption

ʻO AE_encrypt kahi hana e lawe ai i kahi kī huna, kahi huna huna ʻole, kahi memo, a hana i ka ciphertext a me kahi hōʻailona hōʻoia. Pono ʻokoʻa ʻo Nonce no kahi kī i hāʻawi ʻia i kēlā me kēia pule.

AE_encrypt(kī, nonce, memo) => (ciphertext, tag)

 

ʻO AE_decrypt kahi hana e lawe ai i kahi kī huna, nonce huna ʻole, ciphertext, kahi hōʻailona hōʻoia, a hoʻopuka i kahi leka kumu. Inā hoʻopili ʻia kekahi o nā mea hoʻokomo, e hāʻule ka decryption.

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

TCP

Hoʻomaka ʻia kahi kahawai TCP i hoʻopili ʻia me AEAD me kahi paʻakai i hana ʻole ʻia e kiʻi i ka subkey no kēlā me kēia kau, a ukali ʻia e kekahi helu o nā ʻāpana i hoʻopili ʻia. Loaʻa i kēlā me kēia puʻupuʻu ke ʻano penei:

[ka lōʻihi o ka uku i hoʻopili ʻia][tag ka lōʻihi]

 

ʻO ka lōʻihi o ka uku he 2-byte big-endian unsigned integer i hoʻopaʻa ʻia ma 0x3FFF. Ua mālama ʻia nā ʻāpana kiʻekiʻe ʻelua a pono e hoʻonohonoho ʻia i ka ʻole. No laila ua kaupalena ʻia ka uku i ka 16*1024 - 1 bytes.

Hoʻohana ka hana hoʻopunipuni/decrypt mua AEAD i ka helu nonce e hoʻomaka ana mai ka 0. Ma hope o kēlā me kēia hana hoʻopunipuni/decrypt, hoʻonui ʻia ka nonce e kekahi me he mea lā he integer liʻiliʻi-endian ʻole. E hoʻomaopopo i kēlā me kēia ʻāpana TCP e pili ana i ʻelua mau hana hoʻopunipuni AEAD: hoʻokahi no ka lōʻihi o ka uku, a hoʻokahi no ka uku. No laila, hoʻonui kēlā me kēia puʻupuʻu i ʻelua manawa.

TCP

Hoʻomaka ʻia kahi kahawai TCP i hoʻopili ʻia me AEAD me kahi paʻakai i hana ʻole ʻia e kiʻi i ka subkey no kēlā me kēia kau, a ukali ʻia e kekahi helu o nā ʻāpana i hoʻopili ʻia. Loaʻa i kēlā me kēia puʻupuʻu ke ʻano penei:

[ka lōʻihi o ka uku i hoʻopili ʻia][tag ka lōʻihi]

 

ʻO ka lōʻihi o ka uku he 2-byte big-endian unsigned integer i hoʻopaʻa ʻia ma 0x3FFF. Ua mālama ʻia nā ʻāpana kiʻekiʻe ʻelua a pono e hoʻonohonoho ʻia i ka ʻole. No laila ua kaupalena ʻia ka uku i ka 16*1024 - 1 bytes.

Hoʻohana ka hana hoʻopunipuni/decrypt mua AEAD i ka helu nonce e hoʻomaka ana mai ka 0. Ma hope o kēlā me kēia hana hoʻopunipuni/decrypt, hoʻonui ʻia ka nonce e kekahi me he mea lā he integer liʻiliʻi-endian ʻole. E hoʻomaopopo i kēlā me kēia ʻāpana TCP e pili ana i ʻelua mau hana hoʻopunipuni AEAD: hoʻokahi no ka lōʻihi o ka uku, a hoʻokahi no ka uku. No laila, hoʻonui kēlā me kēia puʻupuʻu i ʻelua manawa.

E hoʻomaka i kāu hoʻāʻo manuahi 5 lā