Cobra (шифр)

Поделись знанием:
Перейти к: навигация, поиск
Cobra
Создатель:

Кристиан Шнайдер,

Создан:

1996 г.

Опубликован:

13 апреля 1996 г.

Размер ключа:

8-576 бит

Размер блока:

128 бит

Число раундов:

12

Тип:

Сеть Фейстеля

Cobra — алгоритм симметричного блочного шифрования (размер блока 128 бит, ключ длиной до 576 бит), разработанный немецким криптологом Кристианом Шнайдером в качестве первого шифра, имеющего структуру гетерогенной сети Фейстеля (англ. extended Feistel network).





Структура

Алгоритм имеет структуру гетерогенной сети Фейстеля. Данная сеть, в отличие от классической, подразумевает использование более чем двух подблоков. Дополнительно, шифр использует несколько наборов зависимых от ключа таблиц подстановки (S-блоков, именуемых автором как англ. S-units) и дополнительную операцию для повышения диффузии.

Cobra - шифр со 128-битным (16-байтным) блоком и переменной длиной ключа. Алгоритм состоит из двух частей: процедуры расширения ключа и процедуры шифрования. Ключ (длиной до 576 бит) расширяется до массива подключей длиной 12464 байта. Шифрование заключается в операции ввода, повторения раундовой функции 12 раз и операции вывода.

Процедура шифрования включает предварительное и последующее ключевое забеливание.

Один раунд расширенной сети Фейстеля в общем случае выглядит следующим образом:

Di = Ai-1
Ci = Di-1 XOR F(D i; K i,c)
Bi = Ci-1 XOR F(C i; K i,b)
Ai = Bi-1 XOR F(B i; K i,a)

Что в случае Cobra выглядит следующим образом:

       A = A XOR W1,1
       B = B XOR W1,2
       C = C XOR W1,3
       D = D XOR W1,4
         for r = 1 to 12
             D' = A
             C' = (D XOR F(D';Pr,3;Sc ))>>>1
             B' = (C XOR F(C';Pr,2;Sb ))>>>1
             A' = (B XOR F(B';Pr,1;Sa ))>>>1
               A = A'
               B = B'
               C = C'
               D = D'
         next r
       A = A XOR W2,1
       B = B XOR W2,2
       C = C XOR W2,3
       D = D XOR W2,4

В процессе расширения ключа генерируются 12 P-Box с тремя 32-битными элементами каждая, 12 S-Box по 256 32-битных элементов каждая, две W-Box по четыре элемента каждая.

F функция является нелинейной подстановкой 32 битного элемента. Здесь A' = (B XOR F(B';Pr,1;Sa))>>>1, что значит A' получается путём циклического сдвига вправо результата сложения по модулю 2 переменной B с выходом F функции, которая имеет B', раундовый подключ Pr,1, первый элемент S Unit, Sa, как выход, где r является текущим раудом.

Таблицы подстановки

Классические шифры на основе сети Фейстеля (к примеру, отечественный стандарт шифрования ГОСТ 28147—89) сильно зависимы от используемой таблицы подстановки, которая и является нелинейной частью алгоритма. Но, как и в алгоритме Blowfish, таблицы подстановки могут быть секретными и зависимыми от ключа. В данном случае, таблицы S-Box генерируются ключевым расписанием, которое является своего рода криптографическим ГПСЧ. В данном случае, естественно, не исключено наличие слабых ключей и генерируемых ими слабых таблиц подстановки. Однако, для решения данной проблемы введена генерация нескольких независимых таблиц и дополнительная операция диффузии. В данном случае, вероятность появления слабого ключа настолько мала, что может не учитываться. Этот тезис особенно верен, а подход практичен при использовании в качестве ключевого материала выхода хэш-функции.

Реализация

Алгоритм, хотя и не получил широкого распространения, был реализован в популярной криптоутилите Blowfish Advanced 97 Маркуса Хана, где использовался его вариант с 64-битным блоком и ключом 256 бит. Затем в следующей редакции утилиты - версии CS была реализована редакция с 128-битным блоком и ключом до 576 бит.

См. также

Напишите отзыв о статье "Cobra (шифр)"

Ссылки

  • [groups.google.ru/group/sci.crypt.research/browse_thread/thread/5a541c8093c40583/56a8937fc8a029f5?hl=ru&ie=UTF-8&q=cobra+128+bit#56a8937fc8a029f5 Текст оригинального сообщения в группе Sci.crypt]  (англ.)
  • [cartman-cipher.narod.ru/mirror/cobra128.zip Реализация алгоритма на языке C]

Отрывок, характеризующий Cobra (шифр)

Гостьи встали и уехали, обещаясь приехать к обеду.
– Что за манера! Уж сидели, сидели! – сказала графиня, проводя гостей.


Когда Наташа вышла из гостиной и побежала, она добежала только до цветочной. В этой комнате она остановилась, прислушиваясь к говору в гостиной и ожидая выхода Бориса. Она уже начинала приходить в нетерпение и, топнув ножкой, сбиралась было заплакать оттого, что он не сейчас шел, когда заслышались не тихие, не быстрые, приличные шаги молодого человека.
Наташа быстро бросилась между кадок цветов и спряталась.
Борис остановился посереди комнаты, оглянулся, смахнул рукой соринки с рукава мундира и подошел к зеркалу, рассматривая свое красивое лицо. Наташа, притихнув, выглядывала из своей засады, ожидая, что он будет делать. Он постоял несколько времени перед зеркалом, улыбнулся и пошел к выходной двери. Наташа хотела его окликнуть, но потом раздумала. «Пускай ищет», сказала она себе. Только что Борис вышел, как из другой двери вышла раскрасневшаяся Соня, сквозь слезы что то злобно шепчущая. Наташа удержалась от своего первого движения выбежать к ней и осталась в своей засаде, как под шапкой невидимкой, высматривая, что делалось на свете. Она испытывала особое новое наслаждение. Соня шептала что то и оглядывалась на дверь гостиной. Из двери вышел Николай.
– Соня! Что с тобой? Можно ли это? – сказал Николай, подбегая к ней.
– Ничего, ничего, оставьте меня! – Соня зарыдала.
– Нет, я знаю что.
– Ну знаете, и прекрасно, и подите к ней.
– Соооня! Одно слово! Можно ли так мучить меня и себя из за фантазии? – говорил Николай, взяв ее за руку.
Соня не вырывала у него руки и перестала плакать.
Наташа, не шевелясь и не дыша, блестящими главами смотрела из своей засады. «Что теперь будет»? думала она.
– Соня! Мне весь мир не нужен! Ты одна для меня всё, – говорил Николай. – Я докажу тебе.
– Я не люблю, когда ты так говоришь.
– Ну не буду, ну прости, Соня! – Он притянул ее к себе и поцеловал.
«Ах, как хорошо!» подумала Наташа, и когда Соня с Николаем вышли из комнаты, она пошла за ними и вызвала к себе Бориса.
– Борис, подите сюда, – сказала она с значительным и хитрым видом. – Мне нужно сказать вам одну вещь. Сюда, сюда, – сказала она и привела его в цветочную на то место между кадок, где она была спрятана. Борис, улыбаясь, шел за нею.
– Какая же это одна вещь ? – спросил он.
Она смутилась, оглянулась вокруг себя и, увидев брошенную на кадке свою куклу, взяла ее в руки.
– Поцелуйте куклу, – сказала она.
Борис внимательным, ласковым взглядом смотрел в ее оживленное лицо и ничего не отвечал.
– Не хотите? Ну, так подите сюда, – сказала она и глубже ушла в цветы и бросила куклу. – Ближе, ближе! – шептала она. Она поймала руками офицера за обшлага, и в покрасневшем лице ее видны были торжественность и страх.
– А меня хотите поцеловать? – прошептала она чуть слышно, исподлобья глядя на него, улыбаясь и чуть не плача от волненья.
Борис покраснел.
– Какая вы смешная! – проговорил он, нагибаясь к ней, еще более краснея, но ничего не предпринимая и выжидая.
Она вдруг вскочила на кадку, так что стала выше его, обняла его обеими руками, так что тонкие голые ручки согнулись выше его шеи и, откинув движением головы волосы назад, поцеловала его в самые губы.
Она проскользнула между горшками на другую сторону цветов и, опустив голову, остановилась.
– Наташа, – сказал он, – вы знаете, что я люблю вас, но…
– Вы влюблены в меня? – перебила его Наташа.
– Да, влюблен, но, пожалуйста, не будем делать того, что сейчас… Еще четыре года… Тогда я буду просить вашей руки.