Что такое блочный шифр
Что такое блочный шифр
Блочный шифр — разновидность симметричного шифра. Особенностью блочного шифра является обработка блока нескольких байт за одну итерацию (как правило 8 или 16). Блочные криптосистемы разбивают текст сообщения на отдельные блоки и затем осуществляют преобразование этих блоков с использованием ключа.
Преобразование должно использовать следующие принципы:
К достоинствам блочных шифров относят похожесть процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и дешифрования.
Для любого ключа K, EK является биективной функцией (перестановкой) на множестве n-битных блоков.
Размер блока n — это фиксированный параметр блочного шифра, обычно равный 64 или 128 битам, хотя некоторые шифры допускают несколько различных значений. Длина 64 бита была приемлема до середины 90-х годов, затем использовалась длина 128 бит, что примерно соответствует размеру машинного слова и позволяет эффективную реализацию на большинстве распространнённых вычислительных платформах. Различные схемы шифрования позволяют зашифровывать открытый текст произвольной длины. Каждая имеет определенные характеристики: вероятность ошибки, простота доступа, уязвимость к атакам. Типичными размера ключа являются 40, 56, 64, 80, 128, 192 и 256 бит. В 2006 г. 80-битный ключ способен был предотвратить атаку грубой силой.
Режим шифрования — метод применения блочного шифра, позволяющий преобразовать последовательность блоков открытых данных в последовательность блоков зашифрованных данных. При этом для шифрации одного блока могут использоваться данные другого блока. Обычно режимы шифрования используются для модификации процесса шифрования так, чтобы результат шифрования каждого блока был уникальным вне зависимости от шифруемых данных и не позволял сделать какие-либо выводы об их структуре. Это обусловлено, прежде всего, тем, что блочные шифры шифруют данные блоками фиксированного размера, и поэтому существует потенциальная возможность утечки информации о повторяющихся частях данных шифруемых на одном и том же ключе. Существует несколько стандартных режимов шифрования.
Сообщение делится на блоки. Каждый блок шифруется отдельно (независимо от других и на одном ключе). Этот режим называется режимом электронной кодовой книги, так как существует возможность создать книгу, в которой каждому блоку открытого текста будет сопоставлен блок зашифрованного текста. Однако создать книгу — нетривиальная задача. Если размер блока равен x бит, то в книге будет содержаться 2 x записей, и каждая книга будет соответствовать одному ключу.
Данный метод в ГОСТ 28147—89 называется «режим простой замены».
Зашифрование может быть описано следующим образом:
Блочный шифр
Блочный шифр — разновидность симметричного шифра. Особенностью блочного шифра является обработка блока нескольких байт за одну итерацию (как правило 8 или 16).Блочные криптосистемы разбивают текст сообщения на отдельные блоки и затем осуществляют преобразование этих блоков с использованием ключа.
Преобразование должно использовать следующие принципы:
Содержание
Основная идея [ ]
Для любого ключа K, EK — перестановка набора входных блоков. Ключ выбирается из возможных перестановок.
Размер блока n — это фиксированный параметр блочного шифра, обычно равный 64 или 128 битам, хотя некоторые шифры допускают несколько различных значений. Длина 64 бита была приемлема до середины 90-х годов, затем использовалась длина 128 бит и более. Различные схемы шифрования позволяют зашифровывать открытый текст произвольной длины. Каждая имеет определенные характеристики: вероятность ошибки, простота доступа, уязвимость к атакам. Типичными размера ключа являются 40, 56, 64, 80, 128, 192 и 256 бит. В 2006 г. 80-битный ключ способен был предотвратить атаку грубой силой.
Режимы работы блочного шифра [ ]
Аналогичная проблема возникает при формировании и преобразовании «хвостового» блока данных. Так как данные могут быть любой длины, а блочный шифр требует данные кратные длине блока, то «хвостовой» блок данных зачастую приходится искусственно дополнять до требуемого размера. При этом, например, заполнение хвоста одинаковыми символами облегчает атаку по известному открытому тексту.
Принципиальным решением описанных проблем является гаммирование данных и использование контекстно-зависимых режимов шифрования.
См. также [ ]
Ссылки [ ]
Замок | Это незавершённая статья по криптографии. Вы можете помочь проекту, исправив и дополнив её. |
cs:Bloková šifra de:Blockverschlüsselung en:Block cipher es:Cifrado por bloques fr:Chiffrement par bloc he:צופן בלוקים it:Cifratura a blocchi ja:ブロック暗号 nl:Blokvercijfering no:Blokkchiffer pl:Szyfr blokowy ro:Cifru pe blocuri simple:Block cipher uk:Блочні алгоритми шифрування vi:Mã hóa khối
Блочный шифр
В отличие от шифроблокнота, где длина ключа равна длине сообщения, блочный шифр способен зашифровать одним ключом одно или несколько сообщений, суммарной длиной больше, чем длина ключа. Передача малого по сравнению с сообщением ключа по зашифрованному каналу — задача значительно более простая и быстрая, чем передача самого сообщения или ключа такой же длины, что делает возможным его повседневное использование. Однако, при этом шифр перестает быть невзламываемым. От поточных шифров работа блочного отличается обработкой бит группами, а не потоком. При этом блочные шифры надёжней, но медленее поточных. [3] Симметричные системы обладают преимуществом над асимметричными в скорости шифрования, что позволяет им оставаться актуальными, несмотря на более слабый механизм передачи ключа (получатель должен знать секретный ключ, который необходимо передать по уже налаженному зашифрованному каналу. В то же время, в асимметричных шифрах открытый ключ, необходимый для шифрования, могут знать все, и нет необходимости в передачи ключа шифрования).
К достоинствам блочных шифров относят сходство процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и расшифрования. Гибкость блочных шифров позволяет использовать их для построения других криптографических примитивов: генератора псевдослучайной последовательности, поточного шифра, имитовставки и криптографических хэшей. [4]
Содержание
История
Современная модель блочных шифров основана на идее итеративных блочных шифров, предложенной в публикации 1949 года Клода Шеннона «Теория связи в секретных системах». Данная концепция позволяет достичь определенного уровня безопасности комбинированием простых в исполнении операций подстановки (англ. substitution ) и замены (англ. permutation ). [5]
До 70-х годов криптография была уделом военных и практически не существовало каких-либо публикаций. [6] Первопроходцем явился шифр «Люцифер», разработанный в 1970 году компанией IBM и основанный на SP-сети. Идея шифра заключалась в использовании комбинаций простых, а следовательно, быстро вычисляемых как аппаратно, так и программно операций. Однако, схема получилась неудачной: она была слишком громоздкой, что привело к низкой скорости шифрования в программной реализации (около 8 кбайт/с) и в аппаратной (97 кбайт/с). Стали появляться опасения, связанные со стойкостью данного алгоритма. Тем не менее, принципы, выработанные при построении «Люцифера», (SP-сеть и сеть Фейстеля, названная так в честь одного из разработчиков) легли в основу конструирования блочных шифров.
В 1973 году Национальный институт стандартов и технологий (англ. NIST ) объявил конкурс с целью разработать стандарт шифрования данных, победителем которого в 1974 году стал шифр DES (Data Encryption Standart), являющийся, фактически, улучшенной версией «Люцифер». Публикация шифра в 1977 году была основополагающей в общественном понимании современной модели блочного шифра. В то же время, она дала начало развитию криптоаналитических атак. После одобрения Американским национальным институтом стандартов в 1981 году, алгоритм долгое время использовался в гражданском секторе и даже вышел за пределы США. Однако шифр имел существенный недостаток — маленькую длину ключа, породившую множество связанных с параллельным перебором атак, и приближающаяся возможность её реализации. Отсутствие достойной защиты от атак шифра DES породило множество алгоритмов, являющихся как более сложной версией DES (3DES), так и совершенно иных схем (NewDES, FEAL, IDEA).
В 1997 году стал годом начала программы по принятию AES (Advanced Encryption Standart). Конкурс состоял из трех этапов, окончательным победителем которого стал алгоритм RIJNDAEL, разработанный бельгийцами J. Daemen и V. Rijmen. AES, как и его предшественники, также построен с использованием SP-сети.
На сегодняшний день существует множество атак, которым вынужден противостоять блочный шифр, начиная с атаки перебором, как самой тривиальной. [7]
Определение
Блочный шифр состоит из двух парных алгоритмов: шифрования и расшифрования. [8] Оба алгоритма можно представить в виде функций. Функция шифрования E (англ. encryption — шифрование) на вход получает блок данных M (англ. message — сообщение) размером n бит и ключ K (англ. key — ключ) размером k бит и на выходе отдает блок шифротекста C (англ. cipher — шифр) размером n бит:
Для любого ключа K, EK является биективной функцией (перестановкой) на множестве n-битных блоков. Функция расшифрования D (англ. decryption — расшифрование) на вход получает шифр C, ключ K и на выходе отдает M:
являясь, при этом, обратной к функции шифрования:
и
Заметим, что ключ, необходимый для шифрования и дешифрования, один и тот же — следствие симметричности блочного шифра.
Построение блочного шифра
«Проектировать блочный шифр нетрудно. Трудность состоит в проектировании блочного шифра, который не только безопасен, но также может быть легко описан и просто реализован.»
Первопроходцами в разработке блочных шифров стали сотрудники компании IBM при работе над шифром «Lucifer». [9] Они спроектировали первые основы, которые стали использоваться при разработке последующих схем. При этом следует учитывать, что новый шифр должен быть не только стойким ко всем известным видам атак, но и достаточно прост в реализации.
Итеративные блочные шифры
Большинство блочных шифров являются итеративными. Это означает, что данный шифр преобразует блоки открытого текста (англ. plaintext ) постоянной длины в блоки шифротекста (англ. ciphertext ) той же длины посредством циклически повторяющихся обратимых функций, известных как раундовые функциии. [10] Это связано с простотой и скоростью исполнения как программных, так и аппаратных реализаций. Обычно раундовые функции используют различные ключи, полученные из первоначального ключа:
,
где Ci — значение блока после i-го раунда, C0 = M — открытый текст, Ki — ключ, используемый в i-м раунде и полученный из первоначального ключа K.
Размер блока n — это фиксированный параметр блочного шифра, обычно равный 64 или 128 битам, хотя некоторые шифры допускают несколько различных значений. Длина 64 бита была приемлема до середины 90-х годов, затем использовалась длина 128 бит, что примерно соответствует размеру машинного слова и позволяет эффективную реализацию на большинстве распространённых вычислительных платформ. Различные схемы шифрования позволяют зашифровывать открытый текст произвольной длины. Каждая имеет определенные характеристики: вероятность ошибки, простота доступа, уязвимость к атакам. По состоянию на 2006 год 80-битный ключ способен был предотвратить атаку грубой силой.
SP-сети
SP-сеть (англ. substitution-permutation network, SPN ) — один из важнейших типов итеративных блочных шифров. Шифр на основе SP-сети получает на вход блок и ключ и совершает несколько чередующихся раундов, состоящих из чередующихся стадий подстановки (англ. substitution stage ) и стадий перестановки (англ. permutation stage ). [11] Для достижения безопасности достаточно одного S-блока, но такой блок будет требовать большого объёма памяти. Поэтому используются маленькие S-блоки, смешанные с P-блоками. [6] Нелинейная стадия подстановки перемешивает биты ключа с битами открытого текста, создавая конфузию Шеннона. Линейная стадия перестановки распределяет избыточность по всей структуре данных, порождая диффузию. [12] [13]
S-блок (англ. substitution box or S-box ) замещает маленький блок входных бит на другой блок выходных бит. Эта замена должна быть взаимно однозначной, чтобы гарантировать обратимость. Назначение S-блока заключается в нелинейном преобразовании, что препятствует проведению линейного криптоанализа. Одним из свойств S-блока является лавинный эффект, т.е. изменение одного бита на входе приводит к изменению всех бит на выходе. [14]
P-блок (англ. permutation box or P-box ) — перестановка всех бит: блок получает на вход вывод S-блока, меняет местами все биты и подает результат S-блоку следующего раунда. Важным качеством P-блока является возможность распределить вывод одного S-блока между входами как можно больших S-блоков.
Для каждого раунда используется свой, получаемый из первоначального, ключ. Подобный ключ называется раундовым. Он может быть получен делением первоначально ключа на равные части, так и каким-либо преобразование всего ключа.
Сеть Фейстеля
Сеть Фейстеля — это общий метод преобразования произвольной функции F в перестановку на множестве блоков. [15] Она состоит из циклически повторяющихся ячеек — раундов. Внутри каждого раунда блок открытого текста разделяется на две равные части. Раундовая функция