Основы криптографии
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?еделенной предусмотрительности. Он мог бы послать ключ с секретным курьером, но для этого нужно время. Криптография с открытыми ключами все упрощает. A может отправить B секретное сообщение без каких-либо предварительных действий. У Е, подслушивающему абсолютно все, есть открытый ключ B и сообщение, зашифрованное этим ключом, но она не сможет получить ни закрытый ключ B, ни текст сообщения.
Обычно целая сеть пользователей согласовывает используемую криптосистему. У каждого из них есть открытый и закрытый ключ, открытые ключи помещаются в общедоступной базе данных . Теперь протокол выглядит еще проще:
- A извлекает открытый ключ B из базы данных.
- A шифрует свое сообщение с помощью открытого ключа B и посылает его B.
- B расшифровывает сообщение А с помощью своего закрытого ключа.
В первом протоколе B должен был послать А ее открытый ключ прежде, чем она могла отправить ему сообщение. Второй протокол больше похож на обычную почту. B не участвует в протоколе до тех пор, пока он не начнет читать сообщение. Достаточно хорошим примером использования системы с открытым ключом является популярная система RSA.
Цифровые подписи
Рукописные подписи издавна используются как доказательство авторства документа или, по крайней мере, согласия с ним. Что же так притягательно в подписи?
- Подпись достоверна. Она убеждает получателя документа в том, что подписавший сознательно подписал документ.
- Подпись неподдельна. Она доказывает, что именно подписавший, и никто иной, сознательно подписал документ.
- Подпись не может быть использована повторно. Она является частью документа, жулик не сможет перенести подпись на другой документ.
- Подписанный документ нельзя изменить. После того, как документ подписан, его невозможно изменить.
- От подписи не возможно отречься. Подпись и документ материальны. Подписавший не сможет впоследствии утверждать, что он не подписывал документ.
В действительности, ни одно из этих утверждений не является полностью справедливым . Подписи можно подделать, свести с одного листа бумаги на другой, документы могут быть изменены после подписания.
Хотелось бы реализовать что-нибудь подобное и на компьютерах, но есть ряд проблем . Во первых, компьютерные файлы скопировать не просто, а очень просто. Даже если подпись человека трудно подделать (например, графическое изображение рукописной подписи), можно легко вырезать правильную подпись из одного документа и вставить в другой. Простое наличие такой подписи ничего не означает. Во вторых, компьютерные файлы очень легко можно изменить после того, как они подписаны, не оставляя ни малейшего следа изменения .
Подпись документа с помощью симметричных криптосистем и посредника
A хочет подписать цифровое сообщение и отправить его B. Она может это сделать с помощью C и симметричной криптосистемы.
С -посредник, которому доверяют. Он может связываться и с А, и с B (и со всеми другими желающими подписывать цифровые документы). Он выдает секретный ключ, КА,- А и другой секретный ключ, Кв, - B. Эти ключи определяются задолго до начала действия протокола и могут быть использованы многократно для многих подписей.
- A шифрует свое сообщение B ключом КА и посылает его С.
- С, зная ключ КА, расшифровывает сообщение.
- С добавляет к расшифрованному сообщению утверждение, что он получил это сообщение от А, и шифрует это новое сообщение ключом Кв.
- С посылает новое сообщение B.
- B расшифровывает сообщение ключом Кв. Он может прочитать и сообщение А и подтверждение С, что сообщение отправлено именно A.
Откуда С узнает, что сообщение пришло именно от A, а не от какого-то самозванца ? Он делает этот вывод из шифрования сообщения.
Также ли это хорошо, как подпись на бумаге? Посмотрим на требуемые свойства:
- Эта подпись достоверна. С - это заслуживающий доверия посредник, и С знает, что сообщение получено от A. Подтверждение С служит доказательством для B.
- Эта подпись неподдельна. Только A (и С, но ему все верят) знает КА, поэтому только A могла послать С сообщение, зашифрованное ключом КА. Если кто-нибудь попытается выдать себя за А, С сразу заметит это на этапе (2) и не заверит подлинность.
- Эту подпись нельзя использовать повторно. Если B попытается взять подтверждение С и присоединить его к другому сообщению, A закричит "Караул!" Посредник (С или кто-то совсем другой, имеющий доступ к той же информации) попросит B предъявить его сообщение и шифрованное сообщение A. Затем посредник зашифрует сообщение ключом КА и увидит, что оно не соответствует шифрованному сообщению, переданному B. B, конечно же, не сможет создать правильное шифрованное сообщение, потому что он не знает ключа КА.
- Подписанный документ нельзя изменить. Если B попытается, получив документ, изменить его, С обнаружит мошенничество уже описанным способом.
- От подписи невозможно отказаться. Если впоследствии A заявит, что он никогда не посылал сообщение, то подтверждение С докажет обратное.
Если B захочет показать D документ, подписанный А, он не сможет раскрыть ей свой секретный ключ. Ему придется снова обратиться к С:
- B берет сообщение и утверждение С, что сообщение получено от A, шифрует их ключом Кв и посылает обратно С.
- С расшифровывает полученный пакет с помощью ключа Кв.
- С проверяет свою базу данных и подтверждает, что отправителем оригинального сообщения была A.
- С шифрует полученный от B пакет ключом Kc, который он выделил дл