Безопасность в Internet- Intranet



         

Использование однократного гаммирования - часть 2


П р и в е т с т в у ю , _ м о й CF F0 E8 E2 E5 F2 F1 F2 E2 F3 FE 2C 20 EC EE E9 _ н е н а г л я д н ы й _ с о с 20 ED E5 ED E0 E3 EB FF E4 ED FB E9 20 F1 EE F1 е д ! E5 E4 21

Листинг 7.1

Верхние строки в этих трех парах строк соответствуют символам открытого текста, а нижние строки представляют собой соответствующие шестнадцатеричные их обозначения.

Для зашифрования была использована гамма из листинга 7.2 (значения чисел даны тоже в шестнадцатеричном формате).

BD 8E 1E 72 9C 26 43 AD E7 8B 89 7C 91 06 DE E2 2B DC F9 C9 E1 6D BB 91 43 68 F3 6D 85 2F 0A 74 0F AA 7A 8D A1 8C F8 4A 5D 52 7B BB 7C 01 25 93

Листинг 7.2

Пусть криптоаналитику стали доступны ее первые десять байтов и он также знает, что было использовано наложение гаммы как сложение по модулю два . В языке Си существует общеизвестный оператор "^", который ее выполняет. Алгоритм шифрования на языке Си описывается короткой и простой функцией (см. листинг 7.3).

char text[1024] = "Приветствую, мой ненаглядный сосед!"; char gamma[1024] = { 0xBD, 0x8E, 0x1E, 0x72, 0x9C, 0x26, 0x43, 0xAD, 0xE7, 0x8B, 0x89, 0x7C, 0x91, 0x06, 0xDE, 0xE2, 0x2B, 0xDC, 0xF9, 0xC9, 0xE1, 0x6D, 0xBB, 0x91, 0x43, 0x68, 0xF3, 0x6D, 0x85, 0x2F, 0x0A, 0x74, 0x0F, 0xAA, 0x7A, 0x8D, 0xA1, 0x8C, 0xF8, 0x4A, 0x5D, 0x52, 0x7B, 0xBB, 0x7C, 0x01, 0x25, 0x93 }; for (int i = 0; i < strlen(text); i++) text[i] ^= gamma[i];

Листинг 7.3

А ее результат выполнения, то есть зашифрованный текст, выглядит, как показано в листинге 7.4.

72 7E F6 90 79 D4 B2 5F 05 78 77 50 B1 EA 30 0B 0B 31 1C 24 01 8E 50 6E A7 85 08 84 A5 DE E4 85 EA 4A 5B

Листинг 7.4

Поскольку криптоаналитику известны первые десять байтов гаммы, он может дешифровать первые десять байтов шифротекста с помощью все той же программы из листинга 7.3. Но кроме этого, он может использовать известные ему байты гаммы, чтобы подделать начало сообщения, заменив десять байтов оригинального шифротекста на свои собственные. Для этого он может выбрать поддельное сообщение, например "До свидания". Затем зашифровать его гаммированием и поместить в начало шифротекста вместо зашифрованной части исходного сообщения - слова "Приветствую". В этом случае гамма будет выглядеть так, как в листинге 7.5 (жирным выделен замещенный участок).




Содержание  Назад  Вперед