Хэш функции на асимметрике
Отделено из темы про Keccak
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
||||||||||||||||||||
|
||||||||||||||||||||||||||
Нормы пользования. Некоторые права на материалы сайта защищены по условиям лицензии CreativeCommons. Движок
openSpace 0.8.25a и дизайн сайта © 2006-2007 Vlad "SATtva" Miller.
|
||||||||||||||||||||||||||
Идеальная не смысле случайного оракула, а в смысле отсутствия коллизий. Но такая функция n → n будет определена не всюду на N=n2 значениях блока, а за вычетом множества объема N-(1-1/a), гда a>1 и не очень велико, где она выдает ошибку. И это будет не банальная перестановка.
Почему не сработает такой вариант. Берем блочную хэш-фунцию без коллизий и определенную почти всюду f, обычную алгебраическую нелинейную и сильно зависящую от каждого бита каждого аргумета w, и сторим хэш-фунцию сжатия: h(x, y) = f(w(f(x), f(y))).
Какие претензии к таким фунциям? По ним просто нет доказательства их надежности или же постоянно обнаруживаются уязвимости, различители?
комментариев: 9796 документов: 488 редакций: 5664
А такое не нужно. Если неотличима от RO, то нет коллизий и многих других побочных эффектов. Даже НИСТ неофициально предложил на конкурсе SHA-3 давать доказательства в ROM. Найден RO-различитель — функция нестойкая, неважно по коллизиям или по чему ещё.
С доказательствами сложнее. А второе — почти точно так. Например, в сети Файстеля любую небиективную раундовую функцию можно по определению преобразовать в блочный шифр (биективную ключезависимую перестановку). Но на практике стало выходить, что сети Файстеля с небиективными функциями легче подвержены криптоанализу, легче найти простые и невозможные дифференциалы и пр. различители. Стали предпочитать делать сети Файстеля с биективными раундовыми функциями. Затем посмотрели на это и решили, зачем вообще нужна сеть Файстеля? Раз раундовая функция биективна, значит обратима и решили отказаться от Файстеля и сделать прямую SP-сеть. Так появился Rijndael (после его концептуальных, но практически неудачных предшественников — 3-way и Square). Затем, практически те же авторы, что продвинули концепцию SP-сетей и AES, режили сделать такой же сдвиг парадигмы и для хэшей с помощью Keccak — использовать бесключевую биективную псевдослучайную перестановку, как самый надёжно конструируемый и понятный в моделировании объект и строить всё на основе него.
Арифметические сдвиги и повторные итерации возможно смогут исправить этот недостаток и подставить все N значений под ассиметричное шифрование с надежным модулем, и тоже без коллизий. Нужно анализировать.
Детерминированных RO не существует, а детерминированные определенные почти всюду надежные хэш-функции без коллизий существуют и строятся элементарно для любого натурального N.
Если хеш-функция h построена на ассиметрике f (с открытым ключом шифрования и закрытым дешифрования) с надежным модулем, то она стойкая. В чем проблема для сжимающей h(x, y) = f(w(f(x), f(y)))? где w – несимметричный полином по модулю некоторого простого M, |N-M|<N~1/a~.
Это как, итерацией? Преобразовать в доказуемо биективную?
Это симметричное блочное шифрование, оно опирается на какую-либо конкретную математическую задачу. Нельзя гарантировать стойкость построенной на нем хэш-функции, сведя ее к трудности обращения такой задачи.
комментариев: 9796 документов: 488 редакций: 5664
Не, ну так уже совсем не годится :) Это тривиальное свойство для доказательства начинающим, там никаких моделей и оракулов вообще не нужно. Можно чего-то не знать или не помнить, но это азы и элементарщина.
Раз задаёте такой вопрос, то вы не поняли устройство сетей Файстеля на самом элементарном уровне, раз (не говоря уже о более продвинутых тонкостях их криптоанализа). Не изучили, почему провалились попытки создать хэш-функции на асимметрике, два. Т.е. не в курсе тех «за» и «против», которые уже давно известны, а пытаетесь рассуждать о каких-то более тонких вопросах.
Именно поэтому, по тем же рассуждениям, что и вы, исследователи давно пытались создать хэш-функции на асимметрике. Мало того, что они непрактичны по ресурсам. т.е. в любом случае остаются лишь теоретическими игрушками, они все ещё неполностью (причём фатально) эмулируют свойства RO, в результате чего были поломаны. И коллизии в них нашли, обойдя все док-ва сводимости к т.н. трудной задаче. А гибридизировать их симметрикой для исправления этого недостатка оказалось ещё и теоретически бессмысленно — доказательство сводимости к трудной задаче теряется.
ZAS опять пытается рогами забор снести? Никогда не думал, что научиться писать степени для формул — это так сложно.
В идеальной конструкции должны быть коллизии.
комментариев: 9796 документов: 488 редакций: 5664
Это касается и функций сжатия предыдущих хэшей, там только другой принцип. И в асимметричных функциях это должно существовать. Главное — это не должно иметь практического значения, но теоретически ещё раз показывает, что полная эмуляция RO даже на идеальных конечных функциях невозможна. Во всех конечных функциях возможно такое существования состояния входа, при котором можно создавать неограниченное множество коллизий определённого вида. поэтому всегда ставится вопрос в доказательствах зазора от идеала для всей конструкции. И в асимметрике там изначальные неидеальности приводят к очень сложным доказательствам оценки этого зазора.
Про сети Файстеля я когда-то читал в вики. Сейчас посмотрел и понял что за небиективная функция имеется ввиду, она действует только на половину блока, а мне показалось что речь о всем блоке как в хэше.
Пусь они медленнее, но их гораздо проще реализовать (кроме эллиптических) чем симметрику: они требуют одного раунда и ключа, не требуется перестановочное битое@ство и составление надежных таблиц для подстановок.
Шифры тоже неполностью эмулируют свойства RO, однако их не ломают поголовно.
Не думаю что псевдослучайность в рамках биективности такое уж фатальное свойство, тем более что это отличие от RO проявляется для ничтожной доли случаев. Вне этих маловероятных случаев статсвойства биективных и небиективных случайных отображених не отличаются. n! меньше nn в en раз, но тоже возрастает быстрее экспоненты, для достаточно больших n отличие несущественно.
Трудная задача дает необратимость, правда только на промежуточных преобразованиях. Может быть для хэша это и неважно.
Шифрование данных перед хешированием не может ухудшить хеширования, но по крайней мере оно не потеряет ни одного бита, размазав их по всему блоку. Поэтому отображения с коллизиями сразу к исходным данным лучше не применять, откладывая подольше.
Я не ZAS.
Это я ступил.
Так уж и дефектный. Обычно шифры не биективны по ключу, потому что это не требуется. Но если ее обеспечить, ничего страшного не случится. В остальном он будет случайный.
комментариев: 9796 документов: 488 редакций: 5664
См. VSH и VSH*, ECOH и ECOH2, FSB, SWIFT.
Общее рассмотрение проблемы: Provably secure cryptographic hash function, где упомянуты ещё MuHASH; Chaum, van Heijst, Pfitzmann hash function; Knapsack-based hash functions; The Zйmor-Tillich hash function; Hash functions from Sigma Protocols.
В вики-статьях, разумеется, проблема изложена не полностью. В частности, при описании конкретных хэшей даётся изначальная т.з. из работ их создателей. Атаки и критика сторонних авторов часто не рассмотрены.
Ну и общее впечатление, даже часто по поверхностным выводам. Много народу пыталось что-то сделать на этом поле и пересмотрели гораздо более сложные конструкции, чем те наивные варианты, которые сперва приходят в голову. И в целом, как-то на этом поле практически ничего не выросло. Там указаны общие причины, вроде особенностей зазора в доказательствах по асимметрике; Коблиц и Менезис упоминали такое: стоит немного поменять коэффициент в доказательстве и сведение к сложной проблеме превращается в тыкву:
Вот не получится ли, что с размером сообщения или ещё какого-то фактора, сводимость к сложной проблеме, будет сильно расходиться с предполагаемой в редукционистском асимпотическом доказательстве? А других то практически нет.
С хэшами на асимметрике такой же мрак, не следует слепо уповать на наличие доказательств сведения к «трудной проблеме». Шнайер и др. как раз больше доверяют симметрике, несмотря на её кажущуюся худшую математическую обоснованность.
Показателен пример с FSB, про которую доказано, что с т.з. трудных задач её взлом равносилен решению NP-полной задачи, зато всё отлично ломается простеньким линейным криптоанализом:
Следует ещё помнить, что точно докопаться, почему какое-то направление не взлетает — обычно сложно. Многие работы, в которых авторы сами нашли неудачу, вообще не публикуются. О провалах сильно шумят, только когда они уже громко отрапортованы как успехи.
Со spinore мы неоднократно обсуждали т.н. шумовое крипто и почему его не применяют вместо/вместе с квантовым, хотя публикаций достаточно и вроде как фатального разгрома нет. Но почему-то оно десятилетиями не взлетает. Spinore, помниться, чуть-ли не лично распрашивал квантовиков, чтобы на основании обрывков научного инсайда, которого нет в статьях, реконструировать понимание проблемы. Вроде пришли к выводу, что понятия атак противника на неквантовый шум плохо формализуются, а в квантовых каналах все действия противника можно записать в шум строгим образом. Вот похожи эти асимметричные хэши на такое теоретически интересное, но, возможно, тупиковое направление. И возможно, надо перелопатить кучу литературы или непосредственно узнать от специалистов по этой узкой тематике, которые скажут то, что не было официально опубликовано, чтобы понять, почему всё это так.
Да, вопрос обсуждался
с «квантовиками» (Слово-то какое! Первый раз слышу)теми, кто профессионально занимался QKD (имеет научные статьи по этой теме), но окончательную точку поставил Реннер, я ему задал этот вопрос напрямую:Как раз Маурер, кажется, много занимался шумовой криптографией(?) и вообще всякой криптографией с ограничениями (типа bounded memory), так что, я думаю, они оба там в курсе всего.
WTF?
комментариев: 9796 документов: 488 редакций: 5664
Именно так.
Если это оно, то там и спрашивайте.
Это весьма нетривиальная конструкция при условии сохранения стойкости шифра. Если в таком шифре выбрать размер блока = размеру ключа, то он будет образовывать квазигруппу. Весьма нетрививально создать конструкцию в виде симметричного шифра, которая образовывала бы большую квазигруппу по открытому тексту и ключу. Можно было бы даже асимметричное шифрование на симметрике сделать. Такие попытки были, но успеха не потерпели.
Почему такое отличие от симметрики? В силу алгебраических свойств асимметрики несправедливы какие-то эмпирические предположения о статистической независимости композиций функций?
Это для квадратного корня по модулю, для других функций может быть лучше. Помню видел другую оценку, на log N ключа можно сгенерировать N псевдослучайных бит.
Трудная проблема гарантирует что запутывание данных было хорошим, раз без знания закрытого ключа его не обратить (еще лучше когда вообще нет закрытого ключа), для того трудная проблема и нужна. Но в хэше обычно используется не чистое запутывание на основе трудной задачи (функция f(x)), а комбинацию с ним, например x+f(x) – это пребразование уже не сводится к трудной задаче, и имеет коллизии, но поскольку в промежуточных вычислениях используется трудная задача то можно утверждать, что в x+f(x) запутывание данных тоже хорошее.
На случайного оракула тоже не следует уповать. Если мы возьмем две шифрующие n-битные блочные функции f1 и f2 с фиксированными ключами и построим на их основе хэш-функцию
h(x) = f2( (q * f1(x) + r) mod (2n – 2n/2) ), где НОД(q, 2n – 2n/2)=1, мы получим идеальную насколько возможно модель случайного оракула – ровно с 2n/2 парными коллизиями, все честь по чести. Но взламывается она элементарно, если функции f1 построена на симметрике, то есть легко обращаема.
Так симметрика функционально многообразна, а асимметрика это несколько методов от небольшого числа параметров.
Неудивительно, он же линейный. К тому же там доказана трудность задачи только для худшего случая, а для среднего неизвестно что.
По любому должен быть размер блока = размеру ключа, иначе не будет биективности, а в лучшем случае инъективность.
Полугруппу по композиции функций? Она всегда существует, по определению. При биективности по ключам, композиции функции шифрования f(f(m, k1), k2) порожают полноценную группу, с ключами неограниченной длины вида k1 || k2 ||...|| kn образованных конкатенацей первичных n-битных ключей ki с правилом сокращения k || k-1=e, то есть образующих свободную алгебру. Но толку от какой композиции? При комбинировании ключей ее высота бы неограниченно возрастала. Вот если бы композиция функций приводила к умножению ключей f(f(m, k1), k2)=f(m, k3 = ω(k1, k2)) это была бы практичная группа, где функция шифрования выполняется только один раз для любого ключа, но биективности по ключам для этого совершенно недостаточно.
Функцию шифрования с биективностью по ключам сделать нетрудно, например:
z = fe(x,k) = f2 ((f1(x) + k) mod 2n). Тогда дешифрование будет
x = fd(z, k-1) = f1-1 ((f2-1(z) + k-1) mod 2n), где k-1 = -k mod 2n.
При f2 = f1-1 композиция шифрований сводится к умножению ключей ω(k1, k2) = (k1 + k2) mod 2n.
Можно также брать z = fe(x,k) = f2 (f1(x) XOR (XORi=1n k[i]*vi)), где блоки vi линейно независимы, k-1=k. Для f2 = f1-1 имеем ω(k1, k2) = k1 XOR k2.
Каким образом? Асимметричное шифрование здесь получится, только если f1 и f2 сами сделать на асимметрике.
Чтобы сделать из функции симметричного шифрования ассиметричную, нужно обфусцировать ее вычисление для конкретного ключа, а для обратного ключа обфусцировать иначе. Поскольку функция симметричного шифрования представляется в виде структуры логических вентилей разделенных по слоям (раундам) с выходящими результатами слабо спутанными по входящим данным в одном слое (в каждом раунде запутываются небольшие группы битов изолированно друг от друга), то следует применять случайные эквивалентные замены к небольшим вентильным подструктурам, спутывая выходящие сигналы по входящим линиям от которым они вычисяются и перемешивая слои, но так чтобы число вентилей и слоев не менялось. Получим конфиденциально вычисляемую функцию симметричного шифрования с конкретным ключем без разглашения промежуточных расчетов и одного из аргументов (ключа). Однако, универсальные конфиденциальные вычисления пока невозможны.
Вы утверждаете, что даже в хэш-конструкции вида x+f(x) нельзя использовать биективную случайную функцию f, потому что будет плохая статистика не только у f(x) но и у x+f(x) и получится нестойкий хэш. Комбинировать шифрование f с хорошей хэш-функцией h конечно можно, так x+h(f(x)) или так x+f(h(x)), дополнительное шифрование здесь ничего не ухудшит. Но я думаю, что без идеальной хэш-функции h можно обойтись без ущерба стойкости, шифрования будет достаточно.
Я даже не отрицаю, что в многораундовом хэшировании к конечному результату требуется добавлять первоначальный аргумент, это нужно чтобы взлом нельзя было разбить на последовательные раунды, только в обратном порядке. Так и для поточного хэширования длину сообщения нужно подмешивать к аргументу, чтобы пресечь атаку на удлинение.
Еще до возникшей здесь полемики, я схематически набросал программку многопроходного вычисления хэша от последовательности блоков длины n. Подмешивание к аргументу и результату имеется, оно даже несколько переусложнено. К аргументу я также помешивал хэш предыдущего раунда add, номер раунда k и номер блока beg, чтобы избежать вырожденных значений. Хэш вычисляется делением последовательности надвое, а не поточно, чтобы глубина обработки каждого блока была примерно одинакова – порядка log2(n), для чего используется рекурсия.
Небольшие пояснения: '*' – метка экспорта, '-' – метка экспорта переменной только для чтения, h – многораундовая (32*D)-битная функция хэша от массива s из (32*D0)-битовых блоков, g – однораудовая функция хэша от интервала массива. Функция шифрования f и нелинейная биективная по каждому аргументу функция сжатия w не реализованы (выдают нулевой блок).