Анимация
JavaScript
|
Главная Библионтека Невозможность отказаться от цифровой подписи Алиса может смошенничать с цифровыми подписями, и с этим ничего нельзя поделать. Она может подп и-сать документ и затем утверждать, что она этого не делала. Сначала она, как обычно, подписывает письмо. З а-тем она анонимно раскрывает свой закрытый ключ или теряет в людном месте . Теперь Алиса утверждает, что ее подпись была скомпрометирована и использована кем-то другим, выдающим себя за нее. Она дезавуирует свою подпись под всеми документами, подписанными с помощью этого закрытого ключа . Это называется отказ от подписи. Метки времени могут снизить эффект такого мошенничества, но Алиса всегда может заявить, что ее ключ был скомпрометирован раньше . Если Алиса правильно рассчитает время, она сможет подписать документ и затем успешно заявить, что она этого не делала. Поэтому так много говорится о хранении закрытых ключей в надежных местах - чтобы Алиса не могла добраться до своего и злоупотребить им . Хотя с подобным злоупотреблением ничего нельзя сделать, можно предпринять некоторые действия, гара н-тирующие то, что старые подписи не будут признаны недостоверными из-за разногласий по новым подписям . (Например, Алиса может "потерять" свой ключ, чтобы не платить Бобу за подержанную машину, которую он вчера ей продал и, в результате, сделает недействительным свой банковский счет .) Получателю нужно проставлять метки времени для полученных документов [453]. Общая схема протокола приведена в [2, 8]: (1) Алиса подписывает сообщение. (2) Алиса создает заголовок, содержащий некоторую идентификационную информацию. Она присоединяет к заголовку подписанное сообщение, подписывает все вместе и посылает Тренту. (3) Трент проверяет внешнюю подпись и подтверждает идентификационную информацию. Он добавляет ме тку времени к подписанному сообщению Алисы и идентификационной информации. Затем он подписывает все вместе и посылает пакет Алисе и Бобу. (4) Боб проверяет подпись Трента, идентификационную информацию и подпись Алисы. (5) Алиса проверяет сообщение, которое Трент послал Бобу. Если она не признает свое авторство, она быстро заявляет об этом. В другой схеме Трент используется в качестве арбитра [209]. Получив подписанное сообщение, Боб пос1ла-ет копию Тренту для проверки. Трент может подтвердить подпись Алисы. Использование цифровых подписей Одним из самых ранних предложенных применений цифровых подписей было упрощение проверки собл ю-дения договоров о ядерных испытаниях [1454, 1467]. Соединенные Штаты и Советский Союз (кто-нибудь помнит Советский Союз?) разрешили друг другу разместить на чужой территории сейсмографы для слежения за ядерными испытаниями. Проблема была в том, что каждая из сторон должна была уверена в том, что другая сторона не подделала данные этих сейсмографов . Одновременно, другая сторона должна была быть уверена, что эти датчики посылают только ту информацию, которая нужна для слежения за ядерными испытаниями . Метод условного удостоверения подлинности может решить первую проблему, но только цифровые подписи могут решить обе проблемы. Сторона, на территории которой стоит сейсмограф, может прочесть, но не изм е-нить данные сейсмографа, а следящая сторона знает, что данные не были подделаны . 2.7 Цифровые подписи и шифрование Объединив цифровые подписи и криптографию с открытыми ключами, мы разрабатываем протокол, комб и-нирующий безопасность шифрования и достоверность цифровых подписей . Сравните с письмом от вашей маиы. Подпись удостоверяет авторство а конверт обеспечивает тайну . (1) Алиса подписывает сообщение с помощью своего закрытого ключа. Sa(M) (2) Алиса шифрует подписанное сообщение открытым ключом Боба и посылает его Бобу. Eb (Sa(M)) (3) Боб расшифровывает сообщение с помощью своего закрытого ключа. Db (Eb (Sa(M)))= Sa(M) (4) Боб проверяет подпись с помощью открытого ключа Алисы и восстанавливает сообщение. Va (Sa(M))= M Подпись перед шифрованием выглядит естественно. Когда Алиса пишет письмо, она подписывает его и затем кладет в конверт. Если она положит письмо в конверт неподписанным, то Боб может забеспокоиться, вдруг письмо было тайно подменено. Если Боб покажет Кэрол письмо Алисы и конверт, Кэрол может обвинить Боба, что он врет о том, какое письмо в каком конверте пришло . В электронной корреспонденции точно также является разумным использование подписи перед шифрован и-ем [48]. Это не только более безопасно - враг не сможет удалить подпись из шифрованного сообщения и доб а-вить свою собственную - но существуют и юридические соображения: если подписываемый текст не виден по д-писывающему, когда он ставит подпись, то юридическая сила подписи невелика [1312]. Существуют также некоторые криптографические способы вскрытия такой последовательности действий, использующей подписи RSA (см. раздел 19.3). Для Алисы не существует причин использовать одну пару ключей - открытый/закрытый - для шифрования и подписи. У нее может быть две пары ключей: одна для шифрования и одна для подписи . У такого разделения есть свои преимущества: Алиса может передать свой ключ шифрования полиции, не компрометируя свою по д-пись, один ключ может быть условно передан (см. раздел 4.13), не влияя на другой. У ключей могут быть различные длины и сроки действия. Конечно же, для предотвращения повторного использования сообщений с этим протоколом должны быть использованы метки времени. Метки времени также могут защитить от других возможных ловушек, пример одной из которых приведен ниже. Возвращение сообщения при приеме Рассмотрим реализацию этого протокола с дополнительной возможностью подтверждения сообщений - п о-лучив сообщение, Боб обязательно возвращает подтверждение приема . (1) Алиса подписывает сообщение с помощью своего закрытого ключа, шифрует подписанное сообщение открытым ключом Боба и посылает его Бобу. Eb (Sa(M)) (2) Боб расшифровывает сообщение с помощью своего закрытого ключа, проверяет подпись с помощью о т-крытого ключа Алисы и восстанавливает сообщение. Va (Db (Eb (Sa(M))))= M (3) Боб подписывает сообщение с помощью своего закрытого ключа, шифрует подписанное сообщение открытым ключом Алисы и посылает его Алисе обратно. Ea (Sb(M)) (4) Алиса расшифровывает сообщение с помощью своего закрытого ключа и проверяет подпись с помощью открытого ключа Боба. Если полученное сообщение совпадает с отправленным, она знает, что Боб пол учил правильное сообщение. Если для шифрования и проверки цифровой подписи используется один и тот же алгоритм, то существует возможность вскрытия [506]. В таких случаях операция цифровой подписи - противоположность операции шифрования: Vx = Ex и SX = DX. Пусть Мэллори - зарегистрированный пользователь со своей парой ключей: открытым и закрытым . Теперь посмотрим, как он сможет читать почту Боба. Сначала он запишет сообщение Алисы Бобу - этап (1) . Затем, немного погодя, он пошлет это сообщение Бобу, утверждая, что оно отправлено самим Мэллори. Боб, думая, что это обычное сообщение от Мэллори, дешифрирует это сообщение своим закрытым ключом и пытается пров е-рить подпись Мэллори, дешифрируя ее с помощью открытого ключа Мэллори . В результате получается полная чепуха: Ea (Db (Eb (Da(M))))= Em (Da(M)) Даже в этом случае, следуя протоколу, Боб посылает Мэллори полученное сообщение : Em (Db (Em (Da(M)))) Теперь Мэллори остается только расшифровать сообщение с помощью своего закрытого ключа, зашифр о-вать его открытым ключом Боба, расшифровать снова с помощью своего закрытого ключа и зашифровать открытым ключом Алисы. Voild! Мэллори получает М. Отнюдь не глупо предположить, что Боб может автоматически посылать Мэллори квитанцию. Этот прот о-кол, например, может быть встроен в его коммуникационное программное обеспечение и посылать квитанции автоматически. Именно готовность сообщить о приеме чепухи и нарушает безопасность . Если Боб проверит сообщение на осмысленность перед отправкой квитанции, он сможет избежать таких проблем с безопасностью . Существуют модернизации этого способа вскрытия, предполагающие, что Мэллори пошлет Бобу сообщение, отличное от того, которое он желает перехватить . Никогда не подписывайте произвольных сообщений от других людей и не передавайте результаты дешифровки произвольных сообщений иным людям . Обнаружение вскрытия, основанного на возвращении сообщения Только что описанное вскрытие работает потому, что операция шифрования совпадает с операцией проверки подписи, а операция дешифрирования - с операцией подписи . Операции шифрования и цифровой подписи в безопасном протоколе должны хотя бы слегка отличаться . Проблему решает использование различных ключей для каждой операции, или использование для каждой операции различных алгоритмов, или применение меток времени, которые делают различными принятое и отправляемое сообщения, или цифровая подпись с помощью однонаправленной хэш-функции (см. раздел 2.6). Тогда, в общем случае, следующий протокол, использующий алгоритм с открытым ключом, является безопасным : (1) Алиса подписывает сообщение. (2) Алиса шифрует подписанное сообщение открытым ключом Боба (используя алгоритм, отличающийся от алгоритма цифровой подписи) и посылает его Бобу. (3) Боб расшифровывает сообщение с помощью своего закрытого ключа (4) Боб проверяет подпись Алисы. Вскрытия криптографии с открытыми ключами Во всех подобных протоколах криптографии с открытыми ключами я не рассказал , как Алиса получает открытый ключ Боба. Подробно этот вопрос описан в разделе 3.1, но о нем стоит упомянуть и здесь. Проще всего узнать чей-то открытый ключ, считав его откуда-то из безопасной базы данных. Эта база данных должна быть общедоступна, чтобы каждый мог получить нужный ему ключ. База данных должна быть з а-щищена от несанкционированной записи, в противном случае Мэллори сможет подменить открытый ключ Боба. После этого Боб уже не сумеет читать адресованные ему сообщения, зато это сможет сделать Мэллори . Даже если открытые ключи хранятся в надежной базе данных, Мэллори может подменить их при передаче . Чтобы воспрепятствовать этому, Трент должен подписывать каждый открытый ключ, используя свой собстве н-ный закрытый ключ. Трента, который действует подобным образом, часто называют Органом сертификации ключей или Центром распределения ключей (Key Distribution Center, KDC). На практике KDC подписывает сложное сообщение, состоящее из имени пользователя, его открытого ключа и другой информации о пользов а-теле. Это подписанное сложное сообщение и хранится в базе данных KDC. Когда Алиса получает ключ Боба, она проверяет подпись KDC, удостоверяясь в правильности ключа. При окончательном анализе видно, что и это только затрудняет, но не делает невозможным мошенничество Мэллори. Алиса же должна откуда-то получить открытый ключ KDC. Мэллори нужно подменить этот ключ своим открытым ключом, испортить базу данных и заменить правильные ключи своими (подписанными его закрытым ключом, как если бы он и был KDC), и его дело сделано. Но, даже подписи на бумаге могут быть подделаны, если Мэллори всерьез возьмется за дело. Подробно обмен ключами рассматривается в разделе 3.1. 2.8. Генерация случайных и псевдослучайных последовательностей Почему даже в книге по криптографии снова эти докучливые рассуждения о генерации случайных чисел? Генератор случайных чисел встроен в каждый компилятор, обычный вызов функции. Почему бы не использ о-вать его? К сожалению, эти генераторы случайных чисел почти наверняка недостаточно безопасны для крипт о-графии и, возможно, даже не совсем случайны. Большинство из них весьма плохи. Генераторы случайных чисел на самом деле совсем не случайны, потому что им и не нужно быть такими . Для большинства приложений, например, компьютерных игр, требуется так мало случайных чисел, что их неслучайность вряд ли будет заметна. Однако, криптография очень чувствительна к свойствам генераторов сл у-чайных чисел. Примените плохой генератор, и у вас появятся таинственные корреляции и странные результаты [1231, 1238]. Если ваша безопасность зависит от генератора случайных чисел, таинственные корреляции и странные результаты являются абсолютно не тем, чего бы вы желали добиться. Проблема в том, что генератор случайных чисел не создает случайной последовательности . Он, возможно, не выдает ничего даже отдаленно напоминающего случайную последовательность . Конечно, невозможно создавать на компьютере что-то по настоящему случайное. Дональд Кнут приписывал фон Нейману следующие слова: "Каждый, кто занимается арифметическими методами получения случайных чисел, определенно грешит " [863]. Компьютеры - это детерминированные бестии: закладывается известный материал, выполняются полностью предсказуемые действия, и что-то отличное выползает с другого конца. Подача одного и того же на вход в двух различных случаях приведет к одному и тому же результату . Заложите одинаковые исходные данные в два 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 |