Dokiman Shadowsocks
Navigasyon
AEAD
AEAD kanpe pou Ankouraje Otantifye ak Done Asosye. Chif AEAD an menm tan bay konfidansyalite, entegrite, ak otantisite. Yo gen pèfòmans ekselan ak efikasite pouvwa sou pyès ki nan konpitè modèn. Itilizatè yo ta dwe itilize chifreman AEAD chak fwa sa posib.
Yo rekòmande chifreman AEAD sa yo. Enplemantasyon Shadowsocks ki konfòme yo dwe sipòte AEAD_CHACHA20_POLY1305. Aplikasyon pou aparèy ak akselerasyon AES pyès ki nan konpitè yo ta dwe aplike tou AEAD_AES_128_GCM ak AEAD_AES_256_GCM.
Non | Alyas | Gwosè kle | Gwosè sèl | Nonce Size | tag Kantite moun ki |
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 |
Tanpri, al gade nan IANA AEAD rejis pou nonmen konplo ak spesifikasyon.
Derivasyon kle
Kle mèt la ka antre dirèkteman nan itilizatè a oswa pwodwi nan yon modpas.
HKDF_SHA1 se yon fonksyon ki pran yon kle sekrè, yon sèl ki pa sekrè, yon kòd enfòmasyon, epi ki pwodui yon sous-kle ki kriptografik fò menm si kle sekrè antre a fèb.
HKDF_SHA1(kle, sèl, info) => sous-kle
Chèn enfòmasyon an mare sous-kle ki pwodui a nan yon kontèks aplikasyon espesifik. Nan ka nou an, li dwe fisèl "ss-subkey" san guillemets.
Nou tire yon sous-kle pou chak sesyon ki soti nan yon kle mèt pre-pataje lè l sèvi avèk HKDF_SHA1. Sèl dwe inik nan tout lavi a nan pre-pataje kle mèt la.
Otantifye chifreman/dekripte
AE_encrypt se yon fonksyon ki pran yon kle sekrè, yon nonce ki pa sekrè, yon mesaj, epi ki pwodui tèks chifre ak yon tag otantifikasyon. Nonce dwe inik pou yon kle bay nan chak envokasyon.
AE_encrypt(kle, nonce, mesaj) => (ciphertext, tag)
AE_decrypt se yon fonksyon ki pran yon kle sekrè, nonce ki pa sekrè, tèks chifre, yon tag otantifikasyon, epi pwodui yon mesaj orijinal. Si nenpòt nan opinyon yo manyen, dechifre a ap echwe.
AE_decrypt(kle, nonce, ciphertext, tag) => mesaj
Tchp
Yon kouran TCP ki ankripte AEAD kòmanse ak yon sèl ki te pwodwi owaza pou tire sou-kle pou chak sesyon, ki te swiv pa nenpòt ki kantite fragman chiffres. Chak moso gen estrikti sa a:
[longè chaj kode] [longè tag] [chaj kode] [tag chaj kode]
Longè chaj la se yon nonb antye relatif 2-byte gwo-endian ki pa siyen ki limite nan 0x3FFF. De bit ki pi wo yo rezève epi yo dwe mete a zewo. Se poutèt sa Payload limite a sa sèlman 16 * 1024 - 1 bytes.
Premye operasyon ankripte/dekripte AEAD sèvi ak yon nonce konte ki kòmanse nan 0. Apre chak operasyon ankripte/decrypte, nonce a ogmante pa youn kòm si se te yon nonce nonce ki pa siyen. Remake byen ke chak moso TCP enplike de operasyon ankripte/dekripte AEAD: youn pou longè chaj la, ak youn pou chaj la. Se poutèt sa chak moso ogmante nonce a de fwa.
Tchp
Yon kouran TCP ki ankripte AEAD kòmanse ak yon sèl ki te pwodwi owaza pou tire sou-kle pou chak sesyon, ki te swiv pa nenpòt ki kantite fragman chiffres. Chak moso gen estrikti sa a:
[longè chaj kode] [longè tag] [chaj kode] [tag chaj kode]
Longè chaj la se yon nonb antye relatif 2-byte gwo-endian ki pa siyen ki limite nan 0x3FFF. De bit ki pi wo yo rezève epi yo dwe mete a zewo. Se poutèt sa Payload limite a sa sèlman 16 * 1024 - 1 bytes.
Premye operasyon ankripte/dekripte AEAD sèvi ak yon nonce konte ki kòmanse nan 0. Apre chak operasyon ankripte/decrypte, nonce a ogmante pa youn kòm si se te yon nonce nonce ki pa siyen. Remake byen ke chak moso TCP enplike de operasyon ankripte/dekripte AEAD: youn pou longè chaj la, ak youn pou chaj la. Se poutèt sa chak moso ogmante nonce a de fwa.