Анимация
JavaScript
|
Главная Библионтека рецепт, и у каждого работника находится только его часть, то лишь собравшись все вместе ваши служащие см о-гут сделать соус. Если кто-нибудь из работников уволится, прихватив с собой свою часть рецепта, раскрытая информация по себе будет бесполезной. По простейшей схеме сообщение делится между двумя людьми. Вот протокол, используя который Трент д е-лит сообщение между Алисой и Бобом: (1) Трент генерирует строку случайных битов, R, такой же длины, что и сообщение, М. (2) Трент выполняет "исключающее или" (XOR) над М и R, создавая S. R © М = S (3) Трент передает Алисе R, а Бобу - S. Чтобы получить сообщение, Алисе и Бобу нужно выполнить единственное действие: (4) Алиса и Боб выполняют операцию над имеющимися у них частями, восстанавливая сообщение. R © S = М Этот метод при правильном выполнении абсолютно безопасен. Каждая часть в отдельности абсолютно бе с-смысленна. Что существенно, Трент шифрует сообщение одноразовым блокнотом и дает шифротекст одному человеку, а блокнот - другому. Одноразовые блокноты, обладающие абсолютной безопасностью, обсуждаются в разделе 1.5. Никакие вычислительные средства не смогут восстановить сообщение только по одной его части . Эту схему легко расширить на большее число людей . Чтобы разделить сообщение между более чем двумя людьми, выполните операцию XOR с большим числом строк случайных битов. В следующем примере Трент делит сообщение на четыре части: (1) Трент генерирует три строки случайных битов, R, S и Т, такой же длины, что и сообщение, М. (2) Трент выполняет "исключающее или" (XOR) над М и созданными тремя строками, создавая U. М © R © S © Т = U (3) Трент передает Алисе R, Бобу - S, Кэрол - Т, а Дэйву - U. Вместе Алиса, Боб, Кэрол и Дэйв могут восстановить сообщение : (4) Алиса, Боб, Кэрол и Дэйв собираются вместе и вычисляют: R © S © Т © U = М Это арбитражный протокол. Трент обладает абсолютной властью и может делать все, что он хочет . Он может раздать чепуху и утверждать, что это настоящие части секретной информации, никто не сможет это пров е-рить, пока, собравшись вместе, участники протокола не попробуют прочитать письмо . Он может выдать части секрета Алисе, Бобу, Кэрол и Дэйву и позже заявить всем, что только Алиса, Кэрол и Дэйв нужны для восст а-новления секрета, застрелив при этом Боба. Но это не является проблемой, так как делимый секрет принадлежит Тренту. Однако, одна проблема у этого протокола существует. Если любая из частей будет потеряна, а Трента не б у-дет поблизости, пропадет и все сообщение . Если Кэрол, обладая частью рецепта соуса, перейдет работать к ко н-куренту, оставив свою часть секрета у себя, значит, остальным не повезло. Она не сможет восстановить рецепт, но не смогут, собравшись, и Алиса, Боб и Дэйв . Ее часть также критична для восстановления сообщения, как и любая другая. Все, что известно Алисе, Бобу и Дэйву - это длина сообщения, и ничего больше . Это истинно, так как у R, S, Т, U и М одинаковая длина, следовательно, каждому из участников известна длина М. Помните, сообщение М делится не в обычном смысле этого слова, а подвергается операции XOR со случайными величинами. 3.7 Совместное использование секрета Вы вводите программу запуска ядерной ракеты и хотите быть уверенным, что никакой псих в одиночку не сможет вызвать пуск. Вы хотите быть уверенным, что и два психа не смогут вызвать пуск . Вы хотите, чтобы пуск произошел только, если не меньше трех из пяти офицеров будут психами . Эта проблема легко может быть решена. Сделайте механическое устройство контроля запуска . Выдайте ключ каждому из пяти офицеров и потребуйте, чтобы по меньше мере три офицера вставили свои ключи в соо т-ветствующие гнезда, прежде чем вы разрешите им взорвать того, кого мы взрываем на этой неделе . (Если вы действительно волнуетесь, сделайте гнезда подальше друг от друга и потребуйте, чтобы офицеры вставляли ключи одновременно - вы ведь не хотели бы, чтобы офицер, выкравший недостающую пару ключей, смог бы испепелить Толедо.) Можно сделать еще сложнее. Пусть только генерал у и паре полковников разрешено запустить ракету, но е с-ли генерал занят игрой в гольф, то запустить ракету имеют право только пять полковников . Сделайте контрольное устройство с пятью ключами. Выдайте генералу три ключа, а полковникам по одному. Генерал вместе с двумя полковниками или пять полковников смогут запустить ракету. Однако ни генерал в одиночку, ни четыре полковника не смогут этого сделать. Более сложная схема совместного использования, называемая пороговой схемой, может решить и эти задачи, и более сложные - математически. На ее простейшем уровне вы можете взять любое сообщение (секретный рецепт, коды запуска, ваш список для прачечной и т.п.) и разделить его на n частей, называемых тенями или долями, так, что по любым m из них можно восстановить сообщение. Более точно, это называется (т,п)-пороговой схемой. Используя (3,4)-пороговую схему, Трент может разделить свой секретный рецепт между Алисой, Бобом, К э-рол и Дэйвом так, что любые трое из них могут сложить свои тени вместе и восстановить сообщение . Если Кэрол в отпуске, то Алиса, Боб и Дэйв смогут восстановить сообщение. Если Боб попал под автобус, то сообщение смогут восстановить Алиса, Кэрол и Дэйв. Но если Боб попал под автобус, а Кэрол в отпуске, то Алиса и Дэйв самостоятельно не смогут восстановить сообщение . Вообще, пороговые схемы могут быть еще более гибкими. Можно отмоделировать любые сценарии совм е-стного использования, которые вы только сможете вообразить. Можно разделить сообщение между людьми в вашем здании так, что для его восстановления, если нет никого с третьего этажа, потребуется семь человек с первого этажа и пять со второго, в противном случае достаточно представителя третьего этажа вместе с тремя человеками с первого этажа и двумя со второго. Если же есть кто-то с четвертого этажа, то для восстановления сообщения достаточно этого человека и одного с третьего этажа или этого человека вместе с двумя с первого этажа и одного со второго. Если же ... ну вы уловили идею . Эта идея была независимо выдвинута Ади Шамиром [1414] и Джорджем Блэкли (George Blakley) [182] и интенсивно была изучена Гусом Симмонсом (Gus Simmons) [1466]. Множество различных алгоритмов обсуждается в разделе 23.2. Совместное использование с мошенниками Существует множество способов обмануть пороговую схему. Вот только несколько из них. Сценарий 1 : Полковники Алиса, Боб и Кэрол сидят в изолированном бункере где-то глубоко под землей. Однажды они получают закодированное сообщение от президента: "Запустить ракеты. Мы собираемся стереть с лица Земли любые следы исследований противника в области нейронных сетей ". Алиса, Боб и Кэрол открывают свои тени, но Кэрол вводит случайное число. Он на самом деле пацифист и не хочет, чтобы ракеты были запущены . Поскольку Кэрол не ввела правильное тени, секретная информация, которую они хотели получить, оказалась неправильной. Ракеты остались в своих шахтах. И самое плохое, никто не знает почему. Даже объединившись Алиса и Боб не смогут доказать, что тень Кэрол неправильна. Сценарий 2: Полковники Алиса и Боб сидят в бункере вместе с Мэллори. Мэллори ложно выдает себя за полковника. От президента приходит то же самое сообщение и все открывают свои тени . "Ха-ха-ха!" кричит Мэллори. "Я подделал это сообщение президента. Теперь я знаю обе ваших доли." Он убегает вверх по лестнице и исчезает прежде, чем его успеют поймать. Сценарий 3: Полковники Алиса, Боб и Кэрол сидят в бункере вместе с Мэллори, который снова замаскировался. (Помните, у Мэллори нет правильной тени.) От президента приходит то же самое сообщение и все открывают свои тени. Мэллори открывает свою тень, только услышав все остальные . Так как для восстановления секрета требуется только три тени, он может быстро создать правильную тень и открыть ее. Итак, он не только заполучил секрет, но и никто не догадался, что он не является частью этой системы . Некоторые протоколы, которые позволяют бороться с подобными мошенниками, рассматриваются в разделе 23.2. Совместное использование секрета без Трента Банк хочет, чтобы его подвал могли открыть трое из пяти офицеров, введя свои ключи . Это выглядит как типичная (3,5)-пороговая схема, но с одной тонкостью. Никто не знает секрета целиком. Трента, которые делит секрет на пять частей, нет. Существуют протоколы, используя которые пять офицеров могут создать секрет и поделить его на части так, что никто из офицеров не узнает секрета, пока он не будет восстановлен . В этой книге я не рассматриваю эти протоколы, подробности см. в [756]. Совместное использование секрета без раскрытия долей У этих схем есть одна проблема. Когда участники протокола собираются, чтобы восстановить секрет, они открывают свои части. Но раскрытие секрета не всегда желательно. Если разделяемый секрет является закрытым ключом (например, к цифровой подписи), то каждый из n участников может выполнить частичную подпись документа. После и-ой частичной подписи документ оказывается подписан совместно используемым закрытым ключом, а ни один из участников не может узнать содержания части, используемой другим участником . Смысл в том, что вы можете повторно использовать секрет, и для работы с ним вам не понадобится надежный посре д-ник. Дальнейшее развитие эта идея получила в работах Иво Десмедта (Yvo Desmedt) и Иера Френкеля (Yair Frankel) [483, 484]. Подтверждаемое совместное использование секрета Трент передает Алисе, Бобу, Кэрол и Дэйву часть секрета (или, по крайней мере, заявляет, что он это делает). Единственный способ убедиться, что их части правильны - это попытаться восстановить секрет . Может быть Трент послал Бобу поддельную часть, или часть Боба случайно испортилась при передаче по линиям связи. Подтверждаемое совместное использование секрета позволяет каждому из участников лично убедиться, что их часть правильна, без необходимости восстанавливать секрет [558, 1235]. Схемы совместного использования секрета с мерами предохранения Секрет делится среди 50 человек так, чтобы любые 10 могли собраться вместе и восстановить секрет . Это нетрудно. Но, можем ли мы реализовать ту же схему совместного использования секрета, добавив требование, чтобы 20 человек могли собраться вместе и помешать остальным, независимо от их числа, восстановить секрет? Оказывается, что да [153]. Математика достаточно сложна, но основная идея в том, что каждый получает две части : часть "да" и часть "нет". Когда приходит время восстановить секрет, люди предоставляют одну из своих частей . Какую конкретно зависит от того, хотят ли они, чтобы секрет был раскрыт. Если предоставлено m или больше долей "да" и меньше чем n долей "нет", то секрет может быть восстановлен. В противном случае, это невозможно. Конечно же, ничего не мешает достаточному числу людей "да" отойти в уголок, уединившись от людей "нет" (если они знают, кто есть кто) и восстановить секрет. Но при условии, что все передают свои части в центральный компьютер эта схема будет работать. Совместное использование секрета с вычеркиванием из списка Вы создали систему совместного использования секрета и теперь хотите застрелить одного из владельцев части секрета. Вы могли бы создать новую схему, исключив этого несчастного, но время поджимает. Для п о-добной системы существуют способы копирования . Они позволяют активизировать новую схему совместного использования секрета сразу же после того, как вы перестали доверять одному из участников [1004]. 3.8 Криптографическая защита баз данных База данных членов организации - это весьма важная вещь. С одной стороны вы хотите предоставить к не доступ всем членам, желая, чтобы они общались друг с другом, обменивались идеями и делились друг с другом бутербродами. С другой стороны, если вы пустите в вашу базу данных кого угодно, сведения обязательно поп а-дут в руки надоедливых страховых агентов и докучливых поставщиков всякого хлама по почте . Криптография может облегчить эту проблему. Можно зашифровать базу данных так, чтобы получить адрес одного человека было легко, а извлечь список почтовых адресов всех членов - трудно . Схема, предложенная в [550, 549], прямолинейна. Выберите однонаправленную хэш-функцию и симметричный алгоритм шифрования. у каждой записи в базе данных два поля. Индексным полем является фамилия чл е-на, и именно оно обрабатывается однонаправленной хэш-функцией . Поле данных, в котором хранится полное имя и адрес члена, шифруется с помощью используемой в качестве ключа фамилии . Если вы не знаете фамилии, вы никогда не сможете расшифровать поле данных . Поиск по конкретной фамилии прост. Сначала хэшируется фамилия, и выполняется поиск значения хэш-функции в базе данных. Наличие нескольких совпадений означает, что база данных содержит информацию о нескольких людях с такой фамилией. В [550] авторы используют эту систему для защиты словаря из 6000 испанских слов. Они сообщают о том, что потеря производительности, вызванная шифрованием, минимальна . В более сложной схеме [549] используется поиск по нескольким индексам, но идея остается той же . Основная проблема, связанная с этой системой, состоит в том, что вы не сможете найти человека, не зная, как пишется его фамилия . Можно попробовать несколько вариантов, пока не будет найден правильный, но неудобно перебирать всех, чьи фамилии начинаются на "Sch" при поиске "Schneier." Эта защита несовершенна. Очень назойливый страховой агент восстановит базу данных членов организации с помощью грубого взлома, перебирая все возможные фамилии . Если у него есть телефонная база данных, он может использовать имеющийся в ней список фамилий . Это пережевывание номеров может занять несколько 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [ 18 ] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |