Shadowsocks құжаттамасы

AEAD

AEAD Ассоциацияланған деректермен аутентификацияланған шифрлау дегенді білдіреді. AEAD шифрлары бір уақытта құпиялылықты, тұтастықты және түпнұсқалықты қамтамасыз етеді. Олар заманауи жабдықта тамаша өнімділік пен қуат тиімділігіне ие. Пайдаланушылар мүмкіндігінше AEAD шифрларын пайдалануы керек.

Келесі AEAD шифрлары ұсынылады. Үйлесімді Shadowsocks қолданбалары AEAD_CHACHA20_POLY1305 қолдауы керек. Аппараттық AES жеделдетуі бар құрылғыларға арналған енгізулер сонымен қатар AEAD_AES_128_GCM және AEAD_AES_256_GCM енгізуі керек.

 

 

 

Толық аты-жөніңіз

ат

Кілт өлшемі

Тұз мөлшері

Өлшемсіз

Тег өлшемі

AEAD_CHACHA20_POLY1305

chacha20-ietf-poly1305

32

32

12

16

AEAD_AES_256_GCM

aes-256-гсм

32

32

12

16

AEAD_AES_128_GCM

aes-128-гсм

16

16

12

16

Қараңыз IANA AEAD тізілімі атау схемасы мен сипаттамасы үшін.

Негізгі туынды

Негізгі кілт пайдаланушыдан тікелей енгізілуі немесе құпия сөзден жасалуы мүмкін.

HKDF_SHA1 құпия кілтті, құпия емес тұзды, ақпарат жолын қабылдайтын және кіріс құпия кілті әлсіз болса да криптографиялық тұрғыдан күшті ішкі кілтті шығаратын функция.

HKDF_SHA1(кілт, тұз, ақпарат) => ішкі кілт

Ақпарат жолы жасалған ішкі кілтті арнайы қолданба контекстіне байланыстырады. Біздің жағдайда бұл тырнақшасыз «ss-subkey» жолы болуы керек.

Біз HKDF_SHA1 арқылы алдын ала ортақ негізгі кілттен әрбір сеанс ішкі кілтін аламыз. Тұз алдын ала ортақ негізгі кілттің қызмет ету мерзімі ішінде бірегей болуы керек.

Аутентификацияланған шифрлау/шифрды шешу

AE_encrypt – құпия кілтті, құпия емес хабарламаны, хабарламаны қабылдайтын және шифрлық мәтін мен аутентификация тегін жасайтын функция. Nonce әрбір шақырудағы берілген кілт үшін бірегей болуы керек.

AE_encrypt(кілт, бір рет емес, хабарлама) => (шифрлық мәтін, тег)

 

AE_decrypt – құпия кілтті, құпия емес, шифрлық мәтінді, аутентификация тегін қабылдайтын және түпнұсқа хабарламаны шығаратын функция. Енгізудің кез келгені бұрмаланса, шифрды шешу сәтсіз болады.

AE_decrypt(кілт, бір емес, шифрленген мәтін, тег) => хабар

TCP

AEAD шифрланған TCP ағыны әрбір сеанс ішкі кілтін алу үшін кездейсоқ құрылған тұздан басталады, содан кейін шифрланған бөліктердің кез келген саны. Әрбір бөлік келесі құрылымға ие:

[шифрланған пайдалы жүк ұзындығы][ұзындық тегі][шифрланған пайдалы жүк][пайдалы жүк тегі]

 

Пайдалы жүк ұзындығы - 2x0FFF шегінде шектелген 3 байт үлкен-ендиандық таңбасыз бүтін сан. Жоғары екі бит сақталған және нөлге орнатылуы керек. Сондықтан пайдалы жүктеме 16*1024 – 1 байтпен шектеледі.

Бірінші AEAD шифрлау/шифрын шешу операциясы 0-ден басталатын санау ретін пайдаланады. Әрбір шифрлау/шифрды шешу әрекетінен кейін бейсаналық белгі қойылмаған кіші-енді бүтін сан сияқты бір ретке көбейтіледі. Әрбір TCP бөлігі екі AEAD шифрлау/шифрын шешу әрекетін қамтитынын ескеріңіз: біреуі пайдалы жүктеме ұзындығы үшін және екіншісі пайдалы жүктеме үшін. Сондықтан әрбір бөлік нонсентті екі есе арттырады.

TCP

AEAD шифрланған TCP ағыны әрбір сеанс ішкі кілтін алу үшін кездейсоқ құрылған тұздан басталады, содан кейін шифрланған бөліктердің кез келген саны. Әрбір бөлік келесі құрылымға ие:

[шифрланған пайдалы жүк ұзындығы][ұзындық тегі][шифрланған пайдалы жүк][пайдалы жүк тегі]

 

Пайдалы жүк ұзындығы - 2x0FFF шегінде шектелген 3 байт үлкен-ендиандық таңбасыз бүтін сан. Жоғары екі бит сақталған және нөлге орнатылуы керек. Сондықтан пайдалы жүктеме 16*1024 – 1 байтпен шектеледі.

Бірінші AEAD шифрлау/шифрын шешу операциясы 0-ден басталатын санау ретін пайдаланады. Әрбір шифрлау/шифрды шешу әрекетінен кейін бейсаналық белгі қойылмаған кіші-енді бүтін сан сияқты бір ретке көбейтіледі. Әрбір TCP бөлігі екі AEAD шифрлау/шифрын шешу әрекетін қамтитынын ескеріңіз: біреуі пайдалы жүктеме ұзындығы үшін және екіншісі пайдалы жүктеме үшін. Сондықтан әрбір бөлік нонсентті екі есе арттырады.

5 күндік тегін сынақ нұсқасын бастаңыз