Argon2 — функція формування ключа, розроблена (англ. Alex Biryukov), Даніелем Діну (англ. Daniel Dinu) і Дмитром Ховратовичем (англ. Dmitry Khovratovich) з в 2015 році.
Це сучасний простий алгоритм, спрямований на високу швидкість заповнення пам'яті та ефективне використання декількох обчислювальних блоків. Алгоритм випущений під ліцензією Creative Commons.
Історія
У 2013 році був оголошений конкурс [en] для створення нової функції хешування паролів. До нового алгоритму висувалися вимоги щодо обсягу використовуваної пам'яті, кількості проходів по блоках пам'яті і по стійкості до криптоаналізу.
У 2015 році Argon2 був оголошений переможцем конкурсу. З того часу алгоритм зазнав 4 серйозні зміни. Виправлені частина описів алгоритмів генерації деяких блоків і помилки, додані рекомендовані параметри.
Вхідні дані
Argon2 використовує основні та додаткові параметри для хешування:
Основні:
- Повідомлення (пароль) , довжиною від до .
- Сіль S, довжиною від до .
Додаткові:
- Ступінь паралелізму будь-яке ціле число від до — кількість потоків, на яку можна розпаралелити алгоритм.
- Довжина тегу , довжиною від до .
- Об'єм пам'яті , ціле число кілобайтів від до .
- Кількість ітерацій
Версії алгоритму
Існують дві версії алгоритму:
- Argon2d — підходить для захисту цифрової валюти та інформаційних систем, що не піддаються атакам по стороннім каналам.
- Argon2i — забезпечує високий захист від trade-off атак, але працює повільніше версії d через кілька проходів по пам'яті.
Опис
Argon2 працює за наступним принципом:
- Проводиться хешування пароля з використанням хеш-функції Blake2b.
- Результат хешування записується в блоки пам'яті.
- Блоки пам'яті перетворюються з використанням функції стиснення .
- В результаті роботи алгоритму генерується ключ (англ. Tag).
Заповнення блоків пам'яті
, ,де
— функція індексування, — масив пам'яті, — функція стиснення, — повідомлення(пароль), — хеш-функція Blake2b.
Функції індексування залежить від версії алгоритму Argon2:
- Argon2d — залежить від попереднього блоку
- Argon2i — значення, яке визначається генератором випадкових чисел.
У разі послідовного режиму роботи функція стиснення застосовується раз. Для версії Argon2d на -му кроці на вхід функції подається блок з індексом , обумовлений попереднім блоком м. Для версії Argon2i береться значення генератора випадкових чисел ( у режимі лічильника).
У разі паралельного режиму (алгоритм розпаралелюється на тредів) дані розподіляться по блокам матриці , де перші блоки — результат хешування вхідних даних, а наступні задаються функцією стиснення за попередніми блоками і опорного блоку :
, де — кількість блоків пам'яті розміром 1024 байта, — хеш-функція, що приймає на вхід 32-бітове представлення вхідних параметрів на виході якої — 64-бітове значення, — хеш-функція змінної довжини від , — обсяг пам'яті, — кількість ітерацій.
В результаті:
Знаходження опорного блоку
- Argon2d: вибираються перші 32 біта і наступні 32 біта з блоків
- Argon2i: , где - номер ітерації, — номер линії, — визначає версію (в даному випадку одиниця)
Далі визначається індекс рядки, звідки береться блок. При за поточний номер лінії приймається значення . Потім визначається набір індексів по 2 правилами:
- Якщо збігається з номером поточного рядка, то в набір індексів додаються не всі записані раніше блоки без
- Якщо не збігається, то беруться блоки з усіх сегментів лінії і останніх частин.
У підсумку, обчислюється номер блоку з , який приймається за опорний:
Функція H'
Blake2b — 64 бітна версія функції BLAKE, тому будується наступним чином:
При великих вихідне значення функції будується за першим 32 бітам блоків — і останнього блоку :
Функція стиснення G
Заснована на функції стиснення Blake2b. На вхід отримує два 8192-бітних блоки і виробляє 1024-бітний блок. Спочатку два блоки складаються (), потім матриця обробляється функцією порядково (), потім отримана матриця обробляється за стовпцями (), і на виході G видається .
Криптоаналіз
Захист від колізій: Сама функція Blake2b вважається криптографічно безпечною. Також, посилаючись на правила індексування, автори алгоритму довели відсутність колізій всередині блоків даних і низьку ймовірність їхньої появи при застосуванні функції стиснення.
Атака знаходження прообразу: нехай зловмисник підібрав таке, що , тоді для продовження даної атаки він повинен підібрати прообраз : , що неможливо. Таке ж міркування підходить для атаки знаходження другого прообразу.
Атаки по часу: якщо користувачеві необхідно адаптуватися до атаки по часу, то слід використовувати версію Argon2i, так як вона використовує незалежну пам'ять.
Атаки
Memory optimization attack
Ден Бонех, Генрі Корріган-Гіббс та Стюарт Шехтер у своїй роботі показали уразливість Argon2i версії 1.2. Для однопрохідної версії їх атака знижувала витрати пам'яті в 4 рази без уповільнення використання. Для багатопрохідної версії — в 2,72 рази. Пізніше, у версії 1.3 операція перезапису була замінена на XOR.
AB16
Джоел Елвен та Джеремая Блокі у своїх роботах довели, що їх алгоритм атаки AB16 ефективний не тільки для Argon2i-A (з першої версії специфікації), але і для Argon2i-B (з останньої версії 1.3). Вони показали, що атака на Argon2 при , використовуючи 1 гігабайт оперативної пам'яті, знижує час обчислення вдвічі.
Для ефективного захисту необхідно поставити більше 10 проходів. Але при рекомендованому підході вибору параметрів алгоритму на практиці часто може вибиратися всього лише 1 прохід. Розробники Argon2 стверджують, що, застосовуючи атаку AB16 на Argon2i-B при , час зменшується не більше ніж в 2 рази аж до використання 32 GB пам'яті і рекомендують використовувати число проходів, що перевищує значення двійкового логарифма від використовуваної пам'яті.
The ranking tradeoff attack
Ця атака є однією з найбільш ефективних для Argon2d. Вона знижує час обробки в 1,33 рази. Для Argon2i при коефіцієнт дорівнює 3 .
Garbage Collector Attacks
Основною умовою для представленої атаки є доступ зловмисника до внутрішньої пам'яті цільової машини або після припинення схеми хешування, або в якийсь момент, коли сам пароль ще присутній в пам'яті. Завдяки перезапису інформації з допомогою функції , Argon2i і Argon2d стійкі до даних атак.
Застосування
Argon2 оптимізований під x86-архітектуру і може бути реалізований на Linux, OS X, Windows.
Argon2d призначений для систем, де зловмисник не отримує регулярного доступу до системної пам'яті або процесора. Наприклад, для backend-серверів і криптомайнерів. При використанні одного ядра на 2-Ghz CPU і 250 Mb оперативної пам'яті з Argon2d (p=2) криптомайнінг займає 0,1 сек., а при застосуванні 4 ядер і 4 Gb пам'яті (p=8) автентифікація на backend сервері проходить за 0.5 сек.
Argon2i більше підходить для frontend-серверів і шифрування жорсткого диска. Формування ключа для шифрування на 2-Ghz CPU, використовуючи 2 ядра і 6 Гб оперативної пам'яті, з Argon2i (p=4) займає 3 сек., у той час як аутентифікація на frontend-сервері, задіявши 2 ядра і 1 Gb пам'яті з Argon2i (p=4), займає 0,5 сек.
Примітки
- Password Hashing Competition.
- Argon, 2016.
- Argon, 2016, с. 294—295.
- Argon, 2016, с. 295.
- Henry Corrigan-Gibbs, 2016.
- Alwen, Blocki, 2016.
- Overview, 2015.
Література
- Joel Alwen, Jeremiah Blocki. Efficiently Computing Data-Independent Memory-Hard Functions. — Advances in Cryptology – CRYPTO 2016, 2016. — С. 241—271. — .
- Dan Boneh, Henry Corrigan-Gibbs, Stuart Schechter. Balloon Hashing: A Memory-Hard Function Providing Provable Protection Against Sequential Attacks. — Advances in Cryptology – ASIACRYPT 2016, 2016. — С. 220—248. — .
- . Архів оригіналу за 7 квітня 2019. Процитовано 16 квітня 2018.
- Alex Biryukov, Daniel Dinu, Dmitry Khovratovich. Argon2: new generation of memory-hard functions for password hashing and other applications. — European Symposium on Security and Privacy, 2016.
- Christian Forler, Eik List, Stefan Lucks, Jakob Wenzel. Overview of the Candidates for the Password Hashing Competition and their resistance against Garbage-Collector Attacks. — Technology and Practice of Passwords, 2015. — С. 3—18. — .
Посилання
- https://github.com/P-H-C/phc-winner-argon2 [ 2 квітня 2019 у Wayback Machine.]
- https://www.cryptolux.org/index.php/Argon2 [ 31 березня 2019 у Wayback Machine.]
- https://github.com/khovratovich/Argon2 [ 11 червня 2018 у Wayback Machine.] (рання версія функції)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Argon2 funkciya formuvannya klyucha rozroblena angl Alex Biryukov Danielem Dinu angl Daniel Dinu i Dmitrom Hovratovichem angl Dmitry Khovratovich z v 2015 roci Ce suchasnij prostij algoritm spryamovanij na visoku shvidkist zapovnennya pam yati ta efektivne vikoristannya dekilkoh obchislyuvalnih blokiv Algoritm vipushenij pid licenziyeyu Creative Commons IstoriyaU 2013 roci buv ogoloshenij konkurs en dlya stvorennya novoyi funkciyi heshuvannya paroliv Do novogo algoritmu visuvalisya vimogi shodo obsyagu vikoristovuvanoyi pam yati kilkosti prohodiv po blokah pam yati i po stijkosti do kriptoanalizu U 2015 roci Argon2 buv ogoloshenij peremozhcem konkursu Z togo chasu algoritm zaznav 4 serjozni zmini Vipravleni chastina opisiv algoritmiv generaciyi deyakih blokiv i pomilki dodani rekomendovani parametri Vhidni daniArgon2 vikoristovuye osnovni ta dodatkovi parametri dlya heshuvannya Osnovni Povidomlennya parol P displaystyle P dovzhinoyu vid 0 displaystyle 0 do 2 32 1 displaystyle 2 32 1 Sil S dovzhinoyu vid 8 displaystyle 8 do 2 32 1 displaystyle 2 32 1 Dodatkovi Stupin paralelizmu p displaystyle p bud yake cile chislo vid 1 displaystyle 1 do 2 24 1 displaystyle 2 24 1 kilkist potokiv na yaku mozhna rozparaleliti algoritm Dovzhina tegu t displaystyle tau dovzhinoyu vid 4 displaystyle 4 do 2 32 1 displaystyle 2 32 1 Ob yem pam yati m displaystyle m cile chislo kilobajtiv vid 8 p displaystyle 8p do 2 32 1 displaystyle 2 32 1 Kilkist iteracij t displaystyle t Versiyi algoritmuIsnuyut dvi versiyi algoritmu Argon2d pidhodit dlya zahistu cifrovoyi valyuti ta informacijnih sistem sho ne piddayutsya atakam po storonnim kanalam Argon2i zabezpechuye visokij zahist vid trade off atak ale pracyuye povilnishe versiyi d cherez kilka prohodiv po pam yati OpisShema roboti Argon2 Argon2 pracyuye za nastupnim principom Provoditsya heshuvannya parolya z vikoristannyam hesh funkciyi Blake2b Rezultat heshuvannya zapisuyetsya v bloki pam yati Bloki pam yati peretvoryuyutsya z vikoristannyam funkciyi stisnennya G displaystyle G V rezultati roboti algoritmu generuyetsya klyuch angl Tag Zapovnennya blokiv pam yati B 0 H P S displaystyle B 0 H P S B j G B ϕ 1 j B ϕ 2 j B ϕ k j displaystyle B j G B phi 1 j B phi 2 j B phi k j j 1 t displaystyle j 1 t de ϕ k j displaystyle phi k j funkciya indeksuvannya B displaystyle B masiv pam yati G displaystyle G funkciya stisnennya P displaystyle P povidomlennya parol H displaystyle H hesh funkciya Blake2b Funkciyi indeksuvannya zalezhit vid versiyi algoritmu Argon2 Argon2d ϕ displaystyle phi zalezhit vid poperednogo bloku Argon2i ϕ displaystyle phi znachennya yake viznachayetsya generatorom vipadkovih chisel U razi poslidovnogo rezhimu roboti funkciya stisnennya zastosovuyetsya m displaystyle m raz Dlya versiyi Argon2d na i displaystyle i mu kroci na vhid funkciyi G displaystyle G podayetsya blok z indeksom ϕ i displaystyle phi i obumovlenij poperednim blokom m Dlya versiyi Argon2i beretsya znachennya generatora vipadkovih chisel G displaystyle G u rezhimi lichilnika U razi paralelnogo rezhimu algoritm rozparalelyuyetsya na p displaystyle p trediv dani rozpodilyatsya po blokam matrici B i j displaystyle B i j de pershi bloki rezultat heshuvannya vhidnih danih a nastupni zadayutsya funkciyeyu stisnennya G displaystyle G za poperednimi blokami i opornogo bloku B 1 i j displaystyle B 1 i j B 1 i 0 H H 0 0 4 b y t e s i 4 b y t e s 0 i lt p displaystyle B 1 i 0 H H 0 underset 4bytes 0 underset 4bytes i 0 leq i lt p B 1 i 1 H H 0 1 4 b y t e s i 4 b y t e s 0 i lt p displaystyle B 1 i 1 H H 0 underset 4bytes 1 underset 4bytes i 0 leq i lt p B 1 i j G B 1 i j 1 B 1 i j 0 i lt p displaystyle B 1 i j G B 1 i j 1 B 1 i j 0 leq i lt p B t i 0 G B t 1 i q 1 B 1 i j B t 1 i 0 displaystyle B t i 0 G B t 1 i q 1 B 1 i j oplus B t 1 i 0 B t i j G B t i j 1 B 1 i j B t 1 i j displaystyle B t i j G B t i j 1 B 1 i j oplus B t 1 i j q m p m m 4 p 4 p displaystyle q m over p m lfloor m over 4p rfloor 4p de m displaystyle m kilkist blokiv pam yati rozmirom 1024 bajta H 0 displaystyle H 0 hesh funkciya sho prijmaye na vhid 32 bitove predstavlennya vhidnih parametriv na vihodi yakoyi 64 bitove znachennya H displaystyle H hesh funkciya zminnoyi dovzhini vid H displaystyle H m displaystyle m obsyag pam yati t displaystyle t kilkist iteracij V rezultati B f i n a l B T 0 q 1 B T 1 q 1 B T p 1 q 1 displaystyle B final B T 0 q 1 oplus B T 1 q 1 oplus oplus B T p 1 q 1 T a g H B f i n a l displaystyle Tag leftarrow H B final Znahodzhennya opornogo bloku Argon2d vibirayutsya pershi 32 bita J 1 displaystyle J 1 i nastupni 32 bita J 2 displaystyle J 2 z blokiv B i j 1 displaystyle B i j 1 Argon2i J 1 J 2 G 2 n u l l 1024 r l s m t y i n u l l 968 displaystyle J 1 J 2 G 2 null 1024 r l s m t y i null 968 gde r displaystyle r nomer iteraciyi l displaystyle l nomer liniyi y displaystyle y viznachaye versiyu v danomu vipadku odinicya Dali viznachayetsya indeks l J 2 m o d p displaystyle l J 2 mod p ryadki zvidki beretsya blok Pri r 0 s 0 displaystyle r 0 s 0 za potochnij nomer liniyi prijmayetsya znachennya l displaystyle l Potim viznachayetsya nabir indeksiv R displaystyle R po 2 pravilami Yaksho l displaystyle l zbigayetsya z nomerom potochnogo ryadka to v nabir indeksiv dodayutsya ne vsi zapisani ranishe bloki bez B i j 1 displaystyle B i j 1 Yaksho l displaystyle l ne zbigayetsya to berutsya bloki z usih segmentiv liniyi i ostannih S 1 3 displaystyle S 1 3 chastin U pidsumku obchislyuyetsya nomer bloku z r displaystyle r yakij prijmayetsya za opornij z R 1 R J 1 2 2 32 2 32 displaystyle z R 1 frac R J 1 2 2 32 2 32 Funkciya H Argon2 Blake2b 64 bitna versiya funkciyi BLAKE tomu H displaystyle H buduyetsya nastupnim chinom i f t 64 displaystyle if tau leq 64 H X H t t X displaystyle H X H tau tau X Pri velikih t displaystyle tau vihidne znachennya funkciyi buduyetsya za pershim 32 bitam blokiv A i displaystyle A i i ostannogo bloku V i displaystyle V i r t 32 2 displaystyle r lceil tau 32 rceil 2 V 1 H 64 t X displaystyle V 1 longleftarrow H 64 tau X V r 1 H t 32 r V r displaystyle V r 1 longleftarrow H tau 32r V r H X A 1 A 2 A r V r 1 displaystyle H X A 1 A 2 A r V r 1 Funkciya stisnennya G Zasnovana na funkciyi stisnennya P displaystyle P Blake2b Na vhid otrimuye dva 8192 bitnih bloki i viroblyaye 1024 bitnij blok Spochatku dva bloki skladayutsya A X Y displaystyle A X oplus Y potim matricya A 8 8 displaystyle A 8 8 obroblyayetsya funkciyeyu P displaystyle P poryadkovo A Q displaystyle A longrightarrow Q potim otrimana matricya obroblyayetsya za stovpcyami Q Z displaystyle Q longrightarrow Z i na vihodi G vidayetsya Z A displaystyle Z oplus A KriptoanalizZahist vid kolizij Sama funkciya Blake2b vvazhayetsya kriptografichno bezpechnoyu Takozh posilayuchis na pravila indeksuvannya avtori algoritmu doveli vidsutnist kolizij vseredini blokiv danih i nizku jmovirnist yihnoyi poyavi pri zastosuvanni funkciyi stisnennya Ataka znahodzhennya proobrazu nehaj zlovmisnik pidibrav m displaystyle m take sho G m h displaystyle G m h todi dlya prodovzhennya danoyi ataki vin povinen pidibrati proobraz n displaystyle n H n m displaystyle H n m sho nemozhlivo Take zh mirkuvannya pidhodit dlya ataki znahodzhennya drugogo proobrazu Ataki po chasu yaksho koristuvachevi neobhidno adaptuvatisya do ataki po chasu to slid vikoristovuvati versiyu Argon2i tak yak vona vikoristovuye nezalezhnu pam yat AtakiMemory optimization attack Den Boneh Genri Korrigan Gibbs ta Styuart Shehter u svoyij roboti pokazali urazlivist Argon2i versiyi 1 2 Dlya odnoprohidnoyi versiyi yih ataka znizhuvala vitrati pam yati v 4 razi bez upovilnennya vikoristannya Dlya bagatoprohidnoyi versiyi v 2 72 razi Piznishe u versiyi 1 3 operaciya perezapisu bula zaminena na XOR AB16 Dzhoel Elven ta Dzheremaya Bloki u svoyih robotah doveli sho yih algoritm ataki AB16 efektivnij ne tilki dlya Argon2i A z pershoyi versiyi specifikaciyi ale i dlya Argon2i B z ostannoyi versiyi 1 3 Voni pokazali sho ataka na Argon2 pri t 6 displaystyle t 6 vikoristovuyuchi 1 gigabajt operativnoyi pam yati znizhuye chas obchislennya vdvichi Dlya efektivnogo zahistu neobhidno postaviti bilshe 10 prohodiv Ale pri rekomendovanomu pidhodi viboru parametriv algoritmu na praktici chasto mozhe vibiratisya vsogo lishe 1 prohid Rozrobniki Argon2 stverdzhuyut sho zastosovuyuchi ataku AB16 na Argon2i B pri t 4 displaystyle t geq 4 chas zmenshuyetsya ne bilshe nizh v 2 razi azh do vikoristannya 32 GB pam yati i rekomenduyut vikoristovuvati chislo prohodiv sho perevishuye znachennya dvijkovogo logarifma vid vikoristovuvanoyi pam yati The ranking tradeoff attack Cya ataka ye odniyeyu z najbilsh efektivnih dlya Argon2d Vona znizhuye chas obrobki v 1 33 razi Dlya Argon2i pri t gt 2 displaystyle t gt 2 koeficiyent dorivnyuye 3 Garbage Collector Attacks Osnovnoyu umovoyu dlya predstavlenoyi ataki ye dostup zlovmisnika do vnutrishnoyi pam yati cilovoyi mashini abo pislya pripinennya shemi heshuvannya abo v yakijs moment koli sam parol she prisutnij v pam yati Zavdyaki perezapisu informaciyi z dopomogoyu funkciyi G displaystyle G Argon2i i Argon2d stijki do danih atak ZastosuvannyaArgon2 optimizovanij pid x86 arhitekturu i mozhe buti realizovanij na Linux OS X Windows Argon2d priznachenij dlya sistem de zlovmisnik ne otrimuye regulyarnogo dostupu do sistemnoyi pam yati abo procesora Napriklad dlya backend serveriv i kriptomajneriv Pri vikoristanni odnogo yadra na 2 Ghz CPU i 250 Mb operativnoyi pam yati z Argon2d p 2 kriptomajning zajmaye 0 1 sek a pri zastosuvanni 4 yader i 4 Gb pam yati p 8 avtentifikaciya na backend serveri prohodit za 0 5 sek Argon2i bilshe pidhodit dlya frontend serveriv i shifruvannya zhorstkogo diska Formuvannya klyucha dlya shifruvannya na 2 Ghz CPU vikoristovuyuchi 2 yadra i 6 Gb operativnoyi pam yati z Argon2i p 4 zajmaye 3 sek u toj chas yak autentifikaciya na frontend serveri zadiyavshi 2 yadra i 1 Gb pam yati z Argon2i p 4 zajmaye 0 5 sek PrimitkiPassword Hashing Competition Argon 2016 Argon 2016 s 294 295 Argon 2016 s 295 Henry Corrigan Gibbs 2016 Alwen Blocki 2016 Overview 2015 LiteraturaJoel Alwen Jeremiah Blocki Efficiently Computing Data Independent Memory Hard Functions Advances in Cryptology CRYPTO 2016 2016 S 241 271 ISBN 978 3 662 53008 5 Dan Boneh Henry Corrigan Gibbs Stuart Schechter Balloon Hashing A Memory Hard Function Providing Provable Protection Against Sequential Attacks Advances in Cryptology ASIACRYPT 2016 2016 S 220 248 ISBN 978 3 662 53887 6 Arhiv originalu za 7 kvitnya 2019 Procitovano 16 kvitnya 2018 Alex Biryukov Daniel Dinu Dmitry Khovratovich Argon2 new generation of memory hard functions for password hashing and other applications European Symposium on Security and Privacy 2016 Christian Forler Eik List Stefan Lucks Jakob Wenzel Overview of the Candidates for the Password Hashing Competition and their resistance against Garbage Collector Attacks Technology and Practice of Passwords 2015 S 3 18 ISBN 978 3 319 24192 0 Posilannyahttps github com P H C phc winner argon2 2 kvitnya 2019 u Wayback Machine https www cryptolux org index php Argon2 31 bereznya 2019 u Wayback Machine https github com khovratovich Argon2 11 chervnya 2018 u Wayback Machine rannya versiya funkciyi