J.K.Omura. A Computer Dial Access System Based on Public-Key Techniques//IEEE Communications magazine, vol.25, Э7, 1985, pp.73-79. Вычислительная система с наборным доступом, основанная на методах с открытым ключом Одним из наиболее важных аспектов надгжной вычислительной системы является контроль доступа пользователей. В статье описано аппаратное обеспечение шифрования и аутентификации в системе с наборным доступом, использующей как традиционное шифрование, так и методы с открытым ключом. Методы с открытым ключом имеют то преимущество, что не требуют предварительного обмена секретными числами перед аутентификацией или шифрованием. Однако они достаточно медленны для шифрования передаваемых данных, что ограничивает их использование. В силу этого в представленной системе с наборным доступом методы с открытым ключом и обычное шифрование объединены. По существу, система с наборным доступом работает независимо от терминалов и ГВМ. В каждом терминале устройство шифрования/аутентификации (УША) расположено между терминалом и модемом, тогда как в ГВМ устройство контроля доступа находится между каналом связи и ГВМ с несколькими УША (рис.1). Общий обзор В этой статье обычное шифрование данных на ключе К обозначим е(К; data)=endata, а дешифрование зашифрованных данных "endata" на ключе К - d(К; endata)=data. Любой обычный криптографический алгоритм имеет механический аналог - замок с одним ключом (рис.2). Одним и тем же ключом можно закрывать (шифровать) и открывать (дешифровать). Знание всего одного ключа позволяет зашифровать и расшифровать сообщение. В обычных шифрсистемах отправитель и предполагаемый получатель зашифрованных данных должны иметь один и тот же шифрключ. Этот ключ должен храниться в секрете и сообщаться только допущенным к зашифрованной информации пользователям. Криптоалгоритм с открытым ключом имеет механический аналог, показанный на рис.3. Здесь уже два ключа - один для закрывания (шифрования), другой для открывания (дешифрования). Хотя теоретически один ключ определенным образом связан с другим, важно то, что они практически независимы в том смысле, что знание одного ключа не раскрывает другого. Найти один ключ из другого вычислительно невыполнимо. используя алгоритм с открытым ключом возможно зашифровать сообщение, не имея возможности расшифровать его. Аналогично, можно расшифровать сообщение, не зная, как оно было зашифровано. Если ключ щифрования общедоступен, то любой пользователь может зашифровать сообщение, используя этот ключ, но только пользователь, имеющий соответствующий ключ дешифрования, может прочесть это сообщение. Если пользователь держит в секрете ключ шифрования, а соответствующий ключ дешифрования общедоступен, то любой другой пользователь может прочесть сообщение. При этом имеется полная уверенность в достоверности сообщения, поскольку его мог сформировать только владелец ключа шифрования. Таким образом, владелец секретного ключа может посылать подписанные сообщения. Далее будем обозначать описанные ключи шифрования и дешифрования заглавными буквами, используя индексы для обозначения генератора ключей. Например, пользователь А генерирует ключи Eа и Dа. Шифрование данных "DATA" при помощи Eа: Eа(DATA)=ENDATA. Дешифрование "ENDATA" при помощи Dа: Dа(ENDATA)=DATA. Полагаем, что знание Eа не дает доступа к Dа и наоборот. В общем случае пользователь А публикует Tа и хранит в секрете Dа. В этой статье мы полагаем, что алгоритмы с открытым ключом значительно медленнее обычного шифрования, поэтому они используются только для аутентификации и управления ключами. В настоящее время общеприняты такие методы с открытым ключом, как метод Диффи-Хеллмана [1] и RSA [2]. Эль-Гамаль добавил к методу Диффи-Хеллмана цифровую подпись, а CYLINK использует свой собственный метод SEEK [4] для управления ключами шифроборудования. Статья не привязана к какому-либо определенному методу. Устройство шифрования/аутентификации (УША) Предположим, что УША каждого терминала может выполнять функции шифрования/дешифрования как обычным методом, так и методом с открытым ключом. Кроме того, каждое УША может самостоятельно генерировать асимметричные ключи. Терминал А имеет УША с ключом шифрования Ea и ключом дешифрования Da (аналогично для терминала B - Eв и Dв и т.д.). ГВМ также имеет устройство контроля доступа, которое может осуществлять обычное шифрование и дешифрование для нескольких каналов и имеет асимметричные ключи Eн и Dн. Обычно ГВМ имеет УША для каждого входящего канала связи. Будем ссылаться на эту совокупность как на УША ГВМ, так как нас интересует работа только одного канала. Инициализация В методах с открытым ключом нет необходимости в обмене секретными числами, требуется лишь обмен несекретными числами - ключами шифрования УША. Ключ дешифрования держится УША в секрете. В любой безопасной системе связи всегда существует начальный обмен секретными или несекретными числами. В каждом случае полученные числа должны быть аутентичными, иначе система не будет безопасной. Система обычного шифрования, даже если известно, что все ключи аутентичны, перестает быть безопасной при компрометации какого-либо ключа. В системе с открытым ключом несекретный ключ шифрования каждого УША должен каким-либо образом аутентифицироваться при приеме другим УША. Однако его можно сообщить другому лицу, и при этом безопасность не снижается. Предположим, что существует сертификационный центр (СЦ), который первоначально удостоверяет все несекретные ключи шифрования для всех УША. Это осуществляется за счет наличия у СЦ своего собственного секретного ключа шифрования Есц и соответствующего ключа дешифрования Dсц. Предположим, что каждому УША известен Dсц, который может периодически передаваться или изначально вводится в память каждого УША. Отметим, что СЦ публикует ключ дешифрования и держит в секрете ключ шифрования, что противоположно действиям УША. Первоначально каждое УША имеет свой несекретный ключ шифрования, удостоверенный СЦ. Для УША терминала А ключ Ea имеет сертифицированный вид Са=Eсц(Ea). Поскольку Есц секретен и известен только СЦ, каждое УША должно первоначально отослать свой ключ на СЦ на сертификацию. Это можно сделать до рассылки УША по терминалам, либо позднее по строгому протоколу инициализации, предложенному Матиасом из IBM [5]. На рис.4 этот протокол показан в упрощенном виде. В течение начального периода [0,Т1] всем УША делается запрос на передачу их несекретных чисел. За следующий период [Т1,Т2] СЦ возвращает соответствующие сертифицированные открытые числа. Затем УША подтверждают получение сертификатов, отправляя "подписанные" сообщения в период [Т2,Т3]. Для УША А "подписанное" сообщение имеет вид: Za=Da(Ca). СЦ может проверить его, рассчитав Ea(Za)=Ca. При наличии какого-либо конфликта в ходе протокола за период [0,Т3] СЦ будет знать, что нарушитель пытался осуществить ложную сертификацию. При необнаружении ложной сертификации СЦ посылает всем УША сигнал о завершении инициализации и начале нормальной работы. Сертификат легко аутентифицировать. Например, если УША терминала А должно послать свой сертификат другому УША, то последнее легко проверяет его аутентичность, зная ключ дешифрования СЦ Dсц: Dсц(Ca)=Ea. Поскольку только СЦ мог преобразовать Ea в Ca, то УША убеждено в аутентичности принятого Ea (рис.5). В статье полагаем, что все несекретные ключи шифрования сертифицированы и аутентифицируются УША-получателем. Поэтому далее будем использовать обозначение Ea, а не Ca. Также положим, что открытые числа доступны любому УША терминала и ГВМ. Можно предположить, что ими обмениваются при рукопожатии в процессе установления связи между двумя УША. Кроме того предположим, что если УША требуется несекретное открытое число, оно может получить его в СЦ или у ГВМ. Аутентификация терминала в ГВМ Предположим, что при установлении канала связи между терминалом В и ГВМ последняя желает проверить, действительно ли терминал В тот, за кого себя выдает. Для этого терминал и ГВМ выполняют следующую процедуру: 1) УША ГВМ генериует случайное число R и посылает Ев(R) на УША терминала; 2) УША терминала рассчитывает Dв(Eв(R))=R при помощи секретного ключа дешифрования Dв и возвращает ГВМ зашифрованное случайное число Eн(R); 3) УША ГВМ рассчитывает Dн(Eн(R))=R на своем секретном ключе Dн и убеждается в аутентичности R и, следовательно, в аутентичности терминала. Такую процедуру можно выполнить между двумя любыми УША. На рисунке 5 показана процедура аутентификации терминала В терминалом А. УША А выполняет роль УША ГВМ. Терминал может аутентифицировать аналогичным образом ГВМ, инициализируя описанную процедуру. Аутентификация основана на том факте, что случайное число преобразуется на секретном ключе, известном только выработавшему его терминалу. Каждый раз используется независимое случайное число R, чтобы исключить возможность повтора ранее записанного злоумышленником сообщения. Шифрование данных Для посылки на ГВМ зашифрованных данных УША терминала А может выработать ключ обычного шифрования К и отправить этот ключ в виде Ен(К) на УША ГВМ, а затем послать "data" в зашифрованном виде е(К;data)=endata. УША ГВМ восстанавливает Dн(Ен(К))=К, а затем дешифрует данные d(К;endata)=data. Дополнительной особенностью может быть отправка с терминала А на ГВМ "подписанного" ключа: Z=Eн(Dа(К)). УША ГВМ может рассчитать Ea(Dн(Z))=K, где используется тот факт, что только УША А может преобразовать К к виду Dа(К), поскольку Dа секретен и известен только УША А (см. рис.6). Терминал А может послать зашифрованные данные в файл ГВМ для последующего доступа со стороны терминала В. Это осуществимо, если вместе с зашифрованными данными послать в файл ГВМ Ев(К). Для того, чтобы сделать данные доступными терминалу С, вместе с зашифрованными данными можно также послать Ес(К). По такому принципу может действовать засекреченная электронная почта. Описанная процедура передачи шифрключей может проходить между двумя УША без участия ГВМ. Таким образом, это гибкий электроный метод управления ключами для всех типов сетей засекреченной связи. Цифровые подписи Два любых УША могут обмениваться "подписанными" документами, которые можно проверить. Например, УША А может послать сообщение или документ М на ГВМ, подписанное таким образом, что ГВМ может проверить правильность принятого документа и убедиться, что он поступил от УША А. При этом УША А формирует MDC-код [6] К=MDC(M). Это несекретный алгоритм формирования контрольной суммы М, обнаруживающий как случайные, так и намеренные изменения М без использования секретной информации. УША А посылает на ГВМ сообщение М, цифровую подпись Dа(К) на своем секретном ключе Dа и соответствующий сертификат Cа. УША ГВМ может проверить подпись и правильность принятого сообщения. При этом извлекается из сертификата Еа, затем при помощи Eа из подписи получают К и сравнивают его с результатом собственного расчета MDC(M). Отметим, что поскольку УША ГВМ для проверки не требуется никакой уникальной инофрмации, то любое УША может проверить такой "подписанный" документ без использования секретных чисел или связи с удаленной ЭВМ. Уже имеются пакеты программ, реализующие цифровую подпись [7]. Идентификация пользователя После установления безопасной связи между терминалом и ГВМ пользователь может приступить к обычной процедуре входа в систему, обычно с использованием пароля. Для более надгжной идентификации пользователя необходимо аутентифицировать что-то, чем он обладает в дополнение к тому, что он знает (пароль или ПИН). Доступ может быть еще более безопасен при использовании биометрии пользователя (голос, отпечатки пальцев, радужная оболочка глаза и даже ДНК). Для получения очень высокого уровня контроля доступа считывающий модуль может устанавливаться совместно с УША каждого терминала. Этот модуль может выступать в качестве: 1) считывателя магнитных карточек; 2) считывателя устройств Datakey ("ключ данных"); 3) ключевого блокнота; 4) устройства измерения биометрических данных. Каждому пользователю на СЦ может выдаваться магнитная карточка, на которой находятся идентификационны данные, включая хэшированный ПИН. Эти данные, кроме того, преобразуются на ключе Есц. Терминал может аутентифицировать число на карточке при помощи открытого ключа СЦ Dсц. При этром пользователь также вводит ПИН, проверяемый с дешифруемыми данными карточки. Такая процедура аутентификации может выполняться на УША терминала независимо от описанной выше процедуры аутентификации терминал-ГВМ. В этом методе пользователь привязан к данным карточки, которые, в свою очередь, привязаны к СЦ. Вместо магнитной карточки может использоваться Datakey [8]. Это ППЗУ в виде ключа, которое может содержать данных больше, чем карточка. Datakey может хранить пользовательские ключи шифрования и дешифрования. Если Datakey генерируется СЦ, то всю информацию в нм можно сертифицировать. Это позволят пользователю вводить Datakey в считыватель терминала, после чего начинается описанная выше процедура между пользователем (использующим УША терминала) и УША ГВМ. УША ГВМ может аутентифицировать и УША терминала и пользователя. Важно, чтобы пользователь надежно хранил свою карточку или Datakey, поскольку с них легко скопировать данные. Это возлагает на авторизованных пользователей ответственность за безопасность доступа. Во избежание использования поддельных карточек Light Signatures [9] разработала дешевую магнитную карточку, имеющую уникальную метку, которую нельзя скопировать на другую карточку. Эту метку можно зашифровать на Есц вместе с другими данными. В этом методе к СЦ привязывается и число, и сама карточка. Для получения очень высокого уровня контроля доступа можно использовать биометрические данные. Можно, например, оцифровать отпечаток пальца пользователя и зашифровать на Есц с другими идентификационными данными, хранимыми на карточке или в Datakey. Считыватель терминала может дешифровать данные на Dсц сертификационного центра и сравнить данные об отпечатке с реальными биометрическими измерениями, произведенными тем же устройством. Метод требует использования дорогого биометрического устройства. Интеллектуальные карточки (смарт-карточки) Предположим, что хранение данных и алгоритмы с открытым ключом, используемые в УША, можно выполнять на чипах, встраиваемых в пластиковую карточку или ключ. Тогда все аутентифицирующие возможности УША будут находиться у пользователя в кармане. Такова идея использования "интеллектуальных карточек" для аутентификации пользовамтеля [10]. По существу смарт-карточка работает как УША терминала и выполняет протокол аутентификации непосредственно между карточкой пользователя и УША ГВМ. При этом не требуется, чтобы терминал получал какие-либо секретные числа, так как он служит только для подачи питания на карточку и для ег связи с ГВМ. Такие смарт-карточки необходимы в случаях, когда не доверяют терминальному оборудованию. Например, в банковской среде пользователи обычно доверяют банкоматам и без боязни вводят в них свои ПИН. Однако у пользователя могут возникнуть сомнения при вводе ПИН в кассовый терминал (покупки свыше 150$). Достаточно легко подключиться к кассовому терминалу и записать все ПИНы с номерами карточек. В случае со смарт-карточками все секретные числа и критичные вычисления остаются внутри карточки и не раскрываются терминальному оборудованию. Аутентификация достигается путем выдачи карточкой правильного несекретного ответа на случайный запрос, как описано выше и показано на рис.7. Поскольку карточка находится во владении пользователя, тот может ей доверять. Другим важным преимуществом смарт-карточки является возможность доступа к любому терминалу, допускающему считывание таких карточек. Смарт-карточки были предложены для проведения финансовых транзакций. Например, кассовый терминал может аутентифицировать смарт-карточку при помощи процедуры, описанной на рис.7. В качестве терминала может выступать телефон-автомат. Любой терминал может аутентифицировать карточку, не храня при этом никаких секретных чисел и не связываясь с удаленной ЭВМ. При этом также желательно аутентифицировать владельца смарткарточки. На сегодняшний день широко используется то, что пользователь знает, а именно - персональный идентификационный номер (ПИН). В одном из способов используется тот факт, что для известного большого простого числа "p", заданной константы "а" и целого числа Y, меньшего "p", вычислительно нвозможно найти Z, удовлетворяющее Y=а^Z mod p. Это сложная задача отыскания дискретных логарифмов [11]. Смарт-карточка может содержать сертифицированную открытую функцию шифрования Сс карточки вместе с сертифицированным открытым числом на основе ПИНа Cpin = Ecc (а^PIN mod p). Знание открытого числа не раскрывает ПИН владельца, поскольку для этого потребуется отыскание дискретного логарифма. Первоначально, при установке карточки в терминал ему посылаются два несекретных сертифицированных числа Cс и Cpin, находящиеся на карточке. Терминал рассчитывает Ec из Cс, а^PIN mod p из Cpin и затем может проверить аутентичность карточки и ее владельца по следующей схеме: 1) терминал вырабатывает случайное число R и вычисляет а^R mod p; 2) затем терминал посылает Ec(а^R mod p) карточке; 3) карточка при помощи Dc дешифрует принятое сообщение а^R mod p; 4) владелец карточки вводит свой PIN, и карточка рассчитывает (а^R mod p)^PIN mod p и посылает это значение терминалу; 5) терминал сравнивает полученное от карточки значение с (а^PIN mod p)^R mod p. если рассчитанное на терминале число совпадает с числом, полученным от карточки, то и карточка и ее владелец считаются аутентифицированными, поскольку карточке для ответа требуются секретное число карточки Dc и секретный ПИН владельца. Этот алгоритм показан на рис.8, где для простоты опущено обозначение mod p. ПИН владельца карточки может также использоваться для активизации смарт-карточки. В рассмотренной схеме предполагается, что владелец карточки вводит ПИН непосредственно в карточку. Если терминалу можно доверять при вводе ПИН, то ПИН может вводиться в терминал или защищенный считыватель терминала. Для управления доступом в ЭВМ карточка и терминал могут действовать как единый пользующийся доверием узел, аутентифицируемый удаленной ГВМ. Поскольку смарт-карточка - это УША, ее можно использовать для формирования цифровой подписи всех сообщений, отправляемых пользователем. Например, в кассовом терминале все транзакции можно подписывать смарт-карточкой пользователя. Кроме того, она может хранить все транзакции, подписанные УША торгового терминала. По существу, смарт-карточка и кассовые треминалы могут хранить подписанные и проверяемые контрольные журналы, которые могут позднее передаваться в центральную базу данных. Одним из важнейших свойств смарт-карточки является отсутствие необходимости предъявлять терминалу какие-либо секретные числа для аутентификации карточки и пользователя. Таким образом, транзакции в кассовых терминалах можно делать в режиме офлайн. Телефоны-автоматы, оборудованные для приема смарт-карточек, могут на месте авторизовать звонки. Между двумя абонентами, имеющими такие телефоны, могут вестись подписанные и проверяемые транзакции. Это по существу позволяет безопасный контроль доступа к ЭВМ с таких телефонов. Заключение При использовании методов с открытым ключом для аутентификации уменьшается необходимость в передаче секретных чисел. Секретные числа размещаются только в УША, ключе данных (Datakey) или смарт-карточке. Эти секретные числа генерируются внутри указанных устройств и никогда их не покидают. Передаются только несекретные числа. Как и во всех безопасных системах возникает необходимость в инициализации системы. В методах с открытым ключом это означает, что имеется сертификационный центр, который должен сертифицировать все несекретные открытые числа. Это гораздо проще и безопасней, чем первоначально распределять секретные числа. До недавнего времени первейшим ограничением на внедрение методов с открытым ключом были требования по скорости вычислений при шифровании/дешифровании. Микропроцессоры вносили временные ограничения на вычисления с большими (и следовательно стойкими) числами. Фирма CYLINK разработала чип, быстро выполняющий конечные математические действия с большими числами [12]. Этот чип представляет собой дешевое практическое решение по внедрению криптографических методов с открытым ключом. Модификация чипа CYLINK позволит его применение в смарт-карточках. Литература. 1. W.Diffie, M.Hellman. New directions in cryptography//IEEE Tr. on Inf. Theory, v.22, pp.644-654, Nov 1976. 2. R.Rivest, A.Shamir, L.Adleman. A method for obtaining digital signatures and public-key cryptosystems//CACM, v.21, pp.120126, Feb 1978. 3. T.El Gamal. A public key cryptosystem and a signature scheme based on discrete logarithms//IEEE Tr. on Inf. Theory, v.31, pp.469-472, July 1985 (имеется перевод). 4. L.Neuwirth. A comparison of four key distribution methods// Telecommunications, July 1986. 5. S.M.Matyas. Initialization of cryptographic variables in a network with a large number of terminals//Crypto'86, also IBM Report TR 21.1000, Aug 1986. 6. R.R.Jueneman. Electronic document authentication// IEEE Network Mag., v.1, Э2, pp.17-23, 1987 (имеется перевод). 7. См. "Mailsafe" by RSA Data Security, Redwood City, CA. 8. B.J.Hogan. Memory chip molded into key tag stores data// Design News, Feb 1985. 9. Частная переписка с фирмой Light Signatures, 1986. 10. J.Svigals. Smart cards: the Ultimate Personal Computers, Macmillan Publ. Company, New York, 1985. 11. D.Coppersmith, A.Odlyzko, R.Schroeppel. Discrete logarithms in GF(p)//Algorithmica, v.1, pp.1-15, 1986. 12. См. "Advance data sheet: CY1024 key management processor", chip data sheet by Cylink, Sunnyvale, CA, June 1986.