Симметричное шифрование, которое часто называют шифрованием с помощью секретного ключа, в основном используется для обеспечения конфиденциальности данных.
Два человека, которые хотят установить между собой конфиденциальную связь, выбирают единый математический алгоритм, который будет использоваться для шифрования и дешифрования данных. Они исходят из предположения, что алгоритм известен и другим людям, поэтому договариваются об общем ключе – секретной части алгоритма.
А
Б
В
Г
Д
Е
…
Э
Ю
Я
Г
Д
Е
Ж
З
И
…
А
Б
В
Рис. 13.1. Пример шифра Цезаря
Весьма упрощенным примером алгоритма секретного ключа является так называемый шифр Цезаря. Этот метод шифрования заключается в том, что каждая буква в тексте заменяется на другую букву, находящуюся на определенном расстоянии от нее в алфавите. При шифровании или расшифровке этот алгоритм как бы сдвигает буквы вверх и вниз по алфавиту. Величина сдвига и является ключом. Для примера – это число +3.
Ясно, что если кто-нибудь получит зашифрованное этим способом сообщение и будет знать алгоритм, он сможет легко раскрыть ключ методом простого перебора, перебирая все возможные значения сдвига, пока не получит расшифрованный текст. Обычно, чем длиннее ключ и чем сложнее алгоритм, тем труднее решить задачу расшифровки простым перебором вариантов.
Более эффективным является отечественный стандарт шифрования данных ГОСТ 28147-89. Он рекомендован к использованию для защиты любых данных, представленных в виде двоичного кода.
С методом симметричного шифрования (секретных ключей) связаны следующие проблемы:
· Необходимо часто менять секретные ключи, поскольку всегда существует риск их случайного раскрытия.
· Трудно обеспечить безопасное генерирование и распространение секретных ключей.
· Для безопасного распространения секретных ключей обычно нужно использовать методы асимметричного шифрования.
Как бы ни были сложны и надежны криптографические системы – их слабое место при практической реализации – проблема распределения ключей. Для того чтобы был возможен обмен конфиденциальной информацией между двумя субъектами, ключ должен быть сгенерирован одним из них, а затем каким-то образом опять же в конфиденциальном порядке передан другому. Т.е. в общем случае для передачи ключа опять же требуется использование какой-то криптосистемы.
Для решения этой проблемы на основе результатов, полученных классической и современной алгеброй, были предложены асимметричные криптосистемы (системы с открытым ключом).
Суть их состоит в том, что каждым участником обмена генерируются два ключа, связанные между собой по определенному правилу. Один ключ объявляется открытым (общим), а другой закрытым (частным, секретным). Открытый ключ публикуется и доступен любому, кто желает послать сообщение адресату. Секретный ключ сохраняется в тайне.
Исходный текст шифруется открытым ключом адресата и передается ему. Зашифрованный текст в принципе не может быть расшифрован тем же открытым ключом. Дешифрование сообщение возможно только с использованием закрытого ключа, который известен только самому адресату.
Таким образом, асимметричное шифрование часто называют шифрованием с помощью общего ключа, при котором используются разные, но взаимно дополняющие друг друга ключи и алгоритмы шифрования и расшифровки.
Чтобы гарантировать надежную защиту информации, к асимметричным системам с открытым ключом предъявляются два важных и очевидных требования:
· Преобразование исходного текста должно быть необратимым и исключать его восстановление на основе открытого ключа.
· Определение закрытого ключа на основе открытого также должно быть невозможным на современном технологическом уровне. При этом желательна точная нижняя оценка сложности (количества операций) раскрытия шифра.
Алгоритмы криптосистемы с открытым ключом можно использовать в трех назначениях.
1. Как самостоятельные средства защиты передаваемых и хранимых данных, в целях обеспечения конфиденциальности данных.
2. Как средства для распределения ключей, обеспечивающее получение общих ключей для совместного использования. Алгоритмы с открытым ключом более трудоемки, чем традиционные криптосистемы.
3. Средства аутентификации пользователей.
Важным аспектом асимметричного шифрования является то, что частный ключ должен храниться в тайне. Если частный ключ будет раскрыт, то человек, знающий этот ключ, сможет выступать от вашего имени, получать ваши сообщения и отправлять сообщения так, будто это делаете вы.
Механизмы генерирования пар общих/частных ключей являются достаточно сложными, но в результате получаются пары очень больших случайных чисел, одно из которых становится общим ключом, а другое – частным. Генерирование таких чисел требует больших процессорных мощностей, поскольку эти числа, а также их произведения должны отвечать строгим математическим критериям. Однако этот процесс генерирования абсолютно необходим для обеспечения уникальности каждой пары общих/частных ключей. Алгоритмы шифрования с помощью общих ключей редко используются для поддержки конфиденциальности данных из-за ограничений производительности. Вместо этого их часто используют в приложениях, где аутентификация проводится с помощью цифровой подписи и управления ключами.
Среди наиболее известных алгоритмов общих ключей можно назвать RSA, который стал мировым стандартом де-факто для открытых систем.