VMPC | это... Что такое VMPC? (original) (raw)

VMPC (англ. Variably Modified Permutation Composition) — это потоковый шифр, применяющийся в некоторых системах защиты информации в компьютерных сетях. Шифр разработан криптографом Бартошем Жолтаком (польск. Bartosz Żółtak,англ. 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.

Ссылки

См. также

Просмотр этого шаблона Симметричные криптосистемы
Поточный шифр A3A5A8DecimMICKEYRC4RabbitSEALSOSEMANUKTriviumVMPC
Сеть Фейстеля ГОСТ 28147-89BlowfishCamelliaCAST-128CAST-256CIPHERUNICORN-ACIPHERUNICORN-ECLEFIACobraDFCDEALDESDESXEnRUPTFEALFNAm2HPCIDEAKASUMIKhufuLOKI97MARSNewDESRaidenRC5RC6RTEASEEDSinopleTEATriple DESTwofishXTEAXXTEA
SP-сеть 3-WAYABCAES (Rijndael) • AkelarreAnubisARIABaseKingBassOmaticCRYPTONDiamond2Grand CruHierocrypt-L1Hierocrypt-3KHAZADLuciferPresentRainbowSAFERSerpentSHARKSQUAREThreefish
Другие FROGNUSHREDOCSHACALSC2000