Русская Википедия:Ascon

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Карточка блочного шифра

Ascon — семейство блочных шифров, используемых для аутентифицированного шифрования с присоединёнными данными и хеширования. Набор шифров был разработан Кристофом Добраунигом, Марией Айхелзидер, Флорианом Менделем и Мартином Шлаффером. Шифры Ascon-128 и Ascon-128a стали победителями соревнования CAESAR в категории применения в приложениях с ограниченными ресурсамиШаблон:Sfn.

Историческая справка

Семейство шифров Ascon, используемое для аутентифицированного шифрования с присоединёнными данными и хеширования, было разработано Кристофом Добраунигом, Марией Айхелзидер, Флорианом Менделем и Мартином ШлафферомШаблон:Sfn.

Шифры Ascon-128 и Ascon-128a были участниками соревнования CAESAR (2014 - 2019) и стали победителями в категории применения в приложениях с ограниченными ресурсамиШаблон:Sfn.

В августе 2019 года шифры семейства Ascon прошли во второй раунд процесса стандартизации Национального института стандартов и технологий в категории легковесной криптографии (англ. Lightweight Cryptography).[1]

Алгоритмы в семействе Ascon

Аутентифицированное шифрование

Параметры в алгоритмах семейства Ascon, используемых для аутентифицированного шифрованияШаблон:Sfn:

  • Размер ключа <math>k</math> (<math>k</math> ≤ 160 бит)
  • Размер блока данных <math>r</math>
  • Число <math>a</math>, количество раундов перестановок на начальной и завершающей стадиях
  • Число <math>b</math>, количество раундов перестановок на промежуточных стадиях

Рекомендованы к использованию следующие конфигурации, соответствующие шифрам Ascon-128 и Ascon-128a Шаблон:Sfn.

Рекомендуемые алгоритмы
Название Значения параметров
k r a b
Ascon-128 128 бит 64 бита 12 6
Ascon-128a 128 бит 128 бит 12 8

Описание алгоритмов: аутентифицированное шифрование

Каждая непосредственная реализация алгоритма, заданная параметрами <math>k</math>, <math>r</math>, <math>a</math>, <math>b</math> определяет алгоритмы шифрования E(a, b, k, r) и дешифрования-верификации D(a, b, k, r).

Входные и выходные данные

Алгоритм шифрования E(a, b, k, r)

Входными данными для алгоритма шифрования являютсяШаблон:Sfn:

  • исходный текст P
  • присоединённые данные A
  • секретный ключ K размером k бит
  • публичный номер сообщения N

Выходные данные для алгоритма шифрованияШаблон:Sfn:

  • Аутентифицированный шифротекст C (такой же длины, как и P)
  • Тег аутентификации T

<math>E_{(a,b,k,r)}\left(K, N, A, P \right) = \left(C, T\right) </math>

Алгоритм дешифрования-верификации D(a, b, k, r)

Входными данными для алгоритма дешифрования-верификации являютсяШаблон:Sfn:

  • ключ K
  • одноразовый код N (Nonce)
  • шифротекст C
  • тег T

Выходными данными являются исходный текст P, если проверка тега была успешной, или <math>\perp </math> (индикатор неуспешности верификации) в случае неуспехаШаблон:Sfn.

<math>D_{(a,b,k,r)}\left(K, N, A, C, T \right) \in \{P, \perp\} </math>

Стадии алгоритма

В алгоритмы шифрования и дешифрования входят следующие стадииШаблон:Sfn:

  • Инициализация
  • Обработка присоединённых данных
  • Обработка исходного текста / шифротекста
  • Завершающая стадия

Стадия инициализации

Внутреннее состояние в алгоритмах семейства Ascon задаётся 320-битным числом SШаблон:Sfn. На стадии инициализации оно формируется из секретного ключа K из k бит, одноразового кода N из 128 бит, и числа IV, характеризующего алгоритм и формируемого из параметров <math>k</math>, <math>r</math>, <math>a</math>, <math>b</math>, записанных 8-битными целыми числамиШаблон:Sfn:

<math>\begin{array}{lcr} {IV}_{\, k, \,r, \,a, \,b} = k \, || \, r \, || \, a \, || \, b \, || \, 0^{160 - k} = \begin{cases} 80400c0600000000 \quad \text{(Ascon-128)} \\ 80800c0800000000 \quad \text{(Ascon-128a)}\end{cases} \\ S = {IV}_{\, k, \,r, \,a, \,b} \, || \, K \, || \, N \end{array}</math>

Затем к начальному состоянию S применяется <math>a</math> раундов перестановок с последующим XOR со значением секретного ключа KШаблон:Sfn:

<math>S \longleftarrow p^a(S) \oplus \left(0^{320 - k} \, || \, K \right)</math>

Стадия обработки присоединённых данных

При шифровании и дешифровании Ascon обрабатывает присоединённые данные A блоками по <math>r</math> бит. К присоединённым данным A приписывается единица и минимальное число нулей, необходимое для получения числа с размером кратным <math>r</math> бит. Далее получившееся число делится на <math>s</math> блоков по <math>r</math> бит в каждом. В случае, когда присоединённые данные отсутствуют, данные операции опускаютсяШаблон:Sfn.

<math>A_1, \, A_2, \, \dots, \, A_s \longleftarrow \begin{cases} \text{r - битные блоки} \, A \, || \, 1 \, || \, 0^{r - 1 - \left(|A| \mod r\right)} \quad |A| > 0 \\ \varnothing \quad |A| = 0 \end{cases} </math>

Далее к каждому блоку <math>A_i, \, 1 \le i \le s </math> применяется операция XOR c первыми <math>r</math> битами состояния S. Затем выполняется <math>b</math> раундов перестановок над числом SШаблон:Sfn:

<math>S \longleftarrow p^b\left(\left(S_r \oplus A_i \right)\, || \, S_{320 - r} \right) \quad 1 \le i \le s </math>

В конце производится операция XOR c однобитной константой разделенияШаблон:Sfn:

<math>S \longleftarrow S \oplus \left(0^{319} \, || \, 1 \right) </math>

Стадия обработки исходного текста / шифротекста

Ascon обрабатывает исходный текст P блоками по <math>r</math> бит. К исходному тексту P приписывается единица и минимальное число нулей, необходимое для получения числа с размером кратным <math>r</math> бит. Далее получившееся число делится на <math>t</math> блоков по <math>r</math> бит в каждомШаблон:Sfn:

<math>P_1, \, P_2, \, \dots, \, P_t \longleftarrow \text{r - битные блоки} \, P \, || \, 1 \, || \, 0^{\left(|P| \mod r \right)}</math>

Шифрование

Из каждого блока <math>P_i, \, 1 \le i \le t </math>, используя XOR c первыми <math>r</math> битами состояния S, получается блок шифротекста <math>C_i </math>. При этом при выделении каждого из блоков <math>C_i </math> кроме последнего над состоянием S производится <math>b</math> раундов перестановокШаблон:Sfn:

<math>\begin{array}{lcl} C_i &\longleftarrow& S_r \oplus P_i \\ S &\longleftarrow& \begin{cases} p^b \, \left(C_i \, || \, S_{320 - r} \right) &\,& 1 \le i < t \\ C_i \, || \, S_{320 - r} &\,& i = t\end{cases} \end{array} </math>

При выделении последнего блока <math>C_t </math> его размер преобразуется так, чтобы размер полученнего шифротекста совпадал с размером исходного текстаШаблон:Sfn:

<math>\tilde{C_t} \longleftarrow {\left \lfloor C_t \right \rfloor}_{|P| \mod r} </math>

Дешифрование

Для каждого из блоков шифротекста <math>C_i </math> кроме последнего блок исходного текста <math>P_i </math> получается за счёт применения XOR к первым <math>r</math> битам состояния S. При этом эти <math>r</math> бит замещаются соответствующим <math>C_i </math>. Кроме того, для всех блоков <math>C_i </math> кроме последнего при выделении <math>P_i </math> состояние S преобразуется за счёт <math>b</math> раундов перестановокШаблон:Sfn:

<math>\begin{array}{lcr} P_i \longleftarrow S_r \oplus C_i \\ S \longleftarrow p^b \left(C_i \, || \, S_{320 - r} \right) \quad 1 \le i < t \end{array} </math>

Преобразование для последнего преобразованного блока <math>\tilde{C_t} </math>Шаблон:Sfn:

<math>\begin{array}{lcr} \tilde{P_t} \longleftarrow {\left \lfloor S_r \right \rfloor}_l \oplus \tilde{C_t} \\ S \longleftarrow \left(S_r \oplus \left(\tilde{P_t} \, || \, 1 \, || \, 0^{r - 1 - l} \right) \right) \, || \, S_{320 - r} \end{array} </math>

Завершающая стадия

В завершающей стадии применяется операция XOR к секретному ключу и состоянию S. Затем к состоянию S применяются <math>a</math> раундов перестановок. Тег T получается за счёт применения операции XOR к последним 128 битам состояния S (наименее значимым) и к последним 128 битам ключа KШаблон:Sfn:

<math>\begin{array}{lcr} S \longleftarrow p^a \left(S \oplus \left(0^r \, || \, K \, || \, 0^{320 - r - k}\right) \right)\\ T \longleftarrow {\left \lceil S \right \rceil}^{128} \oplus {\left \lceil K \right \rceil}^{128} \end{array} </math>

Алгоритм шифрования возвращает тег T вместе с шифротекстом <math>C_1\, || \, C_2\, || \, \dots || \, \tilde{C_t} </math>.

Алгоритм дешифрования-верификации возвращает исходный текст <math>P_1\, || \, P_2\, || \, \dots || \, \tilde{P_t} </math> в случае, если сгенерированный тег совпадает с тегом, переданным как параметр.

Перестановки в шифрах Ascon

Главные процессы в шифрах Ascon это перестановки <math>p^a </math> и <math>p^b </math>. Они осуществляются над внутренним состоянием S, которое делится на 5 слов по 64 бит каждое <math>x_0, \, x_1, \, x_2, \, x_3, \, x_4 </math>. В алгоритме перестановок последовательно применяется преобразование, которое основывается на SP-сети. Данное преобразование составляют 3 основных стадииШаблон:Sfn:

  1. Стадия прибавления констант
  2. Стадия замещения с 5-битным блоком замещения (англ. Substitution Box или S-box)
  3. Стадия линейной диффузии с 64-битными диффузионными функциями

Стадия прибавления констант

На данной стадии к слову <math>x_2 </math> в раунде перестановки <math>i </math> добавляется константа <math>c_m </math>, где <math>m = i </math> для перестановок <math>p^a </math> и <math>m = i + a - b </math> для перестановок <math>p^b </math>Шаблон:Sfn:

<math>x_2 \longleftarrow x_2 \oplus c_m </math>

Значения констант задаются следующей таблицейШаблон:Sfn:

Константы <math>c_m </math> для раундов <math>i </math> в <math>p^a </math> и <math>p^b </math>
<math>p^{12} </math> <math>p^{8} </math> <math>p^{6} </math> Константа <math>c_m </math> <math>p^{12} </math> <math>p^{8} </math> <math>p^{6} </math> Константа <math>c_m </math>
0 000000000000000000f0 6 2 0 00000000000000000096
1 000000000000000000e1 7 3 1 00000000000000000087
2 000000000000000000d2 8 4 2 00000000000000000078
3 000000000000000000c3 9 5 3 00000000000000000069
4 0 000000000000000000b4 10 6 4 0000000000000000005a
5 1 000000000000000000a5 11 7 5 0000000000000000004b

Стадия замещения

На стадии замещения параллельно применяется 5-битный блок замещения (S-блок) <math>S(x) </math> к каждому соответствующему битовому массиву из слов <math>x_0, \, x_1, \, x_2, \, x_3, \, x_4 </math>. Представленный в виде таблицы поиска S-блок для семейства шифров AsconШаблон:Sfn:

5-битный блок замещения в виде таблицы поиска
x 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
S(x) 4 b 1f 14 1a 15 9 2 1b 5 8 12 1d 3 6 1c 1e 13 7 e 0 d 11 18 10 c 1 19 16 a f 17

Стадия линейной диффузии

На стадии линейной диффузии делается преобразование диффузии в каждом 64-битном слове <math>x_0, \, x_1, \, x_2, \, x_3, \, x_4 </math> за счёт применения линейных функций к каждому слову <math>x_i </math>Шаблон:Sfn:

<math>x_i \longleftarrow \sum_i\left(x_i\right) \quad 0 \le i \le 4 </math>

Для семейства Ascon линейные диффузионные функции реализованы какШаблон:Sfn:

<math>\begin{array}{l} x_0 &\longleftarrow \sum_0 \left(x_0\right) = x_0 \oplus \left(x_0 \ggg 19\right) \oplus \left(x_0 \ggg 28\right) \\ x_1 &\longleftarrow \sum_1 \left(x_1\right) = x_1 \oplus \left(x_1 \ggg 61\right) \oplus \left(x_1 \ggg 39\right) \\ x_2 &\longleftarrow \sum_2 \left(x_2\right) = x_2 \oplus \left(x_2 \ggg 1\right) \oplus \left(x_2 \ggg 6\right) \\ x_3 &\longleftarrow \sum_3 \left(x_3\right) = x_3 \oplus \left(x_3 \ggg 10\right) \oplus \left(x_3 \ggg 17\right) \\ x_4 &\longleftarrow \sum_4 \left(x_4\right) = x_4 \oplus \left(x_4 \ggg 7\right) \oplus \left(x_4 \ggg 41\right) \\ \end{array} </math>

Преимущества шифров Ascon

Высокий уровень надёжности

Шифры Ascon-128 и Ascon-128a стали победителями соревнования CAESAR в категории применения в приложениях с ограниченными ресурсамиШаблон:Sfn. На данный момент с учётом продолжительного публичного исследования и криптоанализа предложенных шифров не было выявлено недостатков в надёжности шифровШаблон:Sfn.

Простота реализации

Алгоритмы Ascon работают с 64-битными словами и используют лишь простые побитовые операции. Это существенно упрощает реализацию алгоритмов семейства на новых платформахШаблон:Sfn.

Интерактивность и однопроходность

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

Примечания

Литература

Шаблон:Refbegin

Ссылки

Шаблон:Изолированная статья