Я изучаю компьютерные науки, в настоящее время работаю над проблемой в криптографии (практическая задача, но застрял в математической части).
По сути, предположим, что мы получили сообщение, зашифрованное с помощью криптосистемы Эль-Гамаля, и наша цель — расшифровать и полностью восстановить сообщение.
Исходный открытый текст представляет собой последовательность $p_1p_2\ldots p_m$. Нам дают хешированную версию открытого ключа SHA256.$(г^с)$ (так $s$ является закрытым ключом и $g^s$ общественный). Для шифрования сказано, что $r_1$ значение выбирается равномерно случайным образом, а затем для некоторого заданного значения $u\in\mathbb{Z}_q$, $r_i=u^{i-1}r_1$ для всех оставшихся $я$с. Затем зашифрованный текст $c_i=(g^{r_i},p_ig^{r_is})_{i\in[m]}$.
В целом нам дается $р$, $q$, $г$, $u$, хешированный открытый ключ $Ч$ и зашифрованный текст $c_i$ как кортеж.
У меня проблема в том, что я действительно не понимаю, какие вычисления мы должны сделать, чтобы восстановить всю исходную последовательность. Один из помощников сказал мне найти $p_i$, а затем использовать их для расшифровки шифра, но я не понимаю, к чему это меня приведет.
$г$неизвестны, и даже если мы знаем $ г ^ {r_i} $, так как нам даны довольно большие значения, мы не можем вычислить лог.
Честно говоря, я немного потерялся (у меня нет огромного опыта в алгебре), поэтому, если у кого-то есть совет о том, что мне делать, я был бы очень признателен.
Спасибо :)