Belgekirina Shadowsocks
Navigation
AEAD
AEAD Ji bo Şîfrekirina Naskirî ya bi Daneyên Têkildar re radiweste. Şîfreyên AEAD bi hevdemî nepenî, yekitî û rastîniyê peyda dikin. Ew li ser hardware nûjen xwedan performansa hêja û karbidestiya hêzê ne. Bikarhêner dema ku gengaz be divê şîfreyên AEAD bikar bînin.
Şîfreyên AEAD yên jêrîn têne pêşniyar kirin. Pêdivî ye ku pêkanînên Shadowsocks yên lihevhatî piştgirî bidin AEAD_CHACHA20_POLY1305. Pêkanînên ji bo cîhazên bi leza AES-a hardware divê AEAD_AES_128_GCM û AEAD_AES_256_GCM jî bicîh bikin.
Nav | Navê dizî | Mezinahiya Key | Mezinahiya xwê | Nonce Size | Size 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 |
Ji kerema xwe re binivîse qeyda IANA AEAD ji bo nexşe û taybetmendiya navan.
Derxistina Key
Mifteya sereke dikare rasterast ji bikarhêner were têketin an ji şîfreyek were çêkirin.
HKDF_SHA1 fonksiyonek e ku mifteyek nepenî, xwêyek ne-veşartî, rêzek agahdarî digire û binkeyek ku ji hêla krîptografî ve bihêz be jî çêdike ku mifteya nepenî ya têketinê qels be jî.
HKDF_SHA1 (key, xwê, agahî) => binkeya
Rêza agahiyê binkeya çêkirî bi çarçoveyek serîlêdanê ya taybetî ve girêdide. Di rewşa me de, pêdivî ye ku ew rêzika "ss-subkey" bê quote be.
Em bi HKDF_SHA1-ê ji mifteyek sereke ya pêş-parvekirî binkeya her danişînê derdixin. Pêdivî ye ku xwê di tevahiya jiyana mifteya sereke ya pêş-parvekirî de bêhempa be.
Şîfrekirin / Deşîfrekirina Rastkirî
AE_encrypt fonksiyonek e ku mifteyek nepenî, nepeniyek nepenî, peyamek digire, û şîfretext û etîketek erêkirinê çêdike. Divê Nonce ji bo kilîtek diyarkirî di her bangekê de yekta be.
AE_şîfrekirin (kilît, neyek, peyam) => (şîfretext, tag)
AE_decrypt fonksiyonek e ku mifteyek nepenî, nepenîyek ne-veşartî, şîfretext, tagek erêkirinê digire û peyamek orîjînal çêdike. Ger yek ji têketinê were xerakirin, dê şîfrekirin têk nebe.
AE_deşîfre (kilît, nonce, şîfretext, tag) => peyam
TCP
Herikîna TCP-ya şîfrekirî ya AEAD bi xwêyek ku bi rengek rasthatî hatî hilberandin dest pê dike da ku binkeya her danişînê derxîne, li dûv her hejmarek perçeyên şîfrekirî. Her perçek xwedan strukturek jêrîn e:
[dirêjahiya barkirina şîfrekirî] [belgeya dirêj]]
Dirêjahiya bargiraniyê jimareyek 2-byte ya mezin-endî ya bê îmze ye ku bi 0x3FFF ve hatî girtin. Du bitsên bilind têne veqetandin û divê li ser sifir bêne danîn. Ji ber vê yekê bargiran bi 16 * 1024 - 1 bytes ve sînorkirî ye.
Operasyona şîfre/deşîfrekirina AEAD-ê ya ewil jimareyek jimartinê bikar tîne ku ji 0-yê dest pê dike. Piştî her operasiyona şîfre/deşîfrekirinê, nonce bi yekî zêde dibe mîna ku ew hejmareke hindik-endiyayî ya bênîşan be. Bala xwe bidinê ku her perçeyek TCP du operasyonên şîfre/deşîfrekirina AEAD-ê vedihewîne: yek ji bo dirêjahiya barkirinê, û yek jî ji bo barkirinê. Ji ber vê yekê her perçek du caran du caran zêde dike.
TCP
Herikîna TCP-ya şîfrekirî ya AEAD bi xwêyek ku bi rengek rasthatî hatî hilberandin dest pê dike da ku binkeya her danişînê derxîne, li dûv her hejmarek perçeyên şîfrekirî. Her perçek xwedan strukturek jêrîn e:
[dirêjahiya barkirina şîfrekirî] [belgeya dirêj]]
Dirêjahiya bargiraniyê jimareyek 2-byte ya mezin-endî ya bê îmze ye ku bi 0x3FFF ve hatî girtin. Du bitsên bilind têne veqetandin û divê li ser sifir bêne danîn. Ji ber vê yekê bargiran bi 16 * 1024 - 1 bytes ve sînorkirî ye.
Operasyona şîfre/deşîfrekirina AEAD-ê ya ewil jimareyek jimartinê bikar tîne ku ji 0-yê dest pê dike. Piştî her operasiyona şîfre/deşîfrekirinê, nonce bi yekî zêde dibe mîna ku ew hejmareke hindik-endiyayî ya bênîşan be. Bala xwe bidinê ku her perçeyek TCP du operasyonên şîfre/deşîfrekirina AEAD-ê vedihewîne: yek ji bo dirêjahiya barkirinê, û yek jî ji bo barkirinê. Ji ber vê yekê her perçek du caran du caran zêde dike.