о, так що всі можливі стани повторюються з однаковою частотою з деяким періодом.
Оскільки S містить кожен байт рівно один раз, малоймовірно, що одні байти будуть видаватися в якості результату частіше, ніж інші.
4. Алгоритм шифрування RC5
RC5 являє собою блоковий фільтр з великим числом параметрів: розміром блоку, розміром ключа і кількістю етапів. Він був винайдений Роном Рівестом і проаналізований у RSA Laboratories [1324, 1325].
Використовується три дії: XOR, додавання і циклічні зрушення. На більшості процесорів операції циклічного зсуву виконуються за постійний час, змінні циклічні зрушення є нелінійної функцією. Ці циклічні зрушення, що залежать і від ключа, і від даних, являють собою цікаву оп е-рацію.
RC5 використовує блок змінної довжини, але у що наводиться прикладі ми зупинимося на 64-бітовому блоці даних. Шифрування використовує 2r +2 залежних від ключа 32-бітових слів - So, Si, S2, ... S2r + i - де r - число етапів. Ці слова ми згенеруємо пізніше. Для шифрування спочатку блок відкритого тексту ділиться на два 32-бітових слова: А і В. (RC5 припускає наступне Угода по упаковці байтів в слова: перший байт займає молодші біти регістра А, і т.д.) Потім:
A = A + S0
B = B + S1
For i = 1 to r:
A = ((AГ… B) <В«B) + S2i
В = ((В Г… A) <В«A) + S2i +1
Результат знаходиться в регістрах А і В.
Дешифрування також просто. Блок відкритого тексту розбивається на два слова, А і В, а потім:
For i = r down to 1:
B = ((B-S2i +1)>>> A) Г… A
A = ((A-S2i)>>> B) Г… B
B = B - S1
A = A - S0
Символ">>>" позначає циклічний зсув направо. Звичайно ж, всі додавання і віднімання виконуються за модулем 232. p> Створення масиву ключів більш складно, але також прямолінійно. Спочатку, байти ключа копіюються в ма з-сів L з з 32-бітових слів, доповнюючи при необхідності, заключне слово нулями. Потім масив S инициализируется за допомогою лінійного конгруентного генератора за модулем 232:
S = P
For I = 1 to 2 (r +1) -1
Si = (Si-1 + Q) mod 232
P = 0xb7el5163 і Q = 0х9е377989, ці константи грунтуються на двійковому поданні е і phi. Нарешті, підставляємо L в S:
i = j = 0
А = В = 0
виконати п раз (де п - максимум 2 (r + 1) і з):
А = Si = (Si + А + В) <<<3
B = Li = (Li + A + B) <<<(А + В);
i = (i +1) mod 2 (r + l)
j = (j + 1) mod з
По суті, RC5 являє собою сімейство алгоритмів. Тільки що ми визначили RC5 з 32-бітовим cл овом і 64-бітовим блоком, що не існує причин, що забороняють використовувати той же алгоритм з 64-бітовим словом і 128-бітовим. Для w = 64, Р і Q дорівнюють 0xb7el51628aed2a6b і 0x9e3779b97f4a7cl5, відповідно. Ривест позначив різні реалізації RC5 як RC5-wlrlb, де w - Це розмір слова, r - число етапів, а b-довжина ключа в байтах. p> RC5 є новим алгоритмом, але RSA Laboratories потрптіла досить багато часу, аналізуючи його роботу з 64-бітовим блоком. Після 5 етапів статистика виглядає дуже добре. Після 8 етапів кожен біт відкритого тексту впливає принаймні на один циклічний зсув. Диференціальне розтин вимагає 24 лютого обраних відкритих текстів для 5 етапів, 245 для 10 етапів, 253 для 12 етапів і 268 для 15 етапів. Звичайно ж, існує тільки 264 можливих відкритих текстів, тому таке розтин незастосовне проти алгоритму з 15 і більше етапами. Оцінка для лінійного криптоаналізу показує, що алгоритм безпечний після 6 етапів. Ривест рекомендує використовувати не менше 12 етапів, а краще 16 [1325]. Це число може змінюватися.
RSADSI в даний час патентує RC5, а це назви заявлено, як торгова марка. Компанія стверджує, що плата за ліцензування буде дуже мала, але це краще перевірити.
5. Алгоритм шифрування RC6
Автори: Рональд Райвест (Ronald Rivest), а також: М. Робшоу (M. Robshaw), Р. Сідні (R.Sidney), Y. Yin. Архітектура: Архітектура на базі збалансованої мережі Файстеля з істотними відхиленнями від класичного варіанту:
інша схема розбиття блоку на частини: блок ділиться на чотири подблока однакового розміру, змінювані і незмінні підблоки чергуються, між раундами підблоки циклічно змінюються місцями;
інший спосіб використання ключової інформації: ключовий елемент не використовується при виробленні функції шифрування, замість цього його половини додаються до модифікується подблоков на виході кожного раунду, перед першим і після останнього раунду до двох подблоков також пр ібавляются половинки ключового елемента;
після комбінування з результатом обчислення функції шифрування і до додавання половини ключового елемента кожен змінюваний на раунді підблок циклічно зсувається на змінне число розрядів.
Параметри:
Pазмер блоку, біт
змінний (w), ступінь 2
Pаз...