Рейтинг:2

Как получить хеш-функцию, которая отображает элемент группы в двоичную строку определенного размера в charm-crypto?

флаг mq

Я столкнулся с проблемой в программировании с помощью шарм-крипто библиотека. Хэш-функции для сопряжения групповых элементов в charm-crypto могут отображать только строку в определенное поле: $\mathbb Z_r$, $G_1$ или же $G_2$.

Примеры: $$\begin{выравнивание} H_1: \{0, 1\}^*\к\ &G_1\ H_2: \{0, 1\}^*\to\ &Z_r\ H_3: \{0, 1\}^*\к\ &G_2\ \end{выравнивание}$$

Я реализую схему шифрования с открытым ключом без сертификата с поиском по ключевым словам из этот исследовательский документ. И в этом алгоритме в части глобальной настройки мне нужна хеш-функция как $H_4: G_2\to \{0, 1\}^n$ для некоторой длины $n$ т. е. отображение элемента группы в двоичную строку длины $n$. В этом случае группа $G_2$ состоит из точек на эллиптической кривой.

Может кто-нибудь, пожалуйста, помогите мне, как реализовать отображение хэша $H4$ в шарм-крипто? Буду признателен за любую помощь в этом отношении.

kelalaka avatar
флаг in
Интересно, почему такая бумага циркулирует вокруг. У нас было два вопроса по этому поводу, позвольте мне поискать. [1] (https://crypto.stackexchange.com/q/87012/18298) и [2] (https://crypto.stackexchange.com/q/86375/18298)
ashizz avatar
флаг mq
Спасибо @kelalaka, я посмотрю на это.
fgrieu avatar
флаг ng
Что-то не так: если $r\in G_2$, мы определяем $H_4(r)$ как $\operatorname{SHAKE256}(R,n)$, где $R$ — уникальное представление $r$ в виде строки битов, а $\ имя_оператора{SHAKE256}$, как определено в [FIPS 202](https://doi.org/10.6028/NIST.FIPS.202)?
ashizz avatar
флаг mq
@fgrieu Не уверен, что это сработает. мне нужно будет это проверить
Рейтинг:2
флаг ng

Я хочу хеш-функцию как $H_4: G_2\to \{0, 1\}^n$ для некоторой длины $n$ т. е. отображение элемента группы в двоичную строку длины $n$. В этом случае группа $G_2$ состоит из точек на эллиптической кривой.

Если $r\in G_2$, мы можем определить $H_4(р)$ как $\operatorname{SHAKE256}(R,n)$ куда $R$ это уникальный представительство $г$ как битовая строка и $\имя_оператора{SHAKE256}$ как определено в ФИПС 202.

Один из способов получить $R$: если точка $г$ имеет декартовы координаты $(х,у)$ в поле $\mathbb F_p$ с $р$ основной, $2^{8(\ell-1)}<p<2^{8\ell}$, $0\le x<p$, $0\le y<q$, то мы можем использовать $R=\operatorname{I2OSP}(x,\ell)\mathbin\|\operatorname{I2OSP}(y,\ell)$ куда $\имя_оператора{I2OSP}$ является стандартным преобразованием с обратным порядком байтов в строку октетов (как используется, например, в ПККС#1). Это может быть адаптировано к другим областям.

Если $\имя_оператора{SHAKE256}$ используется для создания других хэшей $H_1$, $H_2$, $H_3$, целесообразно ставить префикс ввода $\имя_оператора{SHAKE256}$ с различными константами.

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

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