Рейтинг:0

необратимый аддитивный криптографический хеш-алгоритм

флаг in

Мне нужна легкая криптографическая хеш-функция, которая является аддитивной, но необратимой, однако я не уверен, что такая функция существует! (было бы лучше, если бы он работал и в мультисетах)

Под добавкой я подразумеваю: учитывая такую ​​функцию ф, другая функция г должен существовать, обладая свойством г (f (X), f (Y)) = f (X | | Y), куда || обозначает конкатенацию строк Икс и Д.

Я нашел гомоморфную хеш-функцию из фейсбук который является аддитивным, но также и обратимым.


РЕДАКТИРОВАТЬ:

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

необратимость: Если мы знаем е (Х | | Y) и что Д является элементом, используемым в качестве входных данных, было бы невозможно вычислить g-1(f(X||Y),f(Y)) чтобы получить е(Х)

PS.Я пытаюсь найти решение, которое является квантово-устойчивым и достаточно легким для работы в устройствах IoT.

poncho avatar
флаг my
Возможно, вы захотите добавить, какие другие свойства вам нужны; для аддитивных и необратимых имеем функцию $f(x) = 0$ и $g(0, 0) = 0$; который удовлетворяет обоим требованиям, но я сомневаюсь, что он будет полезен для вашего варианта использования (что бы это ни было). Несколько менее тривиальные можно получить, объединив байты входной строки вместе...
флаг in
@пончо ты прав! Я имел в виду криптографический
poncho avatar
флаг my
Под криптографией вы имеете в виду устойчивость к прообразу (ответ baro77 делает это), устойчивость ко второму прообразу или устойчивость к столкновениям?
poncho avatar
флаг my
Если вам нужен второй прообраз или сопротивление столкновению, см. мой комментарий к baro77, в котором исследуется идея (которую нужно конкретизировать...)
флаг in
@poncho Я читаю ваши полезные комментарии! И правильно обновил вопрос. Спасибо вам обоим :)
poncho avatar
флаг my
QR усложняет задачу — решение в стиле baro77 будет основано на группе, а алгоритм Шора решает большинство сложных задач на основе групп...
Рейтинг:1
флаг gd

Сейчас я спешу, но хочу поделиться с вами некоторыми идеями (которые, если нужно, я подробно изложу в ближайшие дни):

  • конкатенацию можно рассматривать как $х||у = хк+у$ куда $к=2^{|у|}$
  • так $f(x||y) = f(xk+y)$
  • если мы предположим $f$ умножение для генератора EC $G$ (общая настройка privkey/pubkey EC) мы получаем:

$f(x) = Gx$

$f(y) = Gy$

$f(x||y) = G(xk+y) = G(xk) + Gy = G(x+x+...+x) + Gy = (Gx + Gx + ... + Gx) + Gy = кГх + Гр$

  • последний отрывок дает вам $г$ (отношение, символически равное конкатенации, но теперь действующее на точки EC)

$f(x) = Gx$ конечно, это не хэш, но он необратим (это проблема с общим дискретным логарифмом), и с приведенными выше определениями кажется (если я не ошибаюсь) аддитивным, как вы просили


РЕДАКТИРОВАТЬ: ОБОБЩЕНИЕ

Как осторожно заметил @poncho, предыдущие идеи работают только тогда, когда все $у$ имеют фиксированный заранее известный размер, потому что это гарантирует, что $к$ постоянна и может использоваться в $г$ (который не имеет "прямой видимости" $у$ рассчитать его размер). Умный обходной путь, предложенный @poncho, состоит в том, чтобы позволить $f$ передать его входной размер на «следующий этап». Таким образом, предыдущие определения обобщаются следующим образом:

  • $х||у = хк+у$ куда $к=2^{|у|}$ в зависимости от размера $у$ является
  • $f(x) = (Gx, |x|) = (X, |x|)$
  • $f(x||y) = f(xk+y) = (kX+Y,|x|+|y|) = (2^{|y|}X+Y,|x|+|y|) $
  • $g((X,s_x),(Y,s_y)) = (2^{s_y}X+Y, s_x+s_y)$

Еще $ф$ это не гашиш, но, как было сказано ранее, он добавляется к вашему вкусу и необратим (первый устойчивый к прообразу в терминологии хэшей).

poncho avatar
флаг my
Одна из проблем заключается в том, как работает $g$, зависит от длины $y$. Теперь это можно решить, включив длину хешированной строки в вывод $f$, то есть $f(x) = (xG, |x|)...
baro77 avatar
флаг gd
@poncho вы определенно правы, я думал, что длина струн должна быть фиксированной и заранее известной
poncho avatar
флаг my
«включение размера ввода в его вывод также позволяет избежать атак второго прообраза и коллизий»; нет (за исключением атак второго прообраза на короткие входные данные); добавление порядка генератора не изменит умножение точек; если это добавление не изменяет длину (поскольку хешируемое значение уже больше, чем длина, и добавление не вызывает «переполнения»), то результат хеширования будет таким же.
poncho avatar
флаг my
С другой стороны, если OP нуждается во втором прообразе или сопротивлении столкновениям, вы можете использовать ту же идею, но вместо использования группы EC сделайте это над мультипликативным кольцом по модулю, составляющему секретную факторизацию («модуль RSA»); там второй прообраз/коллизия доказуемо так же безопасен, как факторизация (при условии хорошо выбранного генератора и с оговоркой, что есть лазейка для того, кто знает факторизацию)
baro77 avatar
флаг gd
хмм @poncho .. Я не понимаю вашу точку зрения сейчас ... конечно, если $l$ является порядком ЕС, $Gx = G(x+l)$, но $|x| != |x+l|$ . Мне кажется, вы предполагаете, что размер ввода на выходе будет усечен ... почему? На мой взгляд, это не так, поэтому общий вывод $f(x)$ отличается от $f(x+l)$: так что найти второй прообраз или коллизию не так просто, как добавить групповой порядок
poncho avatar
флаг my
На самом деле, если $x > l$, то возможно, что $|x| = |х+l|$
baro77 avatar
флаг gd
@poncho, черт возьми, ты прав :) Теперь я понимаю: если $x$ уже достаточно велико, может случиться так, что добавление $l$ не повлияет на его побитовый размер. Спасибо за терпеливые исправления!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.