В отношении криптоалгоритмов существует несколько схем классификации, каждая
из которых основана на группе характерных признаков. Таким образом, один и тот
же алгоритм «проходит» сразу по нескольким схемам, оказываясь в каждой из них в
какой-либо из подгрупп.
Основной схемой классификации всех криптоалгоритмов является следующая:
- Тайнопись. Отправитель и получатель производят над
сообщением преобразования, известные только им двоим. Сторонним лицам
неизвестен сам алгоритм шифрования.
- Криптография с ключом. Алгоритм воздействия на передаваемые данные
известен всем сторонним лицам, но он зависит от некоторого параметра — «ключа»,
которым обладают только отправитель и получатель.
- Симметричные криптоалгоритмы. Для зашифровки и расшифровки сообщения
используется один и тот же блок информации (ключ).
- Асимметричные криптоалгоритмы. Алгоритм таков, что для зашифровки
сообщения используется один («открытый») ключ, известный всем желающим, а для
расшифровки — другой («закрытый»), существующий только у получателя.
Любой криптоалгоритм с ключом вы имеете возможность превратить в тайнопись,
просто «зашив» в исходном коде программы некоторый фиксированный ключ.
Обратное же преобразование практически невозможно.
В зависимости от характера воздействий, производимых над данными, алгоритмы
подразделяются на:
- Перестановочные. Блоки информации (байты, биты, более крупные единицы) не
изменяются сами по себе, но изменяется их порядок следования, что делает
информацию недоступной стороннему наблюдателю.
- Подстановочные. Сами блоки информации изменяются по законам
криптоалгоритма. Подавляющее большинство современных алгоритмов принадлежит
этой группе.
Важно: Любые криптографические преобразования не увеличивают объем
информации, а лишь изменяют ее представление. Поэтому, если программа
шифрования значительно (более, чем на длину заголовка) увеличивает объем
выходного файла, то в ее основе лежит не оптимальный, а возможно и вообще
некорректный криптоалгоритм.
Уменьшение объема закодированного файла возможно только при наличии встроенного
алгоритма архивации в криптосистеме и при условии сжимаемости информации (так,
например, архивы, музыкальные файлы формата МРЗ, видеоизображения формата JPEG
сжиматься более чем на 2-4% не будут).
В зависимости от размера блока информации криптоалгоритмы делятся на:
- Потоковые шифры. Единицей кодирования является один бит. Результат
кодирования не зависит от прошедшего ранее входного потока. Схема применяется в
системах передачи потоков информации, то есть в тех случаях, когда передача
информации начинается и заканчивается в произвольные моменты времени и может
случайно прерываться. Наиболее распространенными представителями поточных
шифров являются скремблеры.
- Блочные шифры. Единицей кодирования является блок из нескольких байтов (в
настоящее время 4-32). Результат кодирования зависит от всех исходных байтов
этого блока. Схема применяется при пакетной передаче информации и кодировании
файлов.
Метод шифровки/дешифровки называют шифром (cipher). Некоторые алгоритмы
шифрования основаны на том, что сам метод шифрования (алгоритм) является
секретным. Ныне такие методы представляют лишь исторический интерес и не имеют
практического значения. Все современные алгоритмы используют ключ для
управления шифровкой и дешифровкой; сообщение может быть успешно дешифровано,
только если известен ключ.
Ключ, используемый для дешифровки может не совпадать с ключом, используемым
для шифрования, однако в большинстве алгоритмов ключи совпадают.
Итак, алгоритмы с использованием ключа делятся на два класса: симметричные
(или алгоритмы секретным ключом) и асимметричные (или алгоритмы с открытым
ключом). Разница в том, что симметричные алгоритмы используют один и тот же
ключ для шифрования и для дешифрования (или же ключ для дешифровки просто
вычисляется по ключу шифровки). В то время как асимметричные алгоритмы
используют разные ключи, и ключ для дешифровки не может быть вычислен по ключу
шифровки.
Симметричные алгоритмы подразделяют на потоковые шифры и блочные шифры.
Потоковые позволяют шифровать информацию поби-тово, в то время как блочные
работают с некоторым набором бит данных (обычно размер блока составляет 64
бита) и шифруют этот набор как единое целое. Асимметричные шифры (также
именуемые алгоритмами с открытым ключом, или — в более общем плане —
криптографией с открытым ключом) допускают, чтобы открытый ключ был доступен
всем (скажем, опубликован в газете). Это позволяет любому зашифровать
сообщение. Однако расшифровать это сообщение сможет только нужный человек (тот,
кто владеет ключом дешифровки). Ключ для шифрования называют открытым ключом, а
ключ для дешифрования — закрытым ключом или секретным ключом.
Современные алгоритмы шифровки/дешифровки достаточно сложны и их невозможно
проводить вручную. Настоящие криптографические алгоритмы разработаны для
использования компьютерами или специальными аппаратными устройствами. В
большинстве приложений криптография производится программным обеспечением и
имеется множество доступных криптографических пакетов.
Вообще говоря, симметричные алгоритмы работают быстрее, чем асимметричные.
На практике оба типа алгоритмов часто используются вместе: алгоритм с открытым
ключом используется для того, чтобы передать случайным образом сгенерированный
секретный ключ, который затем используется для дешифровки сообщения.
Многие качественные криптографические алгоритмы доступны широко — в книжном
магазине, библиотеке, патентном бюро или в Интернет. К широко известным
симметричным алгоритмам относятся DES и IDEA, одним из лучших асимметричных алгоритмов считают RSA.
|