Shadowsocks документација

АЕАД

АЕАД се залага за автентицирано шифрирање со поврзани податоци. AEAD шифрите истовремено обезбедуваат доверливост, интегритет и автентичност. Тие имаат одлични перформанси и енергетска ефикасност на модерен хардвер. Корисниците треба да користат AEAD шифри секогаш кога е можно.

Се препорачуваат следните AEAD шифри. Усогласените имплементации на Shadowsocks мора да поддржуваат AEAD_CHACHA20_POLY1305. Имплементациите за уреди со хардверско AES забрзување треба да ги имплементираат и AEAD_AES_128_GCM и AEAD_AES_256_GCM.

 

 

 

Име

алијас

Големина на клучот

Големина на сол

Nonce 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

Ве молиме погледнете IANA AEAD регистар за шема на именување и спецификација.

Изведување на клучот

Главниот клуч може да се внесе директно од корисникот или да се генерира од лозинка.

HKDF_SHA1 е функција која зема таен клуч, нетајна сол, инфо низа и произведува потклуч кој е криптографски силен дури и ако влезниот таен клуч е слаб.

HKDF_SHA1 (клуч, сол, информации) => потклуч

Низата за информации го врзува генерираниот потклуч за специфичен контекст на апликацијата. Во нашиот случај, тоа мора да биде низата „ss-subkey“ без наводници.

Изведуваме потклуч по сесија од претходно споделен главен клуч користејќи HKDF_SHA1. Солта мора да биде единствена во текот на целиот животен век на претходно споделениот главен клуч.

Автентицирано шифрирање/дешифрирање

AE_encrypt е функција која зема таен клуч, нескриена nonce, порака и произведува шифриран текст и ознака за автентикација. Nonce мора да биде единствен за даден клуч во секое повикување.

AE_шифрирај (клуч, нонс, порака) => (шифриран текст, ознака)

 

AE_decrypt е функција која зема таен клуч, нетаен нонс, шифриран текст, ознака за автентикација и произведува оригинална порака. Ако некој од влезовите е манипулиран, дешифрирањето нема да успее.

AE_decrypt (клуч, нонс, шифриран текст, ознака) => порака

TCP

АЕАД шифриран TCP поток започнува со случајно генерирана сол за да се изведе потклучот по сесија, проследен со кој било број на шифрирани парчиња. Секое парче ја има следната структура:

[шифрирана должина на носивост] [ознака за должина] [шифрирана носивост] ознака за носивост]

 

Должината на носивоста е 2-бајти непотпишан цел број со биг-ендијан ограничен на 0x3FFF. Повисоките два бита се резервирани и мора да бидат поставени на нула. Затоа, носивоста е ограничена на 16*1024 – 1 бајти.

Првата операција за шифрирање/дешифрирање AEAD користи броење нонче почнувајќи од 0. По секоја операција за шифрирање/дешифрирање, нонцето се зголемува за еден како да е неозначен мал-ендијански цел број. Забележете дека секое парче TCP вклучува две операции за шифрирање/дешифрирање на AEAD: една за должината на товарот и една за товарот. Затоа, секое парче ја зголемува нонсата двапати.

TCP

АЕАД шифриран TCP поток започнува со случајно генерирана сол за да се изведе потклучот по сесија, проследен со кој било број на шифрирани парчиња. Секое парче ја има следната структура:

[шифрирана должина на носивост] [ознака за должина] [шифрирана носивост] ознака за носивост]

 

Должината на носивоста е 2-бајти непотпишан цел број со биг-ендијан ограничен на 0x3FFF. Повисоките два бита се резервирани и мора да бидат поставени на нула. Затоа, носивоста е ограничена на 16*1024 – 1 бајти.

Првата операција за шифрирање/дешифрирање AEAD користи броење нонче почнувајќи од 0. По секоја операција за шифрирање/дешифрирање, нонцето се зголемува за еден како да е неозначен мал-ендијански цел број. Забележете дека секое парче TCP вклучува две операции за шифрирање/дешифрирање на AEAD: една за должината на товарот и една за товарот. Затоа, секое парче ја зголемува нонсата двапати.

Започнете го вашиот 5-дневен бесплатен пробен период