информационная безопасность
без паники и всерьез
 подробно о проекте
Rambler's Top100Страшный баг в WindowsSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / библиотека / безопасность
БИБЛИОТЕКА
вход в библиотеку
книги
безопасность
программирование
криптография
internals
www
телефония
underground
беллетристика
разное
обзор: избранное
конкурс
рейтинг статей
обсуждение




Подписка:
BuqTraq: Обзор
RSN
БСК
Закон есть закон




Пароли для профессионалов
Serge Balance
Опубликовано: dl, 11.11.06 20:22

Данная статья есть попытка собрать на одной страничке все самое главное об особенностях паролей, их применении, выборе, хранении. О многом здесь можно расписывать подробнее, но врядли стоит. Опыта каждый все равно набирается сам, а вехи "где копать" здесь как раз и обозначены.


Вещи, которые все знают, но не всегда вспоминают

Пароль - это просто набор символов. Чаще всего у системы нет другого способа узнать вас, кроме как по паролю. Значит кто угодно может ввести правильный пароль и получит соответствующие полномочия.

Пароль может быть узнан, угадан или подобран. Добавьте возможность в некоторых случаях обойти систему защиты из-за слабостей примененного алгоритма, ошибок в реализации, backdoor'ов и получите полный список того чего следует опасаться.


Например, пароли на отшаренные ресурсы в Windows-9x можно было подбирать посимвольно! Надо ли объяснять как это упрощало их подбор злоумышленником?

От слабостей алгоритма и ошибок ПО вариантов защиты только два. Если есть исправляющий положение патч - ставить, если его нет - не пользоваться слабой системой. Есть очень редкий третий вариант, когда исходники открыты и вы в состоянии сами написать такой патч. Те кто это может, обычно не нуждаются в напоминании связаться с авторами, чтобы исправления были внесены в репозитарий разработки.


С течением времени ясно прослеживается тенденция к тому, что дыр становится все меньше. Сегодня взломы из-за плохо выбранного или плохо сохраняемого в тайне пароля происходят намного чаще чем из-за неправильной конфигурации или ошибок ПО.
Узнавание пароля
социальная инженерия, подглядывание за набором, клавиатурные шпионы, разгильдяйство (бумажка с паролем на видном месте).
Угадывание - перебор по словарю
словари бывают разные (модифицированные, по слогам, правилам)
Подбор - полный перебор возможных комбинаций
BruteForce - метод Грубой Силы

Вот три способа ломать парольную защиту, когда ее нельзя обойти, воспользовавшись несовершенством системы. Именно в этих трех направлениях нужно думать, выбирая и храня пароль. А также читая дальше эту статью. Здесь все зависит не от далеких разработчиков, а от пользователя. От нас. От вас.


Длина имеет значение

Две главных характеристики пароля - количество символов (длина) и количество вариантов символа в каждой позиции (алфавит).

Как известно из комбинаторики общее количество возможных паролей при заданной длине(L) и алфавите(A) вычисляется как (A**L). A в степени L. Время(T) за которое пароль заданной длины будет гарантированно подобран методом Грубой силы меньше или равно (A**L)/V, где V - скорость перебора. Итак, мы можем записать T<=(A**L)/V. Эту формулу обычно называют формулой Андерсона. Следующая таблица вычислена по этой формуле и наглядно демонстрирует зависимости указанных величин.

Время полного перебора всех возможных паролей заданного алфавита при скорости перебора 10,000,000 паролей в секунду
алфавит6 символов8 символов10 символов12 символов
26 (латиница все маленькие или все большие)31 сек5 часов 50 мин163.5 суток303 года
52 (латиница с переменным регистром)33 мин62 суток458 лет1,239,463 года
62 (латиница разного регистра плюс цифры)95 мин252 суток 17 часов2,661 год10,230,425 лет
68 (латиница разного регистра плюс цифры плюс знаки препинания .,;:!?)2 часа 45 мин529 суток6703 года30,995,621 лет
80 (латиница разного регистра плюс цифры плюс знаки препинания .,;:!? плюс скобки ()[]{} плюс #$%&*~)7 часов 30 мин5 лет 4 месяца34048 лет217,908,031 год

Хочу обратить ваше внимание на то что с увеличением алфавита (базиса степенной функции) значение времени конечно растет, но еще сильнее оно растет с увеличением длины пароля (показателя степенной функции).

Например, при данной скорости все варианты пароля длиной 8 символов на алфавите 80 (все символы плюс не буквенно-цифровые) будут перебраны за 5 лет и 4 месяца. В то же время все варианты 10 символьного пароля на алфавите "только буквы", будут перебираться без малого в сто раз дольше - 458 лет. Если добавить цифры, то и вовсе 2,661 год.

Можно сделать вывод что, как и ожидалось от степенной, быстрорастущей функции, увеличение длины пароля всего на 2 символа дает в 500 раз (2661/5.32) больше вариантов, чем увеличение алфавита на 18 символов (с 62 до 80).


Если вы внимательно ознакомитесь с краткой таблицей заповедей по выбору пароля, то заметите, что в ней нет обычной рекомендации использовать символы кроме больших и малых латинских букв и цифр. Я советую создавать более длинные пароли, чем включать в них спецсимволы. Такие как .,:;()[]{}#$%

Действительно "как правило" спецсимволы в пароле не доставляют хлопот. По крайней мере программисту. Пароль пожалуй единственная, введенная пользователем информация, которую программисты веб-сервисов могут не фильтровать на наличие нежелательных символов. Весь остальной пользовательский ввод обязан фильтроваться. Об этом уже столько раз говорилось, что хочется попросить прощения за повторение.

Я предпочитаю сделать пароль чуть длиннее, и при этом на "нормальном" парольном алфавите - 62 символа. Почему? Пароли не стоит произносить, но произносимость влияет на запоминаемость. А спецсимволы произносимость снижают.

Кроме того бывает что мы в жизни попадаем на нестандартные клавиатуры. Сколько времени понадобиться юзеру, чтобы найти где точка на французской клавиатуре? Считайте что все кто это видит тут же приметят в какой позиции у него точка. В этом случае фактически длина пароля сократится на один символ! А как показывают расчеты лучше "потерять" кусок алфавита, чем сократить длину пароля.


Очень важно отметить что привычное место знака равно в указанной формуле по праву занимает оценка меньше или равно. Предположим злоумышленник как-либо узнал, что ваш пароль 9 символов в длину, и собирается последовательно перебрать все комбинации: aaaaaaaaa, aaaaaaaab, aaaaaaaac и так далее до zzzzzzzzz. Что будет если ваш пароль действительно aaaaaaaaa? Он найдется с ходу! Не надо думать что в таком случае самый выгодный пароль zzzzzzzzz, так как он будет попробован последним. Алгоритм подбора легко изменить и возможно злоумышленник как раз начнет с конца.

Он может начать и с середины. Точек старта может быть много, если вычисление будет вестись на многопроцессорной системе или кластере в несколько потоков. Поэтому каждый символ пароля следует выбирать случайным образом и надеяться, что он окажется достаточно далеко от точки старта алгоритма перебора. Помните, время в указанной формуле обычно всегда меньше вычисленного в правой части. Вычисленное есть время гарантированного нахождения пароля. За это время будут перебраны все возможные комбинации.

Скорость перебора

Скорость перебора может сильно различаться для разных случаев. Об этом будет сказано подробнее ниже в разделе, посвященном местам применения паролей. Не буду приводить аналогичные таблицы для других скоростей. Так как зависимость линейная каждый может легко пересчитать указанные времена на свою скорость.

Например в случае если скорость перебора 1,000 паролей в секунду времена в таблице надо умножить на 10,000. Если скорость перебора 15 млн. паролей в секунду, указанные времена нужно поделить на 1.5. К счастью скорости перебора в 100 млн. паролей в секунду на сегодняшнем оборудовании не встречаются. Так что сокращение максимального время нахождения пароля на порядок от указанного в таблице уже невозможно.


"К счастью" потому что все-таки парольные системы призваны защищать. Такие большие времена взлома будут вам очень не к счастью если вы забудете пароль к собственным данным.

Если злоумышленник не может предположить длину вашего пароля и вынужден будет перебирать все варианты паролей длиной скажем от 5 до 8 символов, то время такого полного перебора очевидно может быть оценено как сумма времен перебора 5-ти, 6-ти, 7-ми, и 8-ми символьных паролей. Из таблицы времен видно, что главное слагаемое в этом ряду - время перебора паролей максимальной выбранной длины. Остальные слагаемые иногда пренебрежимо малы.

Если вы сами окажетесь в роли злоумышленника, например забыв стойкий пароль на собственный архив, то затратив 252 суток и 17 часов на перебор всех 8 символьных паролей, вы без труда потратите еще 95 минут, на перебор всех 6 символьных. Кстати ситуация вполне реальна. На Zip архивах последних версий нет возможности обойти шифрование, а скорость полного перебора как раз 10 - 15 млн. паролей в секунду. 250 дней на восстановление забытого пароля... Не дай вам бог забыть стойкий пароль. А не стойкие вы не должны использовать.


Генераторы паролей, запоминаемых и нет

Как уже было сказано выше символы пароля выгодно выбирать случайным образом. Это прямо выводит к идее генератора паролей. Один из самых известных генераторов паролей APG - Automated Password Generator. Открытые исходники (Си) располагают к изучению. Есть версия под Windows. Он может генерировать как незапоминаемые, так и запоминаемые пароли.


Алгоритм генерации запоминаемых паролей в APG не так прост. Достаточно сказать, что модуль генерации запоминаемых паролей весит 80Kb и содержит в себе множество особых случаев. Кроме заботы о том чтобы гласные и согласные чередовались он напрямую фильтрует многие варианты по многочисленным правилам.

Более простой алгоритм генерации запоминаемых паролей можно посмотреть в исходниках программы pwgen. Собственно она распространяется только в исходниках. Также как и APG на Си.

Наконец очень полезный вариант генератора паролей находится в недрах знаменитого CPAN. Как не трудно догадаться он написан на Perl. Разумеется в виде модуля. Не объектно-ориентированного. Предоставляет функции генерации запоминаемых и случайных паролей. Можно легко задать (через ссылку) свою функцию генератора случайных чисел, если вы не доверяете штатному. Как все на Perl ходит на всех платформах. Может работать на CGI.


Не следует ожидать, что запоминаемые пароли будут так же произносимы и привычны, как обычные слова. Однако если сравнивать их с тем что генераторы дают в случайных, незапоминаемых паролях, то запоминаемые конечно "приятнее".

Не стоит забывать и о главном генераторе паролей - собственной голове. Вещь незаменимая в хозяйстве, но иногда глючная. Один раз в жизни мы с другом уже придумывали пароль, глядя на вещи в комнате, смешивая названия. Нам казалось что не забудем никогда. Как назло этим паролем мы зашифровали rar-архив. Когда через пару месяцев нам понадобилось его расшифровать... Пароль вспомнился только чудом и путем невероятного мозгового штурма.

Вообще смешивать слова - хорошая идея. Если делать это вдумчиво, не спеша, подгоняя под себя, то можно получить действительно легкозапоминаемый, но трудноподбираемый пароль. Как раз для частого использования в качестве пароля на систему или парольный менеджер. Именно, эти пароли обязаны не забываться.


Смешивать слова для получения пароля нужно не по слогам, или не всегда по слогам. Иначе такой пароль может подобраться по модифицированному словарю, полученному, путем перебора комбинаций слогов словарных слов. Такой словарь хотя и будет больше обычного, но количество слов в нем будет относительно невелико.

Так как пароли необходимо набирать быстро, чтобы никто не подсмотрел, можно потребовать от генератора паролей оптимизации для быстрого набора. Однако в перечисленных генераторах, такая опция мне не попадалась. Кроме того просто чередовать в пароле символы с разных сторон клавиатуры может оказать не всегда удобно.

Я считаю что тут лучше всего может помочь ручная оптимизация. Возьмите пароль, пусть даже сгенерированный автоматом. Попробуйте понабирать его. Посмотрите насколько он запоминаемый для вас. Оптимизируйте - поменяйте несколько символов. В конце концов не так много паролей требуют такой оптимизации. Только по "Схеме" часто используемые, самые важные.

Специфика разных мест применения паролей

Разные места применения паролей имеют разную скорость перебора. Разные особенности взлома, или, если угодно, нахождения забытых паролей. Самые основные места рассмотрены ниже по порядку. Для каждого случая указано по крайней мере запоминаемый или нет пароль рекомендуется использовать.

Локальная система

Разумеется следует выбирать запоминаемый пароль. Здесь парольный менеджер не поможет. Забыть пароль на локальную систему хотя и очень не приятно, но можно. В этом как правило нет ничего необратимого. Сегодня чаще данные в локальной системе не шифруются, а просто "запираются" этим паролем и соответственно такая защита всегда может быть разломана при физическом локальном доступе к системе.

В unix системах часто остается возможность загрузиться в single-mode. Во FreeBSD это ключик -s на этапе загрузчика. В сингл-моде система наделяет вас правами админа. Позволяет все, включая перемонтирования файловых систем и смену старого пароля root'а. Специально отмечаю, что вы должны перемонтировать корневую систему в режиме записи, так как во FreeBSD single-mode она по умолчанию монтируется readonly.

В Windows-NT, Windows-2000, Windows-XP, Windows-2003. Можно заменить базу паролей (%windir%\config\SAM) на файл из (%windir%\repair\sam). Делать это можно, например загрузившись с LiveCD, поддерживающего запись на NTFS. Если же по какой-то странной причине у вас FAT32, то можно загрузиться даже с DOS-дискеты.

После замены SAM базы пароль админа вернется в значение, заданное при установке системы. Если и это значение забыто, значит у вас страшный бардак. Однако положение не безвыходное. Существуют загрузочные дискеты и CD, позволяющие сбрасывать пароль админа в Windows NT линейки.

Я пробовал по крайней мере две такие boot-системы. Одна была сделана на базе Linux, вторая на PC-DOS + NTFS драйвер. Найти полностью корректное средство для записи на NTFS из под Linux пока не возможно и эксперименты с таким сбросом у меня всегда заканчивались проверкой партиции на старте Windows. Однако пароль сбрасывался, данные не терялись, а NTFS раздел штатный scandisk быстро переводил в состояние clean. Так что метод работает и если ничего другого не остается, то его вполне можно применять.

Если же кто-то еще пользуется Win9x, то вообще ничего ломать не надо. Система пустит и без знания пароля, а чтобы уничтожить пароль достаточно стереть файлы с расширением pwl в директории виндов. Если нужно уничтожить пароль только у одного пользователя, то достаточно стереть имя_пользователя.pwl.

Кстати существуют утилиты для расшифровки паролей пользователей из pwl-файлов. Скорости перебора паролей в этих утилитах весьма велики, а сам перебор осуществляется на машине злоумышленника, так что может проводиться когда угодно и сколь угодно долго. На оригинальной Windows-95 была ошибка в вычислении хэш-функций паролей, в результате чего пароль по pwl файлу вычислялся очень быстро (не более чем за сутки) даже на слабых по сегодняшним меркам тогдашних компьютерах.

Аналогично можно подбирать пароли Windows-NT/2000/XP/2003, используя вытащенный с атакуемой системы SAM-файл. Скорость перебора достаточно высока, и пароли в 5-6 символов длиной находятся полным перебором за разумное время. Утешает то что для нахождения 12 символьного пароля понадобятся значительно большие вычислительные мощности, или значительно большее время.


Еще утешает то, что вытащить SAM-файл не так просто. Надо загружаться не с рабочей системы.

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

В заключение замечу, что при физическом доступе к системе, для вытаскивания с нее данных вообще совершенно не нужно сбрасывать пароль админа или грузиться в сингл моду. Достаточно подключить винчестер к машине с такой же системой, где вы располагаете админскими полномочиями. Это даст полный доступ ко всем нешифрованным данным. Чаще именно это и требуется. Пароль сбрасывают когда хочется сохранить конфигурацию системы. Не переставлять ее и программы под нее заново.


Отдельный интересный случай представляет локальная система с шифрованными данными. Если шифрование выполняется на уровне файловой системы, то подключение винчестера на другую машину лишь снабдит вас мусором, но никак не искомыми данными. Сброс пароля также ничего не даст. Остается вариант восстановления пароля из SAM. Как уже было отмечено выше, для длинных паролей это потребуется невероятно много времени.

Шифрование на NTFS считается надежным. Совершенно невосстановимым в случае утраты стойкого пароля. Если только заранее не предпринять меры - создать "агента по восстановлению".


Недавно мне попалась информация, что есть возможность мгновенного снятия шифрования EFS/NTFS из-за хранение ключа вместе с данными. Проверить так это или нет на собственной шкуре я пока еще не успел.

Удаленная система

Пароль вполне может быть незапоминаемым. Все мы логинимся в удаленные системы сидя за локальными, а это значит, что воспользоваться парольным менеджером нам с руки.

Что касается восстановления забытого пароля, то если это ваша система, то она для вас локальная и к ней применимо все что сказано выше о локальных системах. Если же она чужая... А зачем вам подбирать пароль к чужой системе?

Если вы из той породы пользователей, что владеют половиной ящиков на mail.ru, но не помнят к ним пароли, то тут ничем не поможешь. Увы таких юзеров много и забыв очередной пароль, они просто заводят новый ящик. Можно посоветовать написать в службу поддержки, покаяться, запросить свой пароль, ответив на секретный вопрос. Но поможет это только если пользователь не безнадежен.

Пожалуй главная особенность удаленных систем, это то что они очень плохо относятся в полному перебору. Если ломать скачанный архив вы можете сколь угодно и безнаказанно, то для удаленных систем все не так.

Первое и главное - в любой нормальной системе ведутся логи и даже 10 попыток неудачного логона вызовут подозрения. Что уж говорить о 10,000,000 попыток.

Второе - часто удаленная система дает вам только 3-5 попыток ввести пароль, после чего отклоняет все попытки в течении... ну например минуты. В этом случае вы получите скорость подбора 3-5 паролей в минуту, что даже не смешно. Пересчитайте сколько времени с такой скоростью будут перебираться даже 6 символьные пароли. К слову локальные системы также славятся этими таймаутами, и если кто-то ломает их без физического доступа, то все происходит как с удаленной.

Третье - сеть сама по себе вполне может ограничивать скорость перебора. Это было бы важное замечание, но на фоне второго и особенно первого, все остальные примечания блекнут.

Успешные взломы удаленных систем до сих пор чаще связаны не с методом грубой силы, а например социальной инженерией, или подбором пароля нерадивого юзера по словарю... из 5 вариантов. Что делать если этот юзер успел жениться всего пять раз? А в качестве пароля не может запомнить ничего другого кроме имени одной из жен. Он ведь еще будет уверен что необыкновенно хитер, раз их так "много".

Увы взлом удаленных систем из-за ошибок в ПО так же остается актуальным. Эх какая дырка была в Windows-9x, когда пароль на отшаренный ресурс подбирался быстро, а о факте подбора на атакуемой системе не создавалось лога. Скорость подбора в локальной сети была очень высока, да еще и на длину пароля отшаренного ресурса в этих версиях Windows было наложено ограничение max!!!

Сегодня таких дырок просто не найти. Telnet'ом все перестали пользоваться в принципе. Невозможно найти систему где он был бы открыт. Его полностью заменил SSH. FTP пока никто полностью заменить не может, но и там давно не слышно о громких дырах. Такая же ситуация и по другим системам. Хочется надеяться, что ошибочка, подобная вызвавшей эпидемию MSBlaster, повторится не скоро.


Веб-сервисы

Веб-сервисы это частный случай удаленной системы, однако он же сегодня самый многочисленный. Пароли лишь изредка имеет смысл создавать запоминаемые - для самых часто используемых вами сервисов. На все остальные выгодно вешать незапоминаемые, но длинные и надежные пароли от генераторов.

Что до восстановления забытых паролей, то как и для всех удаленных систем, ваша является для вас локальной, а значит как правило достаточно стереть файл с паролями, или восстановить его из дистрибутива вашей CMS, форумного движка итп.

Если пароль хранится в базе, его также можно откатить на известный или пароль по умолчанию. Надо лишь совладать с хэшами, потому что в нормальной системе пароли не хранятся не только я прямом, но даже в зашифрованном виде. Только в виде hash'ей.


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

Поиск утерянного пароля для своего веб-сервиса путем перебора возможен, но очень индивидуален. Веб-сервисов очень много и в каждом из них алгоритм хеширования может быть свой собственный. Так что готовых инструментов, как для ломания SAM или архивов здесь нет.

Если вы все-таки ухитрились потерять пароль к своему веб-сервису может быть выгоднее не искать средство полного перебора, а вытащить данные и переставить движок. Данные как правило не криптованы. Даже если вас угораздило потерять пароль к базе, вам может помочь админский пароль к SQL-серверу. Правда если вы и его посеяли...


Парольный менеджер

Пароль на базу парольного менеджера должен быть запоминаемым. Иначе вы не сможете ее открыть, чтобы посмотреть, пароль на ее открытие, записанный в ней. Вы еще не ушли в глубокую рекурсию от этой фразы?

Что касается надежности шифрования базы, то это зависит от реализации и в разных парольных менеджерах надежность может быть разной. Иногда увы такой же низкой как в иных локальных программах.

Менеджер, который я использую - KeePass - применяет признанный алгоритм AES. Тот же, что используется в rar, начиная с версии 3.0. Кроме длинного пароля, реализация этого алгоритма в KeePass еще позволяет задействовать ключевой файл. И ключевой файл совместно с паролем.

Пользователи иногда недоумевают зачем нужен парольный менеджер. "У меня один пароль, и платочек, на котором он записан всегда со мной". Профессионалам необходимость парольного менеджера объяснять не стоит. Кроме того что мы с вами люди и физически не можем запомнить пароли ко всем своим почтам, форумам, хостингам итп. Так мы еще понимаем что нельзя использовать один и тот же пароль на разные системы.

Часто в парольные менеджеры встраивают генераторы паролей. KeePass не исключение. Его генератор не предлагает запоминаемых, зато случайные генерирует на совесть. Судя по тому что есть режим "сбора энтропии" можно использовать нестандартный ГСЧ.


Мне неизвестно, проводилась ли криптографическая экспертиза исходников KeePass, но в любом случае, то что исходники открыты, надо записать в плюс.

Отдельное достоинство KeePass в том что он легко переносим. Инсталляция не требуется. Размер минимален. База может находиться где угодно. Запуск менеджера возможен откуда угодно, хоть с флешки. Я перепробовал множество парольных менеджеров, пока не остановился на KeePass. На мой взгляд он лучший. Более подробно о том как я его выбирал можно прочитать вот здесь.

Не советую терять пароль на базу KeePass. Как взломать AES с ключом 256-bit я не знаю. На мой взгляд при стойком пароле это не ломается в принципе.


Локальные программы

Об одной локальной программе уже сказано выше - парольный менеджер - яркий представитель локальных программ. Причем он безусловно требует шифрования своей базы, а значит и наличия пароля на нее. Существуют другие программы, требующие шифрования своих данных. Например я отношу к ним PIM. В нем часто содержатся конфиденциальные сведения. К слову могу порекомендовать то чем сам пользуюсь - EssentialPIM.

Часто парольной защитой обзаводятся локальные программы, которым такая защита и вовсе не нужна. Например зачем она MS-Word? Кто воспользовался ею хоть раз с пользой? Ну зато так она там и реализована. По последним сведениям легкость взлома парольных защит в MS Office почти сохранилась со времен версии Office-7(95), где даже листы Excel и макросы VBA вскрывались мгновенно! А ведь их может иметь смысл защищать паролем.

В OfficeXP в самом лучшем случае скорость полного перебора пароля составляет 200000-400000 паролей/сек. В худшем все по прежнему снимается мгновенно из-за особенностей реализации.

Формат PDF также содержит парольную защиту. Ограничения на печать и редактирование снимаются мгновенно. 40-битыный ключ на открытие документа гарантированно расшифровывается за 1-2 недели. Не так и долго если документ действительно представляет ценность. Только в самых последних версиях появился 128-битный ключ, для которого скорость перебора составляет 5000-8000 паролей/сек.

Толковый почтовый клиент TheBat использует собственный криптоалгоритм, хранит пароль вместе с данными. Существуют утилиты с помощью которых можно попытаться расшифровать пароль. Иногда успешно.

Для системы конечно существует ломалка "для восстановления работоспособности ИБ 1С:Предприятия 7.X в случае утери паролей пользователей на вход в систему". Из названия все понятно, не так ли? Если в 1C реализовать по настоящему надежное шифрование, половина бухгалтерий накроется из-за потерянных паролей?


Архиваторы

Пароли на архивы могут быть как запоминаемые, так и нет. Это зависит от целей. Если архив перепаковывается каждый день по несколько раз, то вы рискуете запомнить даже такой пароль 0aaN1jPU. Если же архив долговременный, то пароль к нему можно хранить в парольном менеджере. Главное чтобы с базой парольного менеджера ничего не случилось.


Потому что хороший архиватор с длинным хорошим паролем, сегодня взломать практически невозможно.

Можно было бы сказать, что архиваторы - это те же локальные программы, но уж слишком особенные. Архивы удобно использовать для переноски важных данных. Шифровать их при этом совсем не лишнее. Если носитель потеряется, или электронное письмо с архивом будет перехвачено, то злоумышленнику потребуется расшифровка.

Разные архиваторы имеют разные характеристики в области парольной защиты.

ZIP - самый популярный архиватор. Версии WinZIP до 8.0 использовали слабый алгоритм шифрования. Так что ZIP старых версий уязвим! В том числе для атаки по открытому тексту. В последних версиях используется более надежный алгоритм и остается лишь перебор. Скорости перебора паролей на zip достигают порядка 15,000,000 паролей/сек. Это очень много и потенциально благоприятствует взлому методом грубой силы. Хотя длинна пароля и здесь может помочь. Если архив зашифрован паролем символов в 15, то подобрать его на современном компьютере будет практически невозможно, несмотря на бешенную скорость перебора.

ARJ также позволяет перебирать с довольно высокой скоростью - порядка 1000000 паролей/сек. Хуже то, что алгоритм не стоек! Возможна атака по открытому тексту. Есть программы, обещающие, используя несовершенства алгоритма, узнавать первые три символа пароля arj архива сходу! То есть 12 символьный пароль тут же превратится в 9 символьный и полный перебор займет существенно меньше времени. Огорчает, что arj до сих пор не обзавелся признанным алгоритмом шифрования. Утешает то что сам этот архиватор сегодня совсем утратил былую популярность. Я им давно не пользуюсь и вам не советую.

Rar - обладает самой совершенной системой шифрования из всех архиваторов. Только совсем старые версии (до 2.0) имеют уязвимость для атаки по открытому тексту. На версиях от 2.0 до 3.0 Rar использовал уже очень надежный собственный алгоритм шифрования. Без известных уязвимостей и со скоростью перебора лишь 5000-6000 паролей/сек. Начиная с версии 3.0 в Rar используется признанный алгоритм AES. Да еще реализован он так что скорость перебора паролей не превышает 100 паролей в секунду. На такой скорости полный перебор даже 6 символьного пароля, состоящего только из одних маленьких букв займет около 36 дней!

Я использую длинные пароли на нормальном алфавите. Ношу важные данные на флешках или RW в виде шифрованных Rar архивов. Даже если флешку украдут расшифровка затянется до второго пришествия.

Главный же совет про шифрование архиватором Rar я сформулирую так - не дай вам бог забыть (потерять) пароль к собственным данным! Обязательно занесите его в парольный менеджер! И охраняйте базу парольного менеджера!


Криптованные диски

Пароли на криптованные диски могут быть как запоминаемые, так и нет. Это зависит от целей.

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

Криптованные диски исключают все эти неприятности, кроме той, что программа, работающая с файлом с криптодиска, может в процессе работы создавать его копии в тех же временных директориях. Файл все равно будет грузиться в память, откуда система может выгрузить его в своп.

Можно организовывать криптованные диски на флешках. Это очень удобно так как дает надежную защиту данных и при этом проверенным средством, а не странностями.

Единственное неудобство это плохая кроссплатформенность. Такие программы криптованных дисков как Bcrypt, Sentry, SafeHouse работают только под Windows, а с запароленным Rar архивом можно работать под любой системой где есть Rar. А он есть везде. Под FreeBSD, например.

Лучшая программа криптованных дисков, из известных мне на сегодня - это truecrypt. Она поддерживает все мыслимые для такой программы функции. Исходники открыты. Алгоритмы надежны. Сама программа бесплатна. И она уже становится кроссплатформенной.

Не стоит сбрасывать со счетов и PGP пакет. Там, как я помню, тоже есть функция создания криптованных дисков.


Флешкарты и другие устройства

Сегодня встречаются флеш-накопители, предлагающие создать "закрытую область". Решение не нравится мне уже тем, что оно не стандартное. Часто чтобы получить доступ к такой закрытой области нужно установить на машину драйвер именно от этой флешки. Что за алгоритм шифрования используется и на сколько он устойчив часто невозможно узнать. Иногда там может вообще ничего не шифроваться, а область будет просто скрытой.

Не советую пользоваться подобным шифрованием. Лучше создать на флеш-диске файл криптованного диска. Или носить данные в шифрованных архивах.


BIOS

Пароли на BIOS давно утратили свою актуальность. Никаких данных пользователя (самое ценное) они не защищают. А защищают только настройки BIOS, да еще могут препятствовать загрузке. Нда... препятствовать до той поры пока злоумышленник не замкнет Clear-CMOS перемычку на материнской плате. Правда замкнуть такую перемычку на ноутбуке несколько сложнее, просто потому что его сложнее разобрать.

И все равно для защиты данных это не годится. Даже если на новых AWARD'ах уже не проходит знаменитый универсальный пароль AWARD_SW.


Рекомендации админу

Ну если администратор не умеет выбирать пароль для себя, то это не администратор. Более интересно обсудить что он может предпринять чтобы юзеры его систем выбирали надежные пароли.

Первый и обязательный шаг - увещевание, раздача инструкций, что такое хорошо и что такое плохо применительно к паролям.

Второй вполне возможный, но уж очень утомительный шаг - это самому ломать свою же систему. Например через SAM-файл. Делать это регулярно. Если пароль пользователя удалось подобрать, можно закрыть аккаунт этого пользователя и... дальше зависит от устава организации. Можно начальству доложить, можно разобраться в частном порядке.

Третий шаг это устанавливать правила парольной политики. Например минимальная длина пароля 10 символов и пусть система следит за этим. Шаг верный, только нужно не перегнуть палку, потому что иначе пользователь начнет формально удовлетворять требования, например таким паролем aaaaaaaaaa.

Пароли надо иногда менять. Чтобы принудить пользователей это делать можно настроить политику устаревания паролей каждые n-дней. Но если n будет слишком мало, юзеры могут испытать дискомфорт. Дискомфорт всегда вызывает у человека желание исполнять формально. Пользователи начнут менять пароли на то, что уже было. Менять на слабые пароли. Частая замена также может привести пользователя к путанице какой из придуманных сейчас актуален.

Вовсе не хочу сказать, что не стоит закручивать парольные политики. Стоит! Но с учетом конкретной ситуации. Я не настолько наивен чтобы посоветовать конкретные сроки устаревания или длины паролей для всего человечества.


Рекомендации программисту веб-сервисов

Проверять пароли при регистрации на минимальную длину, присутствие символов разного регистра и цифр. Принуждать пользователя использовать знаки пунктуации и другие неалфавитные символы я не советую. Еще полезно проверять что слово не находится в словарях. Так что ключевые слова: длина, переменный регистр, цифры и по словарю. Проверять при регистрации, если она доступна online и при смене пароля пользователем.

Можно генерировать пароли и раздавать их пользователям. Некоторые вебсервисы так и поступают. Это избавляет пользователя от неудачных попыток придумать стойкий пароль. Регистрация может ускориться, а юзер сэкономит нервы, но зато получит пароль негодный для запоминания. Это не страшно если он пользуется парольным менеджером.

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


#!/usr/bin/perl
$tst = "pasSword3";
$MINPASSL = 9;
if (($tst ne uc($tst)) && ($tst ne lc($tst))
   && (length($tst) >= $MINPASSL) && ($tst =~ m/\d/))
{
print "good password";
} else {
print "bad password";
}

Возможная проверка на то что выбранный пользователем пароль не находится в словаре


#!/usr/bin/perl
$tst = "pasSword3";
$dictFname = 'passdict.txt'; # все пароли в словаре в нижнем регистре!
my(@dict);
my($word, $tstlc);
$found = 0;
open(FH, "<$dictFname") || die "can't find dictionary file $dictFname";
@dict = <FH>;
close(FH);
chomp(@dict);
$tstlc = lc($tst);
foreach $word (@dict)
{
	if ($word eq $tstlc)
	{
		$found = 1;
		last;
	}
}
if ($found == 1)
{
	print "bad password";
} else {
	print "good password";
}

Perl удобен тем что ходит на всех платформах. Приведенные наброски легко адаптировать для работы как на CGI так и в консоли.

Кроме проверки на стойкость пароля, в веб-сервисах полезно вести лог неудачных попыток логона, а также устанавливать запрет на вход с определенного IP после 3-5 неудачных попыток на время в 10-15 секунд. Это стандартные защитные меры удаленных систем.

Почему я советую такое малое время задержки после неудачных логонов? Да просто забаненный IP может оказаться прокси-сервером. И кроме злоумышленника через этот прокси к вам могут пытаться залогиниться добропорядочные пользователи. Задержка здесь лишь снизит скорость подбора до неприемлемой. Ни один злоумышленник не станет подбирать пароль со скоростью 10-20 паролей в минуту.


Выбор пароля (кратко)

Хороший пароль:Плохой пароль:
  1. длинный (8-12-15 символов)
  2. содержит как заглавные так и прописные латинские буКвЫ
  3. содержит цифры
  4. не найдется в словаре, это не имя и не русское слово(ckjdj) набранное в латинской раскладке
  5. никак не связан с владельцем
  6. меняется периодически или по мере надобности
  7. не является любимым - разные пароли для разных входов
  8. его возможно запомнить
  1. короткий (меньше 8 символов)
  2. все в одном регистре (все БОЛЬШИЕ плохо как и все маленькие)
  3. не содержит цифр
  4. найдется в словаре или это имя или русское слово(ckjdj) набранное в латинской раскладке
  5. как-либо связан с владельцем
  6. не меняется годами ни при каких обстоятельствах
  7. может быть любимым - один пароль на все
  8. его невозможно забыть

Более подробно о выборе пароля можно прочитать в моей инструкции для пользователей. Там известные вещи разжеваны подробно, но достаточно кратко чтобы юзер мог прочесть не утомившись.


Схема - как организовать свое стадо паролей

Мне кажется вполне логичной такая схема. Есть только несколько паролей в голове Каждый их них качественный. Придуман вручную, с учетом запоминаемости и быстрой набираемости. Это пароли к локальным системам, парольному менеджеру, и может быть паре удаленных систем. Например к online-почтовику. Эти пароли также отмечены в парольном менеджере. Пароль к его базе сохранен где-нибудь еще. В банке, сейфе.

Все остальные пароли длинные, надежные и незапоминаемые. Все они хранятся в парольном менеджере. Почти все они - это пароли к интернетным сервисам - почтам, форумам, хостингам, сайтам.

Все пароли, включая те несколько, что в голове, периодически меняются. Эта схема работает у меня уже несколько лет, что на мой взгляд даже важнее ее логичности.




обсудить  |  все отзывы (12)

[162153; 179; 8.25]





мини-реклама
Универсальные камеры заднего вида от производителя ParkCam

Rambler's Top100
Рейтинг@Mail.ru





  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach