Алгоритмы создания цепочек
Первая задача, с которой мы столкнемся при шифровании данных криптоалгоритмом
– это данные с длиной, неравной длине 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 маска с исходным текстом |
Назад | Содержание
| Вперед
|