O modalitate evidentă de a ataca acest lucru (și suntem scurtați $\text{SHA256}(m)$ la fel de $S(m)$ :
Pentru un număr mare de mesaje $m_i$, calculează $S(m_i)$, și factor că. Dacă este netedă, înregistrați mesajul și factorii primi într-un tabel; dacă nu este netedă, respingeți-o
Când ați înregistrat suficiente mesaje (și factori primi) în tabelul dvs., eliminați pe tabelul cu factori primi pentru a găsi un set de mesaje și factori în care toate numerele prime ale mesajelor selectate, atunci când sunt înmulțite cu factori, se însumează toți la 0.
Dacă avem un astfel de produs (și multiplicatorul corespunzător unuia dintre mesaje, să spunem, $S(m_0)$, este 1), atunci avem (unde $p_i$ este multiplicatorul pe care l-am atribuit mesajului $i$):
$$S(m_1)^{-p_1} \cdot S(m_2)^{-p_2} \cdot ... \cdot S(m_n)^{-p_n} \equiv S(m_0)$$
Deci, cereți semnăturile lui $m_1, m_2, ..., m_n$; din asta se poate deduce semnatura pt $m_0$.
Deci, cât de fezabil este acest lucru? Ei bine, cea mai mare parte a logicii amintește de ceea ce se face în Quadratic Field Sieve (QFS); dimensiunea (256 de biți) este cam ceea ce obțineți atunci când aplicați QFS la un modul de 512 biți. QFS poate factorul de 512 biți modulii fezabil; Concluzion că și acest algoritm ar fi fezabil.