Введение в современную криптографию



Pdf көрінісі
бет162/249
Дата14.06.2023
өлшемі6.4 Mb.
#475029
1   ...   158   159   160   161   162   163   164   165   ...   249
Криптография Катц

АЛГОРИТМ 6.1
Алгоритм Init для RC4
Вход: 16-байтный ключ k
Выход: Начальное состояние (S, i, j)
(Обратите внимание: Все сложение делается по модулю 256)
for i = 0 to 255:
S[i] := i
k[i] := k[i mod 16]
j := 0
for i = 0 to 255:
j := j + S[i] + k[i] Swap S[i] and S[j]
i := 0, j := 0
return (S, i, j) 
Во время инициализации S является первым набором для тождественной 
перестановки (то есть с S[i] = i для всех i) и k расширяется до 256 байт путем 
повторения. Затем каждый элемент S меняется местами как минимум один раз 
с другим элементом S в «псевдослучайном» расположении. Индексы i, j уста-
навливаются на 0, и (S, i, j) выводится как начальное состояние .
Состояние затем используется для генерирования последовательности вы-
ходных битов, как показано в Алгоритме 6.2. Индекс i просто инкрементирует-
ся (по модулю 256), а j изменяется каким-либо «псевдослучайным» способом. 
Элементы S[i] и S[j] меняются местами, и выводится значение S на позиции S[i] 
+ S[j] (вновь вычисленное по модулю 256). Обратите внимание, что каждый 
элемент S меняется местами с каким-либо другим элементом S (возможно с 
самим собой) как минимум один раз каждые 256 итераций, обеспечивая тем 
самым хорошеее «перемешивание « перестановки S.
АЛГОРИТМ 6.2
Алгоритм GetBits для RC4
Вход: Текущее состояние (S, i, j)
Выход: Выходной байт y; обновленное состояние (S, i, j) (Обратите внима-
ние: Все сложение делается по модулю 256)
i := i + 1
j := j + S[i]
Swap S[i] and S[j]
t := S[i] + S[j]
y := S[t]
return (S, i, j), y
RC4 не был предназначен для приема IV в качестве входных данных; одна-
ко, на практике IV часто принимается посредством простого соединения его с 


219
действующим ключом kr перед инициализацией. То есть выбирается случайный 
IV желаемой длины, k устанавливается так, чтобы равняться соединенным IV и kr 
(это можно осуществить путем присоединения IV как в начало, так и в конец), за-
тем Init запускается, как в Алгоритме 6.1 для генерирования начального состояния. 
Затем производятся выходные биты с использованием Алгоритма 6.2, точь в точь 
как ранее. Предполагая, что RC4 используется в несинхронизированном режиме 
(см. Раздел 3.6.1), IV тогда будет отправлен в открытую получателю, который пред-
положительно уже имеет действующий ключ kr, таким образом, позволяя им сге-
нерировать такое же начальное состояние и, соответственно, такой же выходной 
поток. Данный метод включения IV используется в Wired Equivalent Privacy (WEP), 
стандарте шифрования для защиты связи в беспроводных сетях 802.11.
Следует задуматься о таком относительно узконаправленном способе именения 
RC4 для принятия IV. Даже если RC4 был бы защищенным потоковым шифром 
при использовании (только) ключа, как изначально и планировалось, нет причин 
полагать, что он должен быть защищенным после изменения для использования
IV таким образом. В действительности,в отличие от ключа, IV открыт для ата-
кующего (так как отсылается в открытую; более того, использование различных 
IV с одним и тем же фиксированным ключом kr, как было бы при использовании 
RC4 в несинхронизированном режиме, означает, что соотвествующие значения k 
используются для инициализации состояния RC4. Как мы увидим далее, обе эти 
проблемы ведут к атакам, когда RC4 используется таким образом.


Достарыңызбен бөлісу:
1   ...   158   159   160   161   162   163   164   165   ...   249




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет