232?(232–1), доказательство этого факта, весьма несложное, получите сами.
Первая формула из двух реализуется за одну команду, вторая, несмотря на ее
кажущуюся громоздкость, за две команды на всех современных 32-разрядных
процессорах.
алгоритма шифрования в режиме гаммирования приведена на рисунке 4, ниже
изложены пояснения к схеме:
0.Определяет исходные данные для основного шага криптопреобразования:
Tо(ш) – массив открытых (зашифрованных) данных произвольного размера,
подвергаемый процедуре зашифрования (расшифрования), по ходу процедуры
массив подвергается преобразованию порциями по 64 бита;
S– синхропосылка, 64-битный элемент данных, необходимый для инициализации
генератора гаммы;
1.Начальное преобразование синхропосылки, выполняемое для ее "рандомизации",
то есть для устранения статистических закономерностей, присутствующих в ней,
результат используется как начальное заполнение РГПЧ;
2.Один шаг работы РГПЧ, реализующий его рекуррентный алгоритм. В ходе данного
шага старшая (S1) и младшая (S0) части последовательности данных
вырабатываются независимо друг от друга;
3.Гаммирование. Очередной 64-битный элемент, выработанный РГПЧ, подвергается
процедуре зашифрования по циклу 32–З, результат используется как элемент гаммы
для зашифрования (расшифрования) очередного блока открытых (зашифрованных)
данных того же размера.
4.Результат работы алгоритма – зашифрованный (расшифрованный) массив данных.
Ниже перечислены особенности гаммирования как режима шифрования.
1. Одинаковые блоки в открытом массиве данных дадут при зашифровании
различные блоки шифротекста, что позволит скрыть факт их идентичности.
2. Поскольку наложение гаммы выполняется побитно, шифрование неполного
блока данных легко выполнимо как шифрование битов этого неполного блока, для
чего используется соответствующие биты блока гаммы . Так, для зашифрования
неполного блока в 1 бит можно использовать любой бит из блока гаммы.
3. Синхропосылка, использованная при зашифровании, каким-то образом
должна быть передана для использования при расшифровании. Это может быть
достигнуто следующими путями:
хранить или передавать синхропосылку вместе с зашифрованным массивом данных,
что приведет к увеличению размера массива данных при зашифровании на размер
синхропосылки, то есть на 8 байт;
использовать предопределенное значение синхропосылки или вырабатывать ее
синхронно источником и приемником по определенному закону, в этом случае
изменение размера передаваемого или хранимого массива данных отсутствует;
Оба способа дополняют друг друга, и в тех редких случаях, где не работает
первый, наиболее употребительный из них, может быть использован второй, более
экзотический. Второйспособ имеет гораздо меньшее применение, поскольку сделать
синхропосылку предопределенной можно только в том случае, если на данном
комплекте ключевой информации шифруется заведомо не более одного массива
данных, что бывает в редких случаях. Генерировать синхропосылку синхронно у
источника и получателя массива данных также не всегда представляется
возможным, поскольку требует жесткой привязки к чему-либо в системе. Так,
здравая на первый взгляд идея использовать в качестве синхропосылки в системе
передачи зашифрованных сообщений номер передаваемого сообщения не подходит,
поскольку сообщение может потеряться и не дойти до адресата, в этом случае
произойдет десинхронизация систем шифрования источника и приемника. Поэтому в
рассмотренном случае нет альтернативы передаче синхропосылки вместе с
зашифрованным сообщением.
С другой стороны, можно привести и обратный пример. Допустим, шифрование
данных используется для защиты информации на диске, и реализовано оно на
низком уровне, для обеспечения независимого доступа данные шифруются по
секторам. В этом случае невозможно хранить синхропосылку вместе с
зашифрованными данными, поскольку размер сектора нельзя изменить, однако ее
можно вычислять как некоторую функцию от номера считывающей головки диска,
номера дорожки (цилиндра) и номера сектора на дорожке. В этом случае
синхропосылка привязывается к положению сектора на диске, которое вряд ли
может измениться без переформатирования диска, то есть без уничтожения данных
на нем.
Режим гаммирования имеет еще одну интересную особенность. В этом режиме биты
массива данных шифруются независимо друг от друга. Таким образом, каждый бит
шифротекста зависит от соответствующего бита открытого текста и, естественно,
порядкового номера бита в массиве: . Из этого вытекает, что изменение бита
шифротекста на противоположное значение приведет к аналогичному изменению бита
открытого текста на противоположный:
, где обозначает инвертированное по отношению к t значение бита ( ).
Данное свойство дает злоумышленнику возможность воздействуя на биты
шифротекста вносить предсказуемые и даже целенаправленные изменения в
соответствующий открытый текст, получаемый после его расшифрования, не обладая
при этом секретным ключом. Это иллюстрирует хорошо известный в криптологии
факт, что "секретность и аутентичность суть различные свойства шифров". Иными
словами, свойства шифров обеспечивать защиту от несанкционированного
ознакомления с содержимым сообщения и от несанкционированного внесения
изменений в сообщение являются независимыми и лишь в отдельных случаях могут
пересекаться. Сказанное означает, что существуют криптографические алгоритмы,
обеспечивающие определенную секретность зашифрованных данных и при этом никак
не защищающие от внесения изменений и наоборот, обеспечивающие аутентичность
данных и никак не ограничивающие возможность ознакомления с ними. По этой
причине рассматриваемое свойство режима гаммирования не должно рассматриваться
как его недостаток.
Гаммирование с обратной связью.
Данный режим очень похож на режим гаммирования и отличается от него только
способом выработки элементов гаммы – очередной элемент гаммы вырабатывается
как результат преобразования по циклу 32-З предыдущего блока зашифрованных
данных, а для зашифрования первого блока массива данных элемент гаммы
вырабатывается как результат преобразования по тому же циклу синхропосылки.
Этим достигается зацепление блоков – каждый блок шифротекста в этом режиме
зависит от соответствующего и всех предыдущих блоков открытого текста. Поэтому
данный режим иногда называется гаммированием с зацеплением блоков. На
стойкость шифра факт зацепления блоков не оказывает никакого влияния.
Схема алгоритмов за- и расшифрования в режиме гаммирования с обратной связью
приведена на рисунке 5 и ввиду своей простоты в комментариях не нуждается.
Шифрование в режиме гаммирования с обратной связью обладает теми же
особенностями, что и шифрование в режиме обычного гаммирования, за исключением
влияния искажений шифротекста на соответствующий открытый текст. Для сравнения
запишем функции расшифрования блока для обоих упомянутых режимов:
, гаммирование;
, гаммирование с обратной связью;
Если в режиме обычного гаммирования изменения в определенных битах шифротекста
влияют только на соответствующие биты открытого текста, то в режиме
гаммирования с обратной связью картина несколько сложнее. Как видно из
соответствующего уравнения, при расшифровании блока данных в режиме
гаммирования с обратной связью, блок открытых данных зависит от
соответствующего и предыдущего блоков зашифрованных данных. Поэтому, если
внести искажения в зашифрованный блок, то после расшифрования искаженными
окажутся два блока открытых данных – соответствующий и следующий за ним,
причем искажения в первом случае будут носить тот же характер, что и в режиме
гаммирования, а во втором случае – как в режиме простой замены. Другими
словами, в соответствующем блоке открытых данных искаженными окажутся те же
самые биты, что и в блоке шифрованных данных, а в следующем блоке открытых
данных все биты независимо друг от друга с вероятностью 1/2 изменят свои
значения.
Выработка имитовставки к массиву данных.
В предыдущих разделах мы обсудили влияние искажения шифрованных данных на
соответствующие открытые данные. Мы установили, что при расшифровании в режиме
простой замены соответствующий блок открытых данных оказывается искаженным
непредсказуемым образом, а при расшифровании блока в режиме гаммирования
изменения предсказуемы. В режиме гаммирования с обратной связью искаженными
оказываются два блока, один предсказуемым, а другой непредсказуемым образом.
Значит ли это, что с точки зрения защиты от навязывания ложных данных режим
гаммирования является плохим, а режимы простой замены и гаммирования с
обратной связью хорошими? Ни в коем случае. При анализе данной ситуации
необходимо учесть то, что непредсказуемые изменения в расшифрованном блоке
данных могут быть обнаружены только в случае избыточности этих самых данных,
причем чем больше степень избыточности, тем вероятнее обнаружение искажения.
Очень большая избыточность имеет место, например, для текстов на естественных
и искусственных языках, в этом случае факт искажения обнаруживается
практически неизбежно. Однако в других случаях, например, при искажении сжатых
звуковых образов, мы получим просто другой образ, который сможет воспринять
наше ухо. Искажение в этом случае останется необнаруженным, если, конечно, нет
априорной информации о характере звука. Вывод здесь такой: поскольку