Райдужна таблиця (англ. rainbow table) — спеціальний варіант таблиць пошуку (англ. lookup table) для звернення криптографічних хеш-функцій, які використовують механізм розумного компромісу між часом пошуку таблицею і займаною пам'яттю (англ. time-memory tradeoff). Райдужні таблиці використовуються для розкриття паролів, перетворених за допомогою важкозворотної геш-функції, а також для атак на симетричні шифри на основі відомого відкритого тексту. Використання функції формування ключа з застосуванням солі робить цю атаку неможливою.
Райдужні таблиці є розвитком більш раннього й простого алгоритму, запропонованого Мартіном Геллманом.
Передумови появи
Комп'ютерні системи, які використовують паролі для автентифікації, повинні якимось чином визначати правильність введеного пароля. Найпростішим способом вирішення даної проблеми є зберігання списку всіх допустимих паролів для кожного користувача. Мінусом даного методу є те, що в разі несанкціонованого доступу до списку, зловмисник дізнається всі паролі. Більш поширений підхід полягає у зберіганні значень криптографічної геш-функції від парольної фрази.
Однак більшість гешів швидко обчислюються, тому зловмисник отримавши доступ до гешів, може швидко перевірити список можливих паролів на валідність. Щоб уникнути цього, потрібно використовувати більш довгі паролі, тим самим збільшуючи список паролів, які повинен перевірити зловмисник. Для простих паролів, що не містять сіль, зловмисник може заздалегідь підрахувати значення гешів для всіх поширених і коротких паролів і зберегти їх у таблиці. Тепер можна швидко знайти збіг у заздалегідь отриманій таблиці. Але чим довший пароль, тим більше таблиця, і тим більше пам'яті необхідно для її зберігання.
Альтернативним варіантом є зберігання лише перших елементів ланцюжків гешів. Це потребує більше обчислень для пошуку пароля, але значно зменшить кількість необхідної пам'яті. Райдужні таблиці є поліпшеним варіантом цього методу, які дозволяють уникнути колізій.
Розрахунок ланцюжка гешів
Увага: Ланцюжки хешів, описані в цій статті, відрізняються від описаних у статті Ланцюжок хешів.
Нехай у нас є геш-функція H з довжиною геш n і кінцева множина паролів P. Наша мета — створити структуру даних, яка для будь-якого значення хешу h може знайти такий елемент p з P, що H(p)=h, або визначити, що такого елемента не існує. Найпростіший спосіб зробити це — обчислити H(p) для всіх p з P, але для зберігання такої таблиці потрібно Θ(|P|n) пам'яті, що дуже багато.
Ланцюжки гешів — метод для зменшення цієї вимоги до обсягу пам'яті. Головна ідея — визначення функції редукції R, яка зіставляє значенням геша значення P. Зауважимо, що R не є зверненням геш-функції. Починаючи з вихідного пароля і поперемінно застосовуючи до кожного отриманого значення H і R, ми отримаємо ланцюжок перемежованих паролів і гешів. Наприклад, для набору паролів довжиною в 6 символів і геш-функції, що видає 32-бітні значення, ланцюжок може виглядати так:
До функції редукції висувається єдина вимога: повертати значення з того ж алфавіту, що і паролі.
Для генерації таблиці ми вибираємо випадкову множину початкових паролів з P, обчислюємо ланцюжок деякої фіксованої довжини k для кожного пароля і зберігаємо тільки перший і останній пароль з кожного ланцюжка.
Для кожного гешу h, значення якого ми хочемо обернути (знайти відповідний йому пароль), обчислюємо послідовність R(…R(H(R(h)))…). Якщо якесь з проміжних значень зійдеться з яким-небудь кінцем будь-якого ланцюжка, ми беремо початок цього ланцюжка і відновлюємо його повністю. З високою ймовірністю повний ланцюжок буде містити значення гешу h, а передуючий йому пароль буде шуканим.
Для прикладу, зазначеного вище, якщо у нас є геш 920ECF10, він породить наступну послідовність:
Оскільки kiebgt
є кінцем ланцюжка з нашої таблиці, ми беремо відповідний початковий пароль aaaaaa
і обчислюємо ланцюжок, поки не знайдемо хеш 920ECF10:
Таким чином, шуканий пароль — sgfnyd
.
Варто зауважити, що відновлений ланцюжок не завжди містить шукане значення гешу h. Таке можливо при виникненні колізії функції H або R. Наприклад, нехай дано хеш FB107E70, який на певному етапі породжує пароль kiebgt:
Але FB107E70 не з'являється в ланцюжку, породженої паролем aaaaaa
. Це називається помилковим спрацюванням. У цьому випадку, ми ігноруємо збіг і продовжуємо визначати послідовність, породжену h. Якщо згенерована послідовність досягає довжини k без хороших збігів, це означає, що шуканий пароль ніколи не зустрічався в підготовлених ланцюжках.
Вміст таблиці, не залежить від значення досліджуваного гешу, вона обчислюється заздалегідь і використовується лише для швидкого пошуку. Збільшення довжини ланцюжка зменшує розмір таблиці, але збільшує час пошуку потрібного елемента в ланцюжку.
Прості ланцюжки гешів мають декілька недоліків. Найсерйозніший — можливість злиття двох ланцюжків в один (генерація одного і того ж значення в різних ланцюжках). Всі значення, згенеровані після злиття, будуть однаковими в обох ланцюжках, що звужує кількість охоплюваних паролів. Оскільки перегенеровані ланцюжки зберігаються не повністю, неможливо ефективно порівнювати всі згенеровані значення між собою. Як правило, про відсутність колізій геш-функції H піклується сторона, що забезпечує шифрування паролів, тому що основна проблема криється у функції редукції R.
Інша серйозна проблема — підбір такої функції R, яка буде генерувати паролі з необхідним покриттям і розподілом. Обмеження вихідного алфавіту є серйозним обмеженням для вибору такої функції.
Райдужні таблиці
Райдужні таблиці є розвитком ідеї таблиці геш-ланцюгів. Вони ефективно вирішують проблему колізій шляхом введення послідовності функцій редукції R1, R2, …, Rk. Функції редукції застосовуються по черзі, перемежаючись з функцією гешування: H, R1, H, R2, …, H, Rk.
При такому підході два ланцюжки можуть злитися тільки за умови збігу значень на одній і тій же ітерації. Отже, достатньо перевіряти на колізії тільки кінцеві значення ланцюжків, що не вимагає додаткової пам'яті.
На кінцевому етапі складання таблиці можна знайти всі злиті ланцюжки, залишити з них тільки один і згенерувати нові, щоб заповнити таблицю необхідною кількістю різних ланцюжків. Отримані ланцюжки не є повністю вільними від колізій, тим не менш, вони не зіллються повністю.
Використання послідовностей функцій редукції змінює спосіб пошуку по таблиці. Оскільки геш може бути знайдений в будь-якому місці ланцюжка, необхідно згенерувати k різних ланцюжків:
- перший ланцюжок будується на припущенні, що шуканий геш зустрінеться на останній позиції в табличному ланцюжку, тому складається з єдиного значення Rk(h);
- другий ланцюжок будується на припущенні, що шуканий геш зустрінеться на передостанній позиції в табличному ланцюжку, тому виглядає так: Rk(H(Rk-1(h)));
- аналогічно, нарощуючи довжину ланцюжка і застосовуючи функції редукції з меншими номерами, отримуємо інші ланцюжки. Останній ланцюжок буде мати довжину k і містити всі функції редукції: Rk(H(Rk-1(H(…H(R1(h))…))))
Також зміниться і визначення помилкового спрацювання: якщо ми неправильно «вгадаємо» позицію шуканого гешу, це буде відкидати тільки один з k згенерованих ланцюжків; при цьому все ще може залишатися можливість знайти вірний геш для даного табличного ланцюжка, але на іншій позиції.
Хоча райдужні таблиці вимагають відстеження більшої кількості ланцюжків, вони мають велику щільність кількості паролів на один табличний запис. На відміну від таблиці геш-ланцюжків, застосування декількох функцій редукції зменшує кількість потенційних колізій у таблиці, що дозволяє нарощувати без небезпеки отримати велику кількість злиття ланцюжків.
Приклад
Є геш (re3xes
), який треба обернути (відновити пароль), і райдужна таблиця отримана з використанням трьох функцій редукції.
- Обчислюємо ланцюжок довжини 1 від початкового гешу: R3(«re3xes»)="rambo". Цей пароль не є кінцем жодного табличного ланцюжка.
- Обчислюємо ланцюжок довжини 2: R3(H(R2(«re3xes»)))="linux23".
- Даний пароль знайдений в таблиці. Беремо початок знайденого ланцюжка (пароль
passwd
). - Відновлюємо табличний ланцюжок до тих пір, поки не отримаємо вихідний геш
re3xes
. - Шуканий геш знайдений в ланцюжку, атака успішна. Передуючий даному значенню гешу пароль
culture
є шуканим.
Час і використання пам'яті
Райдужна таблиця створюється побудовою ланцюжків можливих паролів. Створення таких таблиць вимагає більше часу, ніж потрібно для створення звичайних таблиць пошуку, але значно менше пам'яті (аж до сотень гігабайт, при обсязі для звичайних таблиць N слів для райдужних потрібно всього порядку N2/3).
При цьому хоч вони і вимагають більше часу (порівняно з простими методами на кшталт атаки по словнику) на відновлення вихідного пароля, але на практиці більше реалізовуються (для побудови звичайної таблиці для 6-символьного пароля з байтовими символами потрібно 2566 = 281 474 976 710 656 блоків пам'яті, в той час як для райдужної — всього 2566·⅔ = 4 294 967 296 блоків).
Таблиці можуть зламувати тільки ту геш-функцію, для якої вони створювалися, тобто таблиці для MD5 можуть зламати тільки геш MD5. Теорія даної технології була розроблена Philippe Oechslin як більш швидкий варіант time-memory tradeoff. Вперше технологія використана в програмі Ophcrack для злому гешів LanMan (LM-геш), які використовуються в Microsoft Windows. Пізніше була розроблена більш досконала програма RainbowCrack, яка може працювати з великою кількістю гешів, наприклад, LanMan, MD5, SHA1 та іншими.
Наступним кроком було створення програми The UDC, яка дозволяє будувати Hybrid Rainbow таблиці не по набору символів, а по набору словників, що дозволяє відновлювати довші паролі (фактично необмеженої довжини).
Застосування
При генерації таблиць важливо знайти найкраще співвідношення взаємопов'язаних параметрів:
- ймовірність знаходження пароля по отриманим таблицях;
- час генерації таблиць;
- час підбору пароля по таблицях;
- займане місце.
Вищеназвані параметри залежать від налаштувань, заданих при генерації таблиць:
- допустимий набір символів;
- довжина пароля;
- довжина ланцюжка;
- кількість таблиць.
При цьому час генерації залежить майже виключно від бажаної ймовірності підбору, використовуваного набору символів і довжини пароля. Займане таблицями місце залежить від бажаної швидкості 1 підбору пароля по готових таблицях.
Хоча застосування райдужних таблиць полегшує використання повного перебору (тобто методу грубої сили — bruteforce) для підбору паролів, в деяких випадках необхідні для їх генерації/використання обчислювальні потужності не дозволяють окремому користувачу досягти бажаних результатів за прийнятний час. Наприклад, для паролів довжиною не більше 8 символів, що складаються з літер, цифр і спеціальних символів !
@#$%^&*()-_+=
, загешованих алгоритмом MD5, можуть бути згенеровані таблиці з наступними параметрами:
- довжина ланцюжка — 1400
- кількість ланцюжків — 50 000 000
- кількість таблиць — 800
При цьому ймовірність знаходження пароля за допомогою даних таблиць складе 0,7542 (75,42 %), самі таблиці займуть 596 ГіБ, генерація їх на комп'ютері рівня Пентіум-3 1 ГГц займе 3 роки, а пошук 1 пароля по готових таблицях — не більше 22 хвилин.
Проте процес генерації таблиць можливо розпаралелити, наприклад, розрахунок однієї таблиці з вищенаведеними параметрами займає приблизно 33 години. У такому випадку, якщо в нашому розпорядженні є 100 комп'ютерів, усі таблиці можна згенерувати через 11 діб.
Захист від райдужних таблиць
Один з поширених методів захисту від злому за допомогою райдужних таблиць — використання необоротних геш-функцій, які включають («сіль», «модифікатор»). Існує безліч можливих схем змішування затравки і пароля. Наприклад, розглянемо таку функцію для створення геш від пароля:
геш = MD5( пароль + сіль )
Для такого відновлення пароля зловмиснику необхідні таблиці для всіх можливих значень солі. При використанні такої схеми, сіль повинна бути досить довгою (6-8 символів), інакше зловмисник може обчислити таблиці для кожного значення солі, випадкової і різною для кожного пароля. Таким чином два однакових пароля будуть мати різні значення гешів, якщо тільки не буде використовуватися однакова сіль.
По суті, сіль збільшує довжину і, можливо, складність пароля. Якщо таблиця розрахована на деяку довжину або на деякий обмежений набір символів, то сіль може запобігти відновленню пароля. Наприклад, у старих Unix-паролях використовувалася сіль, розмір якої становив лише 12 біт. Для злому таких паролів зловмисникові потрібно було порахувати всього 4096 таблиць, які можна вільно зберігати на терабайтних жорстких дисках. Тому в сучасних програмах намагаються використовувати більш довгу сіль. Наприклад, в алгоритмі хешування bcrypt використовується сіль розміром 128 біт. Така довжина солі робить попередні обчислення просто безглуздими. Іншим можливим способом боротьби проти атак, що використовують попередні обчислення, є розтягнення ключа(англ. [en]). Наприклад:
ключ = геш (пароль + сіль) for 1 to 65536 do ключ = геш(ключ + пароль + сіль)
Цей спосіб знижує ефективність застосування попередніх обчислень, так як використання проміжних значень збільшує час, який необхідно для обчислення одного пароля, і тим самим зменшує кількість обчислень, які зловмисник може провести у встановлені часові рамки.
Даний метод застосовується в наступних алгоритмах хешування: MD5, в якому використовується 1000 повторень, і bcrypt. Альтернативним варіантом є використання посилення ключа (англ. key strengthening), який часто приймають за розтягнення ключа. Застосовуючи даний метод, ми збільшуємо розмір ключа за рахунок додавання випадкової солі, яка потім спокійно видаляється, на відміну від розтягування ключа, коли сіль зберігається і використовується в наступних ітераціях.
Використання
Практично всі дистрибутиви ОС Unix, GNU/Linux і BSD використовують геші з сіллю для зберігання системних паролів, хоча багато програм, наприклад, інтернет-скрипти, використовують простий геш (зазвичай MD5) без «солі». ОС Microsoft Windows і Windows NT використовують геші LM-геш і NTLM, які також не використовують «сіль», що робить їх найбільш популярними для створення райдужних таблиць.
Примітки
- DOI:10.1109/TIT.1980.1056220
Нема шаблону {{}}.заповнити вручну - . Архів оригіналу за 23 листопада 2005. Процитовано 6 квітня 2018.
- Доклад Philippe Oechslin на конференции CRYPTO'03 [ 26 вересня 2007 у Wayback Machine.] (PDF)
- Alexander, Steven (June 2004). Password Protection for Modern Operating Systems (PDF). ;login:. Association. 29 (3).
- Ferguson, Neils (2003). Practical Cryptography. Indianapolis: John Wiley & Sons. ISBN .
- [en]; David Mazières (6 1999). A Future-Adaptable Password Scheme (PDF). Proceedings of the FREENIX Track: 1999 USENIX Annual Technical Conference (und) . Monterey, CA, USA: USENIX Association (6).
- U. Manber, "A Simple Scheme to Make Passwords Based on One-Way Functions Much Harder to Crack, " Computers & Security, v.15, n.2, 1996, pp.171-176.
Посилання
- Оригінальна дослідна робота з демонстрацією
- Проект RainbowCrack
- oxid.it Містить winrtgen — графічну оболонку для rtgen (утиліти створення таблиць)
- (використовується в GSM мережах, поки тільки для відеокарт з CUDA)
- Великі райдужні таблиці від групи Shmoo Group, творців AirSnort
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Rajduzhna tablicya angl rainbow table specialnij variant tablic poshuku angl lookup table dlya zvernennya kriptografichnih hesh funkcij yaki vikoristovuyut mehanizm rozumnogo kompromisu mizh chasom poshuku tabliceyu i zajmanoyu pam yattyu angl time memory tradeoff Rajduzhni tablici vikoristovuyutsya dlya rozkrittya paroliv peretvorenih za dopomogoyu vazhkozvorotnoyi gesh funkciyi a takozh dlya atak na simetrichni shifri na osnovi vidomogo vidkritogo tekstu Vikoristannya funkciyi formuvannya klyucha z zastosuvannyam soli robit cyu ataku nemozhlivoyu Shema sproshenoyi rajduzhnoyi tablici z lancyuzhkiv dovzhinoyu sho dorivnyuye trom R1 R2 R3 funkciyi redukciyi H funkciya heshuvannya Rajduzhni tablici ye rozvitkom bilsh rannogo j prostogo algoritmu zaproponovanogo Martinom Gellmanom Peredumovi poyaviKomp yuterni sistemi yaki vikoristovuyut paroli dlya avtentifikaciyi povinni yakimos chinom viznachati pravilnist vvedenogo parolya Najprostishim sposobom virishennya danoyi problemi ye zberigannya spisku vsih dopustimih paroliv dlya kozhnogo koristuvacha Minusom danogo metodu ye te sho v razi nesankcionovanogo dostupu do spisku zlovmisnik diznayetsya vsi paroli Bilsh poshirenij pidhid polyagaye u zberiganni znachen kriptografichnoyi gesh funkciyi vid parolnoyi frazi Odnak bilshist geshiv shvidko obchislyuyutsya tomu zlovmisnik otrimavshi dostup do geshiv mozhe shvidko pereviriti spisok mozhlivih paroliv na validnist Shob uniknuti cogo potribno vikoristovuvati bilsh dovgi paroli tim samim zbilshuyuchi spisok paroliv yaki povinen pereviriti zlovmisnik Dlya prostih paroliv sho ne mistyat sil zlovmisnik mozhe zazdalegid pidrahuvati znachennya geshiv dlya vsih poshirenih i korotkih paroliv i zberegti yih u tablici Teper mozhna shvidko znajti zbig u zazdalegid otrimanij tablici Ale chim dovshij parol tim bilshe tablicya i tim bilshe pam yati neobhidno dlya yiyi zberigannya Alternativnim variantom ye zberigannya lishe pershih elementiv lancyuzhkiv geshiv Ce potrebuye bilshe obchislen dlya poshuku parolya ale znachno zmenshit kilkist neobhidnoyi pam yati Rajduzhni tablici ye polipshenim variantom cogo metodu yaki dozvolyayut uniknuti kolizij Rozrahunok lancyuzhka geshivUvaga Lancyuzhki heshiv opisani v cij statti vidriznyayutsya vid opisanih u statti Lancyuzhok heshiv Nehaj u nas ye gesh funkciya H z dovzhinoyu gesh n i kinceva mnozhina paroliv P Nasha meta stvoriti strukturu danih yaka dlya bud yakogo znachennya heshu h mozhe znajti takij element p z P sho H p h abo viznachiti sho takogo elementa ne isnuye Najprostishij sposib zrobiti ce obchisliti H p dlya vsih p z P ale dlya zberigannya takoyi tablici potribno 8 P n pam yati sho duzhe bagato Lancyuzhki geshiv metod dlya zmenshennya ciyeyi vimogi do obsyagu pam yati Golovna ideya viznachennya funkciyi redukciyi R yaka zistavlyaye znachennyam gesha znachennya P Zauvazhimo sho R ne ye zvernennyam gesh funkciyi Pochinayuchi z vihidnogo parolya i popereminno zastosovuyuchi do kozhnogo otrimanogo znachennya H i R mi otrimayemo lancyuzhok peremezhovanih paroliv i geshiv Napriklad dlya naboru paroliv dovzhinoyu v 6 simvoliv i gesh funkciyi sho vidaye 32 bitni znachennya lancyuzhok mozhe viglyadati tak aaaaaa H281DAF40 Rsgfnyd H920ECF10 Rkiebgt displaystyle mathbf aaaaaa xrightarrow H mathrm 281DAF40 xrightarrow R mathrm sgfnyd xrightarrow H mathrm 920ECF10 xrightarrow R mathbf kiebgt Do funkciyi redukciyi visuvayetsya yedina vimoga povertati znachennya z togo zh alfavitu sho i paroli Dlya generaciyi tablici mi vibirayemo vipadkovu mnozhinu pochatkovih paroliv z P obchislyuyemo lancyuzhok deyakoyi fiksovanoyi dovzhini k dlya kozhnogo parolya i zberigayemo tilki pershij i ostannij parol z kozhnogo lancyuzhka Dlya kozhnogo geshu h znachennya yakogo mi hochemo obernuti znajti vidpovidnij jomu parol obchislyuyemo poslidovnist R R H R h Yaksho yakes z promizhnih znachen zijdetsya z yakim nebud kincem bud yakogo lancyuzhka mi beremo pochatok cogo lancyuzhka i vidnovlyuyemo jogo povnistyu Z visokoyu jmovirnistyu povnij lancyuzhok bude mistiti znachennya geshu h a pereduyuchij jomu parol bude shukanim Dlya prikladu zaznachenogo vishe yaksho u nas ye gesh 920ECF10 vin porodit nastupnu poslidovnist 920ECF10 Rkiebgt displaystyle mathrm 920ECF10 xrightarrow R mathbf kiebgt Oskilki kiebgt ye kincem lancyuzhka z nashoyi tablici mi beremo vidpovidnij pochatkovij parol aaaaaa i obchislyuyemo lancyuzhok poki ne znajdemo hesh 920ECF10 aaaaaa H281DAF40 Rsgfnyd H920ECF10 displaystyle mathbf aaaaaa xrightarrow H mathrm 281DAF40 xrightarrow R mathrm sgfnyd xrightarrow H mathrm 920ECF10 Takim chinom shukanij parol sgfnyd Varto zauvazhiti sho vidnovlenij lancyuzhok ne zavzhdi mistit shukane znachennya geshu h Take mozhlivo pri viniknenni koliziyi funkciyi H abo R Napriklad nehaj dano hesh FB107E70 yakij na pevnomu etapi porodzhuye parol kiebgt FB107E70 Rbvtdll H0EE80890 Rkiebgt displaystyle mathrm FB107E70 xrightarrow R mathrm bvtdll xrightarrow H mathrm 0EE80890 xrightarrow R mathbf kiebgt Ale FB107E70 ne z yavlyayetsya v lancyuzhku porodzhenoyi parolem aaaaaa Ce nazivayetsya pomilkovim spracyuvannyam U comu vipadku mi ignoruyemo zbig i prodovzhuyemo viznachati poslidovnist porodzhenu h Yaksho zgenerovana poslidovnist dosyagaye dovzhini k bez horoshih zbigiv ce oznachaye sho shukanij parol nikoli ne zustrichavsya v pidgotovlenih lancyuzhkah Vmist tablici ne zalezhit vid znachennya doslidzhuvanogo geshu vona obchislyuyetsya zazdalegid i vikoristovuyetsya lishe dlya shvidkogo poshuku Zbilshennya dovzhini lancyuzhka zmenshuye rozmir tablici ale zbilshuye chas poshuku potribnogo elementa v lancyuzhku Prosti lancyuzhki geshiv mayut dekilka nedolikiv Najserjoznishij mozhlivist zlittya dvoh lancyuzhkiv v odin generaciya odnogo i togo zh znachennya v riznih lancyuzhkah Vsi znachennya zgenerovani pislya zlittya budut odnakovimi v oboh lancyuzhkah sho zvuzhuye kilkist ohoplyuvanih paroliv Oskilki peregenerovani lancyuzhki zberigayutsya ne povnistyu nemozhlivo efektivno porivnyuvati vsi zgenerovani znachennya mizh soboyu Yak pravilo pro vidsutnist kolizij gesh funkciyi H pikluyetsya storona sho zabezpechuye shifruvannya paroliv tomu sho osnovna problema kriyetsya u funkciyi redukciyi R Insha serjozna problema pidbir takoyi funkciyi R yaka bude generuvati paroli z neobhidnim pokrittyam i rozpodilom Obmezhennya vihidnogo alfavitu ye serjoznim obmezhennyam dlya viboru takoyi funkciyi Rajduzhni tabliciRajduzhni tablici ye rozvitkom ideyi tablici gesh lancyugiv Voni efektivno virishuyut problemu kolizij shlyahom vvedennya poslidovnosti funkcij redukciyi R1 R2 Rk Funkciyi redukciyi zastosovuyutsya po cherzi peremezhayuchis z funkciyeyu geshuvannya H R1 H R2 H Rk Pri takomu pidhodi dva lancyuzhki mozhut zlitisya tilki za umovi zbigu znachen na odnij i tij zhe iteraciyi Otzhe dostatno pereviryati na koliziyi tilki kincevi znachennya lancyuzhkiv sho ne vimagaye dodatkovoyi pam yati Na kincevomu etapi skladannya tablici mozhna znajti vsi zliti lancyuzhki zalishiti z nih tilki odin i zgeneruvati novi shob zapovniti tablicyu neobhidnoyu kilkistyu riznih lancyuzhkiv Otrimani lancyuzhki ne ye povnistyu vilnimi vid kolizij tim ne mensh voni ne zillyutsya povnistyu Vikoristannya poslidovnostej funkcij redukciyi zminyuye sposib poshuku po tablici Oskilki gesh mozhe buti znajdenij v bud yakomu misci lancyuzhka neobhidno zgeneruvati k riznih lancyuzhkiv pershij lancyuzhok buduyetsya na pripushenni sho shukanij gesh zustrinetsya na ostannij poziciyi v tablichnomu lancyuzhku tomu skladayetsya z yedinogo znachennya Rk h drugij lancyuzhok buduyetsya na pripushenni sho shukanij gesh zustrinetsya na peredostannij poziciyi v tablichnomu lancyuzhku tomu viglyadaye tak Rk H Rk 1 h analogichno naroshuyuchi dovzhinu lancyuzhka i zastosovuyuchi funkciyi redukciyi z menshimi nomerami otrimuyemo inshi lancyuzhki Ostannij lancyuzhok bude mati dovzhinu k i mistiti vsi funkciyi redukciyi Rk H Rk 1 H H R1 h Takozh zminitsya i viznachennya pomilkovogo spracyuvannya yaksho mi nepravilno vgadayemo poziciyu shukanogo geshu ce bude vidkidati tilki odin z k zgenerovanih lancyuzhkiv pri comu vse she mozhe zalishatisya mozhlivist znajti virnij gesh dlya danogo tablichnogo lancyuzhka ale na inshij poziciyi Hocha rajduzhni tablici vimagayut vidstezhennya bilshoyi kilkosti lancyuzhkiv voni mayut veliku shilnist kilkosti paroliv na odin tablichnij zapis Na vidminu vid tablici gesh lancyuzhkiv zastosuvannya dekilkoh funkcij redukciyi zmenshuye kilkist potencijnih kolizij u tablici sho dozvolyaye naroshuvati bez nebezpeki otrimati veliku kilkist zlittya lancyuzhkiv Priklad Ye gesh re3xes yakij treba obernuti vidnoviti parol i rajduzhna tablicya otrimana z vikoristannyam troh funkcij redukciyi Obchislyuyemo lancyuzhok dovzhini 1 vid pochatkovogo geshu R3 re3xes rambo Cej parol ne ye kincem zhodnogo tablichnogo lancyuzhka Obchislyuyemo lancyuzhok dovzhini 2 R3 H R2 re3xes linux23 Danij parol znajdenij v tablici Beremo pochatok znajdenogo lancyuzhka parol passwd Vidnovlyuyemo tablichnij lancyuzhok do tih pir poki ne otrimayemo vihidnij gesh re3xes Shukanij gesh znajdenij v lancyuzhku ataka uspishna Pereduyuchij danomu znachennyu geshu parol culture ye shukanim Chas i vikoristannya pam yatiRajduzhna tablicya stvoryuyetsya pobudovoyu lancyuzhkiv mozhlivih paroliv Stvorennya takih tablic vimagaye bilshe chasu nizh potribno dlya stvorennya zvichajnih tablic poshuku ale znachno menshe pam yati azh do soten gigabajt pri obsyazi dlya zvichajnih tablic N sliv dlya rajduzhnih potribno vsogo poryadku N2 3 Pri comu hoch voni i vimagayut bilshe chasu porivnyano z prostimi metodami na kshtalt ataki po slovniku na vidnovlennya vihidnogo parolya ale na praktici bilshe realizovuyutsya dlya pobudovi zvichajnoyi tablici dlya 6 simvolnogo parolya z bajtovimi simvolami potribno 2566 281 474 976 710 656 blokiv pam yati v toj chas yak dlya rajduzhnoyi vsogo 2566 4 294 967 296 blokiv Tablici mozhut zlamuvati tilki tu gesh funkciyu dlya yakoyi voni stvoryuvalisya tobto tablici dlya MD5 mozhut zlamati tilki gesh MD5 Teoriya danoyi tehnologiyi bula rozroblena Philippe Oechslin yak bilsh shvidkij variant time memory tradeoff Vpershe tehnologiya vikoristana v programi Ophcrack dlya zlomu geshiv LanMan LM gesh yaki vikoristovuyutsya v Microsoft Windows Piznishe bula rozroblena bilsh doskonala programa RainbowCrack yaka mozhe pracyuvati z velikoyu kilkistyu geshiv napriklad LanMan MD5 SHA1 ta inshimi Nastupnim krokom bulo stvorennya programi The UDC yaka dozvolyaye buduvati Hybrid Rainbow tablici ne po naboru simvoliv a po naboru slovnikiv sho dozvolyaye vidnovlyuvati dovshi paroli faktichno neobmezhenoyi dovzhini ZastosuvannyaPri generaciyi tablic vazhlivo znajti najkrashe spivvidnoshennya vzayemopov yazanih parametriv jmovirnist znahodzhennya parolya po otrimanim tablicyah chas generaciyi tablic chas pidboru parolya po tablicyah zajmane misce Vishenazvani parametri zalezhat vid nalashtuvan zadanih pri generaciyi tablic dopustimij nabir simvoliv dovzhina parolya dovzhina lancyuzhka kilkist tablic Pri comu chas generaciyi zalezhit majzhe viklyuchno vid bazhanoyi jmovirnosti pidboru vikoristovuvanogo naboru simvoliv i dovzhini parolya Zajmane tablicyami misce zalezhit vid bazhanoyi shvidkosti 1 pidboru parolya po gotovih tablicyah Hocha zastosuvannya rajduzhnih tablic polegshuye vikoristannya povnogo pereboru tobto metodu gruboyi sili bruteforce dlya pidboru paroliv v deyakih vipadkah neobhidni dlya yih generaciyi vikoristannya obchislyuvalni potuzhnosti ne dozvolyayut okremomu koristuvachu dosyagti bazhanih rezultativ za prijnyatnij chas Napriklad dlya paroliv dovzhinoyu ne bilshe 8 simvoliv sho skladayutsya z liter cifr i specialnih simvoliv amp zageshovanih algoritmom MD5 mozhut buti zgenerovani tablici z nastupnimi parametrami dovzhina lancyuzhka 1400 kilkist lancyuzhkiv 50 000 000 kilkist tablic 800 Pri comu jmovirnist znahodzhennya parolya za dopomogoyu danih tablic sklade 0 7542 75 42 sami tablici zajmut 596 GiB generaciya yih na komp yuteri rivnya Pentium 3 1 GGc zajme 3 roki a poshuk 1 parolya po gotovih tablicyah ne bilshe 22 hvilin Prote proces generaciyi tablic mozhlivo rozparaleliti napriklad rozrahunok odniyeyi tablici z vishenavedenimi parametrami zajmaye priblizno 33 godini U takomu vipadku yaksho v nashomu rozporyadzhenni ye 100 komp yuteriv usi tablici mozhna zgeneruvati cherez 11 dib Zahist vid rajduzhnih tablicOdin z poshirenih metodiv zahistu vid zlomu za dopomogoyu rajduzhnih tablic vikoristannya neoborotnih gesh funkcij yaki vklyuchayut sil modifikator Isnuye bezlich mozhlivih shem zmishuvannya zatravki i parolya Napriklad rozglyanemo taku funkciyu dlya stvorennya gesh vid parolya gesh MD5 parol sil Dlya takogo vidnovlennya parolya zlovmisniku neobhidni tablici dlya vsih mozhlivih znachen soli Pri vikoristanni takoyi shemi sil povinna buti dosit dovgoyu 6 8 simvoliv inakshe zlovmisnik mozhe obchisliti tablici dlya kozhnogo znachennya soli vipadkovoyi i riznoyu dlya kozhnogo parolya Takim chinom dva odnakovih parolya budut mati rizni znachennya geshiv yaksho tilki ne bude vikoristovuvatisya odnakova sil Po suti sil zbilshuye dovzhinu i mozhlivo skladnist parolya Yaksho tablicya rozrahovana na deyaku dovzhinu abo na deyakij obmezhenij nabir simvoliv to sil mozhe zapobigti vidnovlennyu parolya Napriklad u starih Unix parolyah vikoristovuvalasya sil rozmir yakoyi stanoviv lishe 12 bit Dlya zlomu takih paroliv zlovmisnikovi potribno bulo porahuvati vsogo 4096 tablic yaki mozhna vilno zberigati na terabajtnih zhorstkih diskah Tomu v suchasnih programah namagayutsya vikoristovuvati bilsh dovgu sil Napriklad v algoritmi heshuvannya bcrypt vikoristovuyetsya sil rozmirom 128 bit Taka dovzhina soli robit poperedni obchislennya prosto bezgluzdimi Inshim mozhlivim sposobom borotbi proti atak sho vikoristovuyut poperedni obchislennya ye roztyagnennya klyucha angl en Napriklad klyuch gesh parol sil for 1 to 65536 do klyuch gesh klyuch parol sil Cej sposib znizhuye efektivnist zastosuvannya poperednih obchislen tak yak vikoristannya promizhnih znachen zbilshuye chas yakij neobhidno dlya obchislennya odnogo parolya i tim samim zmenshuye kilkist obchislen yaki zlovmisnik mozhe provesti u vstanovleni chasovi ramki Danij metod zastosovuyetsya v nastupnih algoritmah heshuvannya MD5 v yakomu vikoristovuyetsya 1000 povtoren i bcrypt Alternativnim variantom ye vikoristannya posilennya klyucha angl key strengthening yakij chasto prijmayut za roztyagnennya klyucha Zastosovuyuchi danij metod mi zbilshuyemo rozmir klyucha za rahunok dodavannya vipadkovoyi soli yaka potim spokijno vidalyayetsya na vidminu vid roztyaguvannya klyucha koli sil zberigayetsya i vikoristovuyetsya v nastupnih iteraciyah VikoristannyaPraktichno vsi distributivi OS Unix GNU Linux i BSD vikoristovuyut geshi z sillyu dlya zberigannya sistemnih paroliv hocha bagato program napriklad internet skripti vikoristovuyut prostij gesh zazvichaj MD5 bez soli OS Microsoft Windows i Windows NT vikoristovuyut geshi LM gesh i NTLM yaki takozh ne vikoristovuyut sil sho robit yih najbilsh populyarnimi dlya stvorennya rajduzhnih tablic PrimitkiDOI 10 1109 TIT 1980 1056220 Nema shablonu zapovniti vruchnu Arhiv originalu za 23 listopada 2005 Procitovano 6 kvitnya 2018 Doklad Philippe Oechslin na konferencii CRYPTO 03 26 veresnya 2007 u Wayback Machine PDF Alexander Steven June 2004 Password Protection for Modern Operating Systems PDF login Association 29 3 Ferguson Neils 2003 Practical Cryptography Indianapolis John Wiley amp Sons ISBN 0 471 22357 3 en David Mazieres 6 1999 A Future Adaptable Password Scheme PDF Proceedings of the FREENIX Track 1999 USENIX Annual Technical Conference und Monterey CA USA USENIX Association 6 U Manber A Simple Scheme to Make Passwords Based on One Way Functions Much Harder to Crack Computers amp Security v 15 n 2 1996 pp 171 176 PosilannyaOriginalna doslidna robota z demonstraciyeyu Proekt RainbowCrack oxid it Mistit winrtgen grafichnu obolonku dlya rtgen utiliti stvorennya tablic vikoristovuyetsya v GSM merezhah poki tilki dlya videokart z CUDA Veliki rajduzhni tablici vid grupi Shmoo Group tvorciv AirSnort