Русская Википедия: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:
- Стадия прибавления констант
- Стадия замещения с 5-битным блоком замещения (англ. Substitution Box или S-box)
- Стадия линейной диффузии с 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>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:
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.
Примечания
Литература
Ссылки