8. Распределение ответственности

Распределение ответственности

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

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

Простейший криптографический протокол позволяет Дмитрию поровну распределить между Антоном и Борисом ответственность за сохранение сообщения в тайне:

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 участников были против, сообщение будет восстановлено в первозданном виде, а иначе — не будет.
  • Можно добиться, чтобы в случае, если один из участников протокола окажется не в состоянии выполнить необходимые действия для восстановления исходного секретного сообщения, почти мгновенно и без каких-либо существенных накладных расходов будет введен новый протокол, участниками которого станут оставшиеся участники первоначального.