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

А вместе с тем, отпечаток пальца (вернее, его уникальность) может помочь человеку при работе с компьютером. С помощью биометрического устройства типа FingerID, выпускаемого компанией AuthenTec (http://www.authentec.com), узор отпечатка пальца можно ввести в компьютер и использовать его в качестве пароля для входа в Internet, регистрации в локальной сети, доступа к различным ресурсам и т. д.

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

Компания «Альба-Софт» представляет серию своих разработок из области Finger-Technology, задачей которых является использование уникального узора отпечатка пальца человека для обеспечения безопасности данных и облегчения работы на компьютере.

Технология пальцев

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

Для использования разработок компании «Альба-Софт» необходимо устройство и программы его поддержки, обеспечивающие считывание отпечатка пальца в виде файла формата BMP с размером изображения 128 х 128 точек (см. Экран 1). Таким условиям удовлетворяет, например, устройство типа FingerID производства компании AuthenTec и прилагающийся к нему пакет разработки SDK. Динамические библиотеки, содержащиеся в этом пакете, позволяют получать изображение отпечатка пальца, считанное устройством типа FingerID, в виде файла в формате BMP размером 128 х 128 точек.

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

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

Что служит шаблоном? Если эталонный отпечаток представить в виде матрицы размером 128 х 128, то в качестве шаблона можно использовать различные мелкие фрагменты этой матрицы (размером, например, 16 х 16). Идентификатором отпечатка может служить расположение различных фрагментов относительно друг друга. Расположение каждого фрагмента на вновь снятом отпечатке вычисляется довольно точно путем, например, перебора всех вариантов расположения фрагмента (всего (128-16)x(128-16) = 12 544 вариантов) и поточечного сравнения, а идентификатором будет расположение фрагментов относительно какого-нибудь одного из них (подробнее во врезке «Насколько это надежно»).

Создание приложения

Все прикладные программы, где применяется Finger Technology компании «Альба-Софт», используют файлы, содержащие индивидуальную информацию об отпечатках пальца пользователя и ключах, с помощью которых осуществляется защита информации. Это так называемые FCS-файлы (см. Экран 2).

Принцип построения любого приложения, использующего данную технологию, заключается в том, что для непосредственной защиты информации (шифрования, подписи, выработки случайных паролей) применяется некоторый секретный ключ. Формат и особенности этого ключа могут быть произвольными, и на само FT-приложение не влияют. Например, это может быть типовой секретный ключ к системам OMEGA, «Криптоцентр», «Верба-OW», Lotus Notes, SWIFT и т. п. или внутренний секретный ключ, созданный специализированным программным модулем для построения FCS-файлов.

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

Как сделать свое приложение FT-приложением, т. е. добавить в собственную программу возможность ввода секретного ключа с помощью отпечатка пальца? Для этого надо немного подкорректировать приложение и использовать универсальную динами-ческую библиотеку MCS_FL.DLL, содержащую FT-компоненты. Любой секретный ключ можно представить в виде двоичной последовательности определенной длины (например, 512 или 1024 бит). В приложении обязательно есть процедура ввода секретного ключа в оперативную память компьютера. Данная процедура бывает достаточно сложной, она может запрашивать различные пароли, снимать маскировки, проверять права доступа и т. п. На FT-приложение все это в конечном счете не влияет. Основная задача - подготовить динамическую библиотеку, передающую секретный ключ FT-приложению. Такая библиотека обязательно должна содержать процедуру

extern «C» __declspec(dllexport) __stdcall int
KeyForFinger(char *KeyFileName,
unsigned char *SKey)

где IN: KeyFileName - имя файла с ключом (если секретный ключ вводится из файла);

OUT: Skey - секретный ключ, используемый в системе.

Код возврата: длина секретного ключа в байтах (не более 10 000) при успешном завершении; 0 - при неправильном выполнении процедуры.

При построении FCS-файла необходимо выбрать внешний секретный ключ и сослаться на эту библиотеку, а также на имя файла с используемым секретным ключом. Построенный таким образом FCS-файл будет защищать секретный ключ от несанкционированного доступа. Созданный FCS-файл можно записать в любое удобное место в сети или на локальном диске. С помощью системы MCS-Password нужно зарегистрировать пользователя и его FCS-файл. Для ввода секретного ключа в собственное FT-приложение достаточно воспользоваться содержащейся в динамической библиотеке MCS_FL.DLL процедурой

int KeyFromFinger(char *
User,unsigned char *SKey)

где IN: User - идентификатор зарегистрированного пользователя;

OUT: Skey - вычисленный FT-приложением секретный ключ.

Код возврата: длина вычисленного секретного ключа или 0 при неправильном выполнении процедуры.

Везде и всюду

Я уже упоминал о системе MCS-Password, предназначенной для генерации случайных паролей по отпечатку пальца пользователя. Любому пользователю сегодня приходится помнить несколько различных паролей: для входа в Internet, в локальную сеть, для доступа к электронной почте, различным Internet-ресурсам, базам данных и т. п. Оказывается, благодаря FT-технологиям можно не забивать себе этим голову, а использовать для генерации и ввода паролей отпечаток своего пальца.

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

Направление Finger Technology представляется весьма перспективным, ведь FT-приложения значительно повышают надежность системы защиты (некоторые соображения на этот счет представлены во врезке «Какой должна быть защита»), и, безусловно, в ближайшие два-три года следует ожидать появления на рынке как новых аппаратных средств для FT-приложений, так и FT-Software.

Михаил Масленников - генеральный директор ООО «Альба-Софт», кандидат физико-математических наук. С ним можно связаться по адресу: alba@relay.voz.ru


Насколько это надежно

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

Пусть, например, набор состоит из восьми фрагментов размером 16 х 16. Тогда трудоемкость полного перебора вариантов расположения фрагментов составит примерно

((128-16)x(128-16))8 ~= 1033 вариантов перебора.

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

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

  • при стойкости до 1015 отпечаток правильно вводится практически с первого раза;
  • при стойкости до 1021 вводится после двух-трех попыток;
  • при стойкости до 1027 вводится после пяти-семи попыток.

назад


Какой должна быть защита

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

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

2. Максимальное использование всех рубежей защиты. Основным рубежом защиты всегда является секретный ключ. Любой анализ всегда проводится в предположении, что потенциальный злоумышленник располагает всеми необходимыми сведениями о системе защиты (используемые алгоритмы, принципы построения ключевой системы и т. д.); имеет возможность контролировать линии связи, по которым осуществ-ляется пересылка закрытой информации, знает общие статистические характеристики переписки, вероятные слова, служебные комбинации, местами и куски открытого текста. Однако очевидно, что отсутствие подобных сведений создаст потенциальному злоумышленнику дополнительные трудности, которые в некоторых случаях (например, при компрометации секретного ключа) могут оказаться решающими. Поэтому чем больше будет рубежей защиты, тем лучше. Если есть возможность без особой нужды не публиковать используемые алгоритмы шифрования и электронной подписи - не публикуйте их! Но если вы используете уже опубликованные алгоритмы (например, алгоритмы ГОСТ), то этот уровень защиты уже заведомо снят.

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

4. Любая программно-аппаратная система защиты обязательно должна дополняться комплексом организационных мер. Проще говоря, если вы создали хорошую систему защиты, взломать которую традиционными методами (перебор ключей, поиск уязвимых мест в алгоритмах и т. п.) злоумышленник не в состоянии, очевидно, все его усилия будут направлены на то, чтобы похитить секретный ключ. Это можно сделать двумя способами: традиционным (вытащив, например, дискету с секретным ключом из сумочки девушки-операционистки) или же более сложным (поставив на компьютер, где используется система защиты, так называемый «криптовирус», задача которого - вытащить секретный ключ из оперативной памяти компьютера в момент работы использующей его программы). И если к компьютеру, на котором установлена система защиты, могут обращаться все кому не лень (охранники ночью - поиграть, сотрудники днем - найти интересную информацию из Internet, приходящие «гости» - что-то распечатать и т. д.), говорить о надежной защите не приходится. Круг лиц, допущенных к системе защиты и программно-аппаратным средствам, на которых она установлена, должен быть максимально ограничен.

назад