Анимация
JavaScript
|
Главная Библионтека (4) Боб расшифровывает сообщения, узнавая бит. Он проверяет свою случайную строку, убеждаясь в пр а-вильности бита. Без случайной строки Боба Алиса может тайно расшифровывать сообщение, посланное Бобу, используя множество ключей, подбирая тот, который позволит при дешифрировании отправленного сообщения изменить врученный бит. Так как у бита только два возможных значения, ее поиски наверняка увенчаются успехом после нескольких попыток. Случайная строка Боба не дает ей использовать этот способ вскрытия, ей придется искать новый ключ, который не только инвертирует врученный бит, но и сохранит нетронутой случайную строку Боба . Если используется достаточно хороший алгоритм шифрования, вероятность удачного поиска чрезвычайно мала. Алиса не может изменить свой бит после его вручения . Вручение бита с помощью однонаправленных функций Этот протокол использует однонаправленные функции: (1) Алиса создает две случайных строки битов, Ri и R2. (2) Алиса создает сообщение, состоящее из ее случайных строк и бита, который она хочет вручить (в действ и-тельности, это может быть и несколько битов). (Ri, Ri, b) (3) Алиса вычисляет однонаправленную функцию для сообщения и посылает результат вместе с одной из случайных строк Бобу. H(R1, R1, b), R1 Это сообщение Алисы является доказательством вручения. Использование однонаправленной функции на этапе (3) мешает Бобу, инвертируя функцию, определить бит. Когда для Алисы придет время раскрыть свой бит, протокол продолжается : (4) Алиса отправляет Бобу первоначальное сообщение. (Ri, Ri, b) (5) Боб вычисляет однонаправленную функцию для сообщения и сравнивает его и R1 со значением однонаправленной функции и случайной строкой, полученными на этапе (3). Если они совпадают, то бит прав и-лен. Преимущество этого протокола перед предыдущим в том, что Бобу не нужно посылать никаких сообщений . Алиса посылает Бобу одно сообщение для вручения бита, а другое - для его раскрытия . Не нужна и случайная строка Боба, так как результат Алисиного вручения - это сообщение, обработанное однонаправленной функцией. Алиса не может смошенничать и подобрать другое сообщение (R1, R1, b), для которого H(R1, R1, b)= H(R1, R1, b). Пос1лая Бобу R1, она вручает значение b. Если Алиса не сохранит в секрете R1, то Боб получит возможность вычислить H(R1, R1, b) и H(R1, R1, b), получая возможность увидеть, что же он получил от Алисы. Вручение бита с помощью генератора псевдослучайной последовательности Этот протокол даже проще [1137]: (1) Боб создает строку случайных битов и посылает ее Алисе. Rb (2) Алиса создает стартовую последовательность для генератора псевдослучайных битов. Затем для каждого бита в строке случайных битов Боба она посылает Бобу либо: (a) выход генератора, если бит Боба равен 0, или (b) XOR выхода генератора и бита Боба, если Бит Боба равен 1. Когда для Алисы придет время раскрыть свой бит, протокол продолжается : (3) Алиса посылает Бобу свою стартовую последовательность. (4) Боб выполняет этап (2), убеждаясь, что Алиса действует честно. Если строка случайных битов достаточно длинна, а генератор псевдослучайных битов непредсказуем , мошенничество Алисы практически невозможно . Blob-объекты Строки, которые Алиса посылает Бобу для вручения бита, иногда называют ЫсЬ-объектами. Blob-объект -это последовательность битов, хотя протоколы этого и не требуют. Как сказал Жиль Брассар (Gilles Brassard), "Они могли бы быть сделаны и из волшебной пыли, если бы это было полезным " [236]. Blob-объекты обладают следующими четырьмя свойствами: 1. Алиса может вручить blob-объекты. Вручая blob-объект, она вручает бит. 2. Алиса может открыть любой blob-объект, который она вручила. Когда она открывает blob-объект, она может убедить Боба в значении бита, который был вручен вместе с blob-объектом. Следовательно, она не может открыть произвольный blob-объект, например, ноль или единицу. 3. Боб не может знать, каким образом Алиса может открыть blob-объект, который она вручила. Это остается справедливым, даже когда Алиса откроет другие blob-объекты. 4. Blob-объекты не несут никакой информации, кроме вручаемого Алисой бита. Сами по себе blob-объекты, также как и процесс, с помощью которого Алиса вручает и открывает их, не связаны не с чем другим, что Алиса хотела бы сохранить в секрете от Боба. 4.10 Подбрасывание "честной" монеты Настало время процитировать Джо Килиана (Joe Kilian) [831]: Алиса и Боб хотели сыграть в "орла и решку", но монеты у них не было. Алиса предложила простой способ подбрасывать монетку мысленно. "Сначала вы задумываете случайный бит, затем я задумаю случайный бит. Затем мы выполняем над битами "исключающее или", - предложила она. "Но если один из нас не будет задумывать биты случайным образом?", - спросил Боб. "Это не важно. Если хотя бы один из битов действительно случаен, то и "исключающее или" битов должно быть действ и-тельно случайным", - ответила Алиса, и после минутного раздумья Боб согласился. Немного спустя Алиса и Боб наткнулись на книгу по искусственному интеллекту, лежащую на обочине дороги. Алиса, добропорядочная гражданка, сказала: "Один из нас должен подобрать эту книгу и сдать ее в бюро находок". Боб согласился, и предложил использовать их протокол подбрасывания монетки, что бы определить, кто унесет книгу. "Если полученный бит будет 0, то ты возьмешь книгу, а если 1 - то я", - сказала Алиса. " Какой у тебя бит?" Боб ответил: "1". "Ну вот, и у меня такой же", - лукаво заметила Алиса. - "Я думаю, у тебя сегодня неудачный день". Очевидно, у протокола подбрасывания монетки есть серьезный дефект. Хотя это правда, что "исключающее или" дейс т-вительно случайного бита, x, и любого независимо распределенного бита, у, дает в результате действительно случайный бит, протокол Алисы не гарантирует, что два бита будут распределены независимо. На самом деле нетрудно убедиться, что не с у-ществует мысленного протокола, который позволит двум независимым сторонам подбрасывать "честную" монетку. Алиса и Боб горевали, пока не получили письмо от неизвестного студента с дипломом по криптографии. Информация в письме была слишком теоретической, чтобы ее можно было применить для чего-то земного, но конверт, в котором пришло письмо, оказа л-ся чрезвычайно полезным. Когда Алиса и Боб в следующий раз захотели подбросить монетку, они изменили первоначальный протокол. Сначала бит задумал Боб, но вместо того, чтобы открыть его немедленно, он записывает свой бит на листке бумаги и кладет листок в конверт. Затем Алиса объявляет свой бит. Наконец, Алиса и Боб достают бит Боба из конверта и вычисляют случайный бит. Этот бит уже действительно случаен, независимо от честности играющих. Алиса и Боб получили работающий протокол, с о-циально значимая мечта криптографов осуществилась, и все они жили долго и счастливо. Эти конверты выглядят весьма похожими на blob-объекты вручения бита. Когда Мануэль Блам (Manuel Blum) столкнулся с проблемой подбрасывания "честной" монеты по модему [194], он решил ее, используя протокол вручения бита: (1) Алиса вручает случайный бит, используя любую из схем вручения бита, описанную в разделе 4.9. (2) Боб загадывает свой бит. (3) Алиса раскрывает бит Бобу. Боб выигрывает бросок, если он правильно загадал бит. В общем случае, нам нужен протокол со следующими свойствами: - Алиса должна "бросить монету" до того, как Боб загадает свой бит. - Алиса не должна иметь возможности изменить результаты своего броска, узнав бит Боба. - У Боба не должно быть возможности узнать результат броска перед тем, как он сделает свое предпол о-жение. Существует несколько возможностей выполнить это . Бросок монеты с помощью однонаправленных функций Если Алиса и Боб договорятся об однонаправленной функции, протокол прост : (1) Алиса выбирает случайное число, x. Она вычисляет y=f(x), где f(x) - однонаправленная функция. (2) Алиса посылает y Бобу. (3) Боб предполагает, что x четно или нечетно, и посылает свое предположение Алисе. (4) Если предположение Боба правильно, результатом броска является "орел", если неправильно - то "решка". Алиса объявляет результат броска монеты и посылает x Бобу. (5) Боб проверяет, что y=f(x). Безопасность этого протокола обеспечивается однонаправленной функцией . Если Алиса сможет найти x и x, такие что x - четно, а x - нечетно, и y=f(x)=f(x), то она каждый раз сможет обманывать Боба. Кроме того, наименьший значащий бит f(x) должен быть некоррелирован с x. В противном случае Боб сможет обманывать Ал и-су, по крайней мере иногда. Например, если f(x) в 75 процентах случаев четна, если x, у Боба будет преимущество. (Иногда наименьший значащий бит не является лучшим выбором для использования в приложении, потому что его вычисление может оказаться слишком простым .) Бросок монеты с помощью криптографии с открытыми ключами Этот протокол работает как с криптографией с открытыми ключами, так и с симметричной криптографией . Единственное условие - переключение алгоритма. То есть : E(e E( M ))) = E( M) В общем случае это свойство не выполняется для симметричных алгоритмов, но справедливо для некоторых алгоритмов с открытыми ключами (например, RSA с идентичными модулями). Этот протокол: (1) И Алиса, и Боб создают пары открытый ключ/закрытый ключ. (2) Алиса создает два сообщения, одно для "орла", а второе - для "решки". Эти сообщения должны включать некоторую случайную строку, чтобы она могла подтвердить их подлинность на последующих этапах пр о-токола. Алиса шифрует оба сообщения своим открытым ключом и посылает их Бобу в произвольном п о-рядке. Ea(Mi), Ea(Mi) (3) Боб, которые не может прочитать не одно сообщение, случайным образом выбирает одно из них. (Он м о-жет посчитать их с помощью "Эники-беники ели вареники", воспользоваться компьютером для взлома протоколы или обратиться к цыганке.) Он шифрует выбранное сообщение своим открытым ключом и п о-сылает его обратно Алисе. Eb(Ea(M)) где M - M1 или M1. (4) Алиса, которая не может прочитать полученное сообщение, расшифровывает его своим закрытым ключом и посылает обратно Бобу. Da(Eb(Ea(M)))= Eb(M1), если M = M1, или EB(M1), если M = M1. (5) Боб расшифровывает сообщение своим закрытым ключом, раскрывая результат броска монеты, и посыл а-ет расшифрованное сообщение Алисе. Db(Eb(Mi)) или Db(Eb(Mi)) (6) Алиса читает результат броска монеты и проверяет, что случайная строка правильна. (7) Алиса и Боб раскрывают пары своих ключей, чтобы каждый из сторон могла убедиться в отсутствии м о-шенничества. Этот протокол самодостаточен. Любая сторона может немедленно обнаружить мошенничество другой, и не требуется третья сторона ни для участия в протоколе, ни в качестве арбитра после завершения протокола . Чтобы посмотреть, как это работает, давайте попытаемся смошенничать . Если выиграть, смошенничав, хочет Алиса, у нее есть три возможных пути повлиять на результат. Во пе р-вых, она может зашифровать два сообщения для "орла" на этапе (2). Боб обнаружит это, когда Алиса раскроет свои ключи на этапе (7). Во вторых, она может использовать какой-то другой ключ для расшифровывания с о-общения на этапе (4). Это приведет к бессмыслице, которую Боб и обнаружит на этапе (5). В третьих, она может объявить неправильным сообщение на этапе (6). Боб также обнаружит это на этапе (7), когда Алиса не сможет доказать, неправильность сообщения. Конечно, Алиса может отказаться от участия в протоколе на любом этапе, когда жульничество Алисы станет для Боба очевидным. Если Боб захочет мошеннически выиграть, его положение ничуть не лучше. Он может неправильно заши ф-ровать сообщение на этапе (3), но Алиса обнаружит обман, взглянув на заключительное сообщение на этапе (6). 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 |