Шифр COS

Общие сведения

COS (Crossing Over Systems) – это семейство поточных шифров, разработанное французскими криптографами [9]. Шифры строятся с использованием нелинейных регистров сдвига и булевых функций. Разрядность внутреннего секретного ключа равна 256 бит, внешний ключ может иметь размер 128, 192 и 256 бит. Используется также несекретный сеансовый ключ длиной 32 бита.

Любой шифр семейства COS состоит из n нелинейных регистров сдвига длины L и обозначается COS(n, L). (n, L) оперирует блоками размером

Здесь .означает у, сдвинутое на 1 бит вправо, при этом в самом левом бите оказывается неизвестное значение.

Обозначим через_ самый правый бит а. Сделаем предположение о значении

•     Значениеизвестно, восстанавливаем

•     Значениеизвестно, восстанавливаем

•     Значениеизвестно, восстанавливаем

•     Значениеизвестно, восстанавливаем

•     Значениеизвестно, восстанавливаем

•     Значениеизвестно, восстанавливаем

•     Значениеизвестно, восстанавливаем

•     .. .таким образом восстанавливаем целиком

Рассмотренная атака требует наличия всего лишь 3 блоков ключевого потока ключей и знания 1 бита. Она работает с вероятностью V8.

Рассмотренная выше атака требует соответственно 64 и 65 тактов регистров сдвига на двух последовательных циклах. Однако данная атака может быть обобщена для случая, когда количества тактов на двух последовательных циклах не равны 64. (Также можно вести поиск не одного бита, а двух, трех и т. д.) Таким образом, имея известные 3 последовательных блока потока ключей, можно восстановить полностью состояние шифра, работающего в режиме II, с вероятностью 3/4.

Автор работы [2] также предложил атаку на шифр COS в режиме I. Он показал, что, зная три блока потока ключей, достаточно угадать 64 бита состояния шифра, чтобы восстановить состояние шифра полностью. Он также утверждал, что в действительности достаточно угадать менее 64 бит, так как различные составляющие состояния шифра не полностью независимы.

Шифры семейства COS оказались слабыми. Для полного вскрытия шифра требуется небольшое количество известного ключевого потока или, что по сути то же самое, открытого текста (всего три блока). При этом сложность атаки такова, что она может быть выполнена на одном ПК за нескольких секунд.

Приложение

Функция расширения ключа

unsigned char T[] =

{ 0, 183,  222,  36, 187, 162, 178,  48, 152,  199,

69, 185,  101, 145,  26, 133, 139,  24, 170,  166,

22, 241,  104,  72, 236,  33,  34,  76,  52,  193,

214, 119, 59, 51, 49, 217,  83, 126,  77, 229,

45, 23,   227, 118,  15, 100, 254,  54,  74,  150,

67, 97,   224,  28, 153, 146, 105, 252, 130,  155,

175, 17, 30, 80, 109, 110, 102, 198,  98, 60,

8, 159, 78, 84, 186,   3,  82,  71, 161, 107,

91, 212, 19, 255, 201, 85, 237, 249,  31, 163,

200, 203,  253,  32, 108,  29, 125, 225, 148,  61,

134, 223,  195,  68, 192, 138,  86, 238, 50,  189,

124, 209,  210,  65, 248,  14,  38, 129, 42,  37,

177, 115, 35, 47, 116, 220, 160,  44, 245, 239,

221, 89,   204, 142, 140,  13, 197, 213, 11,  180,

246, 234, 63, 235, 157, 79, 169,  81, 117, 251,

7, 127,    165,  55, 112, 111,  16, 158, 215, 143,

182, 99, 53, 132, 39,  93,  41, 208,  88,  9,

228, 66,   219,  10, 242,  90,  62, 202, 87,  173,

144, 43,   181, 190,  46, 240, 147,’l49, 216, 106,

58, 167, 250, 40, 113, 137, б,    5, 123,  179,

12, 95, 191, 25, 135, 56, 136, 4,  27, 154,

21, 20, 172, 114, 232, 194, 120, 171, 205, 218,

151, 73, 92, 247, 164, 184, 131, 122, 231, 207,

196, 103, 141, 128, 2, 244, 188, 230, 75, 174,

211, 1, 243, 226, 70, 168, 94, 18, 233, 121, 96, 57, 64, 176, 156, 206};

Функция обратной сВязи регистра L

unsigned char f9a[512] =

(0, 1,  1,   1,  1,   1,  1,   1,  1,   1,  0,  0, 1,  0, 0,     0,

1,  1,   1,   1,   1,   1,   1,    1,   1,   о,   0,    1,  0,   0,    1,      1,

1,  0,   0,   0,   1,   1,   1,    0,   1,   0,   0,    0,  1,   0,    1,      1,

1,  1,   0,    1,   0,   0,   0,    0,   0,   1,   0,    0,  0,   0,    1,      1,

1,  1,   0,   1,   0,   0,   1,    0,   1,   0,   1,    1,  1,   1,    0,      0,

1,  0,   1,   1,   0,   0,   0,    0,   1,   0,   0,    0,  0,   0,    0,      1,

1,  1,   1,    1,   0,   1,   1,    0,   0,   1,   0,    0,  1,   0,    1,      0,

0,  0,   0,   0,   1,   0,   0,    0,   1,   1,   0,    0,  1,   1,    0,      0,

1,  0,   0,   0,   0,   0,   0,    0,   0,   0,   1,    1,  0,   1,    1,      1,

0,  0,   0,   0,   0,   0,   0,    0,   0,   1,   1,    0,  1,   1,    0,      0,

0,  1,   1,   1,   0,   0,   0,    1,   0,   1,   1,    1,  0,   1,    0,      0,

0,  0,   1,   0,   1,   1,   1,    1,   1,   0,   1,    1,  1,   1,    0,      0,

0,  0,   1,   0,   1,   1,   0,    1,   0,   1,   0,    0,  0,   0,    1,      1,

0,  1,   0,   0,   1,   1,   1,    1,   0,   1,   1,    1,  1,   1,    1,      0,

0,  0,   0,   0,   1,   0,   0,    1,   1,   0,   1,    1,  0,   1,    0,      1,

1,  1,   1,   1,   0,   1,   1,    1,   0,   0,   1,    1,  0,   0,    1,      1,

1,  0,   0,   0,   0,   0,   0,    0,   0,   0,   1,    1,  0,   1,    1,      1,

0,  0,   0,   0,   0,   0,   0,    0,   0,   1,   1,    0,  1,   1,    0,      0,

0,  1,   1,   1,   0,   0,   0,    1,   0,   1,   1,    1,  0,   1,    0,      0,

0,  0,   1,   0,   1,   1,   1,    1,   1,   0,   1,    1,  1,   1,    0,      0,

0,  0,   1,   0,   1,   1,   0,    1,   0,   1,   0,    0,  0,   0,    1,      1,

0,  1,   0,   0,   1,   1,   1,    1,   0,   1,   1,    1,  1,   1,    1,      0,

0,  0,   0,   0,   1,   0,   0,    1,   1,   0,   1,    1,  0,   1,    0,      1,

1,  1,   1,    1,   о,   1,   1,    1,   0,   0,   1,    1,  0,   0,    1,      1,

0,   1,   1,    1,   1,   1,   1,    1,   1,   1,   0,    0,  1,   0,    0,      0,

1,    1,   1,   1,   1,   1,   1,    1,   1,   0,   0,    1,  0,   0,   1,       1, 1,      0,         0,         0,         1,         1,         1,         0,       1,    0,   0,   0,   1,   0,   1,    1, 1,     1,   0,    1,  0,   0,   0,       0,         0,         1,         0,         0,         0,         0,         1,       1, 1,     1,   0,   1,   0,   0,    1,   0,   1,   0,    1,  1,   1,   1,       0,         0, 1,      0,         1,         1,         0,         0,         0,       0,    1,   0,   0,   0,   0,   0,    0,   1, 1,     1,    1,  1,   0,   1,       1,         0,         0,         1,         0,         0,         1,         0,       1,    0, 0,     0,   0,   0,   1,    0,   0,   0,   1,    1,  0,   0,   1,       1,         0,         0};

Функция обратной сВязи регистра L2

unsigned char f9b[512] =

{0,  1,    1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   1,   0, 0,      1,

1,   1,    1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   1,      1,

1,   1,    0,   0,   1,   0,   1,   0,   1,   0,   0,   0,   1,   1,   1,      1,

1,   1,    0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   1,   1,      0,

1,   0,    0,   0,   0,   0,   1,   1,   1,   1,   1,   0,   1,   1,   0,      1,

1,   0,    1,   1,   0,   1,   0,   0,   1,   0,    0,   0,   0,   0,   0,      0,

1,   0,    1,   1,   0,   0,   1,   0,   0,   0,    0,   1,   1,   0,   1,      1,

0,   0,    0,   0,   1,   1,   0,   1,   1,   0,    0,   0,   1,   1,   0,      0,

1,   0,    0,   0,   0,   0,   0,   0,   0,   1,    1,   1,   0,   1,   1,      0,

0,   0,    0,   0,   0,   0,   0,   0,   0,   0,    1,   1,   1,   1,   0,      0,

0,   0,    1,   1,   0,   1,   0,   1,   0,   1,    1,   1,   0,   0,   0,      0,

0,   0,    1,   -1,  1,   0,   1,   1,   1,   1,    1,   1,   1,   0,   0,      1,

0,   1,    1,   1,   1,   1,   0,   0,   0,   0,    0,   1,   0,   0,   1,      0,

0,   1,    0,   0,   1,   0,   1,   1,   0,   1,    1,   1,   1,   1,   1,      1,

0,   1,    0,   0,   1,   1,   0,   1,   1,   1,    1,   0,   0,   1,   0,      0,

1,   1,    1,   1,   0,   0,   1,   0,   0,   1,   1,   1,   0,   0,   1,      1,

1,   0,    0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   0,   1,   1,      0,

0,   0,    0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   0,      0,

0,   0,    1,   1,   0,   1,   0,   1,   0,   1,   1,   1,   0,   0,   0,      0,

0,   0,    1,   1,   1,   0,   1,   1,   1,   1,   1,   1,   1,   0,   0,      1,

0,   1,    1,   1,   1,   1,   0,   0,   0,   0,   0,   1,   0,   0,   1,      0,

0,   1,    0,   0,   1,   0,   1,   1,   0,   1,   1,   1,   1,   1,   1,      1,

0,   1,    0,   0,   1,   1,   0,   1,   1,   1,   1,   0,   0,     1 ,0,      0,

1,   1,    1,   1,   0,   0,   1,   0,   0,   1,   1,   1,   0,   0,   1,      1,

0,   1,    1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   1,   0,   0,      1,

1,   1,    1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   1,      1,

1,   1,    0,   0,   1,   0,   1,   0,   1,   0,   0,   0,   1,   1,   1,      1,

1,   1,    0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   1,   1,      0,

1,   0,    0,   0,   0,   0,   1,   1,   1,   1,   1,   0,   1,   1,   0,      1,

1,   0,    1,   1,   0,   1,   0,   0,   1,   0,   0,   0,   0,   0,   0,      0,

1,   0,    1,   1,   0,   0,   1,   0,   0,   0,   0,   1,   1,   0,   1,      1,

0,   0,    0,   0,   1,   1,   0,   1,   1,   0,   0,   0,   1,   1,     0,    0};

5 Зак. 437

Выводы

Обзор современных поточных шифров позволяет сделать заключение, что наиболее интересные решения получаются при использовании:

•     S-блоков с динамически изменяющейся в процессе функционирования таблицей замен;

•     LFSR, функционирующих в конечных полях GF(2").

Шифры, в которых используются эти функциональные элементы, обладают наиболее простой и логичной структурой. Применение 5-блоков, таблица замен которых непрерывно перемешивается в процессе работы, делает логику работы генератора ПСП поточного шифра непредсказуемой, требует разработки новых методов криптоанализа.

 

Источник: Acoсков А. В., Иванов М. A., Мирский А. A., Рузин А. В., Сланин А. В., Тютвин А. Н. Поточные шифры. – M.: КУДИЦ-ОБРАЗ, 2003. – 336 с.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100