Ограничения для паролей
Большинство операционных систем создавалось не для сверхсекретных задач. Разумеется, в системах разделенного времени вся секретность заключается в основанных на паролях бюджетах. Впрочем, как мы уже заметили, многие пароли крайне легко отгадать.
Ограничения операционной системы UNIX для паролей ограничиваются тем, что пароли должны состоять не менее чем из пяти строчных символов, либо из четырех, при условии, что по крайней мере один из этих символов является прописной буквой или управляющим кодом. Впрочем, если пользователь настаивает на введении более короткого пароля, невзирая на предупреждения о ненадежности, система все же допустит его пароль. Системные операторы знают о том, что большинство паролей не отвечают требованиям секретности. Поэтому многие из них инсталлируют специальные программы, которые запрещают создание слишком "легких" паролей. Пароль должен отвечать определенным требованиям, как то:
а) быть определенной длины;
б) включать в себя как прописные, так и строчные буквы;
в) включать в себя одну и более цифр;
г) включать в себя один нецифровой и неалфавитный символ.
Одно или несколько из этих правил должны соблюдаться.
Программа может также протестировать пароль пользователя, применив список известных ей "плохих" паролей, которые не допускаются к использованию. Запрет на однобуквенные или простые буквенные пароли, конечно, создает определенные трудности при отгадывании, но не слишком большие. Однажды я пытался отгадать пароль некоего человека; мне казалось, что его пароль должен быть "рореуе" ("пучеглаз"), поскольку у него была обширная коллекция классических юмористических книг и в основном его интересовал именно этот комикс. Системное программное обеспечение предлагало вводить в качестве пароля смесь из прописных и строчных букв (кстати, это также дает полезную информацию о том, что система отличает строчные буквы от прописных). Я попробовал ввести следующее: Рореуе PoPeYe popeyE PopEye popEYE рорЕуЕореуЕ PopEYE РоРеуе, а затем ввел инверсную форму каждого из этих сочетаний, превращая PopeyE в pOPEYe (на случай, если пользователь считал заглавные буквы нормой для компьютерной клавиатуры, а строчные исключением). Казалось маловероятным, что этот любитель комиксов придумал нечто из ряда вон выходящее - ввел прописные буквы посреди слова или расставил их бессистемно. (Да и кто из нас, будучи в здравом рассудке, поступит так, если его попросят ввести заглавные буквы в пароль?) В конце концов его пароль оказался "OliveOyl". При первой загрузке пользователя система может попросить его ввести в пароль не заглавные буквы, а числа. И опять же, вряд ли Простой Пользователь станет разбивать слово числами, да и числа введет не длиннее, чем одно-двухзначные. Ведь пользователь обычно рассматривает пароль как слово. И о необходимости включения в него чисел он подумает в последнюю очередь. Таким образом, обычно встречаются пароли следующего вида: пароль#, пар#оль, #пароль. Числа, как правило, берутся легко запоминающиеся, либо те, которые удобно набирать, вроде О или 1. Числа от 1 до 31 встречаются наиболее часто, равно как и числа с повторяющимися цифрами или заканчивающиеся нулями или девятками - 888, 500, 1999 и т. п. Можно ожидать, что автор пароля поставит цифру "1" на место буквы "I" (строчная "L"), если пароль содержит данную букву. Компьютерные фанатики также имеют милую манеру заменять букву "О" нулем, если требуется ввести какую-либо цифру. Если вы подозреваете, что пароль содержит цифры "1 " или "О", вместо букв, то попробуйте набрать вместо "cool" или "computer" следующее: "cOOl" или "cOmputer".
Пароли, создаваемые компьютером: подделка и анализ паролей, генерируемых машиной
Многие из паролей, которые создает сам компьютер, порождены не без участия генератора случайных чисел. Взгляните, например, на приведенный ниже отрывок из сегмента воображаемой программы:
5 Randomize Timer
100 For i = 1 to 6
110 Char=lnt(Rnd*91)
120 If Char ?"
"Разъяснение" гласило, что некий (относительно недавний) пользователь сей BBS, чей псевдоним был Мистер Шутник, ввел в действие "свойство" программного обеспечения данной BBS, создававшее несекретные пароли. В предыдущем году система "вышла из строя, что явилось результатом действий мистера Шутника". Причина или вид поломки подробно не описывались, вероятно, потому, что постоянные пользователи системы уже и так знали эту историю. Как бы то ни было, теперь вы понимаете, каким образом можно получить неплохую информацию, изучая "случайные" пароли. Даже если на первый взгляд вы не можете найти ни одного осмысленного набора символов, это не означает, что его нет вообще. Может присутствовать лишь намек на такой набор, или хотя бы ошибка или странность, которую вам удастся обнаружить.
Например, в первой версии одной программы BBS - настолько жуткой, что через месяц полетела клавиатура - генератор случайных паролей никогда не создавал пароли, в которых присутствовала бы буква А или цифра 0. Знание этой особенности может оказать некоторую услугу: для семизначного пароля типа WXYZ123, где WXYZ - строчные либо прописные буквы, а 123 - цифры, существует только 284,765,630 возможных комбинаций букв и цифр, вместо 456,976,000 - разница в 172,210,630 паролей! Программное обеспечение кишмя кишело ошибками, многие из которых прославились как наихудшие ошибки за всю историю программирования.
Неслучайные пароли, генерируемые машиной
Под конец давайте обсудим неслучайные машинные пароли. Пользователи часто подключаются к системе еще до окончания оформления регистрации, пользуясь временным паролем. Временный пароль может представлять собой какую-то уже известную пользователю информацию, например, номер карточки социального страхования, дату рождения, либо другие личные данные. Предполагается, что потом пользователи заменяют такие мало секретные пароли на более безопасные, но пока им специально не покажут, как это делается, или не посоветуют так поступить, пользователи вряд ли произведут замену.
Вот один некомпьютерный пример, наглядно демонстрирующий эту человеческую слабость. В апреле 1992 года студенты университета в Нью-Ажерси получили послание с информацией о новом классе регистрационных процедур. В послании утверждалось, что код персонального доступа (Personal Access Code РАС), предназначенный для подтверждения личной регистрации, состоит из первых четырех цифр даты рождения данного человека (месяц и день), вводимых вместе с девятой цифрой студенческого номера (а по необходимости - номера Социальной безопасности). В первую очередь меня поразил тот факт, что они сообщили студентам, что их сверхсекретный РАС на самом деле - их день рождения. Такое сообщение сводит на нет все меры по безопасности, которые они пытаются внедрить. Действительно, неужели так уж трудно узнать чью-то дату рождения? Но РАС является только частью пароля, а другая часть студенческий ID. Узнать чей-то ID - проще простого. ID можно легально, или почти легально, узнать в студенческих оздоровительных центрах, прочесть на досках объявлений в компьютерных залах, в идентификационных картах, в списках имеющих право на общежитие - да где угодно! Послание также гласило, что те, кого беспокоит проблема безопасности, могут подойти в регистрационный офис, чтобы изменить свой РАС. Как вы понимаете, никому и в голову не придет куда-то тащиться и что-то менять, коли можно обойтись и без этого. К тому же, замена первых четырех цифр вряд ли сможет отпугнуть опытного хакера. Чтобы отследить изменение пароля, потребуется 10 000 минус одна попыток. Не говоря уже о тех 366 возможных паролях, которые можно перебрать до того, как эта "озабоченная безопасностью" личность сменит свой код. Десять тысяч чисел - это, разумеется, немало, но перебрать их все вполне возможно. Автоматический номеронабиратель способен проделать это примерно за семь минут, если количество попыток ввода кодов на один звонок будет неограниченным. В любом случае, я привел эту историю для того, чтобы проиллюстрировать одну истину: пользователь и пальцем не пошевелит, чтобы изменить коды доступа, если его не заставить.