Глава 9 Идентификация и аутентификация
Глава 9
Идентификация и аутентификация
Независимо от того, какую систему защиты вы используете, чаще всего первым шагом работы является идентификация и подтверждение подлинности (аутентификация): кто вы такой и можете ли это доказать? Как только компьютер узнает вас, он сможет выяснить, что вам разрешено и чего не позволено делать. Другими словами, контроль доступа не может начаться прежде, чем завершатся идентификация и аутентификация.
Давайте поговорим об этом. У Алисы есть некие возможности для работы на компьютере, и мы хотим быть уверены в том, что эти возможности есть только у нее. Иногда это – возможность получить доступ к какой-либо информации: файлам, балансу счетов и т. д. Иногда – получение доступа ко всему компьютеру: никто другой не сможет включить его и воспользоваться данными Алисы и ее программами. В других случаях возможность носит более конкретный характер: получить деньги из банкомата, воспользоваться сотовым телефоном, отключить охранную сигнализацию. Эта возможность может быть связана с веб-сайтом: например, доступ к странице Алисы или банковским документам. Иногда эта возможность – доступ к шифровальному ключу, который слишком длинен для запоминания. (Система PGP – набор алгоритмов и программ для высоконадежного шифрования, применяет контроль доступа для защиты частных ключей.) Не важно, что из перечисленного мы рассматриваем, – важно то, что некоторые меры контроля доступа требуют идентификации Алисы.
На самом деле меры контроля доступа должны обеспечить две вещи. Во-первых, Алиса должна попасть в систему, а во-вторых, система должна оставить других снаружи. Сделать только первое или только второе легко – открытая дверь позволит и Алисе, и кому-нибудь другому войти; а заложенная кирпичом дверь будет держать снаружи как остальных, так и Алису, – но выполнить оба условия сразу сложнее. Нам нужно что-нибудь, что даст возможность узнавать Алису и пускать ее внутрь, но так, чтобы другие не смогли в это повторить. Мы должны уметь идентифицировать Алису, а после этого проверить подлинность идентификации. (На самом деле меры контроля доступа обязаны осуществлять еще и третью функцию – протоколирование всего, что происходило.)
Традиционно опознавательные и проверочные меры основываются на чем-то одном из трех: «что вы знаете», «кто вы такой» и «что вам позволено». Это реализуется в виде паролей, биометрических методов распознавания и опознавательных знаков доступа. Иногда системы используют совместно любые две из этих вещей. Параноидальные системы используют все три.
Пароли
Традиционным подходом к проверке подлинности является применение пароля. Вы наблюдаете повсеместно. Когда вы регистрируетесь в компьютерной системе, то вводите имя пользователя и пароль. Чтобы сделать звонок по телефону с использованием телефонной карты, вам необходимо набрать номер своего счета и пароль. Чтобы получить деньги в банкомате, вы вставляете свою карту и набираете идентификационный номер (пароль).
Два шага, применяемые в каждом из этих примеров, отражены в названии данной главы. Первый шаг называется идентификацией (опознаванием): вы сообщаете компьютеру, кто вы (имя пользователя). Второй шаг называется аутентификацией (подтверждением подлинности): вы доказываете компьютеру, что вы именно тот, кем себя назвали (пароль).
Компьютер, который вас опознает, имеет список имен пользователей и паролей. Когда вы вошли под своим именем пользователя и паролем (или номером вашего счета и идентификационным номером), компьютер сличил введенные данные с записями, хранящимися в его списке. Если вы ввели имя пользователя, имеющееся в списке, и пароль, соответствующий этой записи, то попадете внутрь. Если нет, вы останетесь вне системы. Иногда система будет повторно спрашивать вас об имени пользователя и пароле. Иногда она будет заблокирована после определенного числа неудачных попыток. (Вы ведь не хотите, чтобы кто-нибудь, укравший карточку банкомата, затем пробовал перебрать все десятки тысяч возможных идентификационных номеров, один за другим, в попытке найти единственный подходящий.)
К несчастью, система имен пользователей и паролей работает не столь хорошо, как предполагают люди.
Понятие паролей, вообще говоря, основывается на попытке совместить несовместимое. Идея в том, чтобы набрать легкую для запоминания случайную последовательность. К сожалению, если нечто легко запомнить, то оно не будет случайным, например «Сюзанна». А если это будет набрано наугад, например «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 секунд), электронных дверных замках, телефонных карточках и т. п. Эти системы работают потому, что здесь нападение не может быть автоматизировано; но если вы сумеете использовать компьютер для перебора всех идентификационных номеров (или паролей) данных систем, вы взломаете эти системы.
Большинство системных проектировщиков не осознают разницы между системой с ручным интерфейсом, которая может быть надежна с четырехзначным личным идентификационным кодом, и системами, имеющими компьютерный интерфейс. Это та причина, по которой мы видим слабые, подобные идентификационному коду, пароли в очень многих веб-системах (включая некоторые брокерские сайты).
Что все-таки делать, если вы не можете предотвратить словарные нападения? Один из приемов – найти более объемный словарь. Другой – прибавить случайные числа к паролям (как говорят, «посолить»). В работе должно быть несколько различных типов визуальных и графических паролей; идея состоит в том, что чем больше возможных паролей, тем, следовательно, сложнее устроить словарное нападение. Однако все это ограничено памятью пользователя.
Пароли – это то, что знает пользователь. Другие техники проверки подлинности базируются на том, кем является пользователь, – на биометрических данных, и на том, что пользователь имеет, – на опознавательных знаках доступа.
Биометрические данные
Идея проста: вы сами подтверждаете свою подлинность. Ваш «отпечаток голоса» отопрет дверь в вашем доме. Сканирование сетчатки глаза пустит вас в офис. Отпечаток большого пальца зарегистрирует вас в вашем компьютере. Это использовалось даже в фильме «Звездный путь»: капитан Пикард «подписывает» электронный бортовой журнал отпечатком своего большого пальца.
Биометрические данные – самые старая из форм опознавания. Физическое узнавание является биометрикой; наши предки использовали его задолго до того, как они эволюционировали в людей. Коты метят свою территорию. Дельфины издают индивидуальные, как подпись человека, звуки.
Биометрические данные также используются для опознавания в системах связи. Если вы разговариваете по телефону, человек на другом конце провода идентифицирует вас по голосу. Ваша подпись в контракте идентифицирует вас как лицо, подписавшее его. Ваша фотография идентифицирует вас как лицо, на имя которого выдан именно этот паспорт.
Для большинства методов биометрические данные нужно сохранять в базе данных, как и пароли. Голос Алисы будет служить биометрическим опознавательным знаком в разговоре по телефону, если вы Алису уже знаете. Если она незнакомка, то вам это не поможет. Точно так же и с почерком Алисы – вы можете узнать его, только если уже видели. Для разрешения этой проблемы карточки с подписями хранятся в банках в картотеке. Алиса пишет свое имя на карточке, когда открывает свой счет; эта карточка хранится в банке. Когда Алиса подписывает чек, банк сопоставляет ее подпись с той, что хранится в картотеке, для того чтобы убедиться, что чек имеет силу. (На практике это случается редко. Проверить письменную подпись так долго, что банк не побеспокоится сделать это за сумму, меньшую 1000 долларов. Он предполагает, что если возникнут проблемы, то кто-нибудь пожалуется. И разобраться с редкой проблемой дешевле, чем платить кому-либо за постоянную проверку.) Вы можете точно так же поступить и с Алисиным голосом – сравнив его с аналогичным образцом, хранящимся в центральной базе данных.
Исключения составляют ситуации, где биометрические данные подтверждаются как часть запутанного и необычного протокола. Когда Алиса подписывает контракт, например, у Боба еще нет копии ее подписи. Однако протокол работает – так как Боб знает, что он сможет проверить подпись впоследствии, если возникнет такая необходимость.
Существует много различных типов биометрических данных. Я уже упомянул почерк, звучание голоса, узнавание лица, отпечатки пальцев. К биометрикам также относятся линии на руке, сканирование сетчатки, сканирование радужной оболочки глаза, динамические характеристики подписи (не только то, как она выглядит, но и с каким нажимом, с какой скоростью она была начертана и т. д.) и другие. Одни технологии надежнее других – отпечатки пальцев намного надежней распознавания лица – но ситуация может измениться, поскольку технологии совершенствуются. Некоторые навязчивы – одна несостоявшаяся технология базировалась на образце отпечатка губ и требовала от пользователя поцеловать компьютер. В целом, биометрические данные будут считываться все лучше и лучше.
«Лучше и лучше» имеет два разных смысла. Во-первых, это значит, что самозванец не будет неправильно опознаваться в качестве Алисы. В целом, роль биометрических данных заключается в том, чтобы доказать, что Алиса-претендент и есть настоящая Алиса. Таким образом, если самозванец может успешно одурачить систему, то она работает не очень хорошо. Это называется ложной уверенностью. Во-вторых, это значит, что система не будет пытаться представить Алису как самозванца. Вернемся к началу: если роль биометрических данных – доказать, что Алиса – это Алиса, и если она не может убедить систему, что она – это она «не поддельная», тогда система также работает плохо. Это называется ложным отрицанием.
С течением времени биометрические опознавательные системы стали работать лучше в плане как ложной уверенности, так и ложного отрицания. Например, они устанавливают проверку отпечатков, так что ни пластиковый палец, ни чей-либо настоящий, но чужой палец не одурачат устройство, считывающее его отпечаток. Они лучше делают работу по отслеживанию ежедневных изменений в индивидуальных биометрических данных. Они более легки для использования.
Вообще, вы можете настроить биометрическую систему как в сторону допущения ошибки ложной уверенности, так и в сторону ложного отрицания. Здесь весьма нечеткие границы: если система получает отпечаток пальца, который, похоже, принадлежит Алисе, впустит ли она ее внутрь? Это зависит от того, склонна она в большей степени допустить ложную уверенность, или ложное отрицание. Если Алиса уполномочена взять карандаш со склада, то лучше допустить ошибку ложной уверенности; здесь больше неприятностей с отказом законному пользователю, чем если бы несколько карандашей просто потерялись. Если система защищает большие суммы денег, то ложное отрицание предпочтительней: оставить неправомочных пользователей снаружи более важно, чем иногда отказать в доступе законному пользователю. Если система приступает к выполнению ряда последовательных операций для запуска ядерных ракет, страшны оба варианта.
Биометрические данные значат очень много, так как на самом деле их сложно подделать: очень трудно нанести ложный отпечаток на свой палец или сделать сетчатку своего глаза похожей на чужую. Некоторые люди могут говорить голосами других (например, эстрадные имитаторы), а Голливуд способен сделать лица людей похожими на других. Но вообще подделать биометрические данные очень тяжело.
С другой стороны, биометрические данные даже слишком легки для подделки: не проблема украсть биометрики после того, как были сделаны начальные измерения. Во всех случаях, которые мы обсуждали, проверяющему необходимо было бы удостовериться не только в том, что биометрические данные верны, но и в том, что они были введены правильно. Вообразим удаленную систему, которая использует узнавание лица как биометрику. «Для получения разрешения возьмите свою фотографию, сделанную „Полароидом", и отправьте ее нам. Мы сравним картинку с той, что хранится у нас в файле». Как здесь осуществить нападение?
Легко. Чтобы выдать себя за Алису, возьмите ее фотографию, сделанную «Поляроидом», так, чтобы владелица об этом не знала. Потом, несколькими днями позже, используйте ее, чтобы обмануть систему. Это нападение работает потому, что получить фотографию Алисы просто, это совсем не то, что сделать свое лицо таким, как у нее. И так как система не проверяет, что это изображение вашего лица, а только то, что оно соответствует Алисиному лицу в картотеке, мы в состоянии обмануть ее.
Подобным образом мы можем подделать биометрику подписи, используя фотокопировальную машину или факсимильный аппарат. Тяжело подделать президентскую подпись на официальном документе, дающем вам продвижение по службе, но легко вырезать его подпись с другого документа, поместить на письмо, дающее вам повышение, и отправить его по факсу в департамент трудовой занятости населения. Они не смогут установить, что подпись была вырезана с другого документа.
Мораль в том, что биометрические данные будут работать прекрасно только в случае, если проверяющий станет удостоверяться в двух вещах: во-первых, что они действительно поступили именно от лица, которое подлежит проверке, и во-вторых, что они соответствуют образцу в картотеке. Если система не в силах одновременно поддержать два эти условия, она ненадежна.
Еще один пример: отпечатки больших пальцев для получения разрешения на вход в систему с удаленным доступом. Алиса помещает отпечаток своего большого пальца в считывающее устройство, находящееся на клавиатуре. (Не смейтесь, большое количество компаний хотят, чтобы так и было, а технология уже существует[27].) Компьютер посылает цифровой отпечаток хосту. Хост проверяет его, и если он соответствует отпечатку, хранящемуся в файле, дает Алисе доступ. Это не будет работать потому, что легко украсть цифровой отпечаток Алисиного большого пальца, и когда он у вас будет, то обманывать хост снова будет легко.
Защищенные от несанкционированного вмешательства аппаратные средства помогают до тех пор (в пределах ограничений главы 14), пока они включают и устройство, считывающее биометрические данные, и механизм подтверждения.
Это не сработает, если защищенное от несанкционированного доступа считывающее устройство посылает данные об отпечатке пальца через ненадежную сеть.
Мы подошли ко второй главной проблеме с биометрическими данными: эта система плохо справляется с отказами. Представим, что Алиса пользуется отпечатком своего большого пальца как биометрикой, и кому-нибудь вздумается украсть его. Что теперь? Он не является цифровым сертификатом (мы вернемся к этому в главе 15), который некая доверенная третья сторона может ей заменить. Это ее большой палец. У нее их всего два. Как только кто-нибудь украдет ваши биометрические данные, они останутся таковыми на всю жизнь; и их нельзя будет вернуть обратно.
Это та причина, по которой биометрические данные не могут выступать в роли шифровальных ключей (даже в том случае, если вам удастся разрешить противостояние между неясной логикой биометрических данных и безусловной математической логикой проблемы). Время от времени я вижу системы, которые используют шифровальные ключи, порожденные биометрическими данными. Это прекрасно работает до тех пор, пока данные не украдены. И я не думаю, что у кого-нибудь физически отрежут палец или нужный отпечаток пальца будет сымитирован на чьем-либо чужом пальце; я думаю, что кто-нибудь украдет цифровой отпечаток пальца. Однажды, когда это случится, система перестанет работать. (Ну, может быть, до тех пор, пока не будут украдены все 10 отпечатков пальцев…)
Биометрические данные могут быть хорошим механизмом, подтверждающим подлинность, но использовать их надо должным образом.
Опознавательные знаки доступа
Третьим способом доказательства идентичности является использование чего-либо, что вы имеете: физического опознавательного знака любого рода[28]. Это старая форма контроля доступа: материальный ключ ограничивает доступ в сундук, комнату, здание. Обладание королевской печатью уполномочивает кого-либо на действия от имени короля. Более современные системы могут быть автоматизированными – электронные ключи в номере отеля – или ручными – распространенные предметы, предоставляющие доступ в здание. Основная идея та же самая; физический предмет служит подтверждением подлинности своего хозяина.
Для этого можно пойти по нескольким путям. Наиболее простой путь, когда хозяин может просто доказать, что данный знак принадлежит ему. Есть компьютеры, включаемые физическим ключом; так работают компьютеры, которым требуется смарт-карта. Основная идея любого опознавательного знака в том, что вы помещаете знак в некоторое отверстие в каком-то месте, и после этого компьютер подтверждает, что вы действительно это сделали. Если это так, вы попадаете в систему.
Наиболее серьезная проблема с такой системой в том, что знаки могут быть украдены. Например, если кто-нибудь украдет ключи от вашего дома, то он сумеет открыть его. Таким образом, система в действительности не может подтвердить подлинность лица; она подтверждает подлинность знака. Большинство компьютерных систем для преодоления этой уязвимости соединяют в себе знак доступа с паролем, который иногда называют личным идентификационным кодом (PIN). Примером могут быть банковские карты. Банкоматы подтверждают подлинность карты и спрашивают идентификационный номер для подтверждения подлинности пользователя. Идентификационный номер бесполезен без знака доступа. Некоторые сотовые телефонные системы работают точно таким же образом: вам нужен физический телефон и код доступа, чтобы сделать звонок, оплачиваемый с частного телефонного счета.
Кроме того, что знак могут украсть, кто-нибудь может скопировать его. Некоторые знаки скопировать легко, например физические ключи. Таким образом, знаки могут быть украдены, скопированы и перемещены без ведома своего владельца.
Другая проблема в том, что должен быть некий путь, подтверждающий, что опознавательный знак в действительности там, где он должен находиться. Подумайте о знаке как о перемещаемой, изменяемой биометрике – и вы получите все проблемы проверки безопасности из предыдущего раздела. Однако здесь при необходимости знак может быть изменен.
Проиллюстрирую эту проблему на примере использования кредитных карт. Сложно подделать физическую кредитную карту потому, что фальшивку опасно подсунуть при покупке вещей в магазине. Нельзя полагаться, что служащий магазина не заметит, что карта не настоящая. Легче использовать поддельную кредитную карту по телефону. В магазине служащий проверит подлинность как номера счета на кредитной карте, так и ее саму – как знак. По телефону оператор не сумеет определить подлинность физического знака, только номер счета.
В этом – другая, относительно менее значимая проблема, которую можно наблюдать на примере некоторых знаков. Если пользователи могут оставить знак в отверстии, куда поместили его для операции, они часто это и делают. Если пользователи должны вставить смарт-карту в прорезь перед тем, как она загрузится, они, вероятно, оставят ее там на весь день и всю ночь, даже если их самих там не будет. На слишком долгое для идентификации время.
Все эти обсуждения предполагают, что какой-нибудь вид считывающего устройства общается со знаком, и пользователь поместил его в считывающее устройство. Но часто такой возможности не бывает: у большинства компьютеров нет требуемого считывающего устройства, или система работает с мобильным пользователем, который сидит где-то в другом месте, а не за своим привычным компьютером. С этой ситуацией связаны две различные технологии.
Первая – это «вызов/ответ». Знак – устройство идентификации – карманный калькулятор с цифровой клавиатурой и маленьким экраном. Когда пользователь хочет подключиться, он вызывает удаленный хост. Он отправляет этот вызов со своего знака. Знак подготавливает соответствующий запрос, который передает в компьютер, а тот переправляет его хосту. Хост производит аналогичные вычисления и, если результат соответствует ожидаемому, подтверждает подлинность.
Вторая технология основана на временной синхронизации. Знаком является аналогичный карманный калькулятор с одним экраном. На экране регулярно сменяются номера, обычно раз в минуту. Удаленный компьютер просит пользователя напечатать то, что показано на экране. Если ответ пользователя соответствует тому, что ожидает удаленный компьютер, он производит подтверждение подлинности. Таким образом работает адаптер SecurID[29].
Конечно, полная система может также включать пароль, знак вызова/ответа, для начала работы может даже потребовать дополнительно ввода пароля; и другие вспомогательные меры безопасности. Основная идея все-таки в том, что некое секретное вычисление происходит внутри электронного ключа, который подменить нельзя. Нападающий не станет притворяться, будто у него есть знак, потому что не знает, как рассчитывать ответы, основанные на вызовах, или не знает, как рассчитывать величины, основанные на временной синхронизации. Сделать это можно только одним путем – имея настоящий знак.
Это работает в большей или меньшей степени. Шифровальные техники, кодирование или хэширование обеспечивают безопасность. Удаленный компьютер знает, как провести расчеты, так что система безопасна в такой же степени, что и ключевой код главного хоста. Любой, кто перепроектирует знак, сможет выяснить, как произвести расчеты; таким образом, система безопасна ровно настолько, что и знаки (см. главу 14). Но это достаточно хорошо и, конечно, намного лучше, чем «голые» пароли. Проблемы безопасности возникают в сети и при подтверждении подлинности компьютера.
Напоследок обсудим еще один знак: записанный пароль. В сообществе, занимающемся проблемами безопасности, существует реакция коленного рефлекса на запись паролей, но если это сделано должным образом, то может значительно улучшить защиту. Кто-нибудь, кто записывает свой пароль, превращает то, что он знает (свой пароль), в то, что он имеет (клочок бумаги). Эта уловка позволяет ему использовать более длинные пароли, которые являются более надежными. Здесь есть все проблемы простого знака: он может быть скопирован или украден. Защита не будет работать, если Алиса написала свой пароль на желтом липком листочке, наклеенном на монитор ее компьютера. Для нее будет лучше положить свой пароль в бумажник – это надежнее. Возможно, лучшим решением будет иметь две части пароля: одну будет помнить Алиса, а другая будет записана на листочке, лежащем в ее бумажнике.
Есть системы с одноразовыми паролями. У пользователя находится список паролей, записанных и используемых однократно. Конечно, это хорошая система подтверждения подлинности – список паролей является знаком – до тех пор, пока список находится в безопасном месте.
Протоколы аутентификации
Протоколы аутентификации – это криптографические способы подтверждения подлинности личности Алисы через сеть. Основной протокол аутентификации достаточно прост.
1. Алиса набирает свое имя пользователя и пароль на компьютере-клиенте. Клиент отправляет эту информацию серверу.
2. Сервер ищет указанное имя пользователя в базе данных и отыскивает соответствующий пароль. Если он соответствует паролю, набранному Алисой, ей предоставляется доступ.
Проблема в том, что база данных паролей должна быть защищена. Решение в том, чтобы хранить не пароли, а хэш-функции паролей.
1. Алиса набирает свое имя пользователя и пароль на клиенте. Клиент отправляет эту информацию серверу.
2. Сервер хэширует набранный Алисой пароль.
3. Сервер ищет имя пользователя с именем Алиса в базе данных и отыскивает соответствующее хэш-значение. Если это хэш-значение соответствует хэш-значению пароля Алисы, ей предоставляется доступ.
Уже лучше. Главная проблема со вторым протоколом в том, что пароли открыто посланы по сети. Кто-нибудь, рыскающий по сети, может собирать имена пользователей и пароли. Решение включает в себя хэширование пароля перед тем, как отослать его (более старые версии Windows NT делают это), но словарные нападения в состоянии справиться и с этим.
Так как словарные нападения стали более мощными, системы начали использовать прием, известный как «соление» (на самом деле они делали это и ранее, хороший пример предусмотрительности проектировщика). «Соль» – это известная случайная константа, хэшируемая вместе с паролем. Вследствие чего сделать словарные нападения сложней; вместо единственного хэш-значения для пароля «кот» могут быть 4096 различных вариантов для «кот» плюс 12 бит случайной «соли». Словари хэшированных паролей должны были бы быть в четыре раза «толще». Но способность произвести быстрые словарные нападения в реальном времени делает эту контрмеру устарелой; словари просто включают все возможные значения «соли».
Kerberos («Цербер») является более хитрым протоколом аутентификации. Здесь Алиса должна иметь долгосрочный ключ, используемый совместно с надежным сервером в сети, называемым Kerberos-сервером. Чтобы войти во взятый наугад сервер в сети – назовем его сервером Боба, – выполняется следующая процедура:
1. Алиса запрашивает разрешение у сервера Kerberos для входа на сервер Боба.
2. Сервер Kerberos проверяет, допускается ли Алиса на сервер Боба. (Примечание: серверу Kerberos не нужно знать, что Алиса – та, кем она себя назвала. Если это не она, протокол прервется на шаге 6.)
3. Сервер Kerberos высылает Алисе «билет», который она обязана отдать серверу Боба, и ключ к сеансу, который она может использовать, чтобы доказать Бобу, что она Алиса.
4. Алиса использует ключ к сеансу с сервера Kerberos для создания «удостоверения», которое она будет использовать, чтобы убедить Боба, что она Алиса.
5. Алиса посылает Бобу и билет, и удостоверение.
6. Боб проверяет. Если все подтверждается, он дает Алисе доступ. (Боб также имеет используемый совместно с сервером Kerberos долгосрочный ключ. Билет – это сообщение с сервера, зашифрованное в долгосрочном ключе Боба.)
Этот протокол защищен тем же способом, что и протоколы физических билетов. Сервер Kerberos печатает билеты. Он дает билеты Алисе, а она в свою очередь может предоставить их Бобу. Боб может утвердить билет, так как он знает, что Алиса получила его с сервера Kerberos.
И у этого протокола есть несколько приятных свойств. Долгосрочные ключи Алисы и Боба, которые похожи на пароли, никогда не посылались по сети. Отрицательная сторона в том, что системе для работы нужен сервер Kerberos. Сервер Kerberos является доверенной третьей стороной. Это может стать «узким местом» в системе в 9:00 утра, когда каждый пытается войти в свой компьютер.
Kerberos был изобретен Массачуссетским технологическим институтом в 1988 году и с того времени используется в мире UNIX. Kerberos является частью Windows 2000, но исполнение Microsoft отличается от стандартного и несовместимо с остальным миром Kerberos. Я могу только предполагать, что это было сделано намеренно по соображениям, связанным с рынком, но сделано таким образом, что ослабило защиту. Нельзя всего лишь изменить протокол безопасности и предполагать, что измененный протокол так же надежен.
Другие подтверждающие подлинность протоколы входа в систему используют открытые шифровальные ключи. IPsec и SSL, например, пользуются протоколами аутентификации с открытыми ключами. Некоторые системы прибегают к более простым, но тайным протоколам. Протокол, в котором звонящий с сотового телефона доказывает, что он может сделать телефонный звонок в этой частной сети, является одним из них.
Однократная регистрация
Вещь, которая изрядно раздражает пользователей в системе со строгими требованиями к безопасности, – это большое число паролей. Пользователь должен набирать один пароль для входа в свой компьютер, другой для входа в сеть, третий для входа на отдельный сервер в сети и т. д. Люди задают вопрос: не было бы лучше, если бы пользователь зарегистрировался один раз, с одним паролем, и затем мог бы управлять компьютерами как ему угодно, без использования других паролей?
Однократная регистрация – это решение пользовательской проблемы. К несчастью, она не очень хорошо работает. Во-первых, нетрудно увязнуть в болоте различных приложений и мер безопасности, которые плохо согласуются между собой. Это значит не просто ограничиться выбором определенного пароля для каждого – что плохая идея, – но учесть все проблемы множества взаимодействующего программного обеспечения. Во-вторых, дополнительный риск связан с тем, что возможная уязвимая точка является единственной. Есть разница между потерей одной кредитной карточки и целого бумажника.
Продукты с одноразовой регистрацией существуют, и в некоторых ситуациях они работают. Но они ни в коем случае не являются панацеей, как о том любят объявлять их продавцы.