Rainbow table, Mind Control, FANDOM powered by Wikia

Рейнбоу таблица(англ.rainbow table) е специална версия на справочни таблици (справочна таблица), използваща механизма за намаляване на времето за търсене чрез увеличаване на заетата памет или компромис време-памет. Rainbow таблиците се използват за разбиване на пароли, конвертирани с помощта на необратима хеш функция.

Теория Редактиране

Дъговата таблица се създава чрез изграждане на вериги от възможни пароли. Всяка верига започва с произволна възможна парола, след което се подлага на хеш функция и редуцираща функция. Тази функция преобразува резултата от хеш функцията в някаква възможна парола. Междинните пароли във веригата се отхвърлят и само първият и последният елемент на веригите се записват в таблицата. Създаването на таблици отнема време и памет (до стотици гигабайти), но ви позволяват да възстановите оригиналната парола много бързо (в сравнение с конвенционалните методи).

За възстановяване на паролата тази хеш стойност се намалява и се търси в таблицата. Ако не бъде намерено съвпадение, хеш функцията и редукционната функция се прилагат отново. Тази операция продължава, докато се намери съвпадение. След намиране на съвпадение веригата, която го съдържа, се възстановява, за да се намери изхвърлената стойност, която ще бъде желаната парола.

Резултатът е таблица, която може с голяма вероятност да възстанови парола за кратко време.

Таблиците могат да разбият само хеш функцията, за която са създадени, т.е. MD5 таблиците могат да разбият само MD5 хеша. Теорията зад тази технология е разработена от Philippe Oechslin [1] като бърз вариант накомпромис между време и памет[2] . Технологията е използвана за първи път в програмата Ophcrack за кракване на хешовете LanMan, използвани от MicrosoftWindows. По-късно беше разработена по-усъвършенствана програма RainbowCrack, която може да работи с голям брой хешове, като LanMan, MD5, SHA1 и др. Следващата стъпка беше създаването на програмата The UDC, която ви позволява да изграждате таблици Hybrid Rainbow не чрез набор от знаци, а чрез набор от речници, което ви позволява да възстановявате по-дълги пароли (всъщност неограничена дължина).

Редактиране на приложението

При генерирането на таблици е важно да се намери най-доброто съотношение на взаимосвързани параметри:

  • вероятността за намиране на парола според получените таблици
  • време за генериране на таблица
  • време за отгатване на парола за маса
  • заето място

Горните параметри зависят от настройките, посочени по време на генерирането на таблица:

  • валиден набор от знаци
  • дължина на паролата
  • дължина на веригата
  • брой маси

В този случай времето за генериране зависи почти изключително от желаната вероятност за избор, използвания набор от символи и дължината на паролата. Пространството, което заемат таблиците зависи от желаната скорост на избор на 1 парола от готови таблици.

Въпреки че използването на дъгови таблици улеснява използването на груби методи за отгатване на пароли, в някои случаи изчислителната мощност, необходима за генерирането/използването им, не позволява на един потребител да постигне желаните резултати за приемливо време. Например за пароли, не по-дълги от 8 знака, състоящи се от букви, цифри и специални знаци !@#$%^&*()-_+= хеширани с алгоритъма MD5, могат да се генерират таблици със следните параметри:

  • дължина на веригата 1400
  • брой вериги 50000000
  • брой маси 800 бр

В този случай вероятността да намерите парола сизползването на тези таблици ще бъде 0,7542 (75,42%), самите таблици ще заемат 596 GB, генерирането им на компютър Pentium-3 1GHz ще отнеме 3 години, а търсенето на 1 парола с помощта на готови таблици ще отнеме не повече от 22 минути.

Процесът на генериране на таблица обаче може да бъде паралелен, например изчисляването на една таблица с горните параметри отнема приблизително 33 часа. В този случай, ако имаме 100 компютъра на наше разположение, всички таблици могат да бъдат генерирани за 11 дни.

Защита срещу таблици на дъгата Редактиране

Данните от таблицата не могат да се използват срещу необратими хеш функции, които включватsalt(сол). Например, разгледайте следната функция за създаване на хеш на парола:

където + означава конкатенация.

За да възстанови такава парола, атакуващият се нуждае от таблици за всички възможни начални стойности.

По същество зареждането увеличава дължината и евентуално сложността на паролата. Ако таблицата е проектирана за определена дължина или за някакъв ограничен набор от знаци, тогава зареждането може да попречи на възстановяването на паролата.

Използване Редактиране

Почти всички дистрибуции на Unix, GNU/Linux и BSD използват хешове със сол за съхраняване на системни пароли, въпреки че много приложения, като PHP уеб скриптове, използват прост хеш (обикновено MD5) без сол. Операционните системи на Microsoft Windows и Windows NT използват хешове на LAN Manager и NT LAN Manager, които също не използват сол, което ги прави една от най-популярните дъгови таблици за създаване.