Puncte:1

Lucrul cu Paillier și ECDSA - Problemă de comandă

drapel sm
Ron

Încerc să implementez calculul în două părți pentru semnarea ECDSA folosind criptosistemul Paillier.

Dar problema mea este că ordinea lui Paillier este diferită de ordinea curbei (secp256k1 în cazul meu), așa că atunci când înmulțesc doi scalari în Paillier și apoi îi decriptez, aceștia sunt într-o altă ordine decât restul parametrilor.

Exemplu concret:

Ordinul Paillier - N
Ordinul ECDSA - Q

Alice și-a primit cheia secretă - aliceSK
Bob și-a luat SecretKey - bobSK

Alice generează perechea de chei Paillier - (paAliceSK, paAlicePK)

waitRes = (aliceSK X bobSK) mod Q

encAliceSK = Paillier.Encrypt(paAlicePK, aliceSK)
encBobSK = Paillier.Encrypt(paAlicePK, bobSK)

encRes = Paillier.Mul(paAlicePK, encAliceSK, encBobSK)

res = Paillier.Decrypt(paAlicePK, encRes)
res = res mod Q

Am ajuns la sfârșit că res != asteptatRes.

Dar când calculez Res-ul așteptat cu mod N, voi obține res == așteptatRes.

Deci întrebarea mea este cum ar trebui să folosesc Paillier și să returnez rezultatul Paillier decriptat înapoi la ordinea curbei.

kelalaka avatar
drapel in
Hash înainte de semn?
Puncte:1
drapel ng

O posibilitate este să alegem¹ un mic întreg public $r>1$ cu $r^{(q-1)/2}\equiv-1\pmod q$, și să asigure² $n$ în Pailler este cel puţin $2q-1$. Acum $x\mapsto r^x\bmod q$ este o bijecție pe $[1,q)$.

Alice alege $\widetilde{\mathsf{aliceSK}}$ uniform la întâmplare în $[1,q)$ și derivă $\mathsf{aliceSK}=r^{\widetilde{\mathsf{aliceSK}}}\bmod q$. Ea Pailler-criptează $\widetilde{\mathsf{aliceSK}}$.

Același lucru pentru Bob.

Într-o oarecare măsură, textele cifrate Pailler devin combinate cu Pailler (adică multiplicate modulo $n^2$ Unde $n$ este modulul Pailler public) și Pailler-descifrat la $d=\widetilde{\mathsf{aliceSK}}+\widetilde{\mathsf{bobSK}}$

Și din asta se poate obține

$$\mathsf{aliceSK}\times\mathsf{bobSK}\bmod q=r^d\bmod q$$


Cu 256 de biți și chiar 384 de biți $q$, este destul de ușor de găsit $\widetilde{\mathsf{aliceSK}}$ din $\mathsf{aliceSK}$. Astfel, acea tehnică poate fi folosită și după $\mathsf{aliceSK}$ a fost desenat în modul standard.

Nu am văzut niciodată asta propusă, dar este atât de simplu încât mă îndoiesc că este nou.


¹ Încercare și eroare cu $r$ primele numere prime vor găsi una rapid într-o medie de două încercări.

² Asta va fi valabil pentru comun $q$ în ECDSA, care de obicei este de câteva sute de biți și obișnuit $n$ pentru Paillier sigur, care de obicei este în mii de biți.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.