Interested Article - WAKE
- 2020-09-08
- 1
WAKE ( англ. W ord A uto K ey E ncryption , шифрование слов на автоматическом ключе ) — алгоритм поточного шифрования на автоматическом ключе, разработанный в 1993 году. Изначально проектировался как среднескоростная система шифрования (скорость в поточных шифрах измеряется в циклах на байт шифруемого открытого текста ) блоков (минимального количества информации, которое может быть обработано алгоритмом; в данном случае блок составляет 32 бита ), обладающая высокой безопасностью. По мнению автора, является простым алгоритмом быстрого шифрования, подходящим для обработки больших массивов данных, а также коротких сообщений, где изменяется только секретный ключ . Подходит для использования хешей на секретных ключах, используемых при верификации . Одним из примеров возможного практического использования данного алгоритма является шифрование потока текстовых данных в SMS . Из-за большого размера блоков не может быть использован в коммуникациях в режиме реального времени .
Свойства
Алгоритм работает в режиме CFB — предыдущее слово шифрованной последовательности служит основанием генерации следующего. Однако существуют модификации алгоритма, связанные с изменением процесса генерации ключа и позволяющие работать в режимах OFB и ROFB (Reverse OFB) . В гамме шифра используются 32- битовые слова , а длина стартового ключа составляет 128 бит . Также в алгоритме используется S-блок замены , состоящий из 256 32-битных слов. В работе используются четыре переменные , для лучшей производительности в этом качестве нужно использовать регистры . При работе полагается повторное использование таблиц в кэше и наличие большого пространства состояний . Это означает, что кэш данных должен без проблем вмещать таблицу из 256 слов .
Алгоритм является достаточно быстрым — на 32-битовых процессорах VLIW архитектуры оценочная производительность составляет 6.38 циклов на байт, что превышает аналогичный показатель алгоритма SEAL , но уступает RC4 (3.5 и 10.6 циклов на байт, соответственно) .
Шифр поддается криптоанализу, а именно атакам по подобранному открытому тексту и подобранному шифротексту .
Структура алгоритма
Алгоритм строится на основе каскадного использования функции смешения ( — знак побитовой конъюнкции , — битовая операция исключающего «ИЛИ» , битовый сдвиг является логическим ) , которая при помощи -блока замены преобразует 32-битовые слова и , подаваемые на вход, в 32-битовое слово на выходе. Причем слова в -блоке составляются таким образом, что множество старших байтов этих слов представляет собой перестановку от 0 до 255 (первые байты каждого слова являются уникальными), тогда как оставшиеся 3 байта заполняются случайным образом . Функция смешения сделана реверсивной из таких соображений, что знания одного из слов на входе и слова на выходе будет достаточно для восстановления второго неизвестного на входе .
WAKE состоит из четырёх каскадов функции с обратными связями по каждому и ещё одной на всю группу каскадов. Такое количество выбрано, как минимально возможное для полной данных в слове (то есть при изменении хотя бы одного бита ключа происходит полное изменение результата работы алгоритма шифрования), происходящей из-за того, что -блок осуществляет нелинейное преобразование , и использование побитового «И» и исключающего «ИЛИ» также вносит небольшую нелинейность .
Описание алгоритма
Процесс шифрования происходит в три этапа :
- Процесс генерации S-блока;
- Процесс генерации автоключа;
- Непосредственно шифрование и расшифровывание.
Процесс генерации S-блока
В первую очередь происходит инициализация первых значений -блока (таблицы замены) секретным ключом. Даётся пример алгоритма заполнения данной таблицы :
-
Инициализировать вспомогательную таблицу
, состоящую из 8 слов, имеющих между собой перестановку первых трех бит:
-
Копировать ключ
в первые 4 слова
таким образом, что:
- , где — есть результат разбиения ключа на четыре равные части.
-
Остальные слова образовать в
цикле
:
-
Произвести суммирование:
- .
- Таким образом, даже первые несколько слов будут зависеть от всех бит .
-
Определить вспомогательные переменные:
-
Осуществить перестановку в первом байте слов таблицы:
-
Инициализировать следующие переменные:
-
Перемешать между собой слова в
:
Метод построения может быть легко изменён, и вышеприведенный алгоритм является лишь примером. Главное, чтобы результат алгоритма обладал всеми свойствами, представленными из соображений криптографической стойкости -блока . Так, например, можно заполнить таблицу слов случайными числами , но в таком случае происходит утечка информации о повторяющихся и нулевых записях таблицы, не превышающая 1.5 бита на каждую запись. Тем не менее, создатель алгоритма утверждает, что процесс перестановки на старших байтах слов существенно помогает снизить утечку. А перестановка на всех четырёх байтах ещё больше нивелирует вероятность прочтения таблицы. Таким образом, алгоритм заполнения, приведенный выше, является компромиссом между безопасностью и скоростью, так как в нём осуществляется перестановка именно старших байт слов -блока .
Процесс генерации автоключа
Генерация производится согласно блок-схеме алгоритма :
-
Сначала необходимо инициализировать значения регистров
ключом
(возможно, другим):
- отвечают за то же разбиение ключа на равные части.
-
Слова в ключевой последовательности вычисляются следующим образом:
-
Очередное слово ключевой последовательности определяется значением крайнего регистра:
Ключ следует менять при наличии большого открытого текста (период изменения ключа составляет примерно 10000 слов — в таком случае замедление работы алгоритма составляет около 2-3 %) .
Шифрование и расшифровывание
Оба метода представляют собой гаммирование открытого текста (или шифротекста) с ключевой последовательностью. Шифрование и расшифровывание осуществляются по формуле :
- , где — слово открытого текста или шифротекста в зависимости от того, осуществляется ли шифрование или расшифровывание.
Способы использования
Существует достаточно много способов использования данного шифра, однако автор формулирует только три основных метода :
- Дополнение зашифрованных данных двумя словами на обоих концах и последующее заполнение всех бит этих слов одинаковыми случайными значениями. Таким образом, декодер сможет распознавать, когда необходимо использовать следующий ключ в ключевой последовательности для успешной расшифровки сообщения;
- Изменение стартового ключа для каждого нового блока данных;
- Шифрование последних четырёх слов открытого текста, дальнейшее гаммирование с помощью стартового ключа всей последовательности и осуществление того же самого в обратном порядке с помощью другого стартового ключа. Этот метод также может подразумевать использование какой-либо стандартной хеш-функции на секретном ключе, имеющей тот же стартовый ключ и таблицу замены для генерации хеша длиной в 128 бит. Этот хеш смешивается с первыми четырьмя словами открытого текста, собственно, в дальнейшем шифрование происходит тем же образом, как и ранее. Так, каждое новое сообщение образует новый результат на выходе алгоритма. Также в случае использования хеш-функции скорость выполнения повышается примерно в 5 раз в сравнении с обычным методом. Метод хорош тем, что хорошо подходит для коротких сообщений, где многократное вычисление таблицы замены заметно снижает эффективность применения. Так что использование одной и той же таблицы замены является оправданным шагом.
Пример работы
Пример работы данного алгоритма шифрования представлен следующим образом :
-
Инициализация стартового ключа
:
- «legitosinarhusni».
- В шестнадцатеричной системе счисления он будет выглядеть так:
-
Необходимо разбить ключ на четыре равные части и инициализировать стартовые значения регистров:
-
Вычисление следующего слова ключевой последовательности (
-блок уже сгенерирован на основе имеющегося стартового ключа):
-
-
-
-
- — новый ключ.
-
- Далее, пусть в роли открытого текста взят «ROBBI RAHIM». В HEX-представлении это будет . Необходимо произвести гаммирование данной числовой последовательности с ключом:
№ | Символ открытого текста | Код ASCII | Процесс гаммирования | Результат ASCII | Выходной символ |
---|---|---|---|---|---|
1 |
R
|
52 | 52 XOR C2 | 90 |
•
|
2 |
O
|
4F | 4F XOR 5D | 12 |
_
(
упр. символ
)
|
3 |
B
|
42 | 42 XOR 03 | 41 |
A
|
4 |
B
|
42 | 42 XOR 30 | 72 |
r
|
5 |
I
|
49 | 49 XOR C2 | 8B |
‹
|
6 |
SPACE
|
20 | 20 XOR 5D | 7D |
}
|
7 |
R
|
52 | 52 XOR 03 | 51 |
Q
|
8 |
A
|
41 | 41 XOR 30 | 71 |
q
|
9 |
H
|
48 | 48 XOR C2 | 8A |
Š
|
10 |
I
|
49 | 49 XOR 5D | 14 |
_
(упр. символ)
|
11 |
M
|
4D | 4D XOR 03 | 4E |
N
|
Итак, зашифрованной последовательностью слов является «•_Ar‹}QqŠ_N».
Криптоанализ
Алгоритм поточного шифрования поддается дешифрованию путём атак по подобранному открытому тексту и подобранному шифротексту . В случае первого варианта атаки производится попытка восстановить таблицу замены, перебирая варианты открытого текста на входе, второй представляет собой подбор шифротекста для точного определения тех же неизвестных значений -блока. Известно, что вычислительная сложность атаки по подобранному открытому тексту составляет примерно или в зависимости от выбранной модификации атаки (в первом случае используется больше вариантов открытого текста). Вычислительная сложность атаки путем полного перебора составляет примерно , то есть относительная эффективность атаки по подобранному открытому тексту является очевидной . Ещё одно преимущество атаки, предложенной в рассматриваемой статье , заключается в том, что она не зависит от смены ключа . Тем не менее, алгоритмы, с помощью которых производится криптоанализ , становятся невыполнимы, если увеличить длину слова ( бит, где ). Таким образом, они могут быть значительно улучшены в перспективе .
Также, продолжительное изменение данных в каком-либо одном месте алгоритма шифрования в процессе работы может скомпрометировать таблицу замены. В случае, если -блок уже известен, то требуется всего 5 пар слов открытого-зашифрованного текста для того, чтобы точно определить значения регистров .
Примечания
- ↑ .
- ↑ , p. 127.
- ↑ , p. 276.
- , p. 132.
- , p. 2.
- , p. 279.
- ↑ , p. 336.
- , p. 64.
- , p. 278.
- , p. 129.
- ↑ , p. 130.
- , p. 2.
- , p. 131.
- , p. 7.
- ↑ .
- , p. 2,7.
- , p. 1,7.
Литература
Книги
- Schneier, B. Applied Cryptography: Protocols, Algorthms, and Source Code in C. — 2nd edition. — John Wiley & Sons, Inc., 1996. — 784 с. — ISBN 0471128457 .
- А.В. Яковлев, А.А. Безбогов, В.В. Родин, В.Н. Шамкин. Криптографическая защита информации : учебное пособие. — Тамбов: Изд-во Тамб. гос. техн. ун-та, 2006. — 140 с. — ISBN 5-8265-0503-6 .
Статьи
- Wheeler, D. (англ.) // Fast Software Encryption. — Springer, Berlin, Heidelberg, 1993-12-09. — P. 127—134 . — ISBN 3540581081 . — doi : .
- Craig S. K. Clapp. (англ.) // Fast Software Encryption. — Springer, Berlin, Heidelberg, 1997-01-20. — P. 273—287 . — doi : .
- Legito, Robbi Rahim . (англ.) . www.ijrter.com (2017). Дата обращения: 8 февраля 2017.
- Marina Pudovkina. . — 2001-01-01. — № 065 .
- (англ.) . ResearchGate. Дата обращения: 18 февраля 2017.
Эта статья входит в число
добротных статей
русскоязычного раздела Википедии.
|
- 2020-09-08
- 1