Crypto How stuff Works


Бывает ли книга по криптографии, где бы детально обсуждались и сравнивались различные примитивы и конструкции низкого уровня; возможно безотносительно к реализациям конкретных шифров на их основе. Интересно посмотреть, почему cделали так, а не иначе, что и насколько сильнее/слабее, быстрее/медленнее и пр.


Комментарии
— unknown (23/12/2014 09:39)   

Монографий нет. Даже публикации от разработчиков достаточно урезанные. Изредка что-то подобное рассматривается в диссертациях, но и то, выбирается какое-то узкотематическое направление в разработке и в нём рассматривается несколько конструкций.
Гость (23/12/2014 12:24)   
Никому не интересно или "широкой публике знать не положено"?
— unknown (23/12/2014 12:56, исправлен 23/12/2014 12:57)   

«Узкой» публике неинтересно доносить это для «широкой». На таком фундаментальном уровне — публикации только по узкоспецифическим вопросам. Вероятно, негласно считается, что для понимания этого нужно знать столько теории, столько перечитать частных случаев криптоанализа, что узкоспецифичные публикации будут ясны сами по себе, а монографии и сравнительные обзоры не нужны.

— ZAS (23/12/2014 21:03)   
Складывается впечатление, что решения, применяемые разработчиками, довольно произвольны и в большинстве слабо обоснованы. Относится и к принятым стандартам, и к признанным мастерам жанра. Прослеживается желание преодолеть конкретные уязвимости, а дальше говорится фраза вроде "мы проверили случай x = 1,2,3,4,5 и предполагаем что данное соотношение работает до x = 1e9..."
— unknown (24/12/2014 10:00, исправлен 24/12/2014 16:55)   

Есть такое. Неполнота теории, погоня за передовыми наработками.


Но всё ещё сложнее в плане тенденций и накопления знаний. Например, после Twofish и Rijndael началось повальное увлечение MDS-матрицами в шифрах и хэшах. Вышло масса исследований по критериям проектирования этих матриц. По этим критериям их и сравнивали. Затем придумали другие классы матриц. Затем стали изобретать компактные и итеративные матрицы, опять ещё больше новых классов. Всё больше углубления в детали, но всё меньше исследователей понимают всю тему в целом и не могут толком сравнить MDS-матрицы если те принадлежат к совершенно разным классам. А ведь линейные преобразования можно делать и не на MDS-матрицах, даже сейчас есть вполне современные алгоритмы и без них. Есть специалист, который может убедительно сравнить MDS и ARX-смешивание (Addition, Rotation, XOR)? Неизвестно, и специалистов с таким охватом нет, и область неисследована.


С S-блоками также: в девяностые была мода на S-блоки на бент-функциях (CAST). Замечательно через них всё расписывали и доказывали. Затем от этого дизайна отказались. Тренд больше стал на алгебраические S-блоки. Но где подробное доказательство, что они лучше в пересчёте стойкости на производительность по сравнению с предыдущими конструкциями?
Возможно, где-то в кулуарах и частных переписках между собой посовещались и решили, что новое направление перспективнее. Но ведь были раньше и до сих пор активно разрабатываются и шифры/хэши вообще без S-блоков, где нелинейный слой задаётся по другому. Кто-то привёл общее доказательство, что лучше: слабая нелинейная функция на весь блок или сильные, но маленькие S-блоки, ведь последующий линейный слой размажет и размешает результат нелинейного в обоих случаях? А сколько вообще неисследованных вопросов в межраундовых взаимодействиях, ключевом расписании и пр., к которым толком и не подступались.


P.S.: вспомнил коммент spinore[link1] про квантмех:


Есть такие вещи, которые выполняют только специально обученные люди, которые уже угрохали кучу лет в то, чтобы разобраться с темой. Квантмех, как и какая-нибудь биология или медицина — не те области, куда можно легко въехать, скондачка. Несмотря на кажущуюся простоту самых основ, под ними зарыто большое число очень непростых фактов, которые людям в теме хорошо известны и уже обыденны, а только пришедшему в тему их никто не расскажет. Даже если самому изучать всё по книжкам, нет толковых книжек, которые были бы достаточны. Разные аспекты и темы неплохо освящены в некоторых книгах, но нет такой одной книги, где был бы полностью представлен современный своего рода «теоретический минимум».

И про исследователей[link2]:

Ещё одна проблема — узость профессиональных кругов. Если тема не ужас как популярна в сообществе, ею занимаются (или занимались) человек 20-40 во всём мире, причём почти все друг друга знают либо очно, либо заочно. Беда в том, что оценить такую работу исследователь, не принадлежащий к этим 20-40, не сможет, он попросту некомпетентен.

А вы "How stuff works" хотели… Когда тематика устоится и устареет, может тогда будет какая-то запоздалая популяризация фундаментальных основ.

— ZAS (24/12/2014 20:50)   
Вышло масса исследований по критериям проектирования этих матриц. По этим критериям их и сравнивали. Затем придумали другие классы матриц. Затем стали изобретать компактные и итеративные матрицы, опять ещё больше новых классов. Всё больше углубления в детали, но всё меньше исследователей понимают всю тему в целом и не могут толком сравнить MDS-матрицы если те принадлежат к совершенно разным классам. А ведь линейные преобразования можно делать и не на MDS-матрицах, даже сейчас есть вполне современные алгоритмы и без них. Есть специалист, который может убедительно сравнить MDS и ARX-смешивание (Addition, Rotation, XOR)?


Недавно пыталися уяснить это для себя. Как мат. прикидками, так и радиолюбительскими методами.
Возьмем за основу S-box от AES. Вопрос: как, используя этот S-box как строительный блок, сделать S-box большего размера с ассимптотически правильной диф. характеристикой?
Простейший и самый неэффективный вариант – слои с циклическим сдвигом на пол-блока. Требуется >4 раундов.а
Немногим эффективнее слои с какими-то P-box между ними.
Более эффективный вариант – FN (или UFN). >3 раундов. Просто, но нераспараллелить, потому медленно.
Еще более эффективный вариант – смешивание полиномом. >2 раундов. Причем, полином совcем не обязан быть MDS, что подтверждается опытом. (критерий оптимизации суммы активных S-box до и после – странное требование).
При ARX смешивании можно нарваться на неожиданные проблемы типа разность здесь компенсируется разностью там, и это может проходить из раунда в раунд. SHA-2 дизайн – пример оптимизации против таких эффектов.

А вы "How stuff works" хотели… Когда тематика устоится и устареет, может тогда будет какая-то запоздалая популяризация фундаментальных основ.


C публикации DES прошло больше 40 лет. В общем кажется понятным как сделать сильный перестраховочный шифр или хеш-функцию, но получается в несколько раз медленнее, чем лучшие варианты.
— unknown (24/12/2014 21:54, исправлен 24/12/2014 22:00)   

См. Anubis[link3] и Twofish. Только у таких составных S-блоков сразу вылезают неприятные характеристики.



Бывают конструкции и без MDS (в том же Twofish?), но не просто так все на нём зациклились. Там взяты основы из теории кодирования и есть какой-то переход на branch-number и ещё какие-то критерии.



Я вот какое-то время назад решил поиграть в любительство с randomness-экстракторами. Шнайер и Кравчик писали, что можно использовать обычные хэши. Перечитал кучу работ, думаю, а я чем хуже? Очень радовался своей первой конструкции, так ловко там перестраховался. Затем нашёл несколько протечек — противник может различать одинаковые малые блоки в начале массива сырой энтропии. А затем и вовсе на пальцах сам себе доказал, что в лучшем случае стойкость экстрактора такой конструкции будет равна размеру выхода хэша. Т.е. он всего-лишь вычислительно стойкий, а не информационно-теоретический. Стоило всё это городить, чтобы получить такой жалкий результат!


Вторая конструкция наивно казалось мне самому более основательной и солидной. Вроде там и информационно-теоретическая стойкость должна получаться. Вот только не уверен насколько, а уж количественно вывести вообще не смог. Поэтому непонятно сколько энтропии надо забирать, а сколько отбрасывать. Наконец, просто посчитал затраты на число операций и сравнил с обзором уж известных экстракторов. Оказалось, что моя конструкция имеет совершенно неприличный оверхэд на число операций, при том, что я не могу оценить её стойкость.


Не могу говорить за всех, но на своём опыте могу сказать, что лезть в фундаментальные вещи — это не любительство и не попытка разобраться, это тупо NIH-синдром и попытка скрыть от себя самого то, что не осилил теорию уже созданного (теорию экстракторов в одном моём случае). Ну познал в очередной раз границы своей (не)компетентности, убедился, что нельзя перестраховаться самому, думая, что другие только и делают, что подсовывают тебе закладки во всех алгоритмах, а ты такой хитромудрый светоч, один принесёшь человечеству честный результат.


Также как с MDS-матрицами, когда посмотрел отсылки к теории кодирования, а там кучи томов и публикаций, опять понял, что это не осилить. Потрындеть на общем уровне можно, но чего-то создавать не для целей профессиональной публикации смысла нет, особенно граничащее с фундаменталкой. Если поймать специалиста в коридоре и заставить его смыслить свои самопальные опусы, то скорее всего он поднимет насмех эти потуги. Ну это моя личная позиция, я её придерживаюсь и отстаиваю, но не навязываю. Можете дальше изобретать конечно, в качестве криптолюбительства, разминки для мозгов, интеллектуальных головоломок…

Гость (24/12/2014 22:08)   
А в прикладной области криптолюбительство тоже смерти подобно, или имеет право на существование?

Доспутим, если попытаться изобрести свой протокол передачи чего-либо, всю криптографию отдав GPG. Литературу на какую тему вообще стоит читать, если интересны сериализованные структуры данных и сетевые протоколы?
— unknown (24/12/2014 22:45, исправлен 24/12/2014 22:51)   

По поводу фундаменталки ещё немного. Втыкая в теорию экстракторов, нашёл упоминание, что с их помощью можно конструировать потоковые шифры. Подумал, придумал, что вроде и блочные можно. Так это целое новое направление! Или полная фигня? Почему публикаций нет? Может всё-таки нельзя? Пытались и не вышло? Или оказалось, что такие конструкции никаких преимуществ не имеют? Даже если я прав в оптимистичном прогнозе (один шанс на миллион), то надо лет десять делать публикации. И не про шифры, а только про общетеоретические конструкции. Может даже не по криптографии, а по комбинаторике, теории сложности вычислении и пр., и только если всё удачно сложится, дойти до публикации идей шифров (а не самих шифров ещё).


Когда начинаешь думать о «криптоперестраховках», то начинаешь рыть теорию и понимаешь, как мало на самом деле понимаешь. Вылезают целые неисследованные области, пласты для возможных открытий, на которые можно потратить кучу усилий и годы работы без гарантии успеха. Чтобы это всё осилить, нужно становиться чистым теоретиком, которому все эти ваши перестраховки неинтересны. А если не осилить теорию, то не можешь реально делать перестраховки. Потому перестраховочная криптография и непопулярна. Те, кто её могут, она им ненужна и неинтересна — слишком много интересной теории вылезает на таком уровне.



Я дошёл до границ своей (не)компетентости в этой теме[link4]. А ведь так легко сначала всё казалось. Даже горячие головы убеждали, что надо только взяться, работ мало потому, что тему мало кто исследует. Оказывается, работ полно и исследований тоже, а за десятилетия результата нет. Потому что тема плохо формализуется на уровне теоретических определений отрицаемости. Толку в практике без хорошей теории.



Вот теория, ориентированная на практическое конструирование протоколов, Introduction to Modern Cryptography[link5], Lecture Notes on Cryptography[link6], есть ещё видео на курсере, похожие лекции от других авторов. Это студентам на один семестр. Я если и осилил, то на троечку. Подглядывая туда, я могу разбирать доказательства (даже находил ошибки у самих уважаемых авторов), но самостоятельно доказать стойкость протокола — нет. А если не можете доказать стойкость любого прикладного протокола по Беллейру-Рогвею, то считайте, что вы в криптографии дуб-дубом (вот как я ;) — ваше место только бумажки в какой-нибудь редколлегии перекладывать, да на форумах трындеть.


Конечно, не боги горшки обжигают, но в любом случае — или этому надо посвящать свою профессиональную карьеру, или никак.

— ZAS (24/12/2014 22:53)   
>как строительный блок, сделать S-box большего размера с ассимптотически правильной диф. характеристикой?

См. Anubis и Twofish. Только у таких составных S-блоков сразу вылезают неприятные характеристики.


О том и речь. Пытался обьединить так, чтобы получить правильную дифф. характеристику.

>Причем, полином совcем не обязан быть MDS, что подтверждается опытом.
Бывают конструкции и без MDS (в том же Twofish?), но не просто так все на нём зациклились. Там взяты основы из теории кодирования и есть какой-то переход на branch-number и ещё какие-то критерии.


Требование MDS вытекает из максимизации суммы branch number до и после. Это как 2+2=4. Но насколько я читал умных книжек и пытался думать и разбираться, мне не очевидно почему сумма branch number является адекватным критерием качества перестановки. Произвольно выбрали какой-то критерий и по нему оптимизировали.

Шнайер и Кравчик писали, что можно использовать обычные хэши.


Скажу вам по секрету, что если читать внимательно, то видно что Шнаер заядлый шифропанк; и Бернштейн тоже :)

Не могу говорить за всех, но на своём опыте могу сказать, что лезть в фундаментальные вещи — это не любительство и не попытка разобраться,


Не боги горшки обжигают. Таки единственный способ разобраться в теме – заниматься темой. Хотя бы на любительском уровне. Непродуманное использование готовых чужих блоков – верный способ наступить на грабли; примеров масса.
— unknown (24/12/2014 23:06, исправлен 24/12/2014 23:20)   

Так бы и линейный слой вообще не был нужен. Да вообще, насостовляли бы из маленьких таблиц один большой S-блок с входом-выходом в 128-бит, вот вам и идеальный шифр! А по сути — блочный шфир с множеством раундов — это ведь попытка эмуляции этого самого и есть.



Про него я в курсе, также как и то, что как теоретик он — нулевой. Практик, организатор, интуиция у него хорошая, но не более. Про подозрения о более существенном вкладе соавторов в его работы я ранее где-то упоминал. К тому же в крипто он фактически давно уже не у дел. Прославился популяризаторской книжкой в девяностые и удачным продвижением пары тройки своих с соавторами идей.



А ведь и правда :)



Я успел придти к такому же выводу в итоге :)



Если я не могу доказать стойкость протокола по всем формальностям в рамках модели идеального шифра или случайного оракула, то накой мне лезть в нижележащий уровень? Я не умею оперировать идеализированными абстракциями, значит я не дозрел до применения знаний того, где эти абстракции могут протекать.

— ZAS (25/12/2014 04:30)   
>О том и речь. Пытался обьединить так, чтобы получить правильную дифф. характеристику.

Так бы и линейный слой вообще не был нужен. Да вообще, насостовляли бы из маленьких таблиц один большой S-блок с входом-выходом в 128-бит, вот вам и идеальный шифр! А по сути — блочный шфир с множеством раундов — это ведь попытка эмуляции этого самого и есть.


Как правильно составить большой S-блок из многих маленьких является одной из вечных задач криптографии :)

Было бы удобно иметь универсальный блочный примитив на все случаи, позволяющий работать с блоками произвольного размера. Пусть неэффективный, но простой. С безопасностью не менее 128 бит.

Мне нравится ARX-примитив из трех строчек:

S(x)
{
x = (x << a) +/- x;
x = (x >> b) ^ x;
x = cyclic_shift(x, c);
}

a,b,c – константы (возможно, зависящие от раунда), key – раундовый ключ.

Примитив является биекцией. Хотя обратную функцию напрямую вычислять неудобно, проще завернуть примитив в сеть Файстеля.

L = L + S(R^key[i]);
R = R + S(L^key[i+1]);


Получается конструкция с оптимальным чередованием сдвигов, арифметики и логических операций. Конструкция более несимметричная чем используемые в threefish и пр.; то есть функции для соседних битов существенно отличаются; чтобы осложнить rotational cryptoanalysis.
Можно сделать примитив для слов произвольной ширины, с применением широкой арифметики. Оно обеспечивает диффузию за логарифмическое количество раундов. Выбор констант a,b,c важен; возможны хорошие и плохие варианты. Детерминированной процедуры выбора констант не придумал; нашел варианты для 32- и 64- бит слов перебором.

Теперь, имея примитив из 6-раундов Файстеля (L+R = 128 бит), обеспечивающий хорошую диффузию, применим его к блоку данных произвольной ширины. Простейшее решение – циклический сдвиг данных на одно слово в каждом раунде. Но это линейная диффузия, нужно раундов на порядок больше чем размер блока в словах.

Придумать хорошую схему перемешивания для произвольного размера блока оказалось нетривиальной задачей.
Можно сделать как многоуровневую сеть Файстеля, можно как интерливер слов через пол-блока, можно через какой-то произвольный полином. Тут пока нет идей.

http://www.zas-comm.ru
— unknown (25/12/2014 09:41)   

Есть тривиальная по конструкции схема симметричного шифрования на квазигруппах, в том числе и блочного, там нет ни линейного слоя, ни S-блоков в чистом виде для нелинейного, только сцепление квазигрупп определённым способом, используя свойства некоммутативных операций.

Развивают это некие болгары, идея известна десятки лет. Вроде и не совсем маргинальщина, но не взлетает. Там возникает масса вопросов по теории алгебраических операций. Да и когда начинают реализовывать, получаются опять же громоздкие конструкции, с теми же сетями Файстеля, да ещё и менее стойкие в итоге.
Гость (25/12/2014 17:28)   

Особенно хорошо, если эта задача точно такая же, как создание вечного двигателя. Не бывает идеальных блочных шифров (доказывается строго) идеальных S-блоков, и чем больше S-блок, тем очевидней это вылазит, наверно.
— unknown (25/12/2014 17:50)   

Наоборот. Если он задан истинно случайной большой таблицей, то он идеален как одноразовый блокнот идеальный блочный шифр. Случано сгенерированная таблица размером 2128 • 2128 = 2256 — это IBC, он же большой S-блок. И вообще, чем больше таблица, тем она лучше. А вот всякие трюки с заданием функций алгебраически и созданием больших таблиц из маленьких — это такая тонкая оптимизация эмуляции вечного двигателя.
— ZAS (10/01/2015 07:15)   
>Не бывает идеальных блочных шифров (доказывается строго)



Наоборот. Если он задан истинно случайной большой таблицей, то он идеален как одноразовый блокнот идеальный блочный шифр. Случано сгенерированная таблица размером 2128 • 2128 = 2256 — это IBC, он же большой S-блок.


Очевидно, Вы имели в виду случайную перестановку, а не случайную таблицу.

И вообще, чем больше таблица, тем она лучше. А вот всякие трюки с заданием функций алгебраически и созданием больших таблиц из маленьких — это такая тонкая оптимизация эмуляции вечного двигателя.


Но довольно трюизмов. Возвращаясь к излюбленной теме построения легковесного блочного шифра с произвольно задаваемым размером блока и ключа. Отсутствие публикаций говорит о том, что задача никому не интересна, или что так сделать невозможно?

http://www.zas-comm.ru
— unknown (10/01/2015 14:33, исправлен 10/01/2015 15:06)   

Конечно, перестановку, заданную таблицей.



Это говорит только о том, что тема массово никем не излюблена, а скорее маргинальна. Вот появились хэши (Keccak и др.), которые имеют произвольный размер выхода, которые можно использовать и как поточные шифры, подавая на вход ещё и ключ произвольного размера. Только стойкость такого хэша будет ограничена размером внутреннего состояния. Можно считать, что какой бы ключ не задали, стойкость алгоритма не выше 1024 бит. Или вы хотите, чтобы внутреннее состояние произвольно росло? Для блочных шифров есть режимы сцепления обычных шифров (типа AES) в большой блок, стойкость от этого не растёт, это не для увеличения стойкости делается.


Специальные шифры с произвольным размером ключа и блока создавались, публикации были, даже в конкурсе AES один такой маргинальный монстр (HPC[link7], в русской вики даже немного подробнее[link8]) безуспешно участвовал. И это не единственный образец, кстати сильно напоминающий ваши идеи. Но затем решили, что лучше создавать режимы для обычных блочных шифров (один из интересных последних — OCFB[link9]), главное, чтобы стойкость не снижалась. На то, что она от этого будет расти, никто всерьёз и не рассчитывает. Произвольно большой ключ сам по себе тоже никому неинтересен.


Сама по себе постановка вопроса в перестраховочной криптографии — теоретически неинтересна.


Если мы может создать шифр с гарантированно 256-битной стойкостью, то зачем нам стойкость больше? Даже от квантовых компьютеров хватит 512 бит, если не появится специфических видов квантового криптоанализа симметрики. А появятся они или нет, и в каком виде, сложно даже предположить, хотя некоторые пытаются[link10].


Если невозможно создать хоть сколько-нибудь убедительно стойких шифров в 256-бит, то что? Нужно для этого наворачивать ключ и размер блока? Ну если да, так пошифруйте всё каскадом и не мучайтесь. Негласно считается, что с симметрикой всё хорошо, весь реальный криптоанализ строится поверх багов программных реализаций. Можете в это не верить, считая факты неубедительными, так и опровергающие факты тоже скорее всего будут неубедительными, иначе бы вы уже опубликовали как поломать AES или что-то подобное, хотя бы теоретически. Вопрос веры в необходимость перестраховочной
криптографии — спекулятивно-философский.


Вообще, тема уже неоднократно обсуждалась, например здесь[link11].


Интересно, что идея криптопреобразования с произвольным размером блока (внутреннего состояния) и ключа м.б. полезна, только пока непонятно для чего. Может, как некий универсальный примитив. Но не для перестраховок, а для какой-то более продвинутой теории.


Тот же HPC, как ни высмеивали его автора за маргинальный подход, стал прообразом tweak-шифрования, некоторых видов дискового шифрования, шифрования несцепляемых блоков меньше 64-128-256 для каких необычных протоколов, для полей в базах данных, для блочного шифрования в недвоичных системах счисления и др.

Гость (10/01/2015 18:41)   

с каскадами настойчиво предлагаю закончить ©[link12]


Вся суть в этих словах:

е[link13]сли построят все варианты моделей каскадов перестраховочных шифров, как у нас уже ранее обсуждалось, в рамках всех формальных моделей PRP/PRF-идеальной безопаности, то вместо каскада станет ясно, как создать очередной более стойкий шифр

Не забывайте, что ZAS — тролль. Если подзабыли, то почитайте первые страницы[link14]. Всё, что нужно, уже было произнесено.

Когда ZAS'у будет нечего ответить, он вам скажет, что вы переозвучиваете то, что где-то кем-то написано, а не пишете от себя (даже если вы переозвучиваете, что 2*2=4). А вот он, такой весь из себя умный, никого не слушает и идёт своей дорогой. Похоже на классический хрестоматийный случай любителя, который нахватался обрывочных знаний по вершкам и думает, что у него есть цельная картина и понимание, дескать, что Шамир придумывает шифры, что он — разницы нет.
— ZAS (10/01/2015 19:22)   
>Возвращаясь к излюбленной теме построения легковесного блочного шифра с произвольно задаваемым размером блока и ключа.


Вот появились хэши (Keccak и др.), которые имеют произвольный размер выхода, которые можно использовать и как поточные шифры, подавая на вход ещё и ключ произвольного размера. Только стойкость такого хэша будет ограничена размером внутреннего состояния. Можно считать, что какой бы ключ не задали, стойкость алгоритма не выше 1024 бит. Или вы хотите, чтобы внутреннее состояние произвольно росло?


Мне представляется неправильным усечение входной энтропии до жестко заданных размеров внутреннего состояния. Было бы удобно задавать размер состояния как произвольный параметр.

Но затем решили, что лучше создавать режимы для обычных блочных шифров (один из интересных последних — OCFB),


Вы уже приводили ссылку на WCFB; спасибо; изучил. Некоторые действия и утверждения авторов сомнительны и странны, но как wide block режим без претензий на повышение стойкости – сойдет. Мне хотелось бы именно повышения стойкости. Для того, чтобы обьединить обычные блочные шифры в широкий блок, нужна более сильная схема перемешивания и/или большее количество раундов. Хорошие результаты были бы от перемешивания на MDS-полиномах, но непонятно как сделать такое перемешивание для блока произвольно задаваемого размера. Перемешивание на основе cетей Файстеля приводит к N^2 возрастанию числа операций. Самый слабый вариант перемешивания – с циклическим сдвигом на пол-блока между раундами.

Негласно считается, что с симметрикой всё хорошо, весь реальный криптоанализ строится поверх багов программных реализаций.


Это почти так для шифров; не совсем так для хеш функций; и еще специфические проблемы типа related key.

даже в конкурсе AES один такой маргинальный монстр HPC безуспешно участвовал


В HPC можно отметить сильное ключевое расписание, представляющее собой PRNG. Хорошо, но уж очень медленно и монструозно.

И это не единственный образец, кстати сильно напоминающий ваши идеи.


Мои идеи намного незатейливей, например: enrupt[link15]

Если невозможно создать хоть сколько-нибудь убедительно стойких шифров в 256-бит, то что? Нужно для этого наворачивать ключ и размер блока? Ну если да, так пошифруйте всё каскадом и не мучайтесь.


Каскад решает вопрос с размером ключа, но не с размером cостояния. Кроме того, для каскада требуется генератор key schedule, который по уму опять-таки требует размера состояния с весь длинный ключ.

Интересно, что идея криптопреобразования с произвольным размером блока (внутреннего состояния) и ключа м.б. полезна, только пока непонятно для чего. Может, как некий универсальный примитив.


Да. Как простой универсальный примитив для построения шифров и хеш функций на все случаи. Без претензий на супер скорость, зато удобный.

http://www.zas-comm.ru
— unknown (10/01/2015 20:21, исправлен 10/01/2015 20:38)   

Для масштабируемых на произвольный блок сетей Файстеля, и вроде бы, IDEA, была даже какая-то диссертация, но вроде не особо авторитетная, я как-то пытался её найти, но не вспомнил. Для MDS вроде как было доказано, что гарантированное увеличение стойкости даётся только за счёт квадратичного роста какого-то параметра (памяти? из-за этого возникли проблемы в использовании MDS в хэшах), а экономный рост — на грани компромиссов и тонкого трюкачества в отношении стойкости.


Я не удивлюсь, если теоретики докажут (или уже доказали, но этот результат никому неинтересен), что гарантированная стойкость достигается квадратичным ростом раундов при размере внутреннего состояния, равном (или ≥) размеру блока. Тогда это тупик, никому такими затратами повышенная стойкость не нужна. А если можно без этого, то не получилось ли бы и обычные шифры переписать менее затратным способом? Или вы рассчитываете, что там какая-то хитрая функция стойкости в зависимости от размера блока, которая может быть константой и не при квадратичном росте числа раундов? Поиск ответа на такой вопрос — какая-то амбициозная теоретическая задача, которая может не иметь никакого практического воплощения. Если кто-то оплатит вам годы изысканий по такой теме — отлично, с пользой проведёте время, даже если не добьётесь успеха. Хорошие теоретические разработки часто дают косвенную пользу хотя бы при переносе в смежные области.



Если 2128, 2256, 2512 — это мало, то тогда лучше вычислительно-стойкую криптографию вообще бросать, переходить на квантовую что-ли. Ну или отпозиционируйте свою идею, разрекламируйте, только так, чтобы увлечь специалистов, а не шифрпанков. Если ваша аудитория — шифрпанки, то нет проблем, увеличивайте стойкость как хотите. В качестве аргументации будет достаточно страшилок про сверхмогущее АНБ.


А, вы в соседней теме, параллельно кому-то с аналогичными темами отвечаете[link16]. Тогда дискуссия в очередной раз закономерно ни о чём. Нужных вам людей здесь нет, не факт, что вы их найдёте где-либо или сможете заинтересовать своими идеями с таким подходом.

— ZAS (10/01/2015 21:44)   
Для масштабируемых на произвольный блок сетей Файстеля, и вроде бы, IDEA, была даже какая-то диссертация, но вроде не особо авторитетная, я как-то пытался её найти, но не вспомнил.


Fibikova[link17]


Для IDEA предлагается схема с циклическим сдвигом на пол- малого блока в каждом раунде. Линейная диффузия; N^2 операций, малоэффективно. Если бы автор использовал, например, интерлив слов с сдвигом на половину всего большого блока, то диффузия была бы экспоненциальной (порядка N log(N) операций). Но тогда труднее обосновать нужное число раундов. Для Файстеля рассматривается SHA-подобная схема; тоже квадратичная.

Я не удивлюсь, если теоретики докажут (или уже доказали, но этот результат никому неинтересен), что гарантированная стойкость достигается квадратичным ростом раундов


Похоже на то. Доказуемая стойкость при квадратичной зависимости.

Я не удивлюсь, если теоретики докажут (или уже доказали, но этот результат никому неинтересен), что гарантированная стойкость достигается квадратичным ростом раундов при размере внутреннего состояния, равном (или ≥) размеру блока. Тогда это тупик, никому такими затратами повышенная стойкость не нужна. А если можно без этого, то не получилось ли бы и обычные шифры переписать менее затратным способом?
Или вы рассчитываете, что там какая-то хитрая функция стойкости в зависимости от размера блока, которая может быть константой и не при квадратичном росте числа раундов?


Обычные шифры – частные случаи с числом операций N log (N). Наверное, возможен и общий случай для блока произвольного размера и N log N операций.

Поиск ответа на такой вопрос — какая-то амбициозная теоретическая задача, которая может не иметь никакого практического воплощения. Если кто-то оплатит вам годы изысканий по такой теме — отлично, с пользой проведёте время, даже если не добьётесь успеха. Хорошие теоретические разработки часто дают косвенную пользу хотя бы при переносе в смежные области.


Я учусь; мне интересны новые знания и обмен мнениями с опытными людьми. Хочется понимать, как работают криптографические примитивы, что и почему и как делается.

В качестве аргументации будет достаточно страшилок про сверхмогущее АНБ.


Видите ли. Обыватели плохо представляют, что такое спецслужбы. Отсюда наивная вера в Tor, TrueCrypt и пр. Дело отнюдь не в слабости крипто как такового.
— unknown (10/01/2015 22:07)   

Т.е. вы не пытаетесь сформулировать никакой теоретической базы под свою задачу. Просто кидаете тролльские провокационные утверждения, что существующее крипто фуфловое плохо обосновано и можно якобы также необосновано предложить кучу других вариантов. А на самом деле вы просто хотите так поучиться, да ещё чтобы кто-то ваши учебно-тренировочные алгоритмы разобрал и разъяснил все ошибки.
— ZAS (11/01/2015 00:18)   
Т.е. вы не пытаетесь сформулировать никакой теоретической базы под свою задачу.


Упаси боже. Не претендую на глубокие знания теории и тем более элемент новизны. Решаю конкретные задачи. Используя только то, что доступно моему пониманию. Делаю прикидки и оценки, согласно статьям и учебникам. Пытаюсь разобраться в конструкциях, сделанных другими. Спрашиваю совета у знающих людей.

Просто кидаете утверждения, что существующее крипто плохо обосновано и можно якобы также необосновано предложить кучу других вариантов.


Но ведь это действительно так. Существующее крипто по большей части отфонарно. Возможно множество других вариантов, ничем не лучше и не хуже.

А на самом деле вы просто хотите так поучиться, да ещё чтобы кто-то ваши учебно-тренировочные алгоритмы разобрал и разъяснил все ошибки.


Взаимный обмен идеями, решениями и упражнениями был бы всем полезен. Во всяком случае намного лучше споров ни о чем.
— unknown (11/01/2015 02:01)   

Ну вот как так можно :) Если смотрю в книгу и вижу фигу, то может книга и фигОвая, но может в ней плохо разобрался?

Но если все публикации в какой-то теме воспринимаются как фиговые, то что-то фигово скорее в понимании темы. Хотя, даже если в самой теме так фигово, то тогда нет смысла этой темой темой заниматься, какой интерес разбираться во всякой фигне, если она для вас не более чем отфонарная фигня? Ну вместо чужой отфонарности — будет своего сочинения, тогда это просто NIH-синдром.
Гость (11/01/2015 12:39)   

Лол.


Ага, какому-нибудь Mihir'у или Phillip'у так интересно было бы с вами идеями, решениями и упражнениями обмениваться, аж пипец. У них перед кабинетом очередь из сотен желающих со всего мира, причём уже имеющих профильное образование, степень и достойные наработки в теме.

М[link18]етод огораживания от входящих писем заслуживает отдельной ссылки[link19]

Это ответ Додиса на «What to do if you are interested in working with me?». У Ааронсона ответ примерно такой же[link20].
— unknown (11/01/2015 14:43, исправлен 11/01/2015 14:49)   

Memo to the Amateur Cipher Designer[link21]:

A cryptographer friend tells the story of an amateur who kept bothering him with the cipher he invented. The cryptographer would break the cipher, the amateur would make a change to "fix" it, and the cryptographer would break it again. This exchange went on a few times until the cryptographer became fed up. When the amateur visited him to hear what the cryptographer thought, the cryptographer put three envelopes face down on the table. "In each of these envelopes is an attack against your cipher. Take one and read it. Don't come back until you've discovered the other two attacks." The amateur was never heard from again.

Это Шнайер, 1998 год. При том, что это всё настолько устарело, что сейчас новые шифры уже давно не нужны от любителей вообще, да и от большей части профессионалов тоже. Новый симметричный криптопримитив уже никто специально без повода разбирать не будет. Его публикация скорее пройдёт просто незамеченной. Даже тот же Twofish никто лишний раз не поковыряет, пока AES не сломан.

Гость (11/01/2015 15:15)   

Это супер! Надо будет запомнить. :-)

Там же:

Algorithms posted to Internet newsgroups by unknowns[link22] won't get a second glance.

unknowns[link22] can't get their ciphers published because they are unknowns[link22], and hence no one will ever see their work.
— unknown (11/01/2015 15:36, исправлен 11/01/2015 15:39)   
Unknowns can become knowns
by publishing cryptanalyses of existing ciphers


Если неизвестные будут публиковать неизвестно что для неизвестно кого, то неизвестно что получится, скорее заранее известно, что ничего, чтобы стоило бы делать известным.

— unknown (12/01/2015 02:22, исправлен 12/01/2015 02:24)   

Игра с тремя конвертами скорее всё же шутка. Можно в три конверта положить слабоотличающиеся варианты одной и той же атаки, по сути расписать одну и ту же атаку слегка по-разному. Если создатель придёт к аналитику с другой атакой и попросит раскрыть конверты, то такой обман со стороны аналитика вскроется, но аналитик всегда может утверждать, что алгоритм всё равно ненадёжен, даже если атаку нашёл сам автор, хотя этот же автор ранее отрицал наличие других атак. В итоге автору алгоритма невыгодно приходить к аналитику при любом раскладе, а для аналитика игра беспроигрышная.

Гость (12/01/2015 11:55)   
По конвенции маркировка такая:


А у вас, unknown, всё наоборот в плане «>».
— ZAS (22/01/2015 05:01)   
Мне нравится ARX-примитив из трех строчек:


Сравнил свой примитив с примитивом от Speck[link23].
Получилось практически одно и то же число операций CPU для достижения тех же диф. характеристик.
Функция раунда Speck проще; однако нужно в полтора раза больше раундов.
Оказалось что не лаптем щи хлебаем :) Если a,b,c прооптимизировать, скажем, для пары раундов, возможно превзойти их по скорости.

http://www.zas-comm.ru
— unknown (22/01/2015 09:39)   

У вас есть ещё кое-что общее — они тоже могут себе позволить не публиковать доказательства безопасности :)

Ссылки
[link1] https://www.pgpru.com/comment60673

[link2] https://www.pgpru.com/comment60689

[link3] http://www.larc.usp.br/~pbarreto/AnubisPage.html

[link4] https://www.pgpru.com/forum/kriptografija/analogpgpsobespecheniemotricaemostiinaperjodzadannojjsekretnostiofflajjn

[link5] http://www-cse.ucsd.edu/users/mihir/cse207/

[link6] http://www-cse.ucsd.edu/users/mihir/papers/gb.html

[link7] https://en.wikipedia.org/wiki/Hasty_Pudding_cipher

[link8] https://ru.wikipedia.org/wiki/HPC_(шифр)

[link9] https://eprint.iacr.org/2014/281

[link10] https://www.pgpru.com/novosti/2012/predlozhenyteoreticheskiemetodyispoljzovanijakvantovogosluchajjnogoorakula

[link11] https://www.pgpru.com/comment65996

[link12] https://www.pgpru.com/comment70666

[link13] https://www.pgpru.com/comment77369

[link14] https://www.pgpru.com/forum/prakticheskajabezopasnostj/zascommunicator

[link15] https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCMQFjAA&url=https://eprint.iacr.org/2010/517.pdf&ei=VFCxVJiEF8qIsQT1l4KgBQ&usg=AFQjCNG3xIHpSn-cf22UovQg31t9gRDN_A&bvm=bv.83339334,d.cWc

[link16] https://www.pgpru.com/comment86022

[link17] http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCUQFjAB&url=http://duepublico.uni-duisburg-essen.de/servlets/DozBibEntryServlet?mode=show&id=839&ei=P2exVJPuOfb7sATnOw&usg=AFQjCNGV4a7uS1HSwWpuLPvJYcD0shjhlA&bvm=bv.83339334,d.cWc

[link18] https://www.pgpru.com/comment58843

[link19] http://www.cs.nyu.edu/~dodis/students.html

[link20] http://scottaaronson.com/faq.html

[link21] https://www.schneier.com/crypto-gram/archives/1998/1015.html#cipherdesign

[link22] https://www.pgpru.com/proekt/poljzovateli?profile=unknown

[link23] http://en.wikipedia.org/wiki/Speck_(cipher)