Криптография с открытым ключом
Криптография с открытым ключом основана на концепции ключевой пары. Каждая половина пары (один ключ) шифрует информацию таким образом, что ее может расшифровать только другая половина (второй ключ) Одна часть ключевой пары — личный ключ известна только ее владельцу. Другая половина — открытый ключ распространяется среди всех его корреспондентов, но связана только с этим владельцем. Ключевые пары обладают уникальной особенностью. Данные, зашифрованные любым из ключей пары, могут быть расшифрованы только другим ключом из этой пары. Другими словами, нет никакой разницы, личный или открытый ключ используется для шифрования послания, получатель сможет применить для расшифровки вторую половину пары.
Ключи можно использовать и для обеспечения конфиденциальности послания, и для аутентификации его автора. В первом случае для шифрования послания отправитель использует открытый ключ получателя, и таким образом оно останется зашифрованным, пока получатель не расшифрует его личным ключом. Во втором случае, отправитель шифрует послание личным ключом, к которому только он сам имеет доступ.
Например, чтобы отправить конфиденциальное послание, Тим сначала должен узнать открытый ключ Энн. Затем он использует этот ее
открытый ключ для шифрования послания и отправляет послание. Поскольку оно было зашифровано открытым ключом Энн, только тот, кто знает этот личный ключ (предположительно, только сама Энн), сможет его расшифровать.
Размещение открытого ключа в сети делает его легко доступным для корреспондентов, и в то же время ни коим образом не угрожает защищенности Вашего личного ключа.
Шифрование посланий открытым ключом принципиально не слишком отличается от симметричного шифрования с использованием секретного ключа, но все же имеет ряд преимуществ. Например, открытая часть ключевой пары может свободно распространяться без опасений, что это помешает использовать личный ключ. Не нужно рассылать копию своего открытого ключа всем корреспондентам; они смогут получить его на сервере вашей компании или у Вашего провайдера.
Учтите,
каждый, кто имеет копию Вашего открытого ключа, способен прочитать послание, зашифрованное Вашим личным ключом. В коммерческих транзакциях принята стандартная процедура: покупатель шифрует послания своим личным ключом, а подтверждения продавца, в свою очередь, шифруются его личным ключом. Это означает, что всякий, кто знает открытый ключ продавца сможет это подтверждение прочитать. Для сохранения в тайне информации, посланной продавцом, необходимы дополнительные шаги.
Другое преимущество криптографии с открытым ключом в том, что она позволяет аутентифицировать отправителя послания. Поскольку Вы — единственный, кто имеет возможность зашифровать какую-либо информацию Вашим личным ключом, всякий, кто использует Ваш открытый ключ для расшифровки послания, может быть уверен, что оно от Вас. Таким образом, шифрование электронного документа Вашим личным ключом схоже с подписью на бумажном документе. Но не забывайте: нет никаких гарантий, что помимо получателя Ваше послание не прочтет кто-то еще.
Использование криптографических алгоритмов с открытым ключом для шифрования посланий — это достаточно медленный вычислительный процесс, поэтому специалисты по криптографии придумали способ быстро генерировать короткое, уникальное представление Вашего послания, называемое дайджестом
послания. Дайджест можно зашифровать, а затем использовать Вашу цифровую подпись.
(Несмотря на название, дайджест послания не является его кратким изложением).
Существуют популярные, быстрые криптографические алгоритмы для генерации дайджестов послания — односторонние хеш-функции. Односторонняя хеш-функция не использует ключ. Это обычная формула для преобразования послания любой длины в одну строку символов (дайджест послания). При использовании 16-байтной хеш-функции обработанный ей текст будет иметь на выходе длину 16 байт — например, послание может быть представлено цепочкой символов CBBV235ndsAG3D67. Каждое послание образует свой случайный дайджест. Зашифруйте этот дайджест своим личным ключом, и Вы получите цифровую подпись.
В качестве примера, предположим, что продавец Тим преобразовал свое послание в дайджест, зашифровал его своим личным ключом, и отправил Энн эту цифровую подпись вместе с открытым текстом послания. После того как Энн использует открытый ключ Тима для расшифровки цифровой подписи, у нее будет копия дайджеста послания Тима. Поскольку она сумела расшифровать цифровую подпись открытым ключом Тима, то значит, Тим является ее автором. Затем Энн использует ту же самую хеш-функцию (о которой оба договорились заранее) для подсчета собственного дайджеста для открытого текста послания Тима Если полученная ей строка совпадает с той, что прислал Тим, то она может быть уверена в аутентичности цифровой подписи. А это означает не только то, что отправитель послания Тим, но также и то, что послание не было изменено.
При таком подходе единственная проблема в том, что само послание отправляется открытым текстом, и, следовательно, его конфиденциальность не сохраняется. Для шифрования открытого текста послания Вы можете дополнительно использовать симметричный алгоритм с секретным ключом. Но учтите, это приведет к дальнейшему усложнению процесса.