20 - Salsa20

20
Salsa round function.svg
Сальса ширек функциясы. Төрт параллель көшірме дөңгелек жасайды.
Жалпы
ДизайнерлерБернштейн Даниэль
Алғаш жарияланған2007 (2005 жылы жобаланған)[1]
ІзбасарларЧаЧа
БайланыстыРумба
СертификаттауeSTREAM портфолио
Шифр бөлшектері
Негізгі өлшемдер128 немесе 256 бит
Мемлекеттік мөлшері512 бит
ҚұрылымARX
Дөңгелек20
Жылдамдық3.91 cpb Intel Core 2 Duo-да[2]
Үздік көпшілік криптоанализ
2008 жылы криптоанализ 256 биттік құпия кілтті 2 қалпына келтіру үшін 20 айналымның 8-ін бұзады251 операцияларды қолдану, 231 негізгі ағымдық жұптар.[3]

20 және тығыз байланысты ЧаЧа болып табылады ағын шифрлары әзірлеген Бернштейн Даниэль. Salsa20, түпнұсқа шифры 2005 жылы жасалған, кейінірек ұсынылған eSTREAM Бернштейн. ChaCha - бұл 2008 жылы шыққан Salsa20 модификациясы. Диффузияны күшейтетін және кейбір архитектураларда өнімділікті арттыратын жаңа дөңгелек функция қолданылады.[4]

Екі шифр да а жалған кездейсоқ функция негізінде қосу-айналдыру-XOR (ARX) операциялары - 32 биттік қосу, разрядты қосу (XOR) және айналу операциялар. Негізгі функция 256- картасын бейнелейдібит кілт, 64 бит nonce және кілт ағынының 512 биттік блогына 64 биттік санауыш (128 биттік кілті бар Salsa нұсқасы да бар). Бұл Salsa20 мен ChaCha-ға әдеттегідей артықшылық береді, пайдаланушы тұрақты уақытта кілттік ағынның кез-келген позициясын тиімді іздей алады. Salsa20 шамамен 4-14 жылдамдықты ұсынады бір байттағы циклдар заманауи бағдарламалық жасақтамада x86 өңдеушілер,[5] және жабдықтың ақылға қонымды өнімділігі. Ол патенттелмеген, және Бернштейн бірнеше жазған қоғамдық домен жалпы сәулет үшін оңтайландырылған іске асырулар.[6]

Құрылым

Ішкіде шифр биттік қосуды қолданады ⊕ (эксклюзивті НЕМЕСЕ ), 32 биттік қосу мод 232 ⊞, және он алты 32 биттік сөзден тұратын ішкі қашықтыққа айналу операциялары (<<<). Тек пайдалану қосу-айналдыру-xor амалдары мүмкіндігін болдырмайды шабуылдарды белгілеу бағдарламалық қамтамасыздандыруда. Ішкі күй 4 × 4 матрица ретінде орналасқан он алты 32 биттік сөздерден тұрады.

0123
4567
891011
12131415

Бастапқы күйі тұрады   сегіз сөз кілт,   ағынның екі сөзі,   nonce екі сөз (мәні бойынша ағынның қосымша биттері) және   төрт тұрақты сөз:

Сальсаның бастапқы жағдайы20
«экспа»КілтКілтКілт
Кілт«3-ші»NonceNonce
Поз.Поз.«2»Кілт
КілтКілтКілт«te k»

Тұрақты сөздер ASCII-де «32 байтты к» кеңейтеді (яғни 4 сөз «экспа», «3-ші», «2-бай» және «те к»). Бұл а менің нөмірім жоқ. Salsa20-дағы негізгі операция - ширек кезең QR (a, b, c, d) төрт сөзден тұратын және төрт сөзден тұратын шығыс шығаратын:

b ^ = (a + d) <<< 7; c ^ = (b + a) <<< 9; d ^ = (c + b) <<< 13; a ^ = (d + c) <<< 18;

Тақ санды раундтар қолданылады QR (a, b, c, d) 4 × 4 матрицасындағы төрт бағанның әрқайсысына және жұп дөңгелектер оны төрт қатардың әрқайсысына қолданады. Екі дәйекті айналым (бағаналы және қатарлы) бірге екі айналым деп аталады:

// тақ дөңгелек QR (0, 4, 8, 12) // баған 1QR (5, 9, 13, 1) // баған 2QR (10, 14, 2, 6) // баған 3QR (15, 3, 7, 11) // 4-баған // Біркелкі дөңгелекQR (0, 1, 2, 3) // 1QR жол (5, 6, 7, 4) // 2QR жол (10, 11, 8, 9) // жол 3QR ( 15, 12, 13, 14) // 4-жол

Төменде C / C ++ тіліндегі енгізу көрсетіледі.

# қосу <stdint.h># ROTL (a, b) (((a) << (b)) | ((a) >> (32 - (b)))) анықтаңыз# QR анықтау (a, b, c, d) (b ^ = ROTL (a + d, 7), c ^ = ROTL (b + a, 9), d ^ = ROTL (c + b, 13), a ^ = ROTL (d + c, 18))# ДӨҢГЕЛДЕРДІ анықтау 20 жарамсыз salsa20_block(uint32_t шығу[16], uint32_t const жылы[16]){	int мен;	uint32_t х[16];	үшін (мен = 0; мен < 16; ++мен)		х[мен] = жылы[мен];	// 10 ілмек × 2 айналым / цикл = 20 айналым	үшін (мен = 0; мен < Дөңгелек; мен += 2) {		// тақ дөңгелек		QR(х[ 0], х[ 4], х[ 8], х[12]);	// 1-баған		QR(х[ 5], х[ 9], х[13], х[ 1]);	// 2-баған		QR(х[10], х[14], х[ 2], х[ 6]);	// 3-баған		QR(х[15], х[ 3], х[ 7], х[11]);	// 4-баған		// Тіпті дөңгелек		QR(х[ 0], х[ 1], х[ 2], х[ 3]);	// 1-жол		QR(х[ 5], х[ 6], х[ 7], х[ 4]);	// 2-жол		QR(х[10], х[11], х[ 8], х[ 9]);	// 3-жол		QR(х[15], х[12], х[13], х[14]);	// 4-жол	}	үшін (мен = 0; мен < 16; ++мен)		шығу[мен] = х[мен] + жылы[мен];}

Соңғы жолда аралас массив, сөздің түпнұсқа жиымына қосылып, оның 64 байтты кілт ағынының блогын алады. Бұл өте маңызды, өйткені араластыру раундтары өздігінен болады төңкерілетін. Басқа сөзбен айтқанда, кері операцияларды қолдану арқылы кілтпен бірге 4 × 4 матрицасы шығарылады. Аралас массивті түпнұсқаға енгізу кірісті қалпына келтіру мүмкін емес етеді. (Дәл осы әдіс хэш функцияларында кеңінен қолданылады MD4 арқылы SHA-2.)

Salsa20 өзінің кірісі бойынша 20 араластыруды орындайды.[1] Сонымен қатар, сәйкесінше 8 және 12 раундты қолданатын Salsa20 / 8 және Salsa20 / 12 дөңгелектерінің қысқартылған нұсқалары енгізілді. Бұл нұсқалар түпнұсқа Salsa20-ны толықтыру үшін, оны ауыстыру үшін емес, одан да жақсы орындау үшін енгізілген[1 ескерту] Salsa20-ге қарағанда eSTREAM эталондарында, сәйкесінше қауіпсіздік маржасы төмен.

192 биттік емес XSalsa20

2008 жылы Бернштейн Salsa20 нұсқасын 192 биттік несстермен XSalsa20 деп аталатын нұсқасын ұсынды.[7][8] XSalsa20 қауіпсіз, егер Salsa20 қауіпсіз болса, бірақ ұзақ жұмыс жасамау қажет болған қолданбаларға қолайлы. XSalsa20 кілтті және алғашқы 128 биттік nonce-ді Salsa20 бір блогына жібереді (соңғы қосылусыз, ол алынып тасталуы мүмкін немесе стандартты Salsa20 блогынан кейін шегерілуі мүмкін) және 256 бит шығысын стандарттың кілті ретінде пайдаланады Salsa20 несстің соңғы 64 битін және ағынның күйін қолданады. Нақтырақ айтсақ, кірістің құпия емес бөліктеріне сәйкес келетін 256 биттік өнім пайдаланылады: 0, 5, 10, 15, 6, 7, 8 және 9 индекстері.

Salsa20 таңдау eSTREAM

Salsa20 профиль 1 (бағдарламалық жасақтама) үшін 3 кезең дизайны ретінде таңдалды eSTREAM 2 кезеңнің соңында кез-келген «Профиль 1» алгоритмі бойынша дауыс берудің ең жоғары ұпайын алатын жоба.[9] Salsa20 бұрын профиль 1 (бағдарламалық жасақтама) үшін 2 кезеңнің фокустық дизайны ретінде және eSTREAM жобасы бойынша профиль 2 үшін 2 кезең (дизайн) ретінде таңдалған,[10] бірақ 2-профильге арналған 3-кезеңге өтпеді, өйткені eSTREAM бұл өте шектеулі аппараттық ортаға жақсы үміткер емес деп ойлады.[11]

Сальса криптоанализі20

2015 жылғы жағдай бойынша, Salsa20 / 12-ге немесе толық Salsa20 / 20-ға жарияланған шабуылдар жоқ; ең жақсы шабуыл белгілі[3] 12 немесе 20 раундтың 8 үзілісі.

2005 жылы Пол Кроули Salsa20 / 5-ке шабуыл уақыты туралы болжалды күрделілігі 2 болатыны туралы хабарлады165Бернштейннің «ең қызықты Salsa20 криптоанализі» үшін 1000 АҚШ доллары көлеміндегі сыйлығын жеңіп алды.[12] Бұл шабуыл және одан кейінгі барлық шабуылдар негізделген қысқартылған дифференциалды криптоанализ. 2006 жылы Фишер, Мейер, Бербейн, Биассе және Робшоу Salsa20 / 6-ға шабуыл уақыты туралы болжам жасады, олардың уақыты 2-ге тең болды.177, және Salsa20 / 7-ге қатысты кілт шабуылы, болжамды уақыт күрделілігі 2217.[13]

2007 жылы Цуноо т.б. 25-биттік құпия кілтті 2 қалпына келтіру үшін 20 айналымның 8-ін бұзатын Salsa20 криптоанализін жариялады.255 операцияларды қолдану, 211.37 негізгі ағымдық жұптар.[14] Алайда, бұл шабуыл қатал күш шабуылымен бәсекеге қабілетті емес сияқты.

2008 жылы Аумассон, Фишер, Хазаеи, Мейер және Речбергер уақыттың күрделілігі 2-ге тең Salsa20 / 7-ге қарсы криптаналитикалық шабуыл туралы хабарлады.153және олар Salsa20 / 8-ге қарсы алғашқы шабуыл туралы есептік уақыт күрделілігі 2 туралы хабарлады251. Бұл шабуыл кесілген дифференциалды ықтимал анықтау үшін ықтимал бейтарап кілттердің жаңа тұжырымдамасын қолданады. Шабуылды Salsa20 / 7-ді 128-биттік кілтпен бұзуға бейімдеуге болады.[3]

2012 жылы Аумассон және басқалардың шабуылы. Ши және басқалар жетілдірді. Salsa20 / 7-ге қарсы (128 биттік кілт) уақыт күрделілігі 2-ге дейін109 және Salsa20 / 8 (256 биттік кілт) 2-ге дейін250.[15]

2013 жылы Mouha және Preneel дәлелдер жариялады[16] Salsa20-дің 15 айналымы дифференциалды криптоанализден 128-биттік қауіпсіз болды. (Нақтырақ айтсақ, оның ықтималдығы 2-ден жоғары дифференциалды сипаттамасы жоқ−130, сондықтан дифференциалды криптоанализ 128-разрядты сарқылудан гөрі қиынырақ болады.)

ChaCha нұсқасы

ЧаЧа
ChaCha шифрының дөңгелек функциясы.svg
ChaCha тоқсандық функциясы. Төрт параллель көшірме дөңгелек жасайды.
Жалпы
ДизайнерлерБернштейн Даниэль
Алғаш жарияланған2008
Алады20
БайланыстыРумба
Шифр бөлшектері
Негізгі өлшемдер128 немесе 256 бит
Мемлекеттік мөлшері512 бит
ҚұрылымARX
Дөңгелек20
Жылдамдық3.95 cpb Intel Core 2 Duo-да[4]:2

2008 жылы Бернштейн жақын байланысты жариялады ЧаЧа бірдей немесе сәл жақсы көрсеткіштерге қол жеткізе отырып, бір айналымға диффузияны арттыруға бағытталған шифрлар отбасы.[17] Аумассон және т.б. қағаз ChaCha-ға шабуыл жасайды да, бір раунд азаяды: күрделілігі 2 ChaCha6 үшін 256 бит.139 және ChaCha7 күрделілігі 2248. 128 бит ChaCha6 2 ішінде107, бірақ шабуыл 128 разрядты ChaCha7 бұза алмайды деп мәлімдейді.[3]

Salsa20 сияқты ChaCha-ның бастапқы күйіне 128-биттік тұрақты, 256-биттік кілт, 64-биттік санауыш және 32-биттік сөздерден тұратын 4 × 4 матрица ретінде орналастырылған 64-биттік қосылмаған кіреді. Бірақ ChaCha кейбір сөздерді бастапқы күйінде қайта орналастырады:

ЧаЧаның бастапқы күйі
«экспа»«3-ші»«2»«te k»
КілтКілтКілтКілт
КілтКілтКілтКілт
Поз.Поз.NonceNonce

Тұрақтылық Salsa20-мен бірдей («32 байтты к» кеңейту). ChaCha Salsa20 ширек айналымының орнын басады QR (a, b, c, d) бірге

a + = b; d ^ = a; d <<< = 16; c + = d; b ^ = c; b <<< = 12; a + = b; d ^ = a; d <<< = 8; c + = d; b ^ = c; b <<< = 7;

Назар аударыңыз, бұл нұсқа әр сөзді екі рет жаңартады, ал Salsa20 тоқсанында әр сөз бір рет қана жаңартылады. Сонымен қатар, ChaCha ширек айналымы тез өзгереді. Орташа алғанда, Salsa20 1 кіріс битін өзгерткеннен кейін ширек айналым 8 шығыс битін өзгертеді, ал ChaCha - 12,5 шығыс битін өзгертеді.[4]

ChaCha ширек айналымы Salsa20 ширек айналымындағыдай қосылулардың, хорлардың және биттердің айналу санына тең, бірақ айналулардың екеуінің 8-ге көбейтілгендігі кейбір архитектураларда, соның ішінде x86-да оңтайландыруға мүмкіндік береді.[18] Сонымен қатар, тиімді форматты қолдау үшін енгізу пішімі қайта құрылды SSE Salsa20 үшін табылған іске асыруды оңтайландыру. Бағандар бойынша және қатарлар бойынша дөңгелектеудің орнына, олар бағандар бойынша және диагональдар бойымен орындалады.[4]:4 Salsa20 сияқты, ChaCha да он алты 32 биттік сөздерді 4 × 4 матрицасында орналастырады. Егер матрица элементтерін 0-ден 15-ке дейін индекстесек

0123
4567
891011
12131415

Сонда ChaCha-дағы екі айналым:

// тақ дөңгелекQR (0, 4, 8, 12) // бірінші баған QR (1, 5, 9, 13) // екінші бағанQR (2, 6, 10, 14) // 3-бағанQR (3, 7, 11, 15) // 4-баған // Тіпті дөңгелекQR (0, 5, 10, 15) // диагональ 1 (негізгі диагональ) QR (1, 6, 11, 12) // диагональ 2QR (2, 7, 8, 13) // диагональ 3QR (3, 4, 9, 14) // диагональ 4

ChaCha20 екі айналымның 10 қайталануын қолданады.[19] Төменде C / C ++ тіліндегі енгізу көрсетіледі.

# ROTL (a, b) (((a) << (b)) | ((a) >> (32 - (b)))) анықтаңыз# QR анықтау (a, b, c, d) (a + = b, d ^ = a, d = ROTL (d, 16), c + = d, b ^ = c, b = ROTL (b, 12), a + = b, d ^ = a, d = ROTL (d, 8), c + = d, b ^ = c, b = ROTL (b, 7))# ДӨҢГЕЛДЕРДІ анықтау 20 жарамсыз chacha_block(uint32_t шығу[16], uint32_t const жылы[16]){	int мен;	uint32_t х[16];	үшін (мен = 0; мен < 16; ++мен)			х[мен] = жылы[мен];	// 10 ілмек × 2 айналым / цикл = 20 айналым	үшін (мен = 0; мен < Дөңгелек; мен += 2) {		// тақ дөңгелек		QR(х[0], х[4], х[ 8], х[12]); // 0 баған		QR(х[1], х[5], х[ 9], х[13]); // 1-баған		QR(х[2], х[6], х[10], х[14]); // 2-баған		QR(х[3], х[7], х[11], х[15]); // 3-баған		// Тіпті дөңгелек		QR(х[0], х[5], х[10], х[15]); // диагональ 1 (негізгі диагональ)		QR(х[1], х[6], х[11], х[12]); // диагональ 2		QR(х[2], х[7], х[ 8], х[13]); // диагональ 3		QR(х[3], х[4], х[ 9], х[14]); // диагональ 4	}	үшін (мен = 0; мен < 16; ++мен)		шығу[мен] = х[мен] + жылы[мен];}

ChaCha - негізінің негізі BLAKE хэш функциясы, финалда NIST хэш-функциясының бәсекесі және BLAKE2 / 3 ізбасарлары одан да жоғары жылдамдықты реттеді. Ол сондай-ақ он алты 64 биттік сөздерді (1024 бит күй), сәйкесінше реттелген айналу константаларын қолдана отырып анықтайды.

XCaCha

Бернштейн жарияламаса да, XSalsa20 қауіпсіздігінің дәлелі аналогқа дейін кеңінен таралады XCaCha шифр. ChaCha кіріс блогын құру үшін кнопканы және nonce-нің алғашқы 128 битін (12-ден 15-ке дейінгі сөздермен) қолданыңыз, содан кейін блоктық операцияны орындаңыз (соңғы қосылуды алып тастаңыз). 0-3 және 12-15 шығыс сөздері (кірістің кілт емес сөздеріне сәйкес келетін сөздер) содан кейін кәдімгі ChaCha үшін қолданылатын кілтті құрайды (соңғы 64 бит нонс пен 64 бит блок есептегішімен).[20]

ChaCha20 қабылдау

Google Бернштейндікімен бірге ChaCha20 таңдап алды Политика 1305 ауыстыру ретінде хабардың аутентификация коды RC4 жылы TLS Интернет қауіпсіздігі үшін қолданылады.[21] Google-дің қауіпсіздігі HTTPS (TLS / SSL арасындағы трафик Chrome браузер қосулы Android телефондар мен Google веб-сайттары.[22]

Google TLS үшін қабылдағаннан кейін көп ұзамай ChaCha20 және Poly1305 алгоритмдері де жаңа қолданылды [email protected] кіру OpenSSH.[23][24] Кейіннен бұл OpenSSH-ке тәуелділіктен аулақ болуға мүмкіндік берді OpenSSL, компиляция уақыты опциясы арқылы.[25]

ChaCha20 сонымен қатар қолданылады arc4random кездейсоқ сандар генераторы FreeBSD[26], OpenBSD[27], және NetBSD[28] сынған орнына, операциялық жүйелер RC4 және DragonFly BSD[29] үшін CSPRNG ядроның ішкі бағдарламасы.[30][31] 4.8 нұсқасынан бастап Linux ядросы ChaCha20 алгоритмін блоктан босату үшін деректер жасау үшін қолданады / dev / urandom құрылғы.[32][33][34]

ChaCha20-ны енгізу сілтемесі жарияланған RFC  7539. The IETF Бернштейннің жарияланған алгоритмін 64 биттік емес және 64 биттік блокты санауышты 96 биттік емес және 32 биттік санауышқа өзгерту арқылы өзгерту;[35] Алгоритм өзгертілген кезде атау өзгертілмеген, өйткені ол криптографиялық тұрғыдан маңызды емес (екеуі де криптографтың 128-биттік нон деп білетінін құрайды), бірақ интерфейстің өзгеруі әзірлеушілер үшін шатасудың себебі болуы мүмкін. Блок есептегіші қысқартылғандықтан, IETF нұсқасымен қауіпсіз шифрланатын хабарламаның максималды ұзындығы 2 құрайды32 64 байттан тұратын блоктар (256GiB ). Бұл жеткіліксіз қосымшалар үшін, мысалы, файлды немесе дискіні шифрлау, RFC  7539 64-биттік емес алгоритмнің бастапқы алгоритмін қолдануды ұсынады.

ChaCha20 қолдану IKE және IPsec стандарттау үшін ұсынылған RFC  7634. Оны TLS-де қолдануды ұсынылған стандарттау келесі түрде жарияланады RFC  7905.

ChaCha20 әдетте кең таралғаннан гөрі жақсы өнімділікті ұсынады Кеңейтілген шифрлау стандарты (AES) процессоры AES үдеуін сипаттамайтын жүйелердегі алгоритм (мысалы AES нұсқаулар жинағы немесе x86 процессорлары үшін) немесе бағдарламалық жасақтама оған қолдау көрсетпейтін болса. Нәтижесінде, ChaCha20 кейде белгілі бір пайдалану жағдайларында AES-тен гөрі артық көріледі мобильді құрылғылар, негізінен қолданады ҚОЛ негізделген процессорлар.[36][37]

2018 жылы, RFC 7539 ескірген RFC  8439.[38]

ChaCha20 - тек қана қолданылатын алгоритм WireGuard VPN жүйесі, 1 протокол нұсқасы бойынша.[39]

Сондай-ақ қараңыз

  • Дақ - NSA әзірлеген add-rotate-xor шифры

Ескертулер

  1. ^ Шығарманың көп бөлігі қайталанатын айналымдарды орындаудан тұратындықтан, айналым саны қойылымға кері пропорционалды. Яғни, айналымдар санын екі есеге азайту өнімділікті шамамен екі есеге арттырады. Қысқартылған нұсқалар тезірек болады.

Әдебиеттер тізімі

  1. ^ а б Дэниел Дж. Бернштейн (2007-12-24). «Salsa20 ағындық шифрлар отбасы» (PDF). Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  2. ^ Даниэл Дж. Бернштейн (2013-05-16). «Salsa 20 жылдамдығы; Salsa20 бағдарламалық жасақтамасы».
  3. ^ а б в г. Жан-Филипп Аумассон, Саймон Фишер, Шахрам Хазаеи, Вилли Мейер және Кристиан Речбергер (2008-03-14). «Латын билерінің жаңа ерекшеліктері» (PDF). Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)CS1 maint: авторлар параметрін қолданады (сілтеме)
  4. ^ а б в г. Бернштейн, Даниэль (28 қаңтар 2008), ChaCha, Salsa20 нұсқасы (PDF), алынды 2018-06-03
  5. ^ Даниэл Дж. Бернштейн (2013-05-16). «Snuffle 2005: Salsa20 шифрлау функциясы».
  6. ^ «Salsa20: бағдарламалық жасақтама жылдамдығы». 2007-05-11.
  7. ^ Бернштейн Даниэль. «Salsa20 nonce кеңейту» (PDF). Алынған 2017-08-22.
  8. ^ «Salsa20 / 12 ECRYPT II беті». Алынған 2017-08-22.
  9. ^ «ESTREAM жобасы: 2 кезеңнің аяқталуы». eSTREAM. 2008-04-29.
  10. ^ Hongjun Wu (2007-03-30). «eSTREAM 3 фазасы: 1 кезеңнің аяқталуы». eSTREAM.
  11. ^ «eSTREAM: екінші кезеңнің аяқталуы туралы қысқаша есеп» (PDF). eSTREAM. 2007-03-26.
  12. ^ Пол Кроули (2006-02-09). «Salsa20-нің бес айналымының қысқартылған дифференциалды криптоанализі».
  13. ^ Саймон Фишер, Вилли Мейер, Ком Бербен, Жан-Франсуа Биассе, Робшоу (2006). «Salsa20 және TSC-4 eSTREAM үміткерлеріндегі кездейсоқтық емес». Криптологиядағы прогресс - INDOCRYPT 2006 ж. Индокрипт 2006 ж. Информатика пәнінен дәрістер. 4329. 2-16 бет. CiteSeerX  10.1.1.121.7248. дои:10.1007/11941378_2. ISBN  978-3-540-49767-7.CS1 maint: авторлар параметрін қолданады (сілтеме)
  14. ^ Юкиясу Цуноо, Теруо Сайто, Хироясу Кубо, Томоясу Сузаки және Хироки Накашима (2007-01-02). «Salsa20 / 8 дифференциалды криптоанализі» (PDF). Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)CS1 maint: авторлар параметрін қолданады (сілтеме)
  15. ^ Чжэнцин Ши, Бин Чжан, Дэнгуо Фэн, Вэнлинг Ву (2012). «Salsa20 және ChaCha-ға қысқартылған қалпына келтіруге арналған негізгі шабуылдар». Ақпараттық қауіпсіздік және криптология - ICISC 2012 ж. ICISC'12 Ақпараттық қауіпсіздік және криптология бойынша 15-ші Халықаралық конференция материалдары. Информатика пәнінен дәрістер. 7839. 337–351 бет. дои:10.1007/978-3-642-37682-5_24. ISBN  978-3-642-37681-8.CS1 maint: авторлар параметрін қолданады (сілтеме)
  16. ^ Ники Муха; Bart Preneel (2013). «ARX үшін оңтайлы дифференциалды сипаттамаларды іздеу: Salsa20-ға қолдану» (PDF). Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  17. ^ Даниэл Дж. Бернштейн (2008-04-25). «ChaCha ағынды шифрлар отбасы».
  18. ^ Невес, Сэмюэль (2009-10-07), Intel процессорларына арналған ChaCha жылдамырақ енгізілімдері, алынды 2016-09-07, осы тұрақтылардың екеуі 8-ге еселік; бұл Core2 және кейінгі Intel процессорларында 1 команданы айналдыруға мүмкіндік береді pshufb нұсқаулық
  19. ^ Y. Nir (Check Point), A. Langley (Google Inc.) (мамыр 2015). «IETF хаттамаларына арналған ChaCha20 және Poly1305: RFC 7539».CS1 maint: авторлар параметрін қолданады (сілтеме)
  20. ^ Арчишевский, Скотт. «XChaCha: eXtended-nonce ChaCha және AEAD_XChaCha20_Poly1305». tools.ietf.org.
  21. ^ А. Лэнгли, В. Чанг, Н. Маврогианнопулос, Дж. Стромбергсон, С. Йозефссон (2015-12-16). «ChaCha20-Poly1305 шифрлық сюиталары көлік қабатын қорғауға арналған (TLS)». Интернет жобасы.CS1 maint: авторлар параметрін қолданады (сілтеме)
  22. ^ «Google крипто-шифрларды OpenSSL-де ауыстырады». Ақпараттық қауіпсіздік. 2014-04-25. Архивтелген түпнұсқа 2018-11-07.
  23. ^ Миллер, Дэмьен (2016-05-03). «ssh / PROTOCOL.chacha20poly1305». Супер пайдаланушының BSD кросс-анықтамасы: PROTOCOL.chacha20poly1305. Алынған 2016-09-07.
  24. ^ Муренин, Константин А. (2013-12-11). Белгісіз Ламер (ред.) «OpenSSH жаңа шифрға ие - Chacha20-poly1305 - Д.Д.Бернштейннен». Slashdot. Алынған 2016-09-07.
  25. ^ Муренин, Константин А. (2014-04-30). Soulskill (ред.) «OpenSSH бұдан былай OpenSSL-ге тәуелді болмауы керек». Slashdot. Алынған 2016-09-07.
  26. ^ «317015 нұсқасы». 2017-04-16. Алынған 2018-03-16. Ядро ішіндегі қауіпсіз кездейсоқ сандарды құрудың RC4 алгоритмін Chacha20-мен ауыстырыңыз
  27. ^ басқарушы (Филипп Гюнтер), ред. (2015-09-13). «libc / crypt / arc4random.c». Супер пайдаланушының BSD кросс-сілтемесі: arc4random.c. Алынған 2016-09-07. ChaCha негізіндегі кездейсоқ сандар генераторы OpenBSD үшін.
  28. ^ риастрадх (Тейлор Кэмпбелл), ред. (2016-03-25). «libc / gen / arc4random.c». Супер пайдаланушының BSD кросс-сілтемесі: arc4random.c. Алынған 2016-09-07. Legends arc4random (3) API OpenBSD-ден ChaCha20 PRF көмегімен қайта жаңартылған, әр ағын күйінде.
  29. ^ «kern / subr_csprng.c». Супер пайдаланушының BSD кросс-сілтемесі: subr_csprng.c. 2015-11-04. Алынған 2016-09-07. chacha_encrypt_bytes
  30. ^ «ChaCha пайдалану және қолдану». 2016-09-07. Алынған 2016-09-07.
  31. ^ «arc4random (3)». NetBSD нұсқаулық беттері. 2014-11-16. Алынған 2016-09-07.
  32. ^ Корбет, Джонатан. «Ауыстыру / dev / urandom». Linux апталық жаңалықтары. Алынған 2016-09-20.
  33. ^ «Git.kernel.org/pub/scm/linux/kernel/git/tytso/random of 'random_for_linus' тегін біріктіру». Linux ядросының бастапқы ағашы. Алынған 2016-09-20. кездейсоқ: бөгетсіз бассейнді Chacha20 негізіндегі CRNG ауыстырыңыз
  34. ^ Майкл Ларабел (2016-07-25). «/ dev / random Linux үшін жақсартуларды қарау 4.8». Phoronix. Алынған 2016-10-03.
  35. ^ «IETF хаттамаларына арналған ChaCha20 және Poly1305» (PDF). Алынған 2017-08-07. Кәдімгі ChaCha-дан өзгертулер. Nonce: блоктың реттік нөмірі бөлінуі 64: 64-тен 96:32 дейін өзгертілді
  36. ^ «AES орнына ChaCha20 қолданудың тартымдылығы қандай?». Криптография Stack Exchange. 2016-04-12.
  37. ^ «AES-NI SSL өнімділігін зерттеу @ Calomel.org».
  38. ^ Басшысы RFC 7539.
  39. ^ «Хаттама және криптография». WireGuard. Джейсон А. Доненфельд. Алынған 4 шілде 2018.

Сыртқы сілтемелер