Nu există un substitut pentru multiplicarea modulară în criptosistemele întrebării. Unele limbi precum Python fac acest lucru ușor în scopuri educaționale, numai.
În RSA și DSA și, într-o măsură mai mică, criptomon ECC activat secp256k1 sau secp256r1, trebuie să calculezi $b^e\bmod m$ pentru mari $e$. Cei mai rapizi algoritmi (de ex. exponentiarea ferestrei glisante) efectua despre $\log_2 e$ pătrat modular și asemenea $\aproximativ0,2\,\log_2 e$ înmulțiri modulare. Cu toate acestea, există și alți algoritmi doar marginal mai scumpi (de ex. scara lui Montgomery) care poate fi mai bun din punct de vedere al securității împotriva canalelor laterale.
Fiecare înmulțire modulară sau modul pătrat $m$, pentru cele de mai sus sau (în ECC) adăugarea sau înmulțirea punctelor cu un scalar, are costul de calcul în creștere cel mult ca $(\log m)^2$ la folosirea algoritmilor învățați în școala primară adaptați la cuvinte de calculator în loc de cifre. Asta poate fi coborât la $(\log m)^{\approx1.6}$ cu Karatsuba sau $(\log m)^{\approx1.5}$ cu Toom-3, dar în ECC modulul $m$ nu este suficient de mare încât să plătească mult ($m$ este „doar” câteva sute de biți în ECC, mai degrabă decât câteva mii în RSA/DSA).
Când se dezvoltă semnătură sau criptare folosind secp256k1 sau secp256r1 de la zero în scopuri educaționale, există de obicei faze:
- Obține ceva care funcționează, construind adunarea și dublarea punctelor în coordonate carteziene pe lângă înmulțirea modulară, apoi multiplicarea punctelor, apoi semnătura sau/și criptarea.
- Să funcționeze mult mai rapid prin utilizarea unei reprezentări mai bune a punctului, de ex. coordonate proiective (care permite amânarea inversării modulare costisitoare până la sfârșitul înmulțirii punctelor)
- Faptul ca acesta să funcționeze în siguranță, ceea ce este foarte greu și necesită de obicei rescrierea multor lucruri de la bază.
- Optimizări de performanță.Acestea pot fi încercate în orice etapă, dar gândiți-vă la zicala „optimizarea prematură este rădăcina tuturor relelor”.
Câteva referințe online despre înmulțirea și exponențiarea modulară (nu ECC):