Lezioni di Aritmetica Modulare Antonino Salibra Università Ca’Foscari Venezia 2 Novembre 2016 Nel seguito scriveremo talvolta a|b al posto di “a divide b”. Ricordiamo che, dati due interi a e b con b 6= 0, esiste un’unica coppia di interi q (quoziente) ed r (resto) tali che a = bq + r con 0 ≤ r < |b|, dove |b| è il modulo di b. 0.1. Massimo comun divisore Il massimo comun divisore MCD(a, b) di due interi a, b non entrambi nulli è il più grande numero naturale positivo che divide sia a che b. Quindi abbiamo MCD(a, b) = MCD(|a|, |b|), dove |a| e |b| sono il modulo di a e b rispettivamente. Si estende la definizione di MCD a tutti gli interi con MCD(0, 0) = 0. Due numeri interi a, b si dicono primi fra di loro se M CD(a, b) = 1. Nel seguito supponiamo a, b > 0. Per calcolare il massimo comun divisore di a e b si considerino i numeri primi p1 , . . . , pn che sono minore di max(a, b) e poi si definisca MCD(a, b) = pk11 . . . pknn , dove pki i |a e pki i |b, mentre pki i +1 non divide a oppure non divide b, oppure non divide entrambi. Un metodo più efficiente di calcolo del massimo comun divisore è l’algoritmo di Euclide. Lemma 0.1.1. Sia b ≤ a. Se b|a allora MCD(a, b) = b. Se b non divide a allora MCD(a, b) = MCD(b, r), dove r è il resto della divisione di a per b Proof. Sia a = bq + r con 0 ≤ r < b. Se d|a e d|b allora d|(a − bq) = r. L’inverso è anche vero. Il principio di induzione completa giustifica la seguente definizione ricorsiva: ( b se a|b; MCD(a, b) = MCD(b, r) se a = bq + r con 0 ≤ r < b. Example 0.1.1. MCD(134, 36) = MCD(36, 26) = MCD(26, 10) = MCD(10, 6) = MCD(6, 4) = MCD(4, 2) = 2. Lemma 0.1.2. Siano a, b 6= 0 numeri interi. Allora esistono interi x e y tali che ax+by = MCD(a, b). Proof. Possiamo supporre a, b > 0. La prova è per induzione completa sul valore di b. Se b = 1, allora MCD(a, 1) = 1 e a0 + 1 = MCD(a, 1). Se b > 1, abbiamo due casi: • MCD(a, b) = b. Allora a0 + b = MCD(a, b). 1 2 Antonino Salibra Università Ca’Foscari Venezia 2 Novembre 2016 • MCD(a, b) = MCD(b, r) con a = bq + r e 0 ≤ r < b. Siccome r < b, possiamo applicare l’ipotesi d’induzione per ottenere due valori x, y tali che bx + ry = MCD(b, r) = MCD(a, b). Ma r = a − bq e sostituendo si ha: bx + (a − bq)y = b(x − qy) + a = MCD(a, b). Osservazione: Siano a, b 6= 0 interi. Allora l’equazione lineare ax + by = 0 rappresenta la retta dei vettori (x, y) che sono ortogonali al vettore (a, b). Il Lemma 0.1.2 afferma che la retta ax + by = MCD(a, b) parallela alla retta ax + by = 0 passa attraverso dei punti che hanno coordinate intere. Theorem 0.1.1. (Proprietà di Bézout) Siano a, b, c 6= 0 numeri interi. Allora l’equazione lineare ax + by = c ha soluzioni intere sse MCD(a, b)|c. Proof. (⇒) MCD(a, b) divide ogni combinazione lineare di a e b. In particolare, divide la combinazione lineare ax + by = c. (⇐) Sia d = MCD(a, b). Per ipotesi c = dq per un opportuno q. Dal Lemma 0.1.2 esistono x e y tali che ax + by = d. Moltiplicando ambo i membri per q si ottiene: a(xq) + b(yq) = dq = c. Example 0.1.2. Trovare una soluzione intera dell’equazione 240x + 36y = 12. Possiamo dividere tutti i coefficienti per 12 ed ottenere 20x + 3y = 1. Siccome 20 e 3 sono primi tra loro (cioé MCD(20, 3) = 1) allora le soluzioni intere di 20x + 3y = 1 esistono. Si vede facilmente che x = −1 e y = 7 è una soluzione di 20x + 3y = 1. La stessa soluzione risolve 240x + 36y = 12. Example 0.1.3. Trovare una soluzione intera dell’equazione 120x + 81y = 12. Dividendo per 3 si ottiene 40x+27y = 4. Siccome 40 e 27 sono primi tra loro (cioé MCD(40, 27) = 1) allora le soluzioni intere di 40x + 27y = 1 esistono. Applichiamo l’algoritmo di Euclide per il calcolo del massimo comun divisore: 40 = 27 + 13 e 27 = 13 ∗ 2 + 1. Quindi 1 = 27 − 13 ∗ 2 = 27 − (40 − 27) ∗ 2 = 27 − 40 ∗ 2 + 27 ∗ 2 = (−2)40 + 27 ∗ 3. Quindi una soluzione intera dell’equazione 40x + 27y = 4 è: x = −8, y = 12. Le stesse soluzioni funzionano per l’equazione lineare 120x + 81y = 12. Example 0.1.4. Non esistono soluzioni intere dell’equazione 6x + 2y = 5, perché 2 = MCD(6, 2) non divide 5. 0.2. L’aritmetica dell’orologio L’aritmetica modulare (o aritmetica dell’orologio) è stata introdotta da Gauss ad inizio ottocento. Consideriamo un orologio con n > 0 tacche che corrispondono ad i numeri da 0 a n − 1 (Si veda la figura per il caso n = 9). Indichiamo con Zn = {0, 1, . . . , n − 1}. Scorriamo l’orologio in senso orario partendo da 0. Una mossa +1 consiste nello Lezioni di Aritmetica Modulare 3 Figure 1. Aritmetica dell’orologio spostarsi in senso orario dalla tacca in cui ci troviamo alla tacca successiva. La mossa +1 corrisponde all’operazione di aggiungere 1. Quando arriviamo al numero n − 1 ed eseguiamo una ulteriore mossa +1, scopriamo che (n − 1) + 1 = 0 anziché (n − 1) + 1 = n. Quindi, contrariamente ai numeri naturali, il numero 0 è il successore del numero n − 1 e la funzione determinata dalle mosse +1 definisce una funzione bigettiva dall’insieme Zn nell’insieme Zn . Viceversa, scorriamo l’orologio in senso antiorario partendo da 0. Una mossa −1 consiste nello spostarsi in senso antiorario dalla tacca in cui ci troviamo alla tacca precedente. La mossa −1 corrisponde a sottrarre 1. Quindi 0 − 1 = n − 1 anziché essere indefinito come avviene nell’aritmetica dei numeri naturali. La funzione determinata dalle mosse −1 definisce una funzione bigettiva dall’insieme Zn nell’insieme Zn . Essa è la funzione inversa della funzione determinata dalle mosse +1. Come possiamo “rappresentare” un intero a nell’orologio? Adottiamo due strategie diverse se a è positivo oppure negativo. Se a è positivo, eseguiamo esattamente un numero di mosse +1 pari ad a volte partendo da 0. La tacca in cui ci troviamo rappresenta il numero intero positivo a nell’orologio. Se a è negativo, eseguiamo esattamente un numero di mosse −1 pari a |a| volte partendo da 0. La tacca in cui ci troviamo rappresenta il numero intero negativo a nell’orologio. In entrambi i casi la tacca del numero a rappresenta il numero modn (a) che è il resto della divisione di a per n. Esso è un numero naturale compreso tra 0 e n − 1. Notazione: Talvolta scriviamo a mod n al posto di modn (a). 4 Antonino Salibra Università Ca’Foscari Venezia 2 Novembre 2016 Definiamo la somma +n (modulo n) ed il prodotto ∗n (modulo n) sui numeri interi come segue: a +n b = modn (a + b); a ∗n b = modn (ab). Il risultato della somma e del prodotto è sempre un valore compreso tra 0 e n − 1, quindi rappresentabile nell’orologio. Lemma 0.2.1. L’insieme Zn = {0, 1, . . . , n−1} è chiuso rispetto alle operazioni di somma +n e prodotto ∗n . Per semplificare i conti, utilizziamo la seguente proposizione Proposition 0.2.1. Valgono le seguenti uguaglianze (a, b ∈ Z): 1. modn (a + b) = modn (modn (a) + modn (b)); 2. modn (ab) = modn (modn (a) modn (b)). Example 0.2.1. Sia n = 9. Allora mod9 (95 · 37) = mod9 (mod9 (95) + mod9 (37)) = mod9 (5 · 2) = mod9 (10) = 1. Se non avessimo utilizzato la proposizione avremmo dovuto calcolare mod9 (3515), che è più difficile specialmente se n è grande. Se ci restringiamo ad i numeri compresi tra 0 e n − 1, possiamo anche definire la somma +n come segue (0 ≤ a, b < n): se b = 0 a a +n b = a + 1 se b = 1 (a +n (b − 1)) + 1 se b = 6 0, 1. Example 0.2.2. 7+9 3 = (7+9 2)+1 = ((7+9 1)+1)+1 = ((7+1)+1)+1 = (8+1)+1 = 0 + 1 = 1. Possiamo definire il prodotto ∗n sui numeri tra 0 e n − 1 utilizzando la somma modulare +n : se b = 0 0 a ∗n b = a se b = 1 (a ∗n (b − 1)) +n a se b 6= 0, 1. Example 0.2.3. 7 ∗9 3 = (7 ∗9 2) +9 7 = ((7 ∗9 1) +9 7) +9 7 = (7 +9 7) +9 7 = 5 +9 7 = 3. Nella parte finale abbiamo applicato la definizione della somma +9 per arrivare al risultato finale 3. L’aritmetica dell’orologio è correlata alla teoria delle congruenze che introduciamo nella prossima sezione. Lezioni di Aritmetica Modulare 5 0.3. Congruenze Le tacche numerate dell’orologio della sezione precedente sono i rappresentanti delle n classi di equivalenza di una relazione di equivalenza ≡n definita sugli interi. Nella prossima definizione definiamo la relazione ≡n . Definition 0.3.1. Sia n > 0. Diciamo che a, b ∈ Z sono congruenti modulo n, e scriviamo a ≡ b (mod n) oppure a ≡n b, se modn (a) = modn (b). Quindi abbiamo a ≡n b se il resto della divisione di a per n è uguale al resto della divisione di b per n. Lemma 0.3.1. Sia n > 0 e siano a e b numeri interi. Allora, a ≡n b sse n divide b − a. Proof. Supponiamo che a ≡n b. Allora, dividendo a e b per n, si ha: a = q1 n + r e b = q2 n + r con 0 ≤ r < n. Ne segue che b − a è divisibile per n: b − a = n(q2 − q1 ). Per la direzione opposta, supponiamo che b−a = nt per un opportuno t ∈ Z. Dividiamo sia a che b per n: a = q1 n + r1 e b = q2 n + r2 con 0 ≤ r1 , r2 < n. Allora, b − a = n(q2 − q1 ) + (r2 − r1 ) = nt, da cui segue r2 − r1 = n(t + q1 − q2 ). Ma |r2 − r1 | < n. Quindi l’unica possibilità è che r1 = r2 . Lemma 0.3.2. La relazione ≡n è una relazione di equivalenza su Z che è compatibile rispetto alle operazioni di addizione, moltiplicazione e esponenziazione di interi: (i) a ≡n b ∧ c ≡n d ⇒ a + c ≡n b + d. (ii) a ≡n b ∧ c ≡n d ⇒ ac ≡n bd. (iii) a ≡n b ⇒ ak ≡n bk . Proof. Sia modn (a) = modn (b) e modn (c) = modn (d). (i) Sia Dalla Proposizione 0.2.1(1) e dall’ipotesi si ha: modn (a + c) = modn (modn (a) + modn (c)) = modn (modn (b) + modn (d)) = modn (b + d). (ii) La prova è simile a quella del punto (i). (iii) La prova è per induzione su k utilizzando (ii). La relazione ≡n partiziona Z in n classi di equivalenza. Se a è un intero scriveremo [a]n per la classe di equivalenza di a modulo l’equivalenza ≡n . Ecco la partizione determinata da ≡n : [0]n = {kn : k ∈ Z}; [1]n = {1 + kn : k ∈ Z}; ... [n − 1]n = {(n − 1) + kn : k ∈ Z}. Scegliamo come rappresentanti delle classi di equivalenza i numeri 0, 1, 2, . . . , n − 1. Questi numeri corrispondono alle tacche di un orologio che segna le ore da 0 sino ad n − 1 (si veda la figura con n = 4). Le operazioni di somma +n e prodotto ∗n , definite nella sezione precedente, agiscono sulle classi di equivalenza modulo n tramite i loro rappresentanti. 6 Antonino Salibra Università Ca’Foscari Venezia 2 Novembre 2016 Figure 2. Aritmetica dell’orologio modulo 4 Proposition 0.3.1. L’insieme Zn = {0, 1, 2, . . . , n − 1} con le operazioni di somma +n e prodotto ∗n modulo n (come definite nella sezione precedente nel caso n = 9) costituisce un anello commutativo con unità. (Zn , +n , 0) è un gruppo commutativo rispetto alla somma: • Proprietà associativa: (x +n y) +n z = x +n (y +n z); • Proprietà commutativa: x +n y = y +n x; • Elemento neutro: x +n 0 = x = 0 +n x; • Opposto: x +n (−x) = 0 = (−x) +n x. (Zn , ∗n , 1) è un monoide commutativo rispetto al prodotto: • Proprietà associativa: (x ∗n y) ∗n z = x ∗n (y ∗n z); • Proprietà commutativa: x ∗n y = y ∗n x; • Elemento neutro: x ∗n 1 = x = 1 ∗n x; Il prodotto distribuisce rispetto alla somma: • x ∗n (y +n z) = (x ∗n y) +n (x ∗n z). Nei prossimi due lemmi studiamo proprietà di cancellazione e periodicità delle potenze. Lemma 0.3.3. Proprietà di cancellazione: ac ≡n bc ∧ MCD(c, n) = 1 ⇒ a ≡n b. Lezioni di Aritmetica Modulare 7 Proof. Dal Lemma 0.1.2 e dall’ipotesi MCD(c, n) = 1 esistono interi x e y tali che cx+ny = 1. Siccome cx = n(−y) + 1, allora cx ≡n 1. Dal Lemma 0.3.2(ii) si ricava acx ≡n a e bcx ≡n b. Dall’ipotesi ac ≡n bc segue che acx ≡n bcx. Quindi a ≡n b. Lemma 0.3.4. Sia n > 0 ed a un intero. La sequenze di potenze modulo n a0 a1 a2 a3 a4 a5 a6 ... 1 2 3 4 5 6 1 modn (a ) modn (a ) modn (a ) modn (a ) modn (a ) modn (a ) . . . è periodica a partire da un certo punto in poi: esistono k e p ≤ n tali che ak ≡n ak+rp per ogni r ≥ 0. Example 0.3.1. Calcoliamo le potenze del 3 modulo 7: 30 31 32 33 34 35 36 1 3 2 6 4 5 1 Il periodo è 6. Per esempio 32 ≡ 38 . Infatti 38 = 32 36 ≡7 32 . Example 0.3.2. Calcoliamo le potenze del 2 modulo 8: 20 21 22 23 24 1 2 4 0 0 Il periodo è 1 a partire da 23 . Concludiamo la sezione con una serie di esempi che provano l’utilità della Proposizione 0.2.1 e dell’aritmetica modulare. Example 0.3.3. Vogliamo calcolare qual’è il resto della divisione di 95758 per 5. Siccome 10 è divisibile per 5, si ha che 95758 = 8 + 5 · 10 + 7 · 102 + 5 · 103 + 9 · 104 ≡5 8 ≡5 3. Example 0.3.4. Vogliamo calcolare qual’è il resto della divisione di 95758 per 7. Siccome 10 è 3 modulo 7, si ha che 95758 = ≡7 ≡7 ≡7 ≡7 8 + 5 · 10 + 7 · 102 + 5 · 103 + 9 · 104 1 + 5 · 3 + 0 · 32 + 5 · 33 + 2 · 34 1 + 15 + 5 · 32 · 3 + 2 · 32 · 32 1+1+5·2·3+2·2·2 2+2+1=5 Example 0.3.5. Vogliamo determinare mod5 (95758·37988). Piuttosto che eseguire prima la moltiplicazione e poi il calcolo del resto della divisione per 5, calcoliamo direttamente il resto della divisione di 95758 per 5 ed il resto della divisione di 37988 per 5. Si ha: mod5 (95758) = 3 e mod5 (37988) = 3. Quindi mod5 (95758 · 37988) = 4. Example 0.3.6. Calcoliamo 3128 modulo 7. Siccome 33 = 27 ≡7 −1, allora 3128 = 33·42+2 = (33 )42 · 32 ≡7 (−1)42 · 2 = 2. 8 Antonino Salibra Università Ca’Foscari Venezia 2 Novembre 2016 0.4. Teoremi di Fermat e di Wilson Pierre de Fermat, uno dei matematici più importanti dell’ultimo millennio, è nato il 17 agosto 1601 a Beaumont-de-Lomagne (Francia) ed è morto il 12 gennaio 1665 a Castres. Era magistrato di professione e si occupava di matematica nel tempo libero. Presentiamo qui di seguito uno dei suoi risultati più importanti. Theorem 0.4.1. (Piccolo Teorema di Fermat) Se p è un numero primo e p non divide a, allora ap−1 ≡p 1. Proof. Consideriamo i seguenti multipli positivi di a: a, 2a, 3a, . . . , (p − 1)a. Nessuno di questi numeri è congruente ad un altro modulo p: se na ≡p ma allora dal Lemma 0.3.3 potremmo cancellare a ed ottenere m ≡p n, che è impossibile in quanto 1 ≤ n, m ≤ p − 1. Quindi i numeri a, 2a, 3a, . . . , (p − 1)a modulo p corrispondono in un qualche ordine ai numeri 1, 2, 3, . . . , p − 1. Si ha quindi: a · 2a · 3a · · · · · (p − 1)a ≡p 1 · 2 · 3 · · · · · (p − 1) da cui ap−1 (p − 1)! ≡p (p − 1)! Cancellando (p − 1)!, che non è divisibile per p, da entrambi i membri otteniamo la conclusione1 . Corollary 0.4.1. Se p è primo, allora ap ≡p a. Example 0.4.1. Vogliamo calcolare 5236 modulo 13. Applicando il Piccolo Teorema di Fermat sappiamo che 512 ≡13 1. Quindi 5236 = 512·19+8 = (512 )19 58 ≡13 119 58 = 58 = (52 )4 ≡13 (−1)4 = 1 Theorem 0.4.2. Se p e q sono primi distinti tali che ap ≡q a e aq ≡p a, allora apq ≡pq a. Proof. Dal Corollario 0.4.1 si ha (ap )q ≡q ap e (aq )p ≡p aq . Per ipotesi ap ≡q a e aq ≡p a, quindi apq ≡q a e apq ≡p a. In conclusione p|apq − a e q|apq − a e quindi pq|apq − a. 1 Un’altra prova del Piccolo Teorema di Fermat si ottiene per induzione su a come segue. La base dell’induzione a = 1 è ovvia. Supponiamo vero il teorema per a e dimostriamolo per a + 1: (a + 1)p = p X i=0 Siccome p! i!(p−i)! ( p! )ai i!(p − i)! ≡p 0 per ogni 1 ≤ i ≤ p − 1 si ha: (a + 1)p ≡p ap + 1 ≡p a + 1. perché per ipotesi di induzione ap ≡p a. Lezioni di Aritmetica Modulare 9 Example 0.4.2. Consideriamo p = 11 e q = 31 numeri primi. Allora 211 = 2 · 210 = 2 · 25 · 25 ≡31 2 · 1 · 1 = 2. Per il Piccolo Teorema di Fermat si ha anche: 231 = 2(210 )3 ≡11 2 · 13 = 2. Applicando il teorema precedente si ha 211·31 ≡11·31 2 che si può anche scrivere 2341 ≡341 2. Theorem 0.4.3. Se p è un numero primo, allora (Zp , +p , 0, ∗p , 1) è un campo numerico. Proof. Dalla Proposizione 0.3.1 dobbiamo soltanto provare che ogni elemento a ∈ Zp ha un inverso. La conclusione segue dal Piccolo Teorema di Fermat perché aap−2 ≡p 1. Quindi ap−2 è l’inverso di a. Theorem 0.4.4. (Teorema di Wilson) Se p è primo, allora (p − 1)! ≡p −1. Proof. Supponiamo p > 3 primo. Sia 1 ≤ a ≤ p − 1. Consideriamo la congruenza lineare ax ≡p = 1. Siccome a e p sono primi tra loro, questa congruenza ammette un’unica soluzione modulo p. Quindi esiste un unico a0 con 1 ≤ a0 ≤ p − 1 tale che aa0 ≡p 1. Dal fatto che p è primo segue che a = a0 soltanto per a = 1 e a = p − 1. In fatti la congruenza quadratica a2 ≡p 1 si scrive a2 − 1 = (a − 1)(a + 1) ≡p 0. Si ricava a = 1 oppure p|a + 1 da cui a = p − 1. Da tutto questo segue che 2 · 3 · · · · · (p − 2) ≡p 1 che si scrive anche (p − 2)! ≡p 1. Quindi (p − 1)! = (p − 1) · (p − 2)! ≡p p − 1 ≡p −1. 10 Antonino Salibra Università Ca’Foscari Venezia 2 Novembre 2016 0.5. Teorema di Eulero Leonhard Euler, noto in Italia come Eulero, è stato il più importante matematico del diciottesimo secolo. Eulero è nato il 15 aprile 1707 a Basilea in Svizzera ed è morto il 18 settembre 1783 a San Pietroburgo in Russia. Si definisca la seguente funzione di Eulero: φ(n) = numero di interi positivi ≤ n che sono relativamente primi con n. Example 0.5.1. Se n è primo, φ(n) = n − 1. Ecco altri esempi: φ(8) = 4 e φ(14) = 6. Lemma 0.5.1. n è primo sse φ(n) = n − 1. Proof. Se φ(n) = n − 1 allora tutti i numeri da 1 a n − 1 sono primi con n. Quindi, n è primo. Lemma 0.5.2. Se p è primo, allora φ(pk ) = pk − pk−1 = pk (1 − p1 ). Proof. Si ha: MCD(a, pk ) = 1 sse p 6 | a. Vi sono pk−1 interi tra 1 e pk che sono divisibili per p: p, 2p, 3p, . . . , (pk−1 )p. Quindi l’insieme {1, 2, . . . , pk } contiene pk − pk−1 interi relativamente primi con p. Per esempio, φ(9) = φ(32 ) = 32 − 31 = 6. Lemma 0.5.3. Se a e b sono relativamente primi tra loro, allora φ(ab) = φ(a)φ(b). Proposition 0.5.1. Sia n > 0. L’insieme degli interi relativamente primi con n è chiuso rispetto all’operazione di moltiplicazione (modulo n) e costituisce un gruppo moltiplicativo. Proof. Sia MCD(a, n) = 1 e MCD(b, n) = 1. Allora si vede facilmente che MCD(ab, n) = 1. Dal Lemma 0.1.2 esistono interi x, y tali che ax + ny = 1. Ne segue che ax ≡n 1 ed x è l’inverso di a. Theorem 0.5.1. (Teorema di Eulero) Se n è un intero positivo e MCD(a, n) = 1, allora aφ(n) ≡n 1. Proof. Siano b1 , b2 , . . . , bφ(n) i numeri minori di n che sono relativamente primi con n. Allora ab1 , ab2 , . . . , abφ(n) sono congruenti a b1 , b2 , . . . , bφ(n) in qualche ordine. Ne segue che (ab1 ) · (ab2 ) · · · · · (abφ(n) ) = aφ(n) (b1 · b2 · · · · · bφ(n) ) ≡n b1 · b2 · · · · · bφ(n) Siccome ogni bi è primo con n possiamo dividere per b1 · b2 · · · · · bφ(n) ed ottenere la conclusione. Example 0.5.2. φ(100) = φ(22 · 52 ) = φ(22 )φ(52 ) = 100(1 − 12 )(1 − 15 ) = 40. Dal teorema di Eulero si ricava 340 ≡100 1. Quindi, per esempio, 3256 = 36·40+16 = (340 )6 316 ≡100 316 . Infine, 316 = (81)4 ≡100 (−19)4 = (361)2 ≡100 612 ≡100 21. Lezioni di Aritmetica Modulare 11 0.6. Equazioni modulari Theorem 0.6.1. La congruenza lineare ax ≡n b ha una soluzione sse MCD(a, n)|b. Proof. ax ≡n b sse n|(ax − b) sse ∃q(ax − b = nq) sse ∃q(ax − nq = b). Dal Teorema 0.1.1 di Bézout otteniamo che ax ≡n b sse MCD(a, n)|b. Theorem 0.6.2. (Teorema cinese del resto) Siano n1 , . . . , nk interi positivi a due a due primi fra loro (i.e., MCD(ni , nj ) = 1 per i 6= j). Allora il sistema di congruenze lineari x x ... x ≡ ≡ ... ≡ a1 (mod n1 ) a2 (mod n2 ) ... ... ak (mod nk ) ha una soluzione simultanea che è unica modulo n1 . . . nk . Proof. Per ogni 1 ≤ i ≤ k si definisca bi = n1 . . . ni−1 ni+1 . . . nk . Si ha MCD(bi , ni ) = 1. Allora la congruenza lineare bi xi ≡ni 1 ha soluzione. Si noti che bi ≡nj 0 per j 6= i. Allora il numero x = a1 b 1 x 1 + a2 b 2 x 2 + · · · + ak b k x k risolve il sistema di congruenze lineari. Per esempio, x ≡n1 a1 b1 x1 perché b2 , b3 , . . . , bk ≡n1 0. Inoltre, da b1 x1 ≡n1 1 si ottiene la conclusione x ≡n1 a1 . Lo stesso discorso vale per gli altri ni . Supponiamo che oltre ad x vi sia un’altra soluzione y. Allora si ricava facilmente che x ≡ni y per ogni 1 ≤ i ≤ k. Quindi, n1 . . . nk divide x − y (si ricordi che MCD(ni , nj ) = 1 per i 6= j). Si conclude x ≡ y mod n1 . . . nk . Diamo un’altra prova del Teorema Cinese del resto utilizzando il Teorema di Eulero. Siano n1 , . . . , nk interi positivi a due a due primi fra loro (i.e., MCD(ni , nj ) = 1 per i 6= j). Allora il sistema di congruenze lineari x x ... x ≡ ≡ ... ≡ a1 (mod n1 ) a2 (mod n2 ) ... ... ak (mod nk ) ha una soluzione simultanea che è unica modulo n1 . . . nk . k) Si consideri bi = (n1n...n . Allora i x = a1 (b1 )φ(n1 ) + a2 (b2 )φ(n2 ) + · · · + ak (bk )φ(nk ) risolve il problema. 12 Antonino Salibra Università Ca’Foscari Venezia 2 Novembre 2016 0.7. Applicazione alla Crittografia Questa sezione è essenzialmente la Sezione 4.6 del libro Bellissima-Montagna, Matematica per l’Informatica, Carrocci Editore. Vogliamo inviare un messaggio privato ad un nostro interlocutore. Come prima cosa codifichiamo il messaggio con un numero M tramite una codifica elementare. Supponiamo di avere un alfabeto di n caratteri α1 , α2 , . . . , αn . Associamo a ciascun carattere un numero in progressione evitando i numeri che nella rappresentazione in base 10 contengono degli zeri. Per ogni i, sia ci il numero che codifica il carattere αi . Allora una stringa αi1 . . . αik si codifica con il numero (in base 10) ci1 0 . . . 0cik . La cifra 0 è un separatore. Un messaggio scritto con la codifica elementare può essere facilmente decodificato purché il nostro interlocutore conosca l’associazione carattere-numero. Questa associazione deve essere inviata al nostro interlocutore per mail e può quindi finire nelle mani di un intruso. Per evitare il problema, criptiamo il messaggio. Concordiamo con ciascuno dei nostri interlocutori una n-upla di numeri a1 , . . . , an a due a due primi fra loro. Tali numeri sono conosciuti soltanto allo scrivente ed agli interlocutori. Metodo 1 : Sia A = a1 · . . . · an . Possiamo supporre che la codifica elementare M del nostro messaggio sia < A, altrimenti spezziamo il messaggio in più parti. Inviamo al nostro interlocutore non il numero M , ma i numeri b1 ≡a1 M , b2 ≡a2 M ,. . . , bn ≡an M . Chi riceve i numeri b1 , . . . , bn può ricostruire M dal teorema Cinese del resto perché conosce a1 , . . . , an . Un eventuale intruso (che non conosce a1 , . . . , an ) non potrebbe. Il metodo ha il problema di comunicare i numeri segreti a1 , . . . , an ai nostri interlocutori. Metodo 2 : Questo metodo è stato inventato nel 1977 da Ron Rivest, Adi Shamir e Leon Adleman ed è indicato con la sigla RSA. Ogni utente dispone di una chiave pubblica nota a tutti e una chiave privata. L’utente U si procura quattro numeri distinti p, q, n, e molto grandi tali che p, q, e sono numeri primi, n = p · q ed inoltre e è relativamente primo con p − 1 e q − 1. I numeri p e q costituiscono la chiave privata nota solo all’utente U , mentre i numeri n ed e costituiscono la chiave pubblica, utilizzata per inviare messaggi ad U . In linea di principio, chi riuscisse a scomporre in fattori primi n potrebbe decodificare il messaggio, ma non esistono algoritmi efficienti per la scomposizione in fattori primi. Il signor X vuole inviare un messaggio in codice ad U senza che nessuno lo possa decodificare. Il signor X considera la codifica elementare M del messaggio. Si può supporre che M < n, altrimenti si spezza il messaggio in tante parti e si spediscono separatamente. Possiamo supporre che M sia primo con n. Se no, si può renderlo primo con n aggiungendo un simbolo speciale in fondo. Il signor X cerca nella pagina web di U la chiave pubblica di U , ossia n ed e. Il signor X calcola M e modulo n. Per calcolare questo numero si applicano le tecniche che abbiamo imparato nelle sezioni precedenti! Il numero N ≡n M e costituisce il messaggio criptato che il signor X invia per email al signor U . SOLO U può decodificare N per ottenere M , quindi non è importante se qualcuno intercetta N . Lezioni di Aritmetica Modulare 13 Come U decodifica N : U calcola la funzione di Eulero φ(n) = φ(pq) = (p − 1)(q − 1). Poi l’utente U risolve la congruenza modulare ex ≡φ(n) 1. Tale congruenza modulare ammette soluzione perché e è relativamente primo con φ(n) = (p − 1)(q − 1). Sia x0 una soluzione di tale equazione modulare. Dopo U calcola N x0 modulo n. Tale numero è la codifica elementare M del messaggio criptato. Infatti N x0 ≡n (M e )x0 ≡n M ex0 . Ora essendo ex0 ≡φ(n) 1, esiste un numero k tale che ex0 = 1 + kφ(n). Allora N x0 ≡n (M e )x0 ≡n M ex0 ≡n M 1+kφ(n) = M (M kφ(n) ) = M (M φ(n) )k ≡n M per il Teorema di Eulero. Un eventuale intruso per trovare M dovrebbe conoscere φ(n) = (p − 1)(q − 1), che è impossibile da calcolare se non si conosce la scomposizione in fattori primi di n. Difficilissima da calcolare.