Перейти к содержанию

VEST

Материал из Мегавики

VEST (англ. Very Efficient Substitution Transposition, очень эффективная перестановка) — это серия аппаратных поточных шифров общего назначения, которые обеспечивают однопроходное шифрование с аутентификацией и могут работать как хеш-функция, стойкая к коллизиям второго рода. Шифры VEST разработаны в Synaptic Laboratories. Все шифры этой серии поддерживают режим работы с ключами переменной длины.

История[править]

Шифры VEST были разработаны Шоном О’Нейлом (Sean O’Neil). Впервые были представлены на турнире eStream в 2005 году, прошли во второй отборочный тур, но не попали в третий и, соответственно, не прошли в финал.

Применение поточных шифров[править]

Поточные шифры начали активно использовать в годы войны, ещё до появления электроники.

Преимущества поточных шифров:

  • Простота проектирования;
  • Простота аппаратной реализации;
  • Высокая скорость шифрования (важно при магистральном шифровании больших потоков информации);
  • Отсутствие эффекта размножения ошибок, который присутствует в блочных шифрах;
  • Обеспечивают высокую криптостойкость

Поточные шифры и их применение:

  • RC4 (системы защиты информации в компьютерных сетях, например в протоколах SSL и TSL);
  • A3 (процесс аутентификации в глобальном цифровом стандарте для мобильной сотовой связи GSM);
  • A5 (обеспечения конфиденциальности передаваемых данных между телефоном и базовой станцией в европейской системе мобильной цифровой связи GSM);
  • SEAL (криптографический алгоритм)(является одним из самых быстрых шифров)
  • Также поточные шифры используются в:

Одним из примеров поточных шифров является шифр VEST

Аппаратная реализация[править]

Общая структура[править]

Схема шифрования состоит из четырёх основных компонентов: нелинейный счетчик, линейный счетчик-диффузор, биективный накапливающий регистр с большим числом состояний и линейный смеситель на выходе. Ядро шифров VEST можно представить как взаимно-однозначные регистры сдвига с нелинейной обратной связью (NLFSRs) с множеством параллельных обратных связей, работающие вместе с системой нелинейных модульных счетчиков (RNS) с очень длинным периодом. Модульный счетчик состоит из 16 регистров сдвига с нелинейной обратной связью с взаимно простыми длинами периодов. Счетчик-диффузор — это набор 6-битовых линейных смесителей с обратной связью, сжимающий выходные данные с 16 счетчиков в 10 бит. Ядро накапливающего регистра — регистр сдвига с нелинейной параллельной обратной связью, на вход которого подаются выходные 10 бит от счетчика-диффузора. Выходной смеситель — набор 6-битовых линейных смесителей.

Счетчик-диффузор[править]

Биты, поступившие на вход счетчика-диффузора, смешиваются перед подачей их на вход накапливающего регистра по следующему правилу: d0r+1 = d1r+c1r+c4r+c5r+c11r+c13r+1
d1r+1 = d2r+c0r+c2r+c6r+c8r+c14r
d2r+1 = d3r+c3r+c4r+c7r+c10r+c15r
d3r+1 = d4r+c0r+c3r+c5r+c9r+c12r
d4r+1 = d5r+c1r+c4r+c6r+c12r+c15r+1
d5r+1 = d6r+c0r+c7r+c9r+c13r+c14r
d6r+1 = d7r+c1r+c8r+c11r+c14r+c15r
d7r+1 = d8r+c2r+c5r+c6r+c10r+c12r+1
d8r+1 = d0r+c0r+c3r+c7r+c8r+c9r+1
d9r+1 = d9r+c8r+c10r+c12r+c13r+c15r+1

Накапливающий регистр[править]

Младшие пять бит x0, x1, x2, x3, x4 преобразуются нелинейными функциями f0, f1, f2, f3, f4, которые образуют блок подстановки. Значения этих функций линейно смешиваются с пятью выходными битами d0, d1, d2, d3, d4 счетчика-диффузора и возвращаются обратно в состояние регистра в xp0, xp1, xp2, xp3, xp4 соответственно. Биты x5, x6, x7, x8, x9 линейно смешивают со значениями следующих пяти функций с обратной связью f5, f6, f7, f8, f9 и с пятью битами счетчика-диффузора d5, d6, d7, d8, d9 и возвращаются в состояние регистра в xp5, xp6, xp7, xp8, xp9 соответственно. Биты от x10 до xM+9 линейно смешиваются с значениями функций f10,…, fM+9, а в режиме шифрования с аутентификацией ещё и с битами шифротекста.

Работу ядра накапливающего регистра (в режиме без аутентификации) можно изобразить с следующем виде:

xpj[5]r+1 = fj(x0r,x1r,x2r,x3r,x4r)+djr,0j<5;

xpj[5]r+1 = fj(xpj[0]r,xpj[1]r,xpj[2]r,xpj[3]r,xpj[4]r)+xjr+djr,5j<10;

xpj[5]r+1 = fj(xpj[0]r,xpj[1]r,xpj[2]r,xpj[3]r,xpj[4]r)+xjr,10j<W;

Режимы работы[править]

Загрузка ключа[править]

Перед генерацией ключевого потока, шифрованием данных или хешированием шифр работает в режиме загрузки ключа, состоящий из R0=F+16 раундов, где F — длина ключа в битах. Формируется последовательность битов, состоящая из 15 нулей, ключа, единичного бита и ещё 15 нулей. Эта последовательность загружается с регистры начиная с младшего бита по 16 бит до тех пор, пока единичный бит не окажется в первом регистре. Далее происходят следующие операции: cir+10 = gi(cir0,cir1,cir2,cir6,cir7)+cirB[i]1,

cir+11 = 0,ifr+i<15,

cir+11 = cir0+kr+i15,if15r+i<F+15,

cir+11 = 1,ifr+i = F+15,

cir+11 = 0,ifF+15<r+i,

cir+1j = cir+1j1,2j<Bi,0i<16;

xpj[5]r+1 = fj(x0r,x1r,x2r,x3r,x4r)+djr,0j<5;

xpj[5]r+1 = fj(xpj[0]r,xpj[1]r,xpj[2]r,xpj[3]r,xpj[4]r)+xjr+djr,5j<10;

xpj[5]r+1 = fj(xpj[0]r,xpj[1]r,xpj[2]r,xpj[3]r,xpj[4]r)+xjr,10j<W;

0r<R0.

Хеширование[править]

Этот режим используется для хеширования данных и для загрузки вектора инициализации. Входные данные хешируются по 8 бит за раунд: cir+10 = gi(cir0,cir1,cir2,cir6,cir7)+cirB[i]1,

cir+11 = cir0+k(rRa)*8+i,

cir+1j = cirj1,2j<Bi,0i<8;

cir+10 = gi(cir0,cir1,cir2,cir6,cir7)+cirB[i]1,

cir+1j = cirj1,2j<Bi,0i<16;

xpj[5]r+1 = fj(x0r,x1r,x2r,x3r,x4r)+djr,0j<5;

xpj[5]r+1 = fj(xpj[0]r,xpj[1]r,xpj[2]r,xpj[3]r,xpj[4]r)+xjr+djr,5j<10;

xpj[5]r+1 = fj(xpj[0]r,xpj[1]r,xpj[2]r,xpj[3]r,xpj[4]r)+xjr+e(rRi1)*M+j10,10j<10+M;

xpj[5]r+1 = fj(xpj[0]r,xpj[1]r,xpj[2]r,xpj[3]r,xpj[4]r)+xjr,10+Mj<W;

Rar<Rb.

Генерация ключевого потока[править]

В этом режиме на вход не подаются никакие данные. А биты с выхода складываются с открытым текстом по модулю 2.

Шифрование с аутентификацией[править]

В этом режиме биты зашифрованного сообщения попадают обратно в регистр.

Криптостойкость[править]

На данный момент не известно ни одной атаки на шифры VEST, которая работала бы быстрее, чем атака полным перебором ключей или внутренних состояний регистра.

Тест на случайность[править]

Каждая компонента шифров VEST была тщательно проверена лучшим из существующих тестов на случайность. Отдельные потоки выходных данных с накапливающего регистра, смешанные с выходными данными счетчиков, и выходные данные шифров VEST практически не отличаются от случайной последовательности. Из-за короткого периода отдельные счетчики не проходят тест на случайность, но линейная комбинация трех или четырёх таких счетчиков успешно проходят тест на случайность

Проверка алгебраической структуры на наличие дефектов[править]

Проверки алгебраической структуры шифров VEST показывают, что при любом контролируемом изменении состояний накапливающего регистра появляющаяся взаимосвязь между входными и выходными битами не отличается от случайной последовательности уже после четырёх раундов.

Применение[править]

Смарт-карты[править]

Смарт-карты часто используют как защищённый способ предоставления услуг. Использование сильного, быстрого, малоэнергозатратного шифрования в таких системах — необходимое условие. Программное шифрование недостаточно быстрое и сильно энергозатратное, и его не всегда удобно использовать на уровне «железа».

Устройства идентификации[править]

Шифр VEST-4 удовлетворяет необходимым требованиям радиочастотной идентификации:

  • шифрование с аутентификацией;
  • низкая стоимость;
  • массовый параллелизм;
  • высокая надежность;
  • низкие энергозатраты.

Беспроводные сети[править]

Источники[править]

Источник — https://megawiki.ru/wiki/VEST