• Non ci sono risultati.

con p primo, il gruppo moltiplicativo Z

N/A
N/A
Protected

Academic year: 2021

Condividi " con p primo, il gruppo moltiplicativo Z"

Copied!
1
0
0

Testo completo

(1)

Teoria dei numeri e Crittografia: lezione del 9 maggio 2011

Nella lezione precedente abbiamo dimostrato parzialmente il seguente:

Teorema di Gauss (il caso del quadrato di un numero primo).

Se n=p

2

con p primo, il gruppo moltiplicativo Z

n

* è ciclico (quindi esiste qualche radice primitiva modulo n).

Dimostrazione (continuazione).

Se a è una radice primitiva modulo p (che esiste per un risultato precedente) abbiamo distinto 2 casi possibili:

1) a

p-1

non è congruo 1 modulo n 2) a

p-1

è congruo 1 modulo n

Nel caso 1) abbiamo già dimostrato che lo stesso a è anche una radice primitiva modulo n=p

2

. Supponiamo che si verifichi invece il caso 2): consideriamo l’intero b=a+p. Sviluppando la potenza con esponente p-1 con la regola di Newton si ha:

b

p-1

= (a+p)

p-1

=

1

1 0

1

p

p j j

j

p a p

j

 

  

 

 

= a

n-1

+(p-1)pa

p-2

+p

2

m (con m intero) Tenendo conto che a

p-1

1 (mod n) , si hanno le seguenti congruenze modulo n=p

2

: b

p-1

 a

p-1

+(p-1)pa

p-2

= a

p-1

+p

2

a

p-2

- pa

p-2

 1- pa

p-2

(mod n)

Si conclude che b

p-1

non è congruo 1 modulo n (se così fosse sarebbe p

2

pa

n-2

, quindi pa

n-2

ossia pa contro l’ipotesi che [a]

p

 Z

p

*). Ma [a]

p

=[a+p]

p

=[b]

p

dunque anche b é una radice primitiva modulo p.

Sostituendo a con b si ricade allora nel caso 1), e si ha che b=a+p è una radice primitiva modulo n . Nota: dalla dimostrazione precedente si ricava che, se a è una radice primitiva modulo p allora vi sono solo 2 casi possibili: a è anche radice primitiva modulo p

2

(se a

p-1

non è congruo 1 modulo p

2

), oppure (a+p) è radice primitiva modulo p

2

(se a

p-1

è congruo 1 modulo p

2

).

Quindi conoscendo una radice primitiva modulo p si può calcolare una radice primitiva modulo p

2

. Si noti che esistono algoritmi per calcolare una radice primitiva modulo p (per esempio un algoritmo dovuto a Gauss).

Test di primalità di Rabin-Miller

E’ un test di primalità probabilistico, che si applica ad un input n>1 naturale dispari (non è una restrizione sostanziale perché un naturale pari è sempre composto, tranne nel caso n=2).

Rispetto al test di Fermat non presenta “eccezioni” (come i numeri di Carmichael) ed inoltre la probabilità che un numero composto superi il test è 1/4 (contro il 1/2 del test di Fermat per i numeri non di Carmichael).

I passi dell’algoritmo del test di Rabin-Miller sono:

1) in input il naturale n>1 dispari

2) si calcola la massima potenza 2

s

di base 2 ed esponente s>0 tale che 2

s

sia divisore del numero pari n-1, e dunque si rappresenta (n-1) nella forma: n-1=2

s

t, con t>0 numero naturale dispari 3) si sceglie casualmente un intero a con 1an-1 (detto base)

4) si costruiscono le riduzioni modulo n delle s potenze di base a ed esponente t, 2

1

t, 2

2

t, ….. , 2

s-1

t:

a

2it

modn i=0,1,…..,s-1 5) se è verificata almeno una delle seguenti condizioni:

at

modn =1 oppure a

2it

modn =n-1 per qualche i=0,1,….,s-1

si esce con output ”n è primo”, altrimenti si esce con output “n è composto”.

(2)

Notiamo che le condizioni del passo 5) equivalgono alle congruenze:

a

t

1 (mod n), a

2it

-1 (mod n) i=0,1,…..,s-1.

Verifichiamo prima di tutto che un input n primo (dispari) supera sempre il test.

Utilizzeremo la proprietà seguente: se n è primo e se x è un numero naturale tale che x

2

1 (mod n) , allora x1 (mod n) (infatti da x

2

1 (mod n) segue n(x

2

-1), n(x-1)(x+1), n(x-1) oppure n(x+1)).

Supponiamo dunque l’input n primo (dispari) e per assurdo supponiamo non verificata nessuna delle condizioni del passo 5); essendo a non multiplo di n (perché a<n), per il Piccolo Teorema di Fermat si ha:

a

n-1

= a

2st

= ( a

2s-1t

)

2

1 (mod n)

e per quanto detto sopra si ha a

2s-1t

1 (mod n), ma allora (non essendo per assurdo verificata nessuna delle condizioni del passo 5)) a

2s-1t

= ( a

2s-2t

)

2

1, a

2s-2t

1, da cui (con lo stesso ragionamento) a

2s-2t

1, e così via procedendo a ritroso, fino ad arrivare ad a

2 t1

= ( ) a

t 2

1, a

t

1, contraddizione perchè a

t

1, a

t

 -1 sono fra le condizioni del passo 5) che per assurdo abbiamo supposto non verificate.

Esaminiamo poi la complessità dell’algoritmo.

Sia x=L(n) la lunghezza binaria dell’input n.

Notiamo prima di tutto che da 2

s

2

s

t=n-1<n<2

x

segue s<x.

Nel passo 2), il calcolo della differenza (n-1) ha complessità lineare O(x) e possiamo trascurare la complessità della rappresentazione di n-1 nella forma n-1=2

s

t, con t>0 numero naturale dispari (si tratta di effettuare successive divisioni per 2, che si ottengono elidendo le ultime cifre binarie =0 di n-1).

Nel passo 4) si tratta di calcolare le s riduzioni modulo n (per confrontarle con i valori 1, n-1):

a

2it

modn dove i=0,1,….,s-1

ognuna con esponente <n e con base <n, e si può utilizzare l’esponenziazione modulare, che ha complessità di ordine O(x

3

): poiché il numero s é <x la complessità totale del Test di Rabin-Miller é O(x

4

).

Anche per il test di Rabin-Miller, come per il test di Fermat, può avvenire che un input n composto (dispari) superi il test, “fingendo” di essere primo.

Diremo che un naturale n composto dispari è fortemente pseudoprimo nella base a (dove 1an- 1 è la base scelta casualmente nel passo 3)), se n supera il test di Rabin-Miller per tale scelta di a.

Ricordiamo che n (composto) é detto pseudoprimo nella base a, se n supera il test di Fermat per tale scelta di a, cioè se a

n-1

1 (mod n).

Dimostriamo ora che se n composto (dispari) è fortemente pseudoprimo nella base a, allora n è anche pseudoprimo nella stessa base a: infatti, essendo verificata una delle condizioni del passo 5), vi sono 2 casi possibili:

- a

t

1 (mod n): si ha a

n-1

= a

2st

= ( ) a

t 2s

1 (mod n)

- a

2it

-1 (mod n) per qualche i=0,1,…..,s-1: si ha a

n-1

= a

2st

= ( a

2it

)

2s i

 ( 1) 

2s i

=1 (mod n).

Riferimenti

Documenti correlati

[r]

Se vogliamo diminuire ancora tale probabilit` a possiamo ripetere il test di Miller-Rabin con altre basi... Cercare di rompere questo sistema e di decifrare e leggere

Contiene secreto di lumaca di Helix Aspersa Muller con acido glicolico e allantoina e i fenoli presenti nelle foglie di ulivo micronizzate ( Micronized Olive Leaveas MOL).. Il nome è

Prima di inviare la soluzione TRAMITE CELLULARE lo studente contatta il docente, il docente controlla il foglio della soluzione, se neces- sario fará una foto.. Solo dopo lo

Dopo avere rappresentato gracamente le seguenti funzioni, stabilire se esse sono monotone, iniettive e suriettive (sull'insieme R dei numeri reali).. Determinare il dominio

In effetti storicamente Miller (1977) implementò per primo il test, ma avendo come scopo la costruzione di un test di primalità deterministico di

Se eseguiamo il test k volte sempre con lo stesso input, con k scelte indipendenti del valore casuale a, e se tutte le volte n supera il test positivamente con output “n è primo ”

Il test di primalità sopra esposto può essere reso più efficiente limitandosi per esempio ad input a dispari (un numero pari a non è primo tranne nel caso banale a=2) ed