Алгоритмы создания цепочек
Первая задача, с которой мы столкнемся при шифровании данных криптоалгоритмом
это данные с длиной, неравной длине 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.
Сравним характеристики методов создания цепочек в виде таблицы.
Метод |
Шифрование блока зависит от |
Искажение одного бита при передаче |
Кодируется ли некратное блоку число байт без дополнения? |
На выход криптосистемы поступает |
ECB |
текущего блока |
портит весь текущий блок |
нет |
выход криптоалгоритма |
CBC |
всех предыдущих блоков |
портит весь текущий и все последующие блоки |
нет |
выход криптоалгоритма |
CFB |
всех предыдущих блоков |
портит один бит текущего блока и все последующие блоки |
да |
XOR маска с исходным текстом |
OFB |
позиции блока в файле |
портит только один бит текущего блока |
да |
XOR маска с исходным текстом |
Назад | Содержание
| Вперед