Рейтинг:1

Известны ли такие червоточины для проверки или вообще возможны?

флаг in

1. Сценарий

Предположим, что у нас есть источник, генерирующий одно случайное значение, скажем, в минуту. Итак, у нас есть случайное значение $x_1$ в $1$минута, $x_2$ в $2$ая минута, $\ldots$, $x_n$ в $n$й минуты и так далее.

Распределение значений $x_1, x_2, \ldots$ не является полностью равномерным случайным, а подчиняется следующему правилу: для любого $i\ge 1$, $x_i = (y_i, y_{i+1})$, куда, $y_i$ является уникальным идентификатором $x_i$, и $у_{я+1}$ уникальный идентификатор предстоящего $х_{я+1}$ что прибудет в следующую минуту.

Другими словами, в любой заданный $я$ая минута, текущая $x_i$, и следующий $x_{я+}$ известны, но тот, что после $х_{я+2}$ абсолютно неизвестно или случайно. Ниже приведен пример:

Минута 1: x_1 = (334234, 234829129)
Минута 2: x_2 = (234829129, 983220)
Минута 3: x_3 = (983220, 831231236347)
...
Минута n: x_n = (643532754, 3534611)

Один из способов хэшировать эти $n$ values, по порядку, заключается в хешировании каждого значения по мере его поступления, например. $h_1 = f(x_1)$, затем соедините его со следующим вновь прибывшим, например. $h_2 = f(x_2 \параллельно h_1)$.

Другими словами, хэш упорядоченного списка ввода в $n$ая минута определяется рекурсивно как $h_n = f(x_n \параллельно h_{n-1})$, с базовым случаем $h_1 = f(x_1)$.

Преимущество этого подхода в том, что для того, кто каким-то образом запускает этот процесс с самого начала, в каждую минуту и ​​время выполнения, и пространство-время находятся в равновесии. $О(1)$, так как он может кешировать хэш предыдущей минуты.

Недостатком этого подхода является то, что для тех, кто не следил за процессом и хочет проверить, $h_n$ действительно является хэшем всей последовательности, ему придется начать с самого начала с $h_1$, и повторяйте всю цепочку до тех пор, пока $h_n$. По сути, этот процесс проверки займет $ О (п) $ пространство и $ О (п) $ время.

2. Червоточина

Было бы хорошо, если бы было возможно, чтобы в каждый $n$ много хешированных цепочек, мы можем обнаружить червоточина $w_n$ который имеет следующие свойства:

  • Однажды $n$й хэш, $h_n$, законно рассчитывается $h_1$ следуя полной рекурсии ранее, только тогда червоточина $w_n$ становится обнаруженным. В противном случае нахождение $w_n$ практически невозможно.
  • Для данного $h'_n$ хэш, который, как утверждается, $h_n$, червоточина может сократить проверку следующим образом:

$$ w_n(h_1, h'_n) = \begin{случаи} 1 & \text{если $h'_n = h_n$}\ 0 & \текст{еще}\ \end{случаи} $$

  • Асимптотическое наихудшее время выполнения, а также асимптотическое наихудшее пространство для вычислений $w_n(h_1, h'_n)$ не хуже, чем $O(\log п)$. Если это возможно сделать в $О(1)$А еще лучше конечно.

Запись. Это отличается от прообраз атака хэш-функций. Разница заключается в следующем:

  • Атаки с прообразом позволяют злоумышленнику создать произвольный ввод, который дает желаемый целевой хэш.

  • Эта червоточина $w_n$ не позволяет подделывать любой произвольный ввод, а скорее показывает скрытый путь быстрого доступа, который работает только для связывания определенного ввода, который позволяет связать $h_n$ вернуться к $h_1$, и что единственный способ обнаружить такую ​​червоточину — законно вычислить $h_n$ первый.

  • Может быть, мы можем назвать такую ​​червоточину условной прообразной атакой, которая не приносит пользы противнику.

3. Вопрос

Известны ли такие червоточины для проверки или вообще возможны?

fgrieu avatar
флаг ng
Я думаю, что помимо $n$, $h_1$ и $h'_n$ должен быть дополнительный ввод для алгоритма, вычисляющего $w_n(h_1, h'_n)$. В частности, то, что он делает, должно зависеть от $x_1$ до $x_n$, верно? Поэтому зачем выделять $h_1$ и что _в постановке задачи_ мешает внести $h_n$ тот дополнительный вход, который позволяет тривиально реализовать $w_n(h_1, h'_n)$? Предполагается ли, что от $x_1$ до $x_n$ являются неявными входными данными для указанного алгоритма?
knaccc avatar
флаг es
Должны ли случайные значения быть действительно случайными и неподконтрольными источнику, или же значения должны быть неотличимы от случайных для наблюдателя?
caveman avatar
флаг in
@fgrieu - Верно, это зависит от $x_1, x_2, \ldots$. Однако интересно, можем ли мы передать информацию о такой зависимости в выходных хешах $h_1, h_2, \ldots$? Другими словами, может ли $h_2 = f(x_2, h_1)$ эффективно передавать связанную информацию из $x_1$ в $h_2$? Впоследствии, по мере продвижения по цепочке, может ли $h_n$ фактически иметь связанную информацию от $x_n, x_{n-1}, \ldots, x_1$, которой достаточно для создания червоточины проверки $w_n(h_1, h'_n)$ ?
caveman avatar
флаг in
@fgrieu - Что касается вашего вопроса о постановке задачи, предотвращающей тривиальные решения, если я вас правильно понял, это требование, согласно которому сложность пространства для «пользователя червоточины» должна быть ограничена в $ O (\ log n) $. Но «открыватель червоточин» должен выполнить процесс $O(n)$.
caveman avatar
флаг in
@knaccc - Верно. Значения случайны. Например. человек, который вычисляет $h_i = f(x_i, h_{i-1})$, совершенно не знает о следующем значении $x_{i+1}$.
knaccc avatar
флаг es
Да, человек, который вычисляет хэш, как я предполагаю, делает это только для того, чтобы иметь возможность затем отбросить предыдущие значения $x_i$, но при этом иметь возможность проверить, предоставит ли кто-то затем правильную копию этих значений в будущем. . Но мой вопрос: делайте случайные значения (т.е.$x_i$) должны быть действительно случайными и неподконтрольными источнику, или же значения должны быть неотличимы от случайных для наблюдателя?
caveman avatar
флаг in
@knaccc - Да, действительно случайно, даже источник не знает, каким будет следующее значение. Информация о предыдущих случайных значениях передается следующим в хэшах. Например. $h_{i}$ получает информацию о предыдущем значении $x_{i-1}$ по мере получения своего хэша $h_{i-1}$.
knaccc avatar
флаг es
Я предполагаю, что источнику нельзя доверять, чтобы утверждать что-либо о ценностях? Потому что, если источнику доверяют, он может просто выпускать «контрольную точку» каждый $n$-й раз, когда объявляется подписанное сообщение, содержащее последний хэш. Если источнику нельзя доверять, чтобы утверждать что-либо, как можно доверять источнику, чтобы ввести червоточину, которая подтверждает правильное значение хэша?
fgrieu avatar
флаг ng
Другими словами: на поставленный вопрос можно ответить, используя любой стандартный хэш для $f$; заставить "открыватель червоточин" вычислить $h_n$ (требуется время $O(n)$, что оптимально); затем червоточина сама выводит $1$, если ее второй аргумент соответствует $h_n$. Я пришел к выводу, что вопрос нуждается в доработке, чтобы предотвратить такие же скучные решения. Типа: мы хотим, чтобы «обнаружитель червоточин» был таким же быстрым, как стандартный хэш. Кроме того, нам нужна цель для первого параметра червоточины, и я не вижу этого в вопросе.
caveman avatar
флаг in
@fgrieu - Верно. Я дал 1 неправильный ответ о распределении $x_1, x_2, \ldots$. Это не совсем случайно. Он работает следующим образом: $x_i = (y_i, y_{i+1})$, где $y_i$ — уникальный идентификатор $x_i$, а $y_{i+1}$ — уникальный идентификатор следующего предстоящего значение $x_{i+1}$. Таким образом, когда $x_1$ генерируется на 1-й минуте, источник знает, какой будет следующая $y_2$, но не знает $y_3$. Так что случайность в нем есть, но не совсем. Что касается доверия: мы доверяем только $h_1$. - Обновил пост с этим уточнением.
Hhan avatar
флаг jp
Я думаю, что понятие червоточины, которое вас интересует, тесно связано с недавним объектом, называемым проверяемой функцией задержки, см., например. https://eprint.iacr.org/2018/712
Рейтинг:0
флаг pl

Редактировать: Уточнение ответа на примере дерева Меркла.

Для списка значений $x_1,\ldots,x_n$, вы можете вычислить дерево Меркла с корнем $h_n$. Для данного $h_n'$ утверждал, что $h_n$, вы можете сократить проверку, открыв путь аутентификации длины $log_2(n)-1$ между любым известным листовым хэшем $f(x_i)$ и заявленный $h_n'$.

Определение червоточины $w_{i,n}$ как путь аутентификации между $f(x_i)$ и $h_n$, вы можете убедиться, что $h_n' = h_n$ в $log_2(n)$ призывает $f$. Как псевдокод:

проверка защиты (f_x_i, w, h_n):
    h_i = f_x_i
    для h_j в w:
        h_i = f (h_i + h_j)
    вернуть h_i == h_n

Затем вы можете позвонить проверить (f (x_i), w_i_n, h_n '). В частности, для проверки $h_n'$ не требует всего предыдущего хеширования, только подмножество логарифмического размера, называемое путем аутентификации.


Недостатком использования дерева Меркла здесь является то, что мы должны предположить, что оно идеально сбалансировано, т.е. $n = 2^k$ для некоторых $к$, а добавление требует перестроения дерева, поэтому никакой выгоды. Добавление вашего $h_i$ к Горный хребет Меркле вместо этого есть что-то похожее на путь аутентификации, чтобы показать, что он живет под набором пики а не под одним корнем.

caveman avatar
флаг in
Как эти пиковые хеш-дайджесты могут быть связаны с $h_1$?

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

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