Наши друзья:

  Всегда выгодные предложения окна киев в нашем магазине

 

Протокол обмена ключами с цифровой подписью


При обмене сеансовыми ключами атаку методом сведения к середине можно попытаться отразить также с помощью цифровой подписи. В этом случае Антон и Борис получают сеансовые ключи, подписанные Дмитрием, который является доверенным лицом, наделенным правами арбитра. Каждый сеансовый ключ снабжается свидетельством о его принадлежности определенному лицу. Получая от Дмитрия ключ, Антон и Борис могут проверить его подпись и убедиться, что этот ключ принадлежит именно тому человеку, которому они собираются послать сообщение.
В результате Зиновию придется весьма несладко. Он не сможет выдать себя   за Антона или Бориса, поскольку не знает их тайных ключей. Зиновий будет лишен возможности подменить открытые ключи Антона и Бориса на свои собственные, поскольку в его распоряжении есть только сеансовые ключи с подписью Дмитрия, удостоверяющей их принадлежность Зиновию.
Зиновию остается только перехватывать шифрованные сообщения, которыми обмениваются Антон и Борис, и пытаться их читать с помощью криптоаналитических методов.
Однако следует отметить, что в протоколе обмена сеансовыми ключами с цифровой подписью появился новый участник — Дмитрий. Если Зиновий сумеет перевоплотиться в Дмитрия, он сможет подписывать и навязывать участникам протокола известные ему фальшивые сеансовые ключи. Таким образом, несмотря ни на что, у Зиновия все же остается возможность атаковать этот протокол, воспользовавшись методом сведения к середине.
Одновременная передача ключа и сообщения
Антон и Борис совершенно необязательно передают друг другу сеансовые ключи перед тем, как приступить к обмену сообщениями. Вместо этого они могут воспользоваться следующим протоколом:
1. Антон генерирует случайный сеансовый ключ Кис помощью него зашифровывает сообщение М, получая в результате Е К (М).
2. Антон извлекает открытый ключ Бориса В из базы данных.
3. Антон шифрует сеансовый ключ К при помощи В, получая в результате Е В (К) .
4. Антон посылает Борису Е к (М) и Е в (К).
5. Борис расшифровывает сеансовый ключ К с помощью своего тайного ключа.
6. Борис расшифровывает сообщение Антона на сеансовом ключе К.
Данный протокол наглядно демонстрирует использование современных гибридных криптосистем на практике. Для достижения большей стойкости в него может быть добавлена цифровая подпись, а также применены другие приемы, которые помогут сделать его более стойким против различных атак.
Множественная рассылка ключей и сообщений
Почему бы Антону не послать шифрованное сообщение сразу нескольким адресатам? Он может сделать это, например так:
1. Антон генерирует случайный сеансовый ключ Кис его помощью зашифровывает сообщение М, получая в результате Е К (М).
2. Антон извлекает открытые ключи Бориса, Владимира и Георгия из базы данных.
3. Антон шифрует К при помощи открытых ключей Бориса, Владимира и Георгия, получая в результате Е Б (К), Е в (К)и Е г (К).
4. Антон, посылает шифрованное сообщение Е к (М), а также многократно зашифрованный сеансовый ключ (E Б (K), Е в (К)и Е Г (К)) всем, кто пожелает их получить.
5. Только Борис, Владимир и Георгий смогут расшифровать сеансовый ключ К при помощи своих тайных ключей.
6. Только Борис, Владимир и Георгий смогут прочесть шифрованное сообщение Антона с помощью сеансового ключа К.
Аутентификация
Когда Антон проходит процедуру регистрации для получения доступа к глобальной компьютерной сети Internet, каким образом информационно-коммерческая служба, услугами которой он пользуется, узнает, что это именно Антон, а не Зиновий, пытающийся бесплатно (за счет Антона) попутешествовать по Всемирной паутине? Чаще всего эта проблема решается при помощи пароля: Антон должен ввести некую секретную информацию. известную только ему и его поставщику услуг Internet. Причем вводить эту информацию надо каждый раз при прохождении процедуры регистрации.
Аутентификация при помощи однонаправленных функций
На сервере, который проверяет правильность введенного Антоном пароля. совершенно не обязательно хранить пароли пользователей. Достаточно научить сервер отличать правильные пароли от неправильных. Это легко сделать При помощи однонаправленных функций. Тогда на сервере будут присутствовать не сами пароли, а их хэш-значения:
1. Антон посылает на сервер свой пароль.
2. С помощью однонаправленной функции сервер вычисляет хэш-значение для присланного Антоном пароля.
3. Сервер сравнивает вычисленное хэш-значение с эталоном, который хранится в его памяти, и делает вывод о правильности пароля Антона.
Поскольку при такой схеме аутентификации пользователей уже не требуется держать пароли на сервере, то опасаться, что кто-либо взломает защиту сервера и украдет файл с паролями, нет никаких причин. Список хэш-значений, соответствующих паролям зарегистрированных пользователей. совершенно бесполезен для Зиновия, т. к. найти пароль по его yjiii-значению путем обращения однонаправленной функции ему не удастся.
Отражение словарной атаки при помощи "изюминок"
Файл с хэш-значениями, полученными из паролей, может подвергнуться словарной атаке. Составив словарь примерно из 1 млн самых распространенных паролей, Зиновий применит к ним хэш-функцию. В результате он получит файл объемом до 10 Мбайт, который уместится на нескольких дне кетах. Далее Зиновий украдет с сервера файл с паролями, зашифрованными с помощью хэш-функции, и сравнит его со своим файлом, содержащим хэш-значения для самых часто используемых паролей. Совпадающие хэш-значения позволят Зиновию определить некоторые из паролей.
Отразить словарную атаку помогает введение в схему аутентификации зарегистрированных пользователей так называемых изюминок. "Изюминка представляет собой случайную битовую строку, которая присоединяется к паролю прежде, чем к нему будет применена хэш-функция. Затем на сервере запоминается как вычисленное хэш-значение, так и соответствующая ему "изюминка".
Если количество возможных "изюминок" достаточно велико, от словарной атаки мало толку. Зиновий должен будет вычислять хэш-значение не только для каждого пароля, но и для каждой "изюминки". Смысл введения "изюминок" в схему аутентификации пользователей состоит в том. чтобы заставить злоумышленника совершать пробное шифрование всех паролей. входящих в составленный им словарь, каждый раз, когда он пытается вскрыть какой-либо отдельный пароль, вместо того чтобы заранее вычислить хэш-значения этих паролей, а затем просто сравнивать полученные значения с эталонными, украденными с сервера.
"Изюма" понадобится много. Во многих версиях операционной системы UNIX используются "изюминки" длиной 12 бит. Этого явно недостаточно: существуют программы, которые при помогли словарной атаки позволяют за неделю вскрыть от 30 до 40% всех паролей, применяемых пользователями UNIX.
Таким образом, схема аутентификации с "изюминками" не может служить панацеей. Она обеспечивает защиту только от словарной атаки всего файла с паролями, зашифрованными с помощью однонаправленной функции. Однако эта схема бессильна, когда мощной и слаженной атаке подвергается отдельный пароль конкретного пользователя.
Схема аутентификации с "изюминками" эффективна и тогда, когда при регистрации на разных серверах используется один и тот же пароль. Но если пароль плохой, лучше он все равно не станет, каким бы количеством "изюма" для его защиты вы ни запаслись.
Периодическая сменяемость паролей
Даже при наличии "изюминок" схема аутентификации пользователей путем проверки их паролей имеет один очень серьезный недостаток. Ведь не исключено, что линия связи, соединяющая персональный компьютер Антона с сервером информационно-коммерческой службы, проходит по территориям 33-х стран, законодательство которых по-разному трактует права своих и иностранных граждан на сохранение в тайне их личной переписки. И поэтому узнать пароль Антона, в принципе, может любой, кто сумеет подключиться к этой линии связи или обратиться в память сервера и узнать пароль. прежде чем для него будет вычислено соответствующее хэш-значение. Чтобы уменьшить ущерб от компрометации пароля, его следует периодически менять. Делается это следующим образом.
Антон генерирует случайное число R и пересылает его серверу, который вычисляет, исходя из этого числа и однонаправленной функции f значения x 1 = f (R), x 2 =f (f (R)), x 3 = f (f (f(R))) и т.д. 101 раз. Первые 100 вычисленных значений x 1 , х 2 , . . , x 100 передаются Антону в качестве списка паролей, который он должен хранить в тайне. A x 101 запоминается на сервере.
Теперь, когда Антон захочет зарегистрироваться для работы на сервере, ему достаточно ввести свое имя и число х 100 . Сервер вычислит f(x 100 ) и сравнит его с х 101 . В случае совпадения Антону будет разрешен доступ к серверу, который затем заменит х 101 на х 100 . А Антон вычеркнет х 101 из своего списка паролей.
В следующий раз, когда Антон снова захочет получить доступ к серверу, он найдет в списке паролей следующее по порядку не зачеркнутое значение х j . Сервер вычислит f(x j ) и сравнит с запомненным X j+ 1 .
Злоумышленник Зиновий, взломавший сервер, все равно не сможет узнать очередной пароль Антона x j по хранимому на сервере значению x j+l, поскольку функция f является однонаправленной. По той же самой причине. даже если Зиновий перехватит x j , это позволит ему зарегистрироваться под именем Антона всего лишь один раз. А значения x 1 , x 2 , ... , х j -1 так и останутся для Зиновия тайной за семью печатями при условии, что Антон достаточно ответственно относится к хранению списка паролей, полученного им с сервера.
Аутентификация при помощи криптосистем с открытым ключом
Ни "изюминки", ни периодически сменяемый пароль не гарантируют защиту от злонамеренных действий Петра, перехватывающего все сообщения Антона, которые тот пересылает по линии связи, соединяющей его с сервером. Решить эту проблему помогает применение криптографии с открытым ключом.
Предполагается, что на сервере имеется файл, в котором хранятся открытые ключи всех пользователей. В первом приближении криптографический протокол, который позволяет производить аутентификацию пользователей выглядит так:
1. Сервер генерирует случайную битовую строку и посылает ее Антону.
2. Антон шифрует эту строку при помощи своего тайного ключа и отсылает обратно на сервер.
3. На сервере производится расшифрование сообщения, пришедшего от  Антона, с помощью его открытого ключа.
4. Если полученный в результате открытый текст идентичен случайной битовой строке, ранее посланной Антону, последний получает доступ к серверу.
Поскольку только Антон знает свой тайный ключ, никто не сможет выдать себя за Антона. Этот тайный ключ, скорее всего, представляет собой длинную битовую строку, которую очень трудно воспроизводить по памяти, и поэтому в распоряжении Антона должен быть интеллектуальный терминал. надежно защищенный от взлома и способный автоматически осуществлять набор требуемого тайного ключа при шифровании сообщений. Однако несмотря на это дополнительное условие, важнее всего то, что тайный ключ Антона не требуется передавать на сервер ни под каким видом. Следовательно, для надежной аутентификации пользователей совсем не обязательно наглухо защищать от подслушивания канал связи, соединяющий терминал Антона с сервером. Да и информация о пользователях, хранимая на сервере, может быть безо всякой опаски сделана доступной для всех, кто пожелает с ней ознакомиться.
Конечно, со стороны Антона глупо шифровать на своем тайном ключе произвольную битовую последовательность, причем вне зависимости от ее происхождения. Поэтому на практике для аутентификации пользователей обычно используется более сложный криптографический протокол:
1. Антон производит некоторые специальные вычисления на основе предварительно сгенерированной им случайной битовой последовательности и своего тайного ключа. Затем он отсылает вычисленные им значения на сервер.
2. Сервер посылает Антону случайную битовую последовательность, отличную от той, которая была задействована Антоном на шаге 1.
3. Антон производит некоторые специальные вычисления на основе обеих случайных битовых последовательностей (сгенерированной им самим, а также полученной с сервера) и своего тайного ключа. Затем он отсылает вычисленные значения на сервер.
4. На сервере производятся некоторые специальные вычисления на основе присланных Антоном значений и его открытого ключа, чтобы убедиться в том, что именно он является обладателем соответствующего тайного ключа.
5. Если проверка дает положительный результат, Антону разрешается доступ к серверу.
Если Антон, в свою очередь, не доверяет серверу в такой же степени, в какой сервер не доверяет ему, то он может потребовать, чтобы сервер аналогичным образом "удостоверил свою личность", воспользовавшись тем же самым протоколом.

Формальный анализ криптографических протоколов
Криптографические протоколы, предназначенные для аутентификации и обмена ключами, играют очень важную роль в обеспечении надежного функционирования современных компьютерных систем. Усилиями криптологов было создано много таких протоколов, однако по прошествии времени выяснилось, что не все из них позволяют должным образом защитить компьютерную систему от несанкционированного доступа и предотвратить компрометацию ключей. Причем для некоторых протоколов этот временной промежуток оказался довольно значительным и растянулся на несколько лет. Как следствие, возникла настоятельная потребность в разработке формальных методов, которые позволили бы находить изъяны в криптографических протоколах в более короткие сроки. И хотя большинство из этих методов являются универсальными и могут быть использованы для анализа произвольных криптографических протоколов, особое внимание изначально стало уделяться именно протоколам, позволяющим производить аутентификацию пользователей и обмен ключами.
К настоящему времени имеется 4 основных подхода к анализу криптографических протоколов. Первый из них применяет верификационные методы, которые не были специально разработаны для анализа криптографических протоколов. Некоторые из этих методов представляют протоколы в виде конечных автоматов, другие распространяют на них теорию исчисления предикатов первого порядка.
Второй подход заключается в использовании экспертных систем, позволяющих определить, возникают ли в ходе выполнения шагов протокола такие нежелательные события, как компрометация ключа или разглашение пароля. Этот подход дает возможность эффективнее находить в криптографических протоколах конкретные изъяны, однако никоим образом не гарантирует полного отсутствия таковых.
Авторами третьего подхода являются американские криптологи М. Бэрроуз. М. Абади, Р. Нидхэм (М. Burrows, M. Abadi, R. Needham). Они разработали формальную логическую модель, названную по первым буквам их фамилий БАН-логикой (BAN-logic). Составить с ее помощью общее представление о надежности криптографического протокола нельзя. Однако основное преимущество БАН-логики перед другими подходами заключается в том, что она состоит из набора простых логических правил, которые легко применяются на практике и весьма полезны при обнаружении отдельных изъянов в анализируемых протоколах.
При четвертом подходе выполнение шагов протокола моделируется с помощью алгебраической системы, которая строится исходя из знаний, имеющихся у участников протокола относительно этого протокола. Затем построенная алгебраическая модель подвергается формальному анализу на предмет достижимости некоторых из ее состояний.
В целом формальный анализ криптографических протоколов пока является довольно новой и до конца не сформировавшейся областью криптологии, и поэтому делать далеко идущие выводы о превосходстве какого-то одного из перечисленных четырех подходов еще рановато. Поживем — увидим.
Многоключевая криптография с открытым ключом
В криптографии с открытым ключом используются 2 ключа, один из которых применяется для зашифрования сообщений, а другой — для расшифрования. Вместо этого можно задействовать любое количество ключей. Рассмотрим для примера трехключевую криптосистему с открытым ключом.
Имеется три ключа К А , К Б и К С , которые распределены между участниками процесса обмена сообщениями следующим образом:
Антон           К А
Борис            К Б
Владимир     К В
Георгий        К А и К Б
Денис           К Б и К В
Евгений        К В и К А
Если Антон зашифрует свое сообщение с помощью ключа К А, расшифровать его смогут либо Денис, либо Борис совместно с Владимиром, которые имеют в своем распоряжении К Б и К В . Сообщение, зашифрованное Борисом, сможет прочесть Евгений. Владимир может зашифровать сообщение, которое в состоянии прочесть Георгий. Сообщение, зашифрованное Георгием при помощи ключа К А , смогут прочесть Денис. Если Георгий воспользуется ключом кб, то его сообщение прочитает Евгений, а если применит кб и кб, то с этим сообщением сможет ознакомиться Владимир. Аналогичным образом может .зашифровать свое сообщение Денис, и тогда его прочтут либо Антон, либо Георгий, либо Евгений. Всевозможные сочетания ключей шифрования и расшифрования перечислены в табл. 7.2.
Таблица 7.2. Сочетания ключей шифрования и расшифрования в трехключевой криптосистеме с открытым ключом


Зашифровано с помощью ключей:

Расшифровывается с помощью ключей:

К А

К Б и К В

К Б

К А и К В

К С

К А и К Б

К А и К Б

К В

К А и К В

К Б

К Б и   К В

К А

Множественная рассылка шифрованных сообщений
Допустим, что требуется рассылать групповые шифрованные сообщения 100 различным абонентам компьютерной сети связи, причем заранее неизвестно какие конкретно сообщения надо будет послать отдельным группам этих абонентов. В такой ситуации можно выдать каждому абоненту свой ключ и шифровать все сообщения отдельно. В результате придется зашифровать и послан, слишком много сообщений. Можно снабдить каждого абонента ключами. число которых равняется количеству различных групп, составленных из 100 абонентов. Но тогда потребуется слишком много ключей (порядка 2 100 ) .
Выход из положения позволяет найти многоключевая криптография с открытым ключом. Предположим, что в компьютерной сети связи имеются всего 3 абонента — Антон, Борис и Владимир. Каждый из них получит по 2 ключа: Антон — К А и К Б , Борис — К Б и К В , Владимир — К А и К В . Тогда если потребуется послать сообщение для Антона, его надо зашифровать с помощью К С . Сообщение, предназначенное Борису, следует зашифровать при помощи К А . А если сообщение должен прочесть только Владимир, необходимо использовать К Б . Сообщение для Антона и Бориса шифруется на ключах К А и К В , для Антона и Владимира — на К Б и   К В , для Бориса и Владимира — на К А и К Б .
В случае трех абонентов эта схема множественной рассылки сообщений группам абонентов выглядит не слишком впечатляюще, но при 100 абонентах ее преимущества становятся очевидны. Вместо порядка 2 100 ключей абонентам сети надо раздать всего 100 ключей, и посылать требуется всего одно шифрованное сообщение, а не n , где n — количество абонентов в группе ( n >1).
Недостаток рассмотренной схемы — необходимо точно указывать имена абонентов, которым предназначено рассылаемое сообщение, чтобы не заставлять всех остальных абонентов сети связи лихорадочно перебирать имеющиеся у них ключи в поисках того, который позволит им правильно прочесть принятое шифрованное сообщение. Не нужно доказывать, что при определенных условиях раскрытие этих имен перед злоумышленниками может быть весьма нежелательным.
Распределение ответственности
Предположим, что вы собираетесь в отпуск. Ваш шеф попросил, чтобы вы сообщили пароль со своего компьютера кому-либо из коллег. Однако вы не можете полностью переложить ответственность за сохранность своих ценных данных ни на одного из товарищей по работе. В этой ситуации вам следует подумать о распределении ответственности.
Существует возможность разделить секретное сообщение на части, каждая из которых не имеет никакого смысла, но если их определенным образом соединить вместе, снова получится исходное сообщение. Таким образом вы сможете поделить свой пароль на части и, уходя в отпуск, оставить каждому из коллег по одной его части, чтобы, только собравшись все вместе, они оказались в состоянии запустить ваш компьютер. Сделать это в одиночку из них не сможет никто.
Простейший криптографический протокол позволяет Дмитрию поровну распределить между Антоном и Борисом ответственность за сохранение сообщения в тайне:
1. Дмитрий генерирует случайную битовую строку R, которая имеет ту же длину, что и исходное сообщение М.
2. Дмитрий складывает М с R по модулю 2 и получает S.
3. Дмитрий вручает R Антону, a S — Борису.
Чтобы восстановить сообщение М в исходном виде, Антон и Борис должны совместно выполнить последний шаг протокола:
1. Антон и Борис складывают R и S по модулю 2 и получают М.
В умелых руках данный протокол является весьма надежным. Знание S или R не позволяет реконструировать М. Дмитрий шифрует сообщение при помощи одноразового блокнота и отдает полученный в результате шифртекст одному человеку, а сам блокнот — другому.
Этот протокол можно легко применять для любого числа участников. Если участников 4, он будет выглядеть следующим образом:
1. Дмитрий генерирует три случайных битовых строки R, S и Т, которые имеют ту же длину, что и исходное сообщение М.
2. Дмитрий складывает М, R, S и Т по модулю 2 и получает U.
3. Дмитрий вручает R Антону, S — Борису, Т — Владимиру, U — Георгию.
Чтобы восстановить сообщение М в исходном виде, Антон, Борис, Владимир и Георгий должны совместно выполнить последний шаг протокола:
1. Антон, Борис, Владимир и Георгий складывают R, S, Т и U по модулю 2 и получают М.
Одним из участников протокола является Дмитрий, который наделен неограниченными правами. Например, Дмитрий может зашифровать какую-нибудь абракадабру вместо М, а потом утверждать, что Антон и другие участники протокола являются хранителями настоящей тайны, а не какой-то чепухи. Чтобы разоблачить Дмитрия, им необходимо собраться вместе и восстановить исходное сообщение. А еще Дмитрий может сначала раздать части своего сообщения Антону, Борису, Владимиру и Георгию, а затем сложить М и U по модулю 2 и заявить, что только Антон, Борис и Владимир нужны для восстановления сообщения в исходном виде, а от Георгия можно избавиться. Поскольку сообщение М всецело принадлежит только Дмитрию, он может распоряжаться им, как того пожелает.
Основной недостаток криптографического протокола, распределяющего ответственность за сохранение сообщения в тайне, состоит в том, что если хотя бы один из его участников потеряет доверенную ему часть, будет также безвозвратно утрачено и само сообщение. Если, конечно, Дмитрий не помнит его наизусть. В результате в распоряжении участников протокола останется только длина исходного сообщения. Но вряд ли они захотят довольствоваться только этим.
Существуют ситуации, в которых необходимо уметь восстанавливать секретное сообщение даже в отсутствие некоторых участников протокола. Например, вы пишете программу для управления запуском межконтинентальных ракет. Естественно, вы хотите сделать так, чтобы если офицер, имеющий доступ к "ядерной кнопке", сойдет с ума и захочет уничтожить какой-либо континент, у него это ни в коем случае не получится. У "ядерной кнопки" должны собраться вместе по меньшей мере пятеро сумасшедших офицеров, чтобы с помощью вашей программы стереть в порошок Америку.
Ситуацию можно еще усложнить. Допустим, что для нажатия "ядерной кнопки" в нашей стране нужны 1 генерал и 3 полковника. А если генерал по причине своего старческого склероза, забыл приехать к "ядерной кнопке" в назначенное время, достаточно и пятерых полковников. При этом, если собрались всего 4 полковника, Америке ничего не грозит до тех пор, пока 5 полковников не окажутся в полном сборе. Или пока генерал не приедет.
Криптологи придумали так называемый пороговый протокол, который позволяет распределять ответственность даже еще более сложным образом. В общем случае берется любое секретное сообщение (пароль, код запуска баллистических ракет, рецепт приготовления "Кока-колы") и делится па n частей (называемых долями) так, что для реконструкции исходного сообщения обязательно нужны m из них. Такой протокол более точно именуется ( т, п ) - пороговым протоколом.
Например, при использовании (3,4)-порогового протокола Дмитрий может поделить между Антоном, Борисом, Владимиром и Георгием секретный пароль для включения своего персонального компьютера таким образом, что трое из них, собравшись вместе, будут в состоянии восстановить этот пароль и включить компьютер Дмитрия. Если Владимир неожиданно попадет в больницу в бессознательном состоянии, то же самое смогут сделать Антон, Борис и Георгий. Однако, если Борис в это время будет в командировке, без него Антон и Георгий так и не смогут запустить компьютер Дмитрия.
Распределение ответственности и мошенничество
Существует множество способов мошенничества со стороны как участников порогового протокола, распределяющего между ними ответственность за  хранение тайны, так и посторонних лиц. Для примера рассмотрим три сценария такого мошенничества:
1. Антон, Борис, Владимир и Георгий получают от шефа приказ включить персональный компьютер Дмитрия. Все четверо собираются вместе и выполняют операцию сложения имеющихся у них долей по модулю 2. Однако Георгий, которого подкупила конкурирующая фирма, вместо того чтобы честно прибавить свою долю, выданную ему Дмитрием, прибавляет случайную битовую строку. В результате компьютер Дмитрия отказывается включаться, и никто не может объяснить, в чем тут дело.
2. К Антону, Борису, Владимиру и Георгию, получившим от шефа распоряжение включить персональный компьютер Дмитрия, присоединяется Зиновий, который утверждает, что он явился по приказу шефа для воссоздания пароля, поскольку якобы является законным обладателем соответствующей пятой доли. После того как ничего не подозревающие Антон, Борис, Владимир и Георгий огласили свои доли, Зиновий с торжествующем воплем убегает из комнаты: теперь он может в одиночку реконструировать пароль Дмитрия, т. к. знает все необходимые для этого доли.
3. Вместо того чтобы убежать, Зиновий дожидается, пока все участники протокола по очереди огласят свои доли, а затем называет случайную битовую строку требуемой длины. В этом случае Зиновий не только сумеет узнать все доли, но и никто из участников протокола так и не осознает. что Зиновий является посторонним лицом и не имеет никакого права присутствовать при восстановлении секретного пароля Дмитрия.
Для предотвращения мошенничества можно соответствующим образом усовершенствовать пороговый протокол, однако подробное описание этих усовершенствований выходит за рамки данной книги. Поэтому просто перечислим некоторые из них.

  • Можно обойтись без Дмитрия, который делит исходное секретное сообщение на части. В этом случае никто из участников протокола не знает содержание сообщения до тех пор, пока все они не соберутся вместе и не реконструируют его.
  • От участников протокола не требуется оглашать свою долю публично. Если секретом является тайный ключ в криптосистеме с открытым ключом, которая используется для цифровой подписи, каждый участник выполняет частичное (долевое) подписание соответствующего документа. После того как это сделает последний из них, под документом появится полная цифровая подпись. При этом ни один из участников так и не узнает долю другого.
  • Участники протокола могут убедиться, что на самом деле получили от Дмитрия настоящую долю, позволяющую им принимать участие в реконструкции секретного сообщения наравне с другими участниками протокола. При этом от участников совершенно не требуется собираться вместе и восстанавливать исходное сообщение.
  • Можно устроить так, что если более m участников протокола высказались за реконструкцию секретного сообщения и при этом менее n участников были против, сообщение будет восстановлено в первозданном виде, а иначе — не будет.
  • Можно добиться, чтобы в случае, если один из участников протокола окажется не в состоянии выполнить необходимые действия для восстановления исходного секретного сообщения, почти мгновенно и без каких-либо существенных накладных расходов будет введен новый протокол, участниками которого станут оставшиеся участники первоначального.

Вспомогательные криптографические протоколы
Отметка о времени создания файла
Существует немало ситуаций, когда людям приходится доказывать, что некий документ уже существовал в определенный момент времени. Например, в споре об авторском праве на изобретение побеждает тот, кто предъявит самую раннюю копию описания сути этого изобретения. Если соответствующая документация оформляется на бумаге, заверенную нотариусом копию документа можно передать на хранение в нотариальную контору. При возникновении конфликта нотариус или другой полномочный представитель юридической конторы засвидетельствует существование документа в определенный момент времени.
В компьютерном мире все значительно сложнее. Файл, в котором хранится документ, может быть скопирован и изменен бессчетное число раз. А поменять отметку о времени последней модификации этого файла по силам даже начинающему пользователю. И никто не сможет просто взглянуть на файл и сказать: "Да, я абсолютно уверен, что данный файл был создан именно 15 марта 1996 г." Необходимо пользоваться специальным криптографическим протоколом, который обладает следующими свойствами:

  • файл снабжается отметкой о времени его создания, и эта отметка является неотъемлемой частью файла вне зависимости от физического носителя, используемого для его хранения;
  • в файл нельзя внести какие-либо изменения так, чтобы эти изменения остались незамеченными;
  • имеющуюся отметку о времени создания файла невозможно поменять на другую.

Отметка о времени создания файла и арбитраж
Файл можно снабдить отметкой о времени его создания при помощи протокола, в котором принимает участие доверенное лицо (Дмитрий):
1. Антон передает копию своего документа Дмитрию.
2. Дмитрий фиксирует время получения копии документа, которую с этого момента хранит у себя, чтобы предъявить по первому требованию Антона.
Теперь при возникновении разногласий относительно времени создания документа Антон обращается к Дмитрию, который демонстрирует копию документа и дает свидетельские показания о том, когда этот документ был им получен.
Данный протокол позволяет добиться желаемой цели, однако имеет ряд существенных недостатков, связанных с тем, что Антон должен отдать копию своего документа на хранение Дмитрию.
О Любой, кто способен перехватывать информацию, передаваемую Антоном по каналам связи, сможет прочесть этот документ. Даже если Антон шифрует все свои сообщения, его документ скорее всего попадет в компьютерную базу данных Дмитрия. Антону остается только надеяться, что Дмитрий достаточно ответственно относится к защите переданных ему на хранение документов от посягательств посторонних лиц.

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

Чтобы избавиться если не от всех, то хотя бы от большинства перечисленных недостатков, можно прибегнуть к помощи однонаправленных функции:
1. Антон вычисляет хэш-значение для своего документа.
2. Антон передает вычисленное хэш-значение Дмитрию.
3. Дмитрий добавляет к этому хэш-значению отметку о времени его получения и ставит свою цифровую подпись под итоговым документом.
4. Дмитрий отсылает подписанное им хэш-значение с проставленной отметкой времени обратно Антону.
Теперь Антону нечего беспокоиться о том, достаточно ли надежно хранит Дмитрий доверенные ему документы. Дмитрию вообще не надо ничего держать в своей базе данных, и, следовательно, сами собой отпадают проблемы. связанные с хранением огромных объемов информации. Антон может сразу проверить полученный от Дмитрия итоговый документ на предмет наличия в нем искажений, внесенных при передаче по каналам связи. Однако по-прежнему нерешенной остается проблема сговора между Антоном и Дмитрием с целью снабдить документ нужной отметкой о времени его создания.
Связующий протокол
Вряд ли Антон является единственным клиентом Дмитрия. Скорее всего. Дмитрий уже ставил отметки о времени создания на документы других людей, прежде чем с аналогичной просьбой к нему обратился Антон. А это значит, что отметке о времени создания документа Антона предшествует какая-то отметка, внесенная в документ другого человека. Более того, разумно предположить, что в скором времени к Дмитрию поступят и другие документы, которые потребуется снабдить отметкой о времени создания.
Пусть А— это идентификатор Антона, присвоенный ему в компьютерной сети, Н n — хэш-значение документа, для которого Антон хочет получить отметку о времени создания, a T n -1 — отметка о времени создания предыдущего документа. Тогда, чтобы затруднить сговор между Антоном и Дмитрием, можно воспользоваться так называемым связующим протоколом:
1. Антон посылает Дмитрию Н n и А.
2. Дмитрий отсылает обратно Антону T n = S K (n,A,H n ,T n ,I n -1 ,H n-1 ,T n-1 ,L n ), где L n представляет собой следующую связующую информацию, подвергнутую хэшированию при помощи функции Н вида L n = H(I n -1 ,H n-1 ,T n-1 ,L n -1 ). Здесь наличие S К свидетельствует о том, что сообщение подписано цифровой подписью Дмитрия. Присутствие А необходимо, чтобы идентифицировать Антона в качестве получателя этого сообщения. Параметр n задает порядковый номер отметки о времени создания документа, хэш-значение которого Дмитрий получил от Антона. Т n — это сама отметка о времени. Остальные параметры перечисляют идентификатор хэш-значение, отметку времени и связующую информацию, которые были вычислены для предыдущего документа, присланного Дмитрию для постановки отметки о времени создания.
3. После того как Дмитрий получит следующий документ, на который потребуется поставить отметку о времени создания, он перешлет Антону идентификатор I n+ 1 своего очередного клиента, приславшего этот документ.
Теперь, если кто-то поставит под сомнение время создания документа Антоном, он может связаться с I n -1 и I n +1 , т. е. с авторами предыдущего и следующего документов, присланных Дмитрию. Если и у них возникнут сомнения относительно времени создания документов, то они. в свою очередь, могут обратиться к I n - 2 и I n + 2 . Каждый из них может доказать, что на его документ была поставлена отметка времени, предшествующая отметке следующего клиента и идущая за отметкой предыдущего.
Связующий протокол значительно осложняет сговор между Антоном и Дмитрием. Дмитрий не сможет перенести отметку о времени создания документа в будущее, поскольку тогда от него потребуется умение это будущее предсказывать — он должен точно знать, какой именно документ будет прислан непосредственно перед этим моментом времени. Точно так же Дмитрий будет не в состоянии сделать отметку о времени создания документа более ранней, чем это есть на самом деле: она должна быть встроена во временную отметку следующего документа, а на этот документ соответствующая отметка уже поставлена. У Антона и Дмитрия остается единственная возможность смошенничать: они могут породить цепочку фиктивных документов до и после документа Антона, причем эта цепочка должна быть настолько длинной, чтобы у проверяющего не хватило терпения изучить ее до самого конца.
Распределенный протокол
Люди не вечны. Поэтому вполне может случиться так, что когда Антон обратится за содействием к I n -1 , тот уже успеет отправиться в мир иной, где отметки о времени создания документов вовсе не так важны для его обитателей. В этом случае можно посоветовать Антону воспользоваться распределенным протоколом и встроить в отметку о времени создания своего документа временные отметки, по крайней мере, 10-и других человек. Таким образом, у Антона будет больше шансов найти людей, которые при необходимости смогут помочь удостоверить время создания его документа. Распределенный протокол также позволяет избавиться от услуг Дмитрия:
1. С помощью генератора криптографически надежной псевдослучайной последовательности Антон получает k чисел R 1 , R 2 , . . . , R k , в качестве начального значения используя хэш-значение Н n , вычисленное для своего документа,.
2. Антон интерпретирует сгенерированные числа R 1 , R 2 , . . . , R k , как идентификаторы абонентов компьютерной сети, и отсылает Нп каждому из них.
3. Все выбранные Антоном абоненты сети добавляют к хэш-значению Н n отметку о времени его получения, подписывают итоговое сообщение своей цифровой подписью и отсылают обратно Антону.
4. Антон собирает и хранит все k подписей вместе с отметкой о времени создания своего документа.
Криптографически надежный генератор псевдослучайных чисел необходим для того, чтобы Антон не смог повлиять на выбор идентификаторов и, тем самым, подобрать людей, с которыми он в состоянии вступить в сговор. Даже если Антон попытается соответствующим образом изменить свои документ, чтобы получить по нему такое хэш-значение, которое позволило бы сгенерировать необходимый Антону набор идентификаторов, его шансы преуспеть в этом занятии будут ничтожны.
Антон может смошенничать, только убедив всех без исключения k участников протокола вступить с ним в сговор. Поскольку эти участники выбираются наугад, вряд ли у Антона что-нибудь получится, Однако чем более коррумпированным является общество, тем больше должно быть значение k.
Дополнительно придется позаботиться о том, как поступать с людьми, которые вовремя не отреагируют на просьбу Антона подписать высланное им хэш-значение. Вероятнее всего, для официального признания правильности отметки о времени создания документа от Антона потребуется собрать не , менее К подписей, где значение К фиксируется в законодательном порядке.
Подсознательный канал
Предположим, что Антон и Борис были арестованы и препровождены в тюрьму. Их тюремный охранник Олег не возражает против того, чтобы они обменивались сообщениями, но при одном условии: эти сообщения не должны быть зашифрованы. Вдруг Антон и Борис захотят разработать план совместного побега! Поэтому Олег желает читать все, что Антон и Борис сообщают друг другу.
А еще Олег надеется обмануть Антона, договорившись с Борисом, и в удобный момент подменить настоящее сообщение от одного из них другому на фальшивое. Антону и Борису ничего не остается, как воспользоваться услугами Олега. Ведь иначе они не смогут общаться друг с другом и координировать свои планы. Поэтому Антону и Борису придется организовать между собой так называемый подсознательный канал. Пользуясь этим каналом, они смогут передавать секретную информацию, а Олег, который будет читать псе их сообщения, так ничего и не заподозрит.
Простым подсознательным каналом может служить число слов в предложениях невинного на первый взгляд текста. Нечетное количество слов соответствует 0, а четное — 1. Таким образом, если мой сообщник подсчитает количество слов в предложениях предыдущего абзаца, то получит секретное сообщение "11010". К сожалению, в этом алгоритме отсутствует ключ, а сам алгоритм является ограниченным — здесь стойкость всецело зависит от сохранения в тайне самого алгоритма.
Американский криптолог Г. Симмонс (G. Simmons) первым сумел встроить подсознательный канал в обыкновенную цифровую подпись. В этом случае алгоритм цифровой подписи со встроенным подсознательным каналом б\-дет неотличим для Олега от стандартного алгоритма цифровой подписи. Олег не только не сможет читать сообщения, передаваемые Антоном и Борисом по подсознательному каналу. В его мозгу не мелькнет даже намека па мысль о возможном существовании такового.
Протокол, придуманный Симмонсом для реализации подсознательного канала с помощью цифровой подписи, в общих чертах выглядит так:
1. Антон генерирует произвольное сообщение, выглядящее вполне невинно.
2. При помощи секретного ключа, который имеется и у Бориса, Антон подписывает свое сообщение так, что в подписи прячется подсознательный канал.
3. Антон отдает подписанное сообщение Олегу.
4. Олег знакомится с сообщением Антона, проверяет цифровую подпись. Не обнаружив ничего подозрительного, Олег передает это сообщение Борису.
5. Борис проверяет цифровую подпись Антона под полученным из рук Олега сообщением и убеждается, что оно пришло от Антона.
6. Используя секретный ключ, которым он владеет совместно с Антоном, Борис извлекает секретную информацию, содержащуюся в подсознательном канале.
Что касается надежд Олега подсунуть одному из "друзей по переписке", томящихся в тюрьме, фальшивое сообщение, якобы исходящее от другого, то им не суждено сбыться. Дело в том, что Олег не сможет сгенерировать подлинную цифровую подпись Антона и, следовательно, не в состоянии послать фальшивую информацию по подсознательному каналу. А поскольку у Олега нет секретного ключа, совместно используемого Антоном и Борисом, то он не сможет прочесть ни одного сообщения, которыми они обмениваются. Сообщения, под которыми стоит обыкновенная цифровая подпись, для Олега ничем не отличаются от сообщений с цифровой подписью со встроенным в нее подсознательным каналом.
К сожалению, в некоторых алгоритмах подсознательный канал устроен таким образом, что секретная информация, необходимая Борису, чтобы читать сообщения Антона, совпадает с секретной информацией, имеющейся у Антона и позволяющей ему посылать невинно выглядящие сообщения Борису. В этом случае ничто не может помешать Борису перевоплотиться в Антона и посылать фальшивые сообщения, якобы исходящие от его имени. Однако имеется ряд других алгоритмов, свободных от этого недостатка. В них секретный ключ, находящийся в распоряжении Антона, отличается от ключа, которым пользуется Борис, и, следовательно, Антону не приходится опасаться злоупотреблений со стороны Бориса.
Практическое применение подсознательного канала
На практике подсознательный канал наиболее подходит для организации связи в шпионских сетях. Если в стране, куда заслан шпион, почти все ее граждане регулярно посылают и получают электронные сообщения, снабженные цифровой подписью, то, совершенно не рискуя попасть под подозрение, он может подписывать свои невинно выглядящие сообщения с помощью цифровой подписи, в которую встроен подсознательный канал для передачи шпионских посланий.
Другие области практического применения подсознательного канала менее очевидны. Используя подсознательный канал, Антон может подписан, документ под угрозой физической расправы, вставив в него секретное сообщение вида "Меня заставили поставить эту подпись", чтобы иметь возможность впоследствии ее оспорить. Правоохранительные органы мот наносить специальную маркировку на электронную наличность, чтобы отслеживать ее движение. Офисная программа, с помощью которой ставится электронная подпись под документами компании, может иметь двойное назначение и дополнительно использоваться для передачи коммерческих секретов конкурентам.
Подобных возможностей — масса, и поэтому, чтобы воспрепятствовать злонамеренному использованию цифровой подписи для организации подсознательного канала связи, были разработаны специальные алгоритмы, которые не могут быть модифицированы с целью встраивания в них подсознательного канала.
Неоспоримая цифровая подпись
Довольно легко получить точную копию обычной цифровой подписи. Иногда это приходится очень кстати, особенно если цифровая подпись стоит под объявлением, предназначенным для всеобщего ознакомления. Однако свободно циркулирующее личное или деловое письмо, в подлинности которого в состоянии убедиться всякий, может поставить его автора в довольно неловкое положение, не говоря уже об опасности прямого шантажа. Поэтому лучше применять такую цифровую подпись, которую можно проверить, но нельзя продемонстрировать посторонним лицам без согласия ее владельца.
Предположим, что Антон возглавляет компанию "ПрограммКомп", которая торгует универсальным текстовым редактором "УниЛекс'97" собственного изготовления. Чтобы исключить заражение компьютерным вирусом машин. принадлежащих покупателям этого программного продукта, "ПрограммКомп" снабжает каждую копию "УниЛекса'97" цифровой подписью. Однако необходимо, чтобы только легальные покупатели "УниЛекса'97" могли проверить подлинность цифровой подписи. Если в купленной на законных основаниях копии "УниЛекса'97" вдруг обнаружится вирус, "ПрограммКомп" не сможет оспорить подлинность своей цифровой подписи.
Для этого "ПрограммКомп" должна воспользоваться неоспоримой цифровой подписью. Подобно обыкновенной цифровой подписи, неоспоримая подпись определяется содержанием подписанного документа и зависит от тайного ключа ее автора. Основное отличие неоспоримой цифровой подписи ел обыкновенной состоит в том, что неоспоримую подпись нельзя проверить без согласия поставившего ее человека. С этой точки зрения ее лучше было бы назвать "подписью без права передачи". Тем не менее, свое название неоспоримая цифровая подпись получила благодаря другому своему свойству: если Антон будет вынужден либо признать подлинность предъявленной ему неоспоримой цифровой подписи, либо отвергнуть ее, то он не сможет отказаться от нее в случае, если эта подпись является настоящей.
Математический аппарат, используемый для конструирования неоспоримой цифровой подписи, довольно сложен и громоздок, однако основная идея соответствующего протокола достаточно прозрачна:
1. Антон знакомит Бориса со своей цифровой подписью.
2. Борис генерирует случайное число и передает его в распоряжение Антона.
3. На основе полученного от Бориса случайного числа и собственного тайного ключа Антон выполняет специальные вычисления, результат которых отсылает обратно Борису. Антон может сделать это только в том случае, если цифровая подпись является подлинной.
4. Борис подтверждает получение вычисленного Антоном значения.
С помощью дополнительных математических ухищрений можно добиться. чтобы Антон мог доказать, что он не подписывал документ, авторство подписи под которым необоснованно приписывается ему, и не смог "отвертеться", если подпись действительно принадлежит ему.
Один из недостатков протокола, позволяющего ставить неоспоримую цифровую подпись под документом, состоит в том, что Борис не в состоянии убедить третьего участника этого протокола (Владимира) в подлинности Цифровой подписи Антона. А все потому, что Владимир не имеет возможности удостовериться, насколько случайно число, сгенерированное Борисом на шаге 2. С таким же успехом Борис мог выполнить все шаги протокола в обратном порядке без участия Антона, а затем продемонстрировать Владимиру полученный результат. Владимиру необходимо принять участие во всех шагах протокола самому (вместо Бориса), чтобы проверить 100-процентную подлинность цифровой подписи Антона.
В результате Борис может на законных основаниях приобрести копию "УниЛекса'97", сделать с нее пиратскую копию и перепродать Владимиру. Как только Владимир захочет проверить подлинность цифровой подписи под пиратской копией "УниЛекса'97", Борис обратится к Антону с просьбой произвести проверку подписи под купленной легально копией этого текстового редактора. Сгенерированное Владимиром случайное число Борис переадресует Антону, а поступивший от Антона ответ он перешлет Владимиру.
Но даже с учетом присущих ей изъянов неоспоримая цифровая подпись может быть с успехом использована там, где Антону не требуется, чтобы кто-либо имел возможность проверять эту подпись бесконтрольно. Например, если Антон продал конфиденциальную информацию, заверенную с помощью неоспоримой цифровой подписи, то с его стороны вполне естественно потребовать, чтобы только покупатель этой информации мог проверить подлинность подписи Антона.

 

 
| На главную | Содержание | Вперёд | Назад |

Последнее обновление

С вопросами и предложениями можно обращаться на nicivas@bk.ru