Рейтинг:3

Могут ли две разные хеш-функции создать два несвязываемых ключа ed25519 из одной и той же случайности?

флаг cn

Предположим следующий сценарий:

  1. Алиса имеет доступ к 32 байтам истинной случайности. $s$.
  2. Алиса хеширует $s$ с SHA-512 и использует полученный хэш в качестве секрета $d_{А}$ за Эд25519. Предположим, что фиксация числа и т. д. реализованы правильно.
  3. Алиса хеширует $s$ с другой хэш-функцией, скажем, BLAKE-2, или хэшами $s$ два раза с SHA-512 и использует результат в качестве секретного ключа $d_{A'}$ за Эд25519.

Предположим случайную модель оракула и твердость дискретного логарифма. Затем:

  1. Можно ли связать получившиеся два открытых ключа с тем, чтобы они оба принадлежали Алисе?
  2. Можно ли каким-то образом использовать полученные два открытых ключа для извлечения полученных секретных ключей?

Мне кажется здесь лучше было бы использовать один CSPRNG и выводить достаточно рандома на двоих Эд25519 ключи.Но я также не могу определить какие-либо проблемы в описанном выше подходе.

Рейтинг:3
флаг in

Хэш-функции являются кандидатами на роль случайных оракулов. SHA-3 и BLAKE2 близки к тому, чтобы быть одним, но не SHA-512, поскольку он имеет атаку расширения длины, которую мы не ожидаем от RO.

Различные хеш-функции уже производят разные выходные данные, даже SHA-512 и его усеченная версия SHA-512/256, поскольку их начальные значения различны.

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

Хэширование в эллиптические кривые, проект ietf дает хорошее определение разделения доменов;

Часто анализируются криптографические протоколы, использующие случайные оракулы. в предположении, что случайные оракулы отвечают только на сгенерированные запросы по этому протоколу. На практике это предположение не выполняется, если два протоколы запрашивают один и тот же случайный оракул. Конкретно рассмотреть протоколы $P1$ и $P2$ который запрашивает случайный оракул $R$: если $P1$ и $P2$ оба запроса $R$ по тому же значению $х$, анализ безопасности одного или оба протокола могут быть признаны недействительными.

Общий подход к решению этой проблемы называется доменным разделение, которое позволяет одному случайному оракулу имитировать несколько, независимые оракулы. Это достигается за счет обеспечения того, чтобы каждый смоделированный Oracle видит запросы, которые отличаются от тех, которые видят все остальные имитации оракулов. Например, для имитации двух оракулов $1$ и $2$ дан один оракул $R$, можно определить

$$R1(x):= R(\text{"R1"} \mathbin\| x)$$ $$R2(х) := R(\text{"R2"} \mathbin\| х)$$

В этом примере $\текст{"R1"}$ и $\текст{"R2"}$ называются доменными теги разделения; они гарантируют, что запросы к $1$ и $2$ не можем приводят к идентичным запросам $R$. Таким образом, безопасно лечить $1$ и $2$ как независимые оракулы

  1. Можно ли связать получившиеся два открытых ключа с тем, чтобы они оба принадлежали Алисе?

Нет, если хэш-функция безопасна, как SHA3. БЛЕЙК2/3, ВЗЯТЬ. Использовать;

  1. $d_A = \operatorname{BLAKE2}(\texttt{Ключ A}\mathbin\|s)$
  2. $d_{A'} = \operatorname{BLAKE2}(\texttt{ключ A простое}\mathbin\|s)$
  1. Можно ли каким-то образом использовать полученные два открытых ключа для извлечения полученных секретных ключей?

Curve25519 — это безопасная кривая для классического дискретного журнала (DLog). Он имеет около 126-битную защиту от классический DLog.

Обратите внимание, что с Криптографический квантовый компьютер (CQC) построенный для алгоритма финансирования периода Шора, дискретный логарифм эллиптической кривой не будет безопасным. Однако хеш-функции размером более 384 вывода будут защищены от Гроверс или же Брассард и др.метод.

Таким образом, секрет защищен от классического и CQC, однако закрытые ключи не защищены от CQC.


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

Рейтинг:2
флаг gb

В модели случайного оракула это безопасно, потому что вы можете использовать один оракул. $\mathcal{O}$ и использовать разделение доменов для получения от него двух независимых оракулов (например, $\mathcal{O}(1 \параллельный \cdot)$ и $\mathcal{O}(2 \параллельно\cdot)$, куда $\параллельный$ обозначает конкатенацию). Тогда вы можете считать выходы полностью независимыми друг от друга.

Так что на практике все сводится к тому, какую хэш-функцию вы используете. Пока это хороший кандидат на RO (например, SHA-3), его можно использовать таким же образом: $$x_1 = H(1 \параллельно s)\ x_2 = H(2 \параллельно s)$$

Поскольку два полученных секрета независимы, ответ на оба вопроса 1 и 2: нет. Независимо от того, можно ли получить отдельные секретные ключи из открытых ключей (например, в криптографии с конечным полем или эллиптической кривой), это в точности DLP, поэтому, пока вы используете секреты в безопасной схеме, это невозможно. Единственный способ связать их — исходная случайность начального числа. $s$ быть раскрытым - тогда любой мог бы повторно вычислить два отдельных ключа и убедиться, что они действительно совпадают. В противном случае, даже если произошла утечка двух отдельных секретов (например, если DLP была взломана), их нельзя было связать обратно с $s$ или друг друга из-за однонаправленности (сопротивления предварительному изображению) хеш-функции.

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

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