на главную | войти | регистрация | DMCA | контакты | справка | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


моя полка | жанры | рекомендуем | рейтинг книг | рейтинг авторов | впечатления | новое | форум | сборники | читалки | авторам | добавить



Пароли

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

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

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

К несчастью, система имен пользователей и паролей работает не столь хорошо, как предполагают люди.

Понятие паролей, вообще говоря, основывается на попытке совместить несовместимое. Идея в том, чтобы набрать легкую для запоминания случайную последовательность. К сожалению, если нечто легко запомнить, то оно не будет случайным, например «Сюзанна». А если это будет набрано наугад, например «r7U2*Qnpi», то оно запоминается нелегко.

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

Как работает это нападение? Подумаем о системе контроля доступа к компьютеру или веб-сайту. У компьютера есть файл имен пользователей и паролей. Если нападающий получит доступ к этому файлу, то узнает все пароли. В середине 70-х годов эксперты по компьютерной безопасности пришли к лучшему решению: вместо хранения всех паролей в файле они решили хранить хэш-функцию пароля. Теперь, когда Алиса набирает свой пароль в компьютере или на веб-сайте, программное обеспечение вычисляет хэш-значение и сравнивает его с сохраненным в файле. Если они совпадают, Алиса допускается в систему. Теперь нет файла паролей, который можно было бы украсть, – есть только файл хэшированных паролей. И так как назначение хэш-функции – воспрепятствовать незваному гостю зайти слишком далеко в своих намерениях, злоумышленник не сможет восстановить настоящие пароли из хэшированных.

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

Ранее словарные нападения были сложны из-за медленной работы компьютеров. Они стали более легкими, потому что компьютеры стали гораздо быстрее. L0phtcrack является примером хакерского инструмента, предназначенного для восстановления паролей и оптимизированного для паролей Windows NT. Windows NT имеет две парольные защиты: более сильную, предназначенную для NT, и более слабую, совместимую со старыми сетевыми протоколами входа в систему. Эта функция работает без учета регистра с паролями не длиннее семи символов. L0phtcrack облегчает работу в парольном пространстве. На Pentium II с тактовой частотой 400 МГц L0phtcrack может перебрать каждый буквенно-цифровой пароль за 5,5 часа, каждый буквенно-цифровой пароль с прочими символами за 45 часов и каждый из возможных паролей, включающий любой знак клавиатуры компьютера, – за 480 часов. Это не сулит ничего хорошего.

Некоторые пытались решить эту проблему, используя все более и более «сильные» пароли. Это означает, что пароли сложней для угадывания и их появление в словаре менее вероятно. Старая универсальная система контроля доступа на мэйнфрэймах (RACF) требовала от пользователей ежемесячной смены паролей и не разрешала использовать слова. (В Microsoft Windows нет такого контроля, и вам услужливо предлагается сохранить любой пароль.) Некоторые системы создают пароли для пользователей случайным образом – путем связывания случайных слогов в произносимое слово (например, «талпудмокс») или соединения чисел, символов и смены регистра: например FOT78hif#elf. Система PGP использует парольные фразы, которые представляют собой сложные предложения с бессмысленным контекстом: например «Телефон ЗЗЗЗЗЗ, это должно быть вы говорите мне приятным голосом 1958???!телефон». (Однако это не так просто для запоминания и набора, как вам хотелось бы.)

Эти ухищрения становятся все менее и менее эффективными. В течение последних десятилетий действие закона Мура делает возможной «атаку в лоб» для ключей, имеющих все большую энтропию. В то же самое время есть максимум энтропии, до которого средний компьютерный пользователь (или даже пользователь уровнем выше среднего) может что-то запомнить. Вы не можете ожидать от него запоминания 32-символьного случайного шестнадцатеричного числа, так что же должно произойти, чтобы он запомнил 128-битовый ключ? Вам действительно не стоит полагаться, что он введет при входе в систему фразу с использованием набора алгоритмов и программ высоконадежного шифрования, описанных в предыдущем параграфе. Эти два фактора пересеклись; сейчас взломщики паролей могут вычислить все, что (в пределах разумного) может запомнить пользователь.

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

Как ни плохи пароли, люди находят способ сделать их еще хуже. Если вы попросите их выбрать пароль, он будет паршивый. Если вы принудите их выбрать хороший пароль, они напишут его на почтовой карточке и прикрепят к монитору. Если вы попросите поменять его, они сменят его на пароль, которым пользовались месяц назад. Только изучение действующих паролей обнаруживает, что в 16% из них насчитывается три и менее цифры и 86% могут быть легко взломаны. Многочисленные исследования лишь подтверждают данную статистику[26].

Одни и те же люди выбирают одни и те же пароли для множества приложений. Хотите украсть группу паролей? Создайте веб-сайт, содержащий какую-либо интересную информацию: порно, результаты хоккейных турниров, сведения об акциях или все, что касается демографии. Не делайте платным его посещение, а введите регистрацию имен пользователей и паролей для просмотра информации. В большинстве случаев вы будете получать те же самые имя пользователя и пароль, которые пользователь использует в последнее время. Может быть, они позволят вам войти в его банковский счет. Сохраняйте и неправильные пароли; иногда люди по ошибке вводят пароль, предназначенный для системы А, в систему В. Заставьте пользователя заполнить небольшую анкету при регистрации: «Какие другие системы вы используете регулярно? Банк X, брокерскую фирму Y, службу новостей Z?» Я знаю, что один исследователь сделал нечто подобное в 1985 году – он получил дюжины паролей системных администраторов.

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

Это не говорит о том, что нет лучших или худших паролей. Предшествующий пример парольной фразы из PGP все еще защищен от словарных нападений. В целом, чем проще пароль для запоминания, тем он хуже. Вообще словарные нападения пытаются сначала разгадать заурядные пароли: словарные слова, перевернутые слова, слова с некоторыми прописными буквами, их же с незначительными изменениями – как, например, с числом 1 вместо буквы I, и т. п.

К сожалению, многие системы ненадежны так же, как и самые слабые пароли. Когда нападающий хочет получить вход в систему, его не волнует, чей он получает доступ. Согласно рабочим тестам, L0phtcrack восстанавливает около 90% всех паролей менее чем за день и 20% всех паролей в течение нескольких минут. Если на 1000 входов 999 пользователей выберут исключительно сложные пароли, такие что L0phtcrack не сможет установить их, программа взломает систему, подобрав единственный слабый пароль.

С другой стороны, с точки зрения пользователя это может быть примером того, что «нет необходимости бегать быстрее медведя – достаточно опережать тех, кто рядом с вами». Любое словарное нападение будет успешным против тех многих входов, чей пароль «Сюзанна» – они-то в первую очередь и станут жертвой атаки. Если же ваш пароль «молот-бабочка», то, хотя он тоже достаточно уязвим для словарных нападений, вероятно, не он станет жертвой.

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

Подведем итоги. Все основывалось на нападающем, захватившем файл хэшированных паролей. Стоит предотвратить словарные нападения, и пароли снова станут пригодными. Это возможно, хотя и нелегко для компьютеров с общим доступом. Парольный файл UNIX, например, может читать кто угодно. В наши дни в UNIX есть теневой парольный файл; в нем находятся действительные хэшированные пароли, а в общедоступном парольном файле не содержится ничего полезного. Файл хэшированных паролей в NT хорошо защищен, и его трудно украсть; для этого вам нужен или доступ администратора, чтобы разыскать хэшированные пароли через сеть (хотя поздние версии NT и Windows 2000 предотвращают и это), или же вам нужно отлавливать пароли, когда они используются для других сетевых приложений.

Система также может «захлопываться» после нескольких попыток неудачного ввода пароля, например десяти. Таким образом, если кто-то пытается войти под именем Алисы и начать угадывать пароли, он введет только 10 вариантов. Конечно, это будет надоедать Алисе, но это лучше, чем подвергать риску ее имя пользователя. И точное определение времени «замораживания» может зависеть от обстоятельств. Может быть, ее вход будет закрыт на 5 минут или на 24 часа. Может быть, до тех пор пока она не поговорит с каким-нибудь администратором. Высоконадежные механизмы после определенного числа попыток неудачного ввода пароля или его неправильного набора могут замораживаться надолго, с уничтожением информации внутри.

Другое решение состоит в том, чтобы использовать интерфейс, несовместимый с компьютером. Ваша магнитная карта, по которой вы вправе получить наличные деньги, защищена четырехзначным идентификационным номером. Что может быть более незначительным для компьютерного взлома? Требуется несколько миллисекунд, чтобы перебрать все возможные 10 000 идентификационных номеров, но в данном случае компьютер сложно присоединить к интерфейсу пользователя. Человек может стоять у банкомата и перебирать все эти номера один за другим. И для того, чтобы проверить все 10 000 идентификационных номеров, может потребоваться вместо 10 секунд – 28 часов безостановочной работы.

Так же как люди способны быть достаточно отчаянными, чтобы постараться осуществить такое нападение, так и банкомат будет «глотать» карточки, если вы вводите слишком много неверных паролей. До сих пор эта мера безопасности все еще применяется во многих системах: кодах дезактивации сигнализации (конечно, вы можете попытаться перебрать 10 000 возможных кодов, но на это у вас есть всего лишь 30 секунд), электронных дверных замках, телефонных карточках и т. п. Эти системы работают потому, что здесь нападение не может быть автоматизировано; но если вы сумеете использовать компьютер для перебора всех идентификационных номеров (или паролей) данных систем, вы взломаете эти системы.

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

Что все-таки делать, если вы не можете предотвратить словарные нападения? Один из приемов – найти более объемный словарь. Другой – прибавить случайные числа к паролям (как говорят, «посолить»). В работе должно быть несколько различных типов визуальных и графических паролей; идея состоит в том, что чем больше возможных паролей, тем, следовательно, сложнее устроить словарное нападение. Однако все это ограничено памятью пользователя.

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


Глава 9 Идентификация и аутентификация | Секреты и ложь. Безопасность данных в цифровом мире | Биометрические данные