Асимметричное шифрование
Для решения вышеперечисленных проблем симметричного шифрования предназначены системы с асимметричным шифрованием, или шифрованием с открытым ключом, которые используют свойства функций с секретом, разработанных У. Диффи и М. Хеллманом.
Рис. 3. Схема распределения ключей для асимметричной системы шифрования
Эти системы характеризуются наличием у каждого абонента двух ключей: открытого и закрытого (секретного). Доставка секретных ключей происходит по секретным (закрытым) каналам, доставка открытых ключей - по открытым каналам.
При этом открытый ключ передается всем участникам секретных переговоров и используется для шифрования. Для дешифрования используется личный, секретный ключ. Таким образом, решаются две проблемы: нет нужды в секретной доставке ключа (так как при помощи открытого ключа нельзя расшифровать сообщения, для этого же открытого ключа зашифрованные, и, следовательно, перехватывать открытый ключ нет смысла); отсутствует также квадратичная зависимость числа ключей от числа пользователей - для n пользователей требуется 2n ключей.
Первым шифром, разработанным на принципах асимметричного шифрования, является шифр RSA, названный по первым буквам фамилий его изобретателей: Рона Райвеста, Ади Шамира и Леонарда Элдемана - основателей компании RSA Data Secutity.
Другим шифром, использующим асимметричное шифрование, является DSS (Digital Signature Standard). DSS предназначен для создания цифровой подписи, но не для закрытия информации.
Шифрование в целях аутентификации
Примером шифрования в целях аутентификации (установлении подлинности автора и документа) является шифрование с помощью односторонней функции (one-way), по-другому именуемой хэш-функцией (hash function) или дайджест-функцией (digest function).
Проверка целостности данных
Хэш-функция, примененная к шифруемым данным, дает в результате значение (дайджест), состоящее из фиксированного небольшого числа байт. Дайджест передается вместе с исходным сообщением. Получатель сообщения, зная, какая хэш-функция была применена для получения дайджеста, заново вычисляет дайджест, используя незашифрованную часть сообщения. Если значение полученного и вычисленного дайджестов совпадают, значит, содержимое сообщения не было подвергнуто никаким изменениям. Значение дайджеста не дает возможности восстановить исходное сообщение, но зато позволяет проверить целостность данных.
Хэш-функции должны удовлетворять нескольким условиям. Во-первых, по дайджесту, вычисленному с помощью данной функции, не должно быть возможным вычисление исходного сообщения. Во-вторых, должна отсутствовать возможность существования двух разных сообщений, для которых с помощью данной функции могли быть вычислены одинаковые дайджесты.
Наиболее популярными хэш-функциями являются MD2 (RFC 1321), MD4 (RFC 1321) и MD5 (RFC 1319). А также алгоритм вычисления дайджеста сообщений SHA (Secure Hash Algorithm).
Цифровая подпись
Цифровая подпись (digital signature) - это способ проверки целостности содержимого сообщения и подлинности его отправителя. Она реализуется при помощи асимметричных шифров и хэш-функций. Цифровая подпись основана на свойствах асимметричных шифров, а также на взаимосвязанности содержимого сообщений, самой подписи и пары ключей: изменение одного из этих элементов сделает невозможным подтверждение подлинности подписи.
Отправитель вычисляет дайджест сообщения, шифрует его своим ключом и отправляет вместе с письмом. Получатель, приняв сообщение, расшифровывает дайджест открытым ключом отправителя. Кроме того, получатель сам вычисляет дайджест принятого сообщения и сравнивает его с расшифрованным. Если два дайджеста совпадают, то подпись является подлинной. В противном случае либо изменено содержание сообщения, либо подпись подделана.
Шифр RSA также используют для выработки и проверки цифровой подписи. Чтобы подписать сообщение, отправитель шифрует его своим личным ключом и отправляет подпись вместе с сообщением. Получатель расшифровывает подпись открытым ключом отправителя и сравнивает результат с принятым сообщением. Если сообщение подлинное, то полученное расшифрованное и исходное сообщение должны совпадать.
