[an error occurred while processing this directive]
Первая задача, с которой мы столкнемся при шифровании данных криптоалгоритмом это данные с длиной, неравной длине 1 блока криптоалгоритма. Эта ситуация будет иметь место практически всегда.
Первый вопрос:
Что можно сделать, если мы хотим зашифровать 24 байта текста,
если используется криптоалгоритм с длиной блока 8 байт?
Последовательно зашифровать три раза по 8 байт и сложить их
в выходной файл так, как они лежали в исходном.
А если данных много и некоторые блоки по 8 байт повторяются,
это значит, что в выходном файле эти же блоки будут зашифрованы одинаково
- это очень плохо.
Второй вопрос :
А что если данных не 24, а 21 байт.
Не шифровать последние 5 байт или чем-то заполнять еще 3 байта,
а потом при дешифровании их выкидывать.
Первый вариант вообще никуда не годится, а второй применяется,
но чем заполнять ?
Для решения этих проблем и были введены в криптосистемы алгоритмы создания цепочек (англ. chaining modes). Самый простой метод мы уже в принципе описали. Это метод ECB (Electronic Code Book). Шифруемый файл временно разделяется на блоки, равные блокам алгоритма, каждый из них шифруется независимо, а затем из зашифрованных пакетов данных компонуется в той же последовательности файл, который отныне надежно защищен криптоалгоритмом. Название алгоритм получил из-за того, что в силу своей простоты он широко применялся в простых портативных устройствах для шифрования электронных шифрокнижках. Схема данного метода приведена на рис.1.
Рис.1.
В том случае, когда длина пересылаемого пакета информации не кратна длине блока криптоалгоритма возможно расширение последнего (неполного) блока байт до требуемой длины либо с помощью генератора псевдослучайных чисел, что не всегда безопасно в отношении криптостойкости, либо с помощью хеш-суммы передаваемого текста. Второй вариант более предпочтителен, так как хеш-сумма обладает лучшими статистическими показателями, а ее априорная известность стороннему лицу равносильна знанию им всего передаваемого текста.
Указанным выше недостатком этой схемы является то, что при повторе в исходном тексте одинаковых символов в течение более, чем 2*N байт (где N размер блока криптоалгоритма), в выходном файле будут присутствовать одинаковые зашифрованные блоки. Поэтому, для более "мощной" защиты больших пакетов информации с помощью блочных шифров применяются несколько обратимых схем "создания цепочек". Все они почти равнозначны по криптостойкости, каждая имеет некоторые преимущества и недостатки, зависящие от вида исходного текста.
Все схемы создания цепочек основаны на идее зависимости результирующего зашифровываемого блока от предыдущих, либо от позиции его в исходном файле. Это достигается с помощью блока "памяти" пакета информации длины, равной длине блока алгоритма. Блок памяти (к нему применяют термин IV англ. Initial Vector) вычисляется по определенному принципу из всех прошедших шифрование блоков, а затем накладывается с помощью какой-либо обратимой функции (обычно XOR) на обрабатываемый текст на одной из стадий шифрования. В процессе раскодирования на приемной стороне операция создания IV повторяется на основе принятого и расшифрованного текста, вследствие чего алгоритмы создания цепочек полностью обратимы.
Два наиболее распространенных алгоритма создания цепочек CBC и CFB. Их структура приведена на рис.2 и рис.3. Метод CBC получил название от английской аббревиатуры Cipher Block Chaining объединение в цепочку блоков шифра, а метод CFB от Cipher FeedBack обратная связь по шифроблоку.
Рис.2.
Рис.3.
Еще один метод OFB (англ. Output FeedBack обратная связь по выходу) имеет несколько иную структуру (она изображена на рис.4.) : в нем значение накладываемое на шифруемый блок не зависит от предыдущих блоков, а только от позиции шифруемого блока (в этом смысле он полностью соответствует скремблерам), и из-за этого он не распространяет помехи на последующие блоки. Очевидно, что все алгоритмы создания цепочек однозначно восстановимы. Практические алгоритмы создания и декодирования цепочек будут разработаны на практическом занятии.
Рис.4.
Сравним характеристики методов создания цепочек в виде таблицы.
Метод | Шифрование блока зависит от | Искажение одного бита при передаче | Кодируется ли некратное блоку число байт без дополнения? | На выход криптосистемы поступает |
---|---|---|---|---|
Назад | Содержание | Вперед
[an error occurred while processing this directive]