Вспомогательные криптографические протоколы
Отметка о времени создания файла
Существует немало ситуаций, когда людям приходится доказывать, что некий документ уже существовал в определенный момент времени. Например, в споре об авторском праве на изобретение побеждает тот, кто предъявит самую раннюю копию описания сути этого изобретения. Если соответствующая документация оформляется на бумаге, заверенную нотариусом копию документа можно передать на хранение в нотариальную контору. При возникновении конфликта нотариус или другой полномочный представитель юридической конторы засвидетельствует существование документа в определенный момент времени.
В компьютерном мире все значительно сложнее. Файл, в котором хранится документ, может быть скопирован и изменен бессчетное число раз. А поменять отметку о времени последней модификации этого файла по силам даже начинающему пользователю. И никто не сможет просто взглянуть на файл и сказать: "Да, я абсолютно уверен, что данный файл был создан именно 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. Используя секретный ключ, которым он владеет совместно с Антоном, Борис извлекает секретную информацию, содержащуюся в подсознательном канале.
Что касается надежд Олега подсунуть одному из "друзей по переписке", томящихся в тюрьме, фальшивое сообщение, якобы исходящее от другого, то им не суждено сбыться. Дело в том, что Олег не сможет сгенерировать подлинную цифровую подпись Антона и, следовательно, не в состоянии послать фальшивую информацию по подсознательному каналу. А поскольку у Олега нет секретного ключа, совместно используемого Антоном и Борисом, то он не сможет прочесть ни одного сообщения, которыми они обмениваются. Сообщения, под которыми стоит обыкновенная цифровая подпись, для Олега ничем не отличаются от сообщений с цифровой подписью со встроенным в нее подсознательным каналом.
К сожалению, в некоторых алгоритмах подсознательный канал устроен таким образом, что секретная информация, необходимая Борису, чтобы читать сообщения Антона, совпадает с секретной информацией, имеющейся у Антона и позволяющей ему посылать невинно выглядящие сообщения Борису. В этом случае ничто не может помешать Борису перевоплотиться в Антона и посылать фальшивые сообщения, якобы исходящие от его имени. Однако имеется ряд других алгоритмов, свободных от этого недостатка. В них секретный ключ, находящийся в распоряжении Антона, отличается от ключа, которым пользуется Борис, и, следовательно, Антону не приходится опасаться злоупотреблений со стороны Бориса.
Практическое применение подсознательного канала
На практике подсознательный канал наиболее подходит для организации связи в шпионских сетях. Если в стране, куда заслан шпион, почти все ее граждане регулярно посылают и получают электронные сообщения, снабженные цифровой подписью, то, совершенно не рискуя попасть под подозрение, он может подписывать свои невинно выглядящие сообщения с помощью цифровой подписи, в которую встроен подсознательный канал для передачи шпионских посланий.
Другие области практического применения подсознательного канала менее очевидны. Используя подсознательный канал, Антон может подписан, документ под угрозой физической расправы, вставив в него секретное сообщение вида "Меня заставили поставить эту подпись", чтобы иметь возможность впоследствии ее оспорить. Правоохранительные органы мот наносить специальную маркировку на электронную наличность, чтобы отслеживать ее движение. Офисная программа, с помощью которой ставится электронная подпись под документами компании, может иметь двойное назначение и дополнительно использоваться для передачи коммерческих секретов конкурентам.
Подобных возможностей — масса, и поэтому, чтобы воспрепятствовать злонамеренному использованию цифровой подписи для организации подсознательного канала связи, были разработаны специальные алгоритмы, которые не могут быть модифицированы с целью встраивания в них подсознательного канала.