Nu îmi este clar (fără să văd codul) care este problema dvs. actuală.
Privind prin hârtie, văd (de exemplu în fig. 1):
(obiecte arbitrare) $c_1,\puncte, c_v$ și $s_1,\puncte, s_v$
hashuri dintre aceste obiecte, care sunt scrise $hc_i = H(c_i)$ și $hs_i = H(s_i)$ (până la o permutare aplicată la $s_i$).
Toate operațiunile rămase sunt în termeni de $hc_i$ și $hs_i$, care par a fi (din context) în $\mathbb{Z}_p^*$, adică aritmetica este standard (deși probabil că trebuie să alegeți $p$ suficient de mare încât problema logaritmului discret este grea, deci $\gg 1000$ biți. În special, probabil că ar trebui să utilizați biginți mai degrabă decât u64.
Nu am citit suficient de atent încât să știu că ei presupun duritatea unei ipoteze de tip DL în $\mathbb{Z}_p^*$ deşi).
Parcurgând celelalte cifre, văd o poveste similară, și anume că toată aritmetica se face pe elementele hashed ale $\mathbb{Z}_p^*$, mai degrabă decât șiruri de octeți arbitrare în $\{0,1\}^*$.
Nu văd exemplul tău special:
$$1â¤iâ¤v:a_i'=(a_i)^{Râ²_s}$$
ca fiind o problemă.De exemplu, acest lucru pare să se întâmple în figura 4, unde văd înainte de ea $a_i = (hs_i)^{R_s'}$.
În această figură nu văd definiția $hs_i = H(s_i)$, și eu doar smulg, dar este plauzibil ca această interpretare să fie asumată, i.e. $hs_i$ este hash a unui șir de octeți arbitrar $s_i$, și este conținut în $\mathbb{Z}_p^*$ (Decat $\{0,1\}^*$).
Răspunsul general la
Pur și simplu efectuez aceeași operație pentru fiecare octet din câmp?
va fi „nu” (cu excepția cazului în care ceva spune în mod specific să faci asta). De obicei, protocoalele criptografice funcționează pe obiecte matematice bine definite (să spunem șiruri de biți în $\{0,1\}^*$), iar „taierea acestora” pentru a încerca să forțați lucrurile să funcționeze (când acest lucru nu este specificat ca parte a protocolului) poate duce cu ușurință la probleme de securitate.