Кто владеет информацией — тот владеет миром.
Ротшильд
Пока другие только пытаются понять законы рынка, используй их!
Терморектальный криптоанализTM
| |
Криптографические алгоритмы
Для начала обсудим, какие же типы криптографических алгоритмов используются для защиты информации. Криптоалгоритмы, прежде всего, делятся на три категории:
бесключевые алгоритмы, которые не используют каких-либо ключей в процессе криптографических преобразований;
одноключевые алгоритмы, использующие в своих вычислениях некий секретный ключ;
двухключевые алгоритмы, в которых на различных этапах вычислений применяются два вида ключей: секретные и открытые.
Рассмотрим вкратце основные типы криптоалгоритмов.
Хэш-функции. Выполняют «свертку» данных переменной длины в последовательность фиксированного размера— фактически это контрольное суммирование данных, которое может выполняться как с участием некоего ключа, так и без него. Такие функции имеют весьма широкое применение в области защиты компьютерной информации, например:
для подтверждения целостности любых данных в тех случаях, когда использование электронной подписи невозможно (например, из-за большой ресурсоемкости) или является избыточным;
в самих схемах электронной подписи — подписывается обычно хэш данных, а не все данные целиком;
в различных схемах аутентификации пользователей.
Генераторы случайных чисел. Случайные числа необходимы, в основном, для генерации секретных ключей шифрования, которые, в идеале, должны быть абсолютно случайными. Нужны они и для вычисления электронной цифровой подписи, и для работы многих алгоритмов аутентификации.
Алгоритмы симметричного шифрования— алгоритмы шифрования, в которых для зашифровывания и расшифровывания используется один и тот же ключ, или ключ расшифровывания легко вычисляется из ключа зашифровывания и наоборот.
Симметричное шифрование бывает двух видов: блочное и потоковое.
Блочное шифрование — в этом случае информация разбивается на блоки фиксированной длины (например, 64 или 128 битов), после чего эти блоки поочередно шифруются. Причем в различных алгоритмах шифрования или даже в разных режимах работы одного и того же алгоритма блоки могут шифроваться независимо друг от друга или «со сцеплением» — когда результат зашифровывания текущего блока данных зависит от значения предыдущего блока или от результата зашифровывания предыдущего блока. Данная книга посвящена описанию криптоалгоритмов именно этой, наиболее обширной, категории алгоритмов шифрования.
Потоковое шифрование — необходимо, прежде всего, в тех случаях, когда информацию невозможно разбить на блоки — скажем, некий поток данных, каждый символ которых должен быть зашифрован и отправлен куда-либо, не дожидаясь остальных данных, достаточных для формирования блока. Поэтому алгоритмы потокового шифрования шифруют данные побитно или посимвольно. Хотя стоит сказать, что некоторые классификации не разделяют блочное и потоковое шифрование, считая, что потоковое шифрование — это шифрование блоков единичной длины.
Генераторы псевдослучайных чисел. Не всегда возможно получение абсолютно случайных чисел — для этого необходимо наличие качественных аппаратных генераторов. Однако на основе алгоритмов симметричного шифрования можно построить очень качественный генератор псевдослучайных чисел.
Алгоритмы аутентификации. Позволяют проверить, что пользователь (или удаленный компьютер) действительно является тем, за кого себя выдает. Простейшая схема аутентификации — парольная — не требует наличия каких-либо криптографических ключей, но доказанно является слабой. А с помощью секретного ключа можно построить заметно более сильные схемы аутентификации. Пример аутентификации пользователя сервером:
Этап 1. Сервер генерирует случайное число
Этап 2. и отправляет его пользователю.
Этап 3. Пользователь зашифровывает полученное число секретным ключом и отправляет результат серверу.
Этап 4. Сервер расшифровывает полученные данные таким же секретным ключом 0
Этап 5. и сравнивает с исходным числом.
Равенство чисел означает, что пользователь обладает требуемым секретным ключом, т. е. ему удалось доказать свою легитимность.
Алгоритмы асимметричного шифрования. Применяют два вида ключей: открытый ключ для зашифровывания информации и секретный — для расшифровывания. Секретный и открытый ключи связаны между собой достаточно сложным соотношением, главное в котором — легкость вычисления открытого ключа из секретного и невозможность (за ограниченное время при реальных ресурсах) вычисления секретного ключа из открытого при достаточно большой размерности операндов. Любая информация, зашифрованная общедоступным открытым ключом, может быть расшифрована только обладателем секретного ключа, из которого был вычислен данный открытый:
Этап 1. Пользователь В зашифровывает сообщение на открытом ключе пользователя А (который когда-либо передал его пользователю В).
Этап 2. Пользователь А расшифровывает сообщение своим секретным ключом.
Алгоритмы электронной подписи. Используют секретный ключ для вычисления электронной цифровой подписи данных, а вычисляемый из него открытый — для ее проверки.
Как и асимметричное шифрование, это двухключевые алгоритмы с таким же простым вычислением открытого ключа из секретного и практической невозможностью обратного вычисления. Однако назначение ключей является совершенно другим:
секретный ключ используется для вычисления электронной подписи;
открытый ключ необходим для ее проверки.
При соблюдении безопасного хранения секретного ключа, никто, кроме его владельца, не в состоянии вычислить верную электронную подпись какого-либо электронного документа.
По материалам книги Сергея Панасенко «Алгоритмы шифрования»
|