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

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

Шаблон:Карточка блочного шифра Skipjack — блочный шифр, разработанный Агентством национальной безопасности США в рамках проекта Шаблон:Iw. После разработки сведения о шифре были засекречены. Изначально он предназначался для использования в чипе Clipper для защиты аудиоинформации, передаваемой по сетям правительственной телефонной связи, а также по сетям мобильной и беспроводной связи. Позже алгоритм был рассекречен[1].

История

Skipjack являлся одной из инициатив, предложенных в рамках проекта Шаблон:Iw. Руководили проектом Агентство национальной безопасности (АНБ) и Национальный институт стандартов и технологий (НИСТ), финансируемые правительством США. Официальная дата начала инициативы — 1993 год. Алгоритм шифрования был разработан в 1980 году, а первая его реализация была получена в 1987 году. Шифр был предназначен для использования в чипе Clipper, встраиваемом в защищаемое оборудование. При этом Skipjack использовался только для шифрования сообщений, а депонирование ключа[2] для возможности последующего использования уполномоченными органами — наиболее обсуждаемый аспект использования шифра — достигалось за счёт отдельного механизма, называемого Law Enforcement Access Field[1].

Изначально проект был засекречен и по этой причине подвергся огромной критике. Для повышения общественного доверия и оценки алгоритма были призваны несколько академических исследователей. По причине отсутствия времени для самостоятельного тщательного исследования эксперты сконцентрировались на изучении представленного АНБ описания процесса разработки и оценки алгоритма. В дополнение к этому они, в течение месяца, провели ряд небольших тестов. В предварительном отчете об их работе (окончательного отчета так и не последовало) указаны три заключения[3]:

  1. Принимая во внимание, что стоимость вычислительных мощностей уменьшается вдвое каждые 18 месяцев, лишь через 36 лет стоимость взлома Skipjack полным перебором сравняется со стоимостью взлома DES сегодня.
  2. Риск взлома шифра с помощью более быстрых способов, включая дифференциальный криптоанализ, незначителен. Алгоритм не имеет Шаблон: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]|К}}.
  3. Устойчивость Skipjack к криптоанализу не зависит от секретности самого алгоритма.

Шифр был опубликован в открытый доступ 24 июня 1998 года. В августе 2016 года НИСТ принял новые принципы использования криптографических стандартов, в которых отозвал сертификацию алгоритма Skipjack для правительственных целей[5].

Описание

Skipjack использует 80-битный ключ для шифрования/дешифрования 64-битных блоков данных. Это несбалансированная сеть Фейстеля с 32 раундами[6].

Шифрование

Файл:Skipjack - Stepping Rules.png
Раунды алгоритма Skipjack

Текст разбивается на 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>^{-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>^{-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

Файл:Skipjack - G-permutation diagram.png
Схематическое представление блока перестановок G в шифре Skipjack

Шаблон: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>

Шаблон:Столбцы/конец

<math>F</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. 1,0 1,1 Ошибка цитирования Неверный тег <ref>; для сносок capstone_release не указан текст
  2. Ошибка цитирования Неверный тег <ref>; для сносок key_escrow не указан текст
  3. Ошибка цитирования Неверный тег <ref>; для сносок skipjack_review не указан текст
  4. Ошибка цитирования Неверный тег <ref>; для сносок complementary не указан текст
  5. Ошибка цитирования Неверный тег <ref>; для сносок NIST.800-175B не указан текст
  6. Ошибка цитирования Неверный тег <ref>; для сносок skipjack не указан текст
  7. Ошибка цитирования Неверный тег <ref>; для сносок 31round-attack не указан текст
  8. Ошибка цитирования Неверный тег <ref>; для сносок truncated_diff не указан текст
  9. Ошибка цитирования Неверный тег <ref>; для сносок attack_full_cipher не указан текст
  10. Ошибка цитирования Неверный тег <ref>; для сносок no_attack_up_to_date не указан текст