Сама криптография не
является высшей ступенью классификации смежных
с ней дисциплин. Наоборот, криптография
совместно с криптоанализом (целью которого
является противостояние методам криптографии)
составляют комплексную науку криптологию.
Необходимо отметить, что в
русскоязычных текстах по данному предмету
встречаются различные употребления основных
терминов, таких как "криптография",
"тайнопись" и некоторых других. Более того, и
по классификации криптоалгоритмов можно
встретить различные мнения. В связи с этим автор
не претендует на то, что его вариант
использования подобных терминов является
единственно верным.
В отношении криптоалгоритмов
существует несколько схем классификации, каждая
из которых основана на группе характерных
признаков. Таким образом, один и тот же алгоритм
"проходит" сразу по нескольким схемам,
оказываясь в каждой из них в какой-либо из
подгрупп.
Основной схемой классификации всех
криптоалгоритмов является следующая:
-
Тайнопись.
Отправитель и получатель производят над
сообщением преобразования, известные только им
двоим. Сторонним лицам неизвестен сам алгоритм
шифрования. Некоторые специалисты считают, что
тайнопись не является криптографией вообще, и
автор находит это совершенно справедливым. -
Криптография с ключом.
Алгоритм воздействия на передаваемые данные
известен всем сторонним лицам, но он зависит от
некоторого параметра "ключа", которым
обладают только отправитель и получатель.-
Симметричные криптоалгоритмы.
Для зашифровки и расшифровки сообщения
используется один и тот же блок информации (ключ). -
Асимметричные криптоалгоритмы.
Алгоритм таков, что для зашифровки сообщения
используется один ("открытый") ключ,
известный всем желающим, а для расшифровки
другой ("закрытый"), существующий только у
получателя.
-
Весь дальнейший материал будет
посвящен криптографии с ключом, так как
большинство специалистов именно по отношению к
этим криптоалгоритмам используют термин
криптография, что вполне оправдано. Так,
например, любой криптоалгоритм с ключом можно
превратить в тайнопись, просто "зашив" в
исходном коде программы некоторый фиксированный
ключ. Обратное же преобразование практически
невозможно.
В зависимости от характера
воздействий, производимых над данными, алгоритмы
подразделяются на:
-
Перестановочные
Блоки информации (байты, биты, более крупные
единицы) не изменяются сами по себе, но
изменяется их порядок следования, что делает
информацию недоступной стороннему наблюдателю. -
Подстановочные
Сами блоки информации изменяются по законам
криптоалгоритма. Подавляющее большинство
современных алгоритмов принадлежит этой группе.
Заметьте: любые криптографические
преобразования не увеличивают объем информации,
а лишь изменяют ее представление. Поэтому, если
программа шифрования значительно (более, чем на
длину заголовка) увеличивает объем выходного
файла, то в ее основе лежит неоптимальный, а
возможно и вообще некорректный криптоалгоритм.
Уменьшение объема закодированного файла
возможно только при наличии встроенного
алгоритма архивации в криптосистеме и при
условии сжимаемости информации (так, например,
архивы, музыкальные файлы формата MP3,
видеоизображения формата JPEG сжиматься более чем
на 2-4% не будут).
В зависимости от размера блока
информации криптоалгоритмы делятся на:
-
Потоковые шифры.
Единицей кодирования является один бит.
Результат кодирования не зависит от прошедшего
ранее входного потока. Схема применяется в
системах передачи потоков информации, то есть в
тех случаях, когда передача информации
начинается и заканчивается в произвольные
моменты времени и может случайно прерываться.
Наиболее распространенными предствателями
поточных шифров являются скремблеры. -
Блочные шифры
Единицей кодирования является блок из
нескольких байтов (в настоящее время 4-32).
Результат кодирования зависит от всех исходных
байтов этого блока. Схема применяется при
пакетной передаче информации и кодировании
файлов.