• Авторизация


Повышение устойчивости паролей 06-11-2009 16:20 к комментариям - к полной версии - понравилось!


Настроение сейчас - nice ;)

Давно уже задумывался как же разрешить дилемму устойчивости пароля и емкости серого вещества для его запоминания. Ведь держать в голове даже один (например такой: kW72{w2@/b5$v) пароль - это очень сложно. Известно давно, что при наличии хорошей базы словарей пароли ломаются достаточно быстро. И самое обидное состоит как раз в том, что наш с вами мозг лучше всего генерирует и запоминает словарные (а стало быть неустойчивые) пароли. Закономерный вопрос что же нам органическим делать?

Введем систему обозначений:

login - слово-логин
passwd - слово-пароль
hash - хэш со слова-пароля
hash_et - эталонный хэш слова-пароля
f - функция снятия хэша со слова-пароля
g - дополнительная хэш-функция

Попробуем разобраться. Любая супер-пупер навороченная система аутентификации сводится к банальному IF... ELSE... А весь хитроумный алгоритм можно свести к следующей последовательности действий:

1. Прием входных данных пользователя login, passwd
2. Вычисление хэш-образа hash = f(passwd), где f(passwd) - функция хэширования
3. Сравнение полученного хэш-образа с эталонным. Т.е. if(hash != hash_et) InvalidPassword(true);

Или же:

+--------------------------+ +-----------------------------------------------------------------+
| Пользовательская | | Система |
| сторона | | аутентификации |
+--------------------------+ +-----------------------------------------------------------------+
| passwd | -----> | hash = f(passwd); |
| | | if(hash != hash_et) IncorrectPasswd(true); |
+--------------------------+ +-----------------------------------------------------------------+

Такая система обладает следующим набором уязвимостей:

1. Входным словом является вполне словарное слово (т.к. человеку тяжело запоминать что-то вроде a5XG8#n90\!@#94SA);
2. При известном алгоритме снятия хэш-функции f(passwd) может вскрыться уязвимость алгоритма, что сильно упрощает процесс взлома.
3. Пользователь не может повлиять на выбор функции снятия хэш-образа f(passwd) при обнаружении алгоритма f(passwd).

Выходом представляется введние дополнительной хэш-функции на стороне пользователя (функции первичного хэширования). Иными словами, на вход системы аутентификации будет поступать не словарное слово, а устойчивый к атаке по словарю буквенно-цифровой пароль со спецсимволами.

Условия выбора функции первичного хэширования:
1. Необратимость. Для невозможности восстановления слова-пароля по хэшу.
2. Получение хэша в виде совокупности всех возможных печатаемых и непечатаемых (в случае автоматизации ввода со стороны пользователя) символов.
3. Нестандартность. Чем дольше алгоритм будет оставаться тайной, тем выше устойчивость.
4. Если нестандартность тяжело дается, то хотя бы нетождественность хэш-функции в системе аутентификации. Т.е. если у вас в системе аутентификации используется DES64, то нужно взять хотя бы MD5.

Т.е. в данном случае наша схема приема данных будет выглядеть следующим образом:
+----------------------------+ +---------------------------------------------------------------+
| Пользовательская | | Система |
| сторона | | аутентификации |
+----------------------------+ +---------------------------------------------------------------+
| hash1 = g(passwd); | ------> | hash2 = f(hash1); |
| | | if(hash2 != hash_et) IncorrectPasswd(true); |
+----------------------------+ +---------------------------------------------------------------+

Такая схема при соблюдении условий выбора функции первичного хэширования обладает рядом преимуществ перед классической:

1. Пользователь также как и раньше пользуется простым для запоминания (словарным) паролем.
2. Возможность смены алгоритма первичного хэширования на стороне пользователя, что обеспечивает вариативность устойчивости
пароля к атакам. Более того, смена алгоритма первичного хэширования позволит использовать один и тот же пароль с разными системами аутентификации. Лично по моим наблюдениям за коллегами большинство использует один и тот же пароль со всеми системами аутентификации.
3. Невозможность атаки по словарю непосредственно системы аутентификации, т.к. неизвестен промежуточный хэш и алгоритм первичного хэширования.
4. Невозможность подбора слова-пароля при наличии одной только функции первичного хэширования, т.к. промежуточный хэш нигде не хранится, а сама функция обладает свойством необратимости.
5. Невозможность использования слова-пароля в системе аутентификации напрямую. Люди разные бывают и некоторым очень тяжело держать язык за зубами.
6. Увеличение времени взлома для одного прохода (возможно, что незначительно).

P.S. Математики опять в цене. 8)
вверх^ к полной версии понравилось! в evernote
Комментарии (6):
-null- 06-11-2009-16:21 удалить
Ч0рт! Графики превратились в изысканное говно. 8(
OFF_elia 08-11-2009-01:45 удалить
папа.немного не по теме...
мне нужно тебя увидеть в ближайшее время.
-null- 08-11-2009-19:34 удалить
папа.немного не по теме...
мне нужно тебя увидеть в ближайшее время.


Зачем? Есть телефон. 0_о
OFF_elia 12-11-2009-12:23 удалить
хорошо,продолжай думаьть только о себе.
-null- 12-11-2009-16:06 удалить
Плавали. Знаем. Говоришь типа очень нужно что-то обсудить тет-а-тет, а по факту лишний собутыльник нужен. Я уже этим наелся в свое время - надоело. Когда людям нужно что-то решить, то они созваниваются, обсуждают это по телефону и либо решают это совместно, либо просящий ищет другого помощника.
OFF_elia 17-11-2009-11:08 удалить
сколько раз я хотела с тобой встретиться,тет а тет всегда все срывается и я догадывалась что у тебя все именно из-за этого.
самое смешное что это всегда происходит непроизвольно!я хочу встретится рассказать о наболевшем,тут откуда-то набегает толпа знакомых и все переростает в пьянку.
вообщем думай сам.


Комментарии (6): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Повышение устойчивости паролей | -null- - Дневник -null- | Лента друзей -null- / Полная версия Добавить в друзья Страницы: раньше»