Light-industry-up.ru

Экосистема промышленности

VMPC

15-09-2023

VMPC (англ. Variably Modified Permutation Composition) — это потоковый шифр, применяющийся в некоторых системах защиты информации в компьютерных сетях. Шифр разработан криптографом Бартошем Зольтаком (англ. Bartosz Zoltak) в качестве усиленного варианта популярного шифра RC4. Алгоритм VMPC строится как и любой потоковый шифр на основе параметризованного ключом генератора псевдослучайных битов. Основные преимущества шифра, как и RC4 — высокая скорость работы, переменный размер ключа и вектора инициализации (от 128 до 512 бит включительно), простота реализации (буквально несколько десятков строк кода).

Основа шифра - генератор псевдослучайных чисел, базой которого является односторонняя необратимая функция VMPC (англ. Variably Modified Permutation Composition):

for x from 0 do n-1: g(x) = VMPC(f(x)) = f(f(f(x))+1).

Содержание

Реализация алгоритма

Ключевое расписание

c : Длина ключа в байтах (16 <= c <=64)

K : Ключ

z : Длина вектора инициализации в байтах (16 <= z <=64)

V : Вектор инициализации

m : 16-разрядная переменная

s : 8-разрядная глобальная переменная


1.  s = 0
2.  for i from 0 to 255: P[i]=i
3.  for m from 0 to 767: выполняем пп. 4-6:
4.  n = m and 255
5.  s = P[ (s + P[n] + K[m mod c]) and 255 ]
6.  Temp = P[n]
    P[n] = P[s]
    P[s] = Temp
7.  for m from 0 to 767: выполняем пп. 8-10:
8.  n = m and 255
9.  s = P[ (s + P[n] + V[m mod z]) and 255 ]
10. Temp = P[n]
    P[n] = P[s]
    P[s] = Temp

Зашифрование и расшифрование

Для генерации Len байт выходного ключевого потока выполняем следующие операции:

1. n = 0
2. Повторяем пп. 3-6 Len раз:
3. s = P[ (s + P[n]) and 255 ]
4. Output = P[ (P[P[s]]+1) and 255 ]
5. Temp = P[n]
   P[n] = P[s]
   P[s] = Temp
6. n = (n + 1) and 255

Безопасность

Утверждается, что потоковый шифр, благодаря значительной модификации исходного RC4 с учетом его уязвимостей, более устойчив к существующим атакам на потоковые шифры и атакам на шифр RC4. В то же время, безопасность большинства потоковых шифров практически сводится к нулю при использовании одного и того же ключа для зашифрования различных открытых текстов. В таком случае потоковый шифр уже не является генератором одноразового блокнота (потока случайных бит для зашифрования открытого текста). Данная проблема шифром VMPC в некотором роде решается использованием уникального вектора инициализации для каждого зашифрованного потока.

Утверждается, что сложность атаки на шифр составляет 2900 операций. Однако, существует метод, защищающий алгоритм от возможных уязвимостей. Данный подход заключается в повторении зависимой от ключа перестановки два раза: до и после перестановки, зависимой от вектора инициализации. Данное ключевое расписание именуется KSA3.

Ссылки

  • VMPC Stream Cipher
  • Спецификация VMPC
  • Bartosz Zoltak VMPC One-Way Function and Stream Cipher

См. также

VMPC.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06