Русская Википедия:Skipjack
Шаблон:Карточка блочного шифра Skipjack — блочный шифр, разработанный Агентством национальной безопасности США в рамках проекта Шаблон:Iw. После разработки сведения о шифре были засекречены. Изначально он предназначался для использования в чипе Clipper для защиты аудиоинформации, передаваемой по сетям правительственной телефонной связи, а также по сетям мобильной и беспроводной связи. Позже алгоритм был рассекречен[1].
История
Skipjack являлся одной из инициатив, предложенных в рамках проекта Шаблон:Iw. Руководили проектом Агентство национальной безопасности (АНБ) и Национальный институт стандартов и технологий (НИСТ), финансируемые правительством США. Официальная дата начала инициативы — 1993 год. Алгоритм шифрования был разработан в 1980 году, а первая его реализация была получена в 1987 году. Шифр был предназначен для использования в чипе Clipper, встраиваемом в защищаемое оборудование. При этом Skipjack использовался только для шифрования сообщений, а депонирование ключа[2] для возможности последующего использования уполномоченными органами — наиболее обсуждаемый аспект использования шифра — достигалось за счёт отдельного механизма, называемого Law Enforcement Access Field[1].
Изначально проект был засекречен и по этой причине подвергся огромной критике. Для повышения общественного доверия и оценки алгоритма были призваны несколько академических исследователей. По причине отсутствия времени для самостоятельного тщательного исследования эксперты сконцентрировались на изучении представленного АНБ описания процесса разработки и оценки алгоритма. В дополнение к этому они, в течение месяца, провели ряд небольших тестов. В предварительном отчете об их работе (окончательного отчета так и не последовало) указаны три заключения[3]:
- Принимая во внимание, что стоимость вычислительных мощностей уменьшается вдвое каждые 18 месяцев, лишь через 36 лет стоимость взлома Skipjack полным перебором сравняется со стоимостью взлома DES сегодня.
- Риск взлома шифра с помощью более быстрых способов, включая дифференциальный криптоанализ, незначителен. Алгоритм не имеет Шаблон:Iw и свойства комплементарностиШаблон:Ref+(\overline{M}) = \overline{C}</math>, где: <math>E_K(M)</math> — зашифровывание алгоритмом DES блока открытого текста <math>M</math>, <math>C</math> — полученный шифротекст, <math>\overline{x}</math> — побитовое дополнение к <math>x</math>.[4]|К}}.
- Устойчивость Skipjack к криптоанализу не зависит от секретности самого алгоритма.
Шифр был опубликован в открытый доступ 24 июня 1998 года. В августе 2016 года НИСТ принял новые принципы использования криптографических стандартов, в которых отозвал сертификацию алгоритма Skipjack для правительственных целей[5].
Описание
Skipjack использует 80-битный ключ для шифрования/дешифрования 64-битных блоков данных. Это несбалансированная сеть Фейстеля с 32 раундами[6].
Шифрование
Текст разбивается на 4 слова <math>w_i</math> по 2 байта каждое. Начальные данные есть слова, для которых <math>k = 0</math>, где <math>k</math> — порядковый номер раунда. Сначала совершается 8 раундов по правилу А, затем — по правилу Б. Это повторяется дважды, что, в итоге, дает 32 раунда.
Здесь и далее операция <math>x \oplus y</math> есть бинарная операция побитового (поразрядного к числам <math>x</math> и <math>y</math> ) сложения по модулю 2.
Шаблон:Столбцы Шаблон:Столбец Правило А
- <math>w_1^{k+1} = G^k(w_1^k) \oplus w_4^k \oplus counter^k</math>
- <math>w_2^{k+1} = G^k(w_1^k)</math>
- <math>w_3^{k+1} = w_2^k</math>
- <math>w_4^{k+1} = w_3^k</math>
Шаблон:Столбец Правило Б
- <math>w_1^{k+1} = w_4^k</math>
- <math>w_2^{k+1} = G^k(w_1^k)</math>
- <math>w_3^{k+1} = w_1^k \oplus w_2^k \oplus counter^k</math>
- <math>w_4^{k+1} = w_3^k</math>
После завершения алгоритма шифротекстом будут являться слова <math>w_i^{32},\ 1 \leqslant i \leqslant 4</math>.
Дешифрование
Начальные данные есть слова, для которых <math>k = 32</math>. Сначала совершается 8 раундов по правилу Б<math>^{-1}</math>, затем — по правилу А<math>^{-1}</math>. Повторяется дважды. Шаблон:Столбцы Шаблон:Столбец
- <math>w_1^{k-1} = [G^{k-1}]^{-1}(w_2^k)</math>
- <math>w_2^{k-1} = w_3^k</math>
- <math>w_3^{k-1} = w_4^k</math>
- <math>w_4^{k-1} = w_1^k \oplus w_2^k \oplus counter^{k-1}</math>
- <math>w_1^{k-1} = [G^{k-1}]^{-1}(w_2^k)</math>
- <math>w_2^{k-1} = [G^{k-1}]^{-1}(w_2^k) \oplus w_3^k \oplus counter^{k-1}</math>
- <math>w_3^{k-1} = w_4^k</math>
- <math>w_4^{k-1} = w_1^k</math>
Шаблон:Столбцы/конец После завершения алгоритма открытым текстом будут являться слова <math>w_i^{0},\ 1 \leqslant i \leqslant 4</math>.
Блок перестановок G
Шаблон:Iw <math>G</math> действует на 16-битное число и представляет собой четырёхуровневую сеть Фейстеля. Функция <math>F</math>, действующая на число размером в 8 бит, есть блок подстановок, который в спецификации алгоритма называется <math>F</math>-таблицей. Математически действие блока <math>G</math> можно описать так: Шаблон:Столбцы Шаблон:Столбец
- <math>G^k(w) = g_5 \| g_6</math>
- где: <math>w = g_1 \| g_2</math>
- <math>g_i = F(g_{i-1} \oplus cv_{4k+i-3}) \oplus g_{i-2} </math>
- <math>cv_{4k+i-3}</math> — это <math>(4k+i-3)</math> байт ключа
- <math>k</math> — порядковый номер раунда
- <math>x \| y</math> — операция конкатенации (объединения) байтов
- <math>[G^k]^{-1}(w) = g_1 \| g_2</math>
- где: <math>w = g_5 \| g_6</math>
- <math>g_{i-2} = F(g_{i-1} \oplus cv_{4k+i-3}) \oplus g_i</math>
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | a3 | d7 | 09 | 83 | f8 | 48 | f6 | f4 | b3 | 21 | 15 | 78 | 99 | b1 | af | f9 |
1x | e7 | 2d | 4d | 8a | ce | 4c | ca | 2e | 52 | 95 | d9 | 1e | 4e | 38 | 44 | 28 |
2x | 0a | df | 02 | a0 | 17 | f1 | 60 | 68 | 12 | b7 | 7a | c3 | e9 | fa | 3d | 53 |
3x | 96 | 84 | 6b | ba | f2 | 63 | 9a | 19 | 7c | ae | e5 | f5 | f7 | 16 | 6a | a2 |
4x | 39 | b6 | 7b | 0f | c1 | 93 | 81 | 1b | ee | b4 | 1a | ea | d0 | 91 | 2f | b8 |
5x | 55 | b9 | da | 85 | 3f | 41 | bf | e0 | 5a | 58 | 80 | 5f | 66 | 0b | d8 | 90 |
6x | 35 | d5 | c0 | a7 | 33 | 06 | 65 | 69 | 45 | 00 | 94 | 56 | 6d | 98 | 9b | 76 |
7x | 97 | fc | b2 | c2 | b0 | fe | db | 20 | e1 | eb | d6 | e4 | dd | 47 | 4a | 1d |
8x | 42 | ed | 9e | 6e | 49 | 3c | cd | 43 | 27 | d2 | 07 | d4 | de | c7 | 67 | 18 |
9x | 89 | cb | 30 | 1f | 8d | c6 | 8f | aa | c8 | 74 | dc | c9 | 5d | 5c | 31 | a4 |
Ax | 70 | 88 | 61 | 2c | 9f | 0d | 2b | 87 | 50 | 82 | 54 | 64 | 26 | 7d | 03 | 40 |
Bx | 34 | 4b | 1c | 73 | d1 | c4 | fd | 3b | cc | fb | 7f | ab | e6 | 3e | 5b | a5 |
Cx | ad | 04 | 23 | 9c | 14 | 51 | 22 | f0 | 29 | 79 | 71 | 7e | ff | 8c | 0e | e2 |
Dx | 0c | ef | bc | 72 | 75 | 6f | 37 | a1 | ec | d3 | 8e | 62 | 8b | 86 | 10 | e8 |
Ex | 08 | 77 | 11 | be | 92 | 4f | 24 | c5 | 32 | 36 | 9d | cf | f3 | a6 | bb | ac |
Fx | 5e | 6c | a9 | 13 | 57 | 25 | b5 | e3 | bd | a8 | 3a | 01 | 05 | 59 | 2a | 46 |
Криптоанализ
Эли Бихам и Ади Шамир произвели криптографическую атаку против 16 из 32 раундов в течение одного дня после рассекречивания алгоритма. Вместе с Алексом Бирюковым они, используя Шаблон:Iw, всего в течение нескольких месяцев раскрыли 31 из 32 его раундов[7]. Позже были опубликованы статьи атакующие 28 раундов шифра с использованием Шаблон:Iw[8].
В 2002 году Рафаэлем Фаном была опубликована статья, анализирующая возможные атаки на полные 32 раунда[9]. Позднее, в 2009 году, в статье, соавтором которой тоже являлся Фан, указано, что на тот момент не существовало атаки на полный алгоритм шифра Skipjack[10].
Комментарии
Примечания
Ссылки
Шаблон:Симметричные криптоалгоритмы Шаблон:Добротная статья
- ↑ 1,0 1,1 Ошибка цитирования Неверный тег
<ref>
; для сносокcapstone_release
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокkey_escrow
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокskipjack_review
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокcomplementary
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокNIST.800-175B
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокskipjack
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносок31round-attack
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокtruncated_diff
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокattack_full_cipher
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокno_attack_up_to_date
не указан текст