Классификация алгоритмов шифрования

В статье рассмотрена классификация алгоритмов шифрования и дана их краткая характеристика.
Криптографические алгоритмы классифицируются по характерным признакам. Некоторые криптоалгоритмы могут входить сразу в несколько схем, находясь в одной из ее подгрупп.
 
Все криптоалгоритмы делятся следующим образом:
  1. тайнопись;
  2. шифрование с ключом.
 

2.1. симметричные алгоритмы;

  • потоковые (на основе генератора случайных чисел, с конечным ключем, с бесконечным ключем),
  • блочные (моноалфавитные, полиалфавитные, шифры замены и перестановки)
  • составные (люцифер, DES, ГОСТ 28147, B-Crypt, IDEA, FEAL)

2.2. асимметричные алгоритмы (Diffie -Hellman, RSA, ElGamal)

При применении тайнописи, для зашифровывания и дешифрации данных проводится их конвертация, по параметрам известным только отправителю и получателю. Всем остальным параметры преобразования не разглашаются.
 
При употреблении ключей, напротив, алгоритм кодирования доступен любому лицу. А в качестве параметра шифрования выступает ключ (специальный блок данных), известный лишь отправителю с получателем.
 
Различие симметричных и ассиметричных алгоритмов так же состоит в используемых ключах. В симметричном алгоритме ключ одинаков для обеих сторон шифрования. Во втором случае применяется пара ключй, один «открытый» - известный любому лицу и необходимый для зашифровки, а второй «закрытый» - предназначенный только получателю, чтобы он мог расшифровать сообщение.
 
Алгоритмы с ключами могут быть преобразованы в тайнопись, путем фиксации в исходном коде программы стабильного ключа. В то время как перевод из тайнописи в «ключевой» алгоритм является почти не выполнимой задачей.
 
Другая схема классификации в качестве параметра использует характер воздействия на данные:
 
  • перестановка;
  • подстановка.
Когда используются такие схемы шифрования, то передаваемые данные разбиваются на блоки - байты, биты и т.д. А затем, в зависимости от алгоритма, либо меняется их порядок, без изменения самих блоков (перестановочный алгоритм), либо наоборот изменяется каждый отдельный блок (подстановочный). 
 
Большая часть используемых сегодня алгоритмов относится к подстановочным.
 
Ни один криптоалгоритм не должен увеличивать объем преобразуемых данных, он должен только изменять ее представление. Если же полученный после зашифровывания выходной файл становится значительно больше, значит в основе программы шифрации заложен не оптимизированный или возможно не корректно работающий алгоритм.
 
Если в криптосистему встроен алгоритм архивации, и присутствуют условия сжимаемости, тогда зашифрованный файл может и должен уменьшиться в объемах. 
 
В основе еще одной классификации криптоалгоритмов лежит размер блока данных, исходя из этого шифры можно разделить на:
 
  • потоковые;
  • блочные.
В потоковых алгоритмах в качестве блока для кодирования используется один бит информации. Прошедший ранее входной поток никак не влияет на конечный результат шифрования. Потоковые шифры используются в потоковых системах передачи данных, в которых передача начинается и завершается в случайные временные промежутки и та же случайно может быть прервана. Один из ярких представителей потокового алгоритма – это скремблер.
 
В блочных алгоритмах в роли блока выступает некоторое количество байтов (от 4 до 32), от которых и будет зависеть конечный результат шифрования. Блочные шифры используются в пакетных передачах и кодированиях данных.
 
Современные схемы шифрования, в отличии от их предков, уже не могут быть выполнены человеком самостоятельно, ввиду их повышенной сложности. Поэтому для их работы применяются вычислительные устройства и различное аппаратное обеспечение. Благодаря достаточно доступным и разнообразным криптопакетам, в большей части приложений шифрование выполняется при помощи программного беспечения.
 
Работая по отдельности, симметричные схемы будут выполняться скорее ассиметричных. Однако, в практическом применении они чаще всего применяются вместе. Схемой с открытым ключом генерируется секретный ключ, необходимый для дешифрации полученных данных. 
 
Читать дальше: