Scomposizione dei numeri RSA per differenza del fattore minore Di Cristiano Armellini, [email protected] Supponiamo di considerare il classico problema RSA ovvero di decomporre un numero molto grande intero n nei due suoi fattori primi p e q, n=pq. Supponiamo anche che p < q e ovviamente 2 < p < n , n < q < n / 2 , allora possiamo avere solo due casi: Caso A) q − p > p ovvero q − p = p + d cioè q = 2 p + d . Sostituendo nella relazione n = pq − d ± d 2 + 8n otteniamo l’equazione di II grado 2 p + pd − n = 0 che si risolve con p = 4 2 dove d è necessariamente dispari (la differenza tra due numeri primi dispari è sempre un numero pari) e d < n (d=3, 5, 7, 9, 11, …..) Caso B) q − p < p ovvero q − p = p − d quindi q = 2 p − d e sostituendo come sopra nella d ± d 2 + 8n relazione n = pq otteniamo ( 2 p − d ) p = n cioè 2 p − pd − n = 0 , p = con d 4 2 dispari per i motivi sopra detti e sempre minore di radice quadrata di n. Per un attacco serio occorrerà quindi aizzare parallelamente i due casi A) e B) e provare i valori di d sia da sinistra verso destra (valori crescenti dall’estremo inferiore a quello superiore) sia da destra verso sinistra (valori decrescenti dall’estremo superiore a quello inferiore). Questo algoritmo risulta comunque particolarmente semplice da programmare in C/C++ , in PARI/GP o i Python. Come già avvenuto in altri casi possiamo generalizzare il metodo introducendo il fattore k, un metodo che verrà utilizzato per l'implementazione dei sistemi di calcolo parallelo e quindi per accelerare la ricerca delle soluzioni per numeri particolarmente grandi. - CASO A) q − p = kp + d q = p (k + 1) + d , n = pq quindi p ( p (k + 1) + d ) = n ovvero p 2 (k + 1) + pd − n = 0 cioè p = − d ± d 2 + 4n(k + 1) , k=1, 2, 3, 4, 5, ... Dove se k è dispari allora d 2(k + 1) è dispari mentre se k è pari d deve essere pari. - CASO B) q − p = kp − d q = p (k + 1) − d , n = pq quindi p ( p (k + 1) − d ) = n ovvero d ± d 2 + 4n(k + 1) p (k + 1) − pd − n = 0 cioè p = , k=1, 2, 3, 4, 5, ... Dove se k è dispari allora d è 2(k + 1) 2 dispari mentra se k è pari d deve essere pari. La scelta di l è un fattore critico ma in base a considerazioni statistiche dato che negli RSA p, q hanno di solito lo stesso ordine di grandezza possiamo considerare 1<k<99. Ad ogni calcolatore del sistema si assegna un k e si fa variare d nei due casi A) e B).