Пароли 1
Одни и те же люди выбирают одни и те же пароли для множества приложений. Хотите украсть группу паролей? Создайте веб-сайт, содержащий какую-либо интересную информацию: порно, результаты хоккейных турниров, сведения об акциях или все, что касается демографии. Не делайте платным его посещение, а введите регистрацию имен пользователей и паролей для просмотра информации. В большинстве случаев вы будете получать те же самые имя пользователя и пароль, которые пользователь использует в последнее время. Может быть, они позволят вам войти в его банковский счет. Сохраняйте и неправильные пароли; иногда люди по ошибке вводят пароль, предназначенный для системы А, в систему В. Заставьте пользователя заполнить небольшую анкету при регистрации: «Какие другие системы вы используете регулярно? Банк 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 секунд), электронных дверных замках, телефонных карточках и т. п. Эти системы работают потому, что здесь нападение не может быть автоматизировано; но если вы сумеете использовать компьютер для перебора всех идентификационных номеров (или паролей) данных систем, вы взломаете эти системы.
Большинство системных проектировщиков не осознают разницы между системой с ручным интерфейсом, которая может быть надежна с четырехзначным личным идентификационным кодом, и системами, имеющими компьютерный интерфейс. Это та причина, по которой мы видим слабые, подобные идентификационному коду, пароли в очень многих веб-системах (включая некоторые брокерские сайты).
Что все-таки делать, если вы не можете предотвратить словарные нападения? Один из приемов – найти более объемный словарь. Другой – прибавить случайные числа к паролям (как говорят, «посолить»). В работе должно быть несколько различных типов визуальных и графических паролей; идея состоит в том, что чем больше возможных паролей, тем, следовательно, сложнее устроить словарное нападение. Однако все это ограничено памятью пользователя.
Пароли – это то, что знает пользователь. Другие техники проверки подлинности базируются на том, кем является пользователь, – на биометрических данных, и на том, что пользователь имеет, – на опознавательных знаках доступа.