Введение.
На фоне многочисленных постов о паролях решил провести небольшое исследование.
В настоящее время парольная защита является самым распространённым и, к сожалению, самым ненадёжным методом защиты. Существует много статей на тему «Как составить стойкий пароль», но мне не встречались статьи, где приводятся реальные данные о надёжности паролей.
В исследовании проводится оценка надёжности паролей противостоять атакам грубой силы. Наиболее эффективный метод грубой силы при переборе паролей для хеш-функций является составление радужных таблиц.
Расчёты проводятся для трёх хеш-функций md5, sha1 и sha2 (модификация sha512). В расчёт не берутся данные о коллизиях в данных хеш-функциях, так как с практической точки зрения в реальном подборе пароля они не помогут, да и достойных реализаций в ПО на настоящий время в открытом доступе нет. В исследовании принимают участия пароли длиной 7, 8, 10 и 12 символов трёх различных алфавитов.
Для наглядности результатов приводятся данные о количестве паролей, объёме дискового пространства для хранения радужных таблиц и ориентировочном времени построения радужных таблиц.
Инструментарий.
- Компьютер с процессором Pentium 4 2.6 GHz и оперативной памятью 512 МБ;
- Утилита winrtgen, входящая в состав Cain&Abel;
Промежуточные расчёты.
Количество комбинаций паролей равно (количество символов в алфавите)^(количество символов в пароле)
В исследовании принимают участие 3 алфавита:
- А1={abcdefghijklmnopqrstuvwxyz0123456789} 36 символов
- А2={abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_+="} 51 символ
- А3={abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=} 77 символов
- А4={0123456789} 10 символов
Результаты.
Для алфавита А1
№ | Число символов | Хеш алгоритм | Дисковое пространство | Время подсчёта |
1 | 7 | md5 | 2,98 ГБ | 5 дней |
2 | 8 | md5 | 89,4 ГБ | 159 дней |
3 | 10 | md5 | 113 249 ГБ | 661,5 года |
4 | 12 | md5 | 178 754 329 ГБ | 1,19851е+006 лет |
5 | 7 | sha1 | 2,98 ГБ | 7 дней |
6 | 8 | sha1 | 89,4 ГБ | 230 дней |
7 | 10 | sha1 | 113 249 ГБ | 918 лет |
8 | 12 | sha1 | 178 754 329 ГБ | 1,58632е+006 лет |
9 | 7 | sha512 | 2,98 ГБ | 16 дней |
10 | 8 | sha512 | 89,4 ГБ | 1,4 года |
11 | 10 | sha512 | 113 249 ГБ | 1905 лет |
12 | 12 | sha512 | 178 754 329 ГБ | 3,1438е+006 |
Для алфавита А2
№ | Число символов | Хеш алгоритм | Дисковое пространство | Время подсчёта |
1 | 7 | md5 | 232,5 ГБ | 1 год |
2 | 8 | md5 | 17 881,4 ГБ | 90,2 года |
3 | 10 | md5 | 77 486 038,2 ГБ | 462539 лет |
4 | 12 | md5 | — | — |
5 | 7 | sha1 | 232,5 ГБ | 1,6 года |
6 | 8 | sha1 | 17 881,4 ГБ | 129 лет |
7 | 10 | sha1 | 77 486 038,2 ГБ | 638089 лет |
8 | 12 | sha1 | — | — |
9 | 7 | sha512 | 232,5 ГБ | 3,54 года |
10 | 8 | sha512 | 17 881,4 ГБ | 286,5 года |
11 | 10 | sha512 | 77 486 038,2 ГБ | 1,33807е+006 года |
12 | 12 | sha512 | — | — |
Для алфавита А3
№ | Число символов | Хеш алгоритм | Дисковое пространство | Время подсчёта |
1 | 7 | md5 | 596 ГБ | 2,73 года |
2 | 8 | md5 | 41 723 ГБ | 206 лет |
3 | 10 | md5 | 238 418 579 ГБ | 1,38521е+006 лет |
4 | 12 | md5 | — | — |
5 | 7 | sha1 | 596 ГБ | 4 года |
6 | 8 | sha1 | 41 723 ГБ | 301 год |
7 | 10 | sha1 | 238 418 579 ГБ | 1,91805е+006 лет |
8 | 12 | sha1 | — | — |
9 | 7 | sha512 | 596 ГБ | 9 лет |
10 | 8 | sha512 | 41 723 ГБ | 654 года |
11 | 10 | sha512 | 238 418 579 ГБ | 3,95008е+006 лет |
12 | 12 | sha512 | — | — |
Для алфавита А4
№ | Число символов | Хеш алгоритм | Дисковое пространство | Время подсчёта |
1 | 12 | md5 | 59,6 ГБ | 133 дня |
2 | 15 | md5 | 59 604,64 ГБ | 426 лет |
3 | 17 | md5 | 5 960 464,47 ГБ | 47 574 года |
4 | 20 | md5 | 1 665 497 181 ГБ | 4,94612е+007 лет |
5 | 12 | sha1 | 59,6 ГБ | 175 дней |
6 | 15 | sha1 | 59 604,64 ГБ | 563 года |
7 | 17 | sha1 | 5 960 464,47 ГБ | 60 505 лет |
8 | 20 | sha1 | 1 665 497 181 ГБ | 6,2405е+007 лет |
9 | 12 | sha512 | 59,6 ГБ | 359 дней |
10 | 15 | sha512 | 59 604,64 ГБ | 1040 лет |
11 | 17 | sha512 | 5 960 464,47 ГБ | 110 162 года |
12 | 20 | sha512 | 1 665 497 181 ГБ | 1,12256е+008 лет |
Прочерк там, где программа решила, что с неё хватит подсчётов.
Выводы.
Длину и состав паролей каждый должен выбрать для себе сам, от себя могу лишь сказать, лучше выбрать пароль до 12 символов и периодически его менять, нежели взять пароль 20 символов и чувствовать себя в полной безопасности.
P.S. Это мой первый пост на хабре, сильно не пинайте, пожалуйста.
UPD Добавлен алфавит А4 и статистика к нему.