Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Стоимость - не менее важный критерий, учитывая одну из основных целей NIST - широкая область использования и доступность AES. Стоимость зависит от простоты реализации и вычислительной эффективности (в первую очередь от быстродействия) на различных платформах в сочетании с низкими требованиями к используемой памяти.

Гибкость - включает способность алгоритма использовать ключи различного размера, превышающего установленный минимум (128 бит), надежность и эффективность реализации в разных средах, возможность создания на базе этого алгоритма других криптографических примитивов, например, поточного шифра, генератора псевдослучайных чисел, функции хэширования и др.

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

Всего к конкурсу AES были допущены 15 алгоритмов, разработанных криптографами из 12 стран - Австралии, Бельгии, Великобритании, Германии, Израиля, Канады, Коста-Рики, Норвегии, США, Франции, Южной Кореи и Японии.

В финал конкурса вышли следующие алгоритмы:

·  MARS (США),

·  RC6 (США),

·  RIJNDAEL (Бельгия),

·  SERPENT (Великобритания, Израиль, Норвегия),

·  TWOFISH (США).

Победителем конкурса стал криптоалгоритм RIJNDAEL.

Материалы конкурса AES, в том числе документацию по алгоритмам – финалистам конкурса, можно найти на странице http://www. nist. gov/aes/ .

Важно заметить, что алгоритм RIJNDAEL допускает различные размеры пар блока-ключа в битах, но в стандарте FIPS PUB 197 приняты только следующие: 128-128, 192-128, 256-128. Далее будет в основном излагаться описание в терминах RIJNDAEL.

НЕ нашли? Не то? Что вы ищете?

Для понимания работы алгоритма RIJNDAEL напомним некоторые математические основы. В RIJNDAEL операции выполняются над байтами, которые рассматриваются как элементы поля Элементами являются двоичные многочлены степени N < 8, которые могут быть заданы строкой своих коэффициентов. Так, например, байту 01010111 (‘57h’ в шестнадцатеричной форме) соответствует многочлен

Умножение в поле может быть реализовано как операция умножения соответствующих многочленов с последующим приведением результата по модулю некоторого неприводимого двоичного многочлена восьмой степени. В RIJNDAEL для построения поля используют неприводимый многочлен показа.

В алгоритме RIJNDAEL авторы вводят операцию . - это операция умножения элемента поля на x. Тогда умножение на можно осуществить путем n-кратного повторения операции , а умножение на произвольный элемент поля можно осуществить, складывая результаты операций .

Структура шифра

Общие сведения

RIJNDAEL - это итерационный блочный шифр, имеющий следующие варьируемые параметры: длина блоков, длина ключа. Длина ключа и длина блока могут быть равны независимо друг от друга 128, 192 или 256 битам.(В AES не так).

Промежуточные результаты преобразований, выполняемых в рамках алгоритма, называются состояниями. Состояние (рис.) можно представить в виде прямоугольного массива байтов. Этот массив имеет 4 строки, а число столбцов равно длине блока, деленной на 32.

Ключ шифрования также представлен в виде прямоугольного массива с четырьмя строками. Число столбцов равно длине ключа, деленной на 32.

рис. Пример представления состояния () и ключа шифрования ()

Входные данные для шифра обозначаются как байты состояния в порядке a00, a10, a20, a30, a01, a11, a21, a31, a41 ... После завершения действия шифра выходные данные получаются из байтов состояния в том же порядке.

Число циклов зависит от значений и – числа 32-битных слов в информационном блоке и, соответственно, основном ключе алгоритма:

Зависимость числа циклов от числа столбцов в таблице состояний и длины ключа шифрования

10

12

14

12

12

14

14

14

14

Цикловое преобразование

Любой цикл шифрования, кроме последнего, состоит из четырех различных преобразований. На псевдо-Си это выглядит следующим образом:

Round (State, RoundKey)

{

ByteSub(State); // замена байтов

ShiftRow(State); // сдвиг строк

MixColumn(State); // перемешивание столбцов

AddRoundKey(State, RoundKey); // добавление циклового ключа

}

Последний цикл шифрования немного отличается от остальных[1]. Вот как он выглядит:

FinalRound(State, RoundKey)

{

ByteSub(State); // замена байтов

ShiftRow(State); // сдвиг строк

AddRoundKey(State, RoundKey); // добавление циклового ключа

}

Как можно заметить, последний цикл отличается от предыдущих циклов только отсутствием перемешивания столбцов. Каждое из приведенных преобразований определено далее.

Замена байтов (ByteSub).

Заметим, что в AES употребляются несколько видоизмененные названия для этого и других преобразований, что можно рассматривать как еще одно различие в описании (Именно, SubBytes, ShiftRows, MixColumns, …). Излагать будем как в описании Rijndael.

Преобразование ByteSub является S-блоком и представляет собой нелинейную замену байтов, выполняемую независимо для каждого байта состояния. Таблицы замены S-блока являются инвертируемыми и построены как композиция двух преобразований:

переход к обратному элементу относительно умножения в поле GF(28), при этом нулевой элемент '00h' переходит сам в себя;

применение аффинного преобразования над 8-ми мерным двоичным вектором:

Применение описанного выше S-блока ко всем байтам состояния обозначено как ByteSub(State).

Операция обратная к ByteSub – это замена байтов с использованием инвертированной таблицы. Обратимость операции ByteSub следует из обратимости аффинного преобразования и наличия у каждого элемента поля обратного элемента.

Преобразование сдвига строк (ShiftRow)

Строки матрицы состояния (кроме нулевой строки) циклически сдвигаются на различное число байт. Строка 1 сдвигается на С1 байт, строка 2 - на С2 байт и строка 3 - на С3 байт. Значения сдвигов С1, С2 и С3 зависят от длины блока. Их величины приведены ниже в таблице.

Величина сдвига для разной длины блоков

C1

C2

C3

4

1

2

3

6

1

2

3

8

1

3

4

Операция сдвига последних 3 строк состояния на определенную величину обозначена как ShiftRow (State).

Преобразование перемешивания столбцов (MixColumn)

В этом преобразовании столбцы состояния рассматриваются как многочлены над GF(28) и умножаются по модулю на многочлен

Многочлен взаимно прост с многочленом и, следовательно, операция умножения на по модулю обратима.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43