Stima della complessità computazionale della fattorizzazione con il metodo dell’attacco casuale (rapporti tra statistica e numeri primi) Supponiamo che p sia un numero da fattorizzare molto grande (es RSA). Sappiamo che il fattore più piccolo deve necessariamente trovarsi tra 2 e la radice quadrata di p. Supponiamo di avere un calcolatore che generi numeri casuali e che ogni numero casuale generato sia un numero primo tra 2 e la radice quadrata di p. Per ogni numero casuale estratto si verifica se è o no un divisore di p e , in caso negativo, si passa al successivo numero. Ipotizziamo che il nostro programma tenga “memoria” dei numeri estratti in modo che l generatore di “primi casuali” non possa ripetere mai lo stesso numero. Al primo tentativo la probabilità di aver trovato la soluzione sarà π1 = 1 ππππ₯ π₯ = π₯ ππππ₯ Ove è stato usato il ben noto teorema dei numeri primi e π₯ = πππ‘(√π) e log(x) è il logaritmo naturale di x. π₯ In luogo di x/log(x) avremmo potuto anche usare una stima di ∫2 ππ¦ logβ‘(π¦) Al secondo tentativo 1 π2 = π₯ −1 ππππ₯ … al k-esimo tentativo 1 ππ = π₯ −π+1 ππππ₯ Questa formula ci dà una stima della probabilità che al k-esimo tentativo (k intero) abbiamo di “indovinare” la soluzione. Come si vede man mano che aumentano i tentativi aumenta la probabilità di “vittoria”, probabilità che è comunque condizionata dalla grandezza di p numero da fattorizzare. Come si può ben vedere all’aumentare delle dimensioni di p la probabilità diminuisce in modo esponenziale