scrypt (читається ес-крипт) — адаптивна криптографічна функція формування ключа на основі пароля, створена офіцером безпеки FreeBSD Коліном Персивалем для системи зберігання резервних копій Tarsnap. Функція створена таким чином, щоб ускладнити атаку перебором за допомогою ПЛІС. Для її обчислення потрібний значний обсяг пам'яті з довільним доступом. 17 вересня 2012 року алгоритм scrypt був опублікований IETF у вигляді , планується його внесення в RFC. Використовується scrypt, наприклад, в якості доказу виконаної роботи в криптовалюті Litecoin.
Засновані на паролі функції формування ключа (англ. password-based key derivation function, PBKDF) зазвичай розробляються таким чином, щоб вимагати відносно великий час обчислення (за порядком величини — сотні мілісекунд). При використанні легальним користувачам потрібно обчислити подібну функцію один раз (наприклад при аутентифікації) і такий час допустимий. Але при проведенні атаки повного перебору атакуючому потрібно зробити мільярди обчислень функції і її обчислювальна складність робить атаку повільнішою і дорожчою.
Однак перші функції PBKDF (наприклад PBKDF2, розроблена RSA Laboratories) обчислюються порівняно швидко, і їх перебір може бути ефективно реалізований на спеціалізованому обладнанні (FPGA або ASIC). Така реалізація дозволяє запускати масштабні паралельні атаки перебору грубою силою, наприклад, з обчисленням сотень значень функції в кожній мікросхемі FPGA.
Функція scrypt розроблялася з метою ускладнення апаратних реалізацій шляхом збільшення кількості ресурсів, необхідних для обчислення. Даний алгоритм використовує значну кількість оперативної пам'яті (пам'яті з довільним доступом) порівняно з іншими PBKDF. Пам'ять у scrypt використовується для зберігання великого вектора псевдовипадкових бітових послідовностей, що генеруються, на початку алгоритму. Після створення вектора його елементи запитуються у псевдовипадковому порядку і комбінуються один з одним для отримання ключа. Так як алгоритм генерації вектора відомий, можлива реалізація scrypt, не вимагає пам'яті, і вираховує кожен елемент в момент звернення. Однак, обчислити елемент відносно складно і в процесі роботи функції scrypt кожен елемент прочитується багато разів. У scrypt закладений такий баланс між пам'яттю і часом, і реалізації, що не використовують пам'ять, надто повільні.
Визначення scrypt
scrypt (P, S, N, r, p, dkLen) = MFcryptHMAC SHA256,SMixr (P, S, N, p, dkLen)
де N, r, p — параметри, які визначають складність обчислення функції.
MFcrypt визначена так: DK = MFcrypt PRF, MF (P, S, N, p, dkLen)
де
- PRF — псевдовипадкова функція (scrypt — HMAC-SHA256)
- hLen — довжина виходу PRF в байтах
- MF (Mixing Function) — послідовна функція, що потребує пам'ять із довільним доступом (відображення в у scrypt — SMix на базі Salsa20/8)
- MFLen — довжина блока, що перемішується у MF (в байтах). MFLen =128 * r.
Вхідні параметри scrypt і MFcrypt:
- P — пароль (passphrase) — байтовий рядок.
- S — сіль (salt) — байтовий рядок.
- N — параметр, що задає складність (кількість ітерацій для MF).
- r — параметр, що задає розмір блоку.
- p — ступінь паралельності, ціле число, менше ніж (232 − 1)*hLen/MFLen
- dkLen — необхідна довжина вихідного ключа в байтах, не більше ніж (232 − 1)*hLen.
- DK — вихідний ключ
Функція MFcrypt працює за алгоритмом:
- (B0 … Bp−1) = PBKDF2 PRF (P, S, 1, p * MFLen)
- Для всіх i від 0 до p−1 застосувати функцію MF:
- Bi = MF(Bi, N)
- DK = PBKDF2 PRF (P, B0 || B1 || … || Bp−1,1, dkLen)
Споживання пам'яті оцінюється в 128*r*N байт. Співвідношення кількості читань і записів в цю пам'ять оцінюється в 100 % і 63 %.
Приклади
Рекомендовані параметри scrypt: N = 16384, r = 8, p = 1 (споживання пам'яті — близько 16 МБ)
Швидкість обчислення однієї операції scrypt на процесорі загального призначення становить близько 100 мілісекунд при налаштуванні на використання 32 МБ пам'яті. При налаштуванні на тривалість операції в 1 мілісекунду використовується дуже мало пам'яті і алгоритм стає слабшим алгоритму bcrypt, налаштованого на порівнянну швидкість.
Криптовалюта Litecoin використовує такі параметри scrypt: N = 1024, r = 1, p = 1, розмір вхідного параметра і солі — 80 байт, розмір DK — 256 біт (32 байти). Споживання оперативної пам'яті — близько 128 КБ. Обчислення такого scrypt на відеокартах приблизно в 10 разів швидше, ніж на процесорах загального призначення, що є ознакою вибору недостатньо сильних параметрів.
Див. також
Примітки
- . Twitter. Colin Percival. 23 травня 2016. Архів оригіналу за 22 лютого 2022. Процитовано 3 квітня 2018. (англ.)
- . Архів оригіналу за 16 червня 2018. Процитовано 3 квітня 2018.
- http://suanpalm3.kmutnb.ac.th/journal/pdf/vol16/ch17.pdf [ 17 грудня 2013 у Wayback Machine.] page 5
- Crypto.Scrypt
- . Архів оригіналу за 16 серпня 2013. Процитовано 3 квітня 2018.
- http://2012.zeronights.org/includes/docs/SolarDesigner%20-%20New%20Developments%20in%20Password%20Hashing.pdf [ 28 грудня 2016 у Wayback Machine.] slide 4 «Issues with scrypt for mass user authentication»; slide 6
- http://distro.ibiblio.org/openwall/presentations/Password-Hashing-At-Scale/YaC2012-Password-Hashing-At-Scale.pdf [ 18 жовтня 2014 у Wayback Machine.] slide 18 «GPU Attacks on modern hashes»: «scrypt at up to ~1MB (misuse)»; slide 19-21
Посилання
- The scrypt key derivation function [ 28 травня 2019 у Wayback Machine.] — Опис scrypt на сайті Tarsnap
- Colin Percival, «Stronger key derivation via sequential memory-hard functions» [ 14 квітня 2019 у Wayback Machine.] // BSDCan'09, Травень 2009
- Colin Percival, scrypt: A key derivation function. [ 24 червня 2018 у Wayback Machine.] Doing our best to thwart TLAs armed with ASICs [ 24 червня 2018 у Wayback Machine.], December 4, 2012
- Реалізація на C# [ 4 квітня 2018 у Wayback Machine.]
- реалізація на Java
- реалізація на PHP [ 11 червня 2018 у Wayback Machine.]
- scrypt в стандартній бібліотеці Go [ 16 червня 2018 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
scrypt chitayetsya es kript adaptivna kriptografichna funkciya formuvannya klyucha na osnovi parolya stvorena oficerom bezpeki FreeBSD Kolinom Persivalem dlya sistemi zberigannya rezervnih kopij Tarsnap Funkciya stvorena takim chinom shob uskladniti ataku pereborom za dopomogoyu PLIS Dlya yiyi obchislennya potribnij znachnij obsyag pam yati z dovilnim dostupom 17 veresnya 2012 roku algoritm scrypt buv opublikovanij IETF u viglyadi planuyetsya jogo vnesennya v RFC Vikoristovuyetsya scrypt napriklad v yakosti dokazu vikonanoyi roboti v kriptovalyuti Litecoin Zasnovani na paroli funkciyi formuvannya klyucha angl password based key derivation function PBKDF zazvichaj rozroblyayutsya takim chinom shob vimagati vidnosno velikij chas obchislennya za poryadkom velichini sotni milisekund Pri vikoristanni legalnim koristuvacham potribno obchisliti podibnu funkciyu odin raz napriklad pri autentifikaciyi i takij chas dopustimij Ale pri provedenni ataki povnogo pereboru atakuyuchomu potribno zrobiti milyardi obchislen funkciyi i yiyi obchislyuvalna skladnist robit ataku povilnishoyu i dorozhchoyu Odnak pershi funkciyi PBKDF napriklad PBKDF2 rozroblena RSA Laboratories obchislyuyutsya porivnyano shvidko i yih perebir mozhe buti efektivno realizovanij na specializovanomu obladnanni FPGA abo ASIC Taka realizaciya dozvolyaye zapuskati masshtabni paralelni ataki pereboru gruboyu siloyu napriklad z obchislennyam soten znachen funkciyi v kozhnij mikroshemi FPGA Funkciya scrypt rozroblyalasya z metoyu uskladnennya aparatnih realizacij shlyahom zbilshennya kilkosti resursiv neobhidnih dlya obchislennya Danij algoritm vikoristovuye znachnu kilkist operativnoyi pam yati pam yati z dovilnim dostupom porivnyano z inshimi PBKDF Pam yat u scrypt vikoristovuyetsya dlya zberigannya velikogo vektora psevdovipadkovih bitovih poslidovnostej sho generuyutsya na pochatku algoritmu Pislya stvorennya vektora jogo elementi zapituyutsya u psevdovipadkovomu poryadku i kombinuyutsya odin z odnim dlya otrimannya klyucha Tak yak algoritm generaciyi vektora vidomij mozhliva realizaciya scrypt ne vimagaye pam yati i virahovuye kozhen element v moment zvernennya Odnak obchisliti element vidnosno skladno i v procesi roboti funkciyi scrypt kozhen element prochituyetsya bagato raziv U scrypt zakladenij takij balans mizh pam yattyu i chasom i realizaciyi sho ne vikoristovuyut pam yat nadto povilni Viznachennya scryptscrypt P S N r p dkLen MFcryptHMAC SHA256 SMixr P S N p dkLen de N r p parametri yaki viznachayut skladnist obchislennya funkciyi MFcrypt viznachena tak DK MFcrypt PRF MF P S N p dkLen de PRF psevdovipadkova funkciya scrypt HMAC SHA256 hLen dovzhina vihodu PRF v bajtah MF Mixing Function poslidovna funkciya sho potrebuye pam yat iz dovilnim dostupom vidobrazhennya Z 256 M F L e n N displaystyle Z 256 MFLen N v Z 256 M F L e n displaystyle Z 256 MFLen u scrypt SMix na bazi Salsa20 8 MFLen dovzhina bloka sho peremishuyetsya u MF v bajtah MFLen 128 r Vhidni parametri scrypt i MFcrypt P parol passphrase bajtovij ryadok S sil salt bajtovij ryadok N parametr sho zadaye skladnist kilkist iteracij dlya MF r parametr sho zadaye rozmir bloku p stupin paralelnosti cile chislo menshe nizh 232 1 hLen MFLen dkLen neobhidna dovzhina vihidnogo klyucha v bajtah ne bilshe nizh 232 1 hLen DK vihidnij klyuch Funkciya MFcrypt pracyuye za algoritmom B0 Bp 1 PBKDF2 PRF P S 1 p MFLen Dlya vsih i vid 0 do p 1 zastosuvati funkciyu MF Bi MF Bi N DK PBKDF2 PRF P B0 B1 Bp 1 1 dkLen Spozhivannya pam yati ocinyuyetsya v 128 r N bajt Spivvidnoshennya kilkosti chitan i zapisiv v cyu pam yat ocinyuyetsya v 100 i 63 PrikladiRekomendovani parametri scrypt N 16384 r 8 p 1 spozhivannya pam yati blizko 16 MB Shvidkist obchislennya odniyeyi operaciyi scrypt na procesori zagalnogo priznachennya stanovit blizko 100 milisekund pri nalashtuvanni na vikoristannya 32 MB pam yati Pri nalashtuvanni na trivalist operaciyi v 1 milisekundu vikoristovuyetsya duzhe malo pam yati i algoritm staye slabshim algoritmu bcrypt nalashtovanogo na porivnyannu shvidkist Kriptovalyuta Litecoin vikoristovuye taki parametri scrypt N 1024 r 1 p 1 rozmir vhidnogo parametra i soli 80 bajt rozmir DK 256 bit 32 bajti Spozhivannya operativnoyi pam yati blizko 128 KB Obchislennya takogo scrypt na videokartah priblizno v 10 raziv shvidshe nizh na procesorah zagalnogo priznachennya sho ye oznakoyu viboru nedostatno silnih parametriv Div takozhPBKDF2 bcrypt Prostorovo chasova domovlenistPrimitki Twitter Colin Percival 23 travnya 2016 Arhiv originalu za 22 lyutogo 2022 Procitovano 3 kvitnya 2018 angl Arhiv originalu za 16 chervnya 2018 Procitovano 3 kvitnya 2018 http suanpalm3 kmutnb ac th journal pdf vol16 ch17 pdf 17 grudnya 2013 u Wayback Machine page 5 Crypto Scrypt Arhiv originalu za 16 serpnya 2013 Procitovano 3 kvitnya 2018 http 2012 zeronights org includes docs SolarDesigner 20 20New 20Developments 20in 20Password 20Hashing pdf 28 grudnya 2016 u Wayback Machine slide 4 Issues with scrypt for mass user authentication slide 6 http distro ibiblio org openwall presentations Password Hashing At Scale YaC2012 Password Hashing At Scale pdf 18 zhovtnya 2014 u Wayback Machine slide 18 GPU Attacks on modern hashes scrypt at up to 1MB misuse slide 19 21PosilannyaThe scrypt key derivation function 28 travnya 2019 u Wayback Machine Opis scrypt na sajti Tarsnap Colin Percival Stronger key derivation via sequential memory hard functions 14 kvitnya 2019 u Wayback Machine BSDCan 09 Traven 2009 Colin Percival scrypt A key derivation function 24 chervnya 2018 u Wayback Machine Doing our best to thwart TLAs armed with ASICs 24 chervnya 2018 u Wayback Machine December 4 2012 Realizaciya na C 4 kvitnya 2018 u Wayback Machine realizaciya na Java realizaciya na PHP 11 chervnya 2018 u Wayback Machine scrypt v standartnij biblioteci Go 16 chervnya 2018 u Wayback Machine