Teorema cinese del resto
1. Oggetto Consideriamo il generico sistema di n congruenze lineari a1 x ≡ b1 (mod m1 ) a2 x ≡ b2 (mod m2 ) .. . an x ≡ bn (mod mn ) in una incognita intera x, dove i coefficienti a1 , a2 , . . . , an e i termini noti b1 , b2 , . . . , bn sono interi, e i moduli m1 , m2 , . . . , mn sono interi positivi. Per assicurare l’esistenza di soluzioni a ciscuna congruenza lineare indipendentemente dal termine noto, e per evitare inconsistenze fra le vare equazioni, imponiamo le condizioni (ai , mi ) = 1, (mi , mj ) = 1,
i = 1, 2, . . . , n, i, j = 1, 2, . . . , n.
Sotto queste condizioni, il minimo comune multiplo M dei moduli coincide col loro prodotto: M = m1 m2 · · · mp . Osserviamo che, se x = s e’ una soluzione del sistema, allora anche ogni intero del tipo . . . , s − 2M, s − M, s, s + M, s + 2M, . . . e’ ancora una soluzione del sistema. Ora, in questa successione c’e’ esattamente un intero s compreso fra 0 e M −1 : questo intero viene detto soluzione fondamentale del sistema di congruenze. 2. Esercizio Proveremo che, sotto le condizioni sopra imposte, il sistema ha una ed una sola soluzione fondamentale. Prima di stabilire e dimostrare questo risultato, proviamo a risolvere un tale sistema, ad esempio x ≡
1 (mod 10)
x ≡ x ≡
2 (mod 21) 3 (mod 11).
• Risolviamo la prima congruenza, ottenendo gli interi x = 10y + 1, dove y varia in Z; 1
• sostiuiamo nelle altre due congruenze, ottenendo 10y 10y
≡ ≡
1 (mod 21) 2 (mod 11),
Si noti che in ciascuna di queste due congruenze il coefficiente della y e’ coprimo col modulo della congruenza. • Risolviamo la prima congruenza, ottenendo gli interi y = 21z + 19, dove z varia in Z; • sostiuiamo nell’altra congruenza, ottenendo z
≡
10 (mod 11)
• Risolviamo questa congruenza, ottenendo z = 10. • Sostituendo a ritroso, ritroviamo infine x = = = =
10y + 1 10(21z + 19) + 1 10(21(10) + 19) + 1 2100 + 190 + 1 = 2291.
Dunque il sistema dato ha esattamente una soluzione fondamentale: x = 2291. 3. Teorema Il sistema a1 x ≡ a2 x ≡ .. . an x ≡
b1 (mod m1 ) b2 (mod m2 )
bn (mod mn )
di n congruenze lineari nell’incognita intera x, sotto le condizioni (a) (ai , mi ) = 1 per ogni i; (b) i moduli m1 , m2 , ..., mn sono a due a due coprimi
2
ammette esattamente una soluzione modulo M = m1 m2 ...mn . In particolare, il sistema x ≡ x ≡ .. . x ≡
b1 (mod m1 ) b2 (mod m2 )
bn (mod mn )
di n congruenze lineari nell’incognita intera x, sotto la condizione (a) i moduli m1 , m2 , ..., mn sono a due a due coprimi ammette esattamente una soluzione modulo M = m1 m2 ...mn . Questo e’ l’enunciato del classico Teorema cinese del resto. Dimostrazione Dimostriamo l’enunciato per induzione sul numero n di equazioni. Per n = 1 l’enunciato e’ vero per quanto visto sulle congruenze lineari. Proviamo che dalla verita’ dell’enunciato per n−1(> 0) segue la verita’ dell’enunciato per n. • Risolviamo la prima congruenza, ottenendo gli interi x = m1 y + s, dove y varia in Z e 0 ≤ s < m1 . • Sostiuiamo nelle altre n − 1 congruenze, ottenendo il sistema a2 m1 y
an m1 y
≡ .. . ≡
b2 − a2 s (mod m2 )
bn − an s (mod mn )
Si noti che in ciascuna di queste congruenze il coefficiente della y e’ coprimo col modulo della congruenza: (ai m1 , mi ) = 1. • Ora, per l’ipotesi di induzione, questo sistema ha esattamente una soluzione fondamentale y = r, con 0 ≤ r < m2 · · · mn . • Dunque il sistema di partenza ha l’unica soluzione x = m1 r + s; si noti che 0 ≤ m1 r + s < m1 (m2 · · · ms − 1) + m1 = m1 m2 · · · ms . 3
Algoritmo RSA - Descrizione schematica
In maniera informale, possiamo dire che il nostro discorso riguarda un insieme di nodi A, B, C, . . . , ciascuno contraddistinto da un intero; ciascun nodo puo’ trasmettere un messaggio, cioe’ un intero, a un altro nodo, e questo messaggio e’ potenzialmente visibile anche a tutti gli altri nodi; ciascun nodo vuole poter trasmettere un messaggio a ciascun altro nodo come se questo messaggio fosse visibile solo a questi due nodi e non agli altri. Questo obiettivo e’ reso possibile dall’algoritmo RSA come segue. 1. Ogni nodo costruisce il suo indirizzo come prodotto di due numeri primi ”grandi”; rende pubblico il suo indirizzo, e ne mantiene segreta la fattorizzazione. 2. Tutti i nodi si accordano su un certo intero e, da usare come segue. 3. Un nodo A, per trasmettere un messaggio m ad un nodo B all’indirizzo n, con 0 ≤ m < n, opera cosi’: calcola la potenza me , ne prende il rappresentante fondamentale m modulo n, m ≡ me (mod n),
0 ≤ m < n,
e trasmette m al nodo B. Tutti gli altri nodi vedono m. 4. Il nodo B, nel momento in cui ha costruito il suo indirizzo n = pq come prodotto di due primi p, q, ha calcolato la funzione di Eulero ϕ(n) = n − p − q + 1, ha della costante e ha determinato l’inverso moltiplicativo d modulo ϕ(n) : ed ≡ 1 (mod ϕ(n)). Si sara’ avuta l’accortezza di prendere i due primi p, q in modo che la costante e sia davvero invertibile modulo ϕ(n). 5. Il nodo B riceve il messaggio m, calcola la potenza md , ne prende il rappresentante fondamentale modulo n, e ritrova cosi’ il messaggio m : m ≡ md (mod n),
0 ≤ m < n.
Ci si puo’ rendere conto di questa uguaglianza cosi’: ¡ ¢h d (mod n) md ≡ (me ) ≡ med ≡ m1+hϕ(n) ≡ m mϕ(n) ≡ m1 ≡ m. Questa uguaglianza non vale se m e’ uno dei due fattori primi di n, ... ma questo e’ un evento altamente improbabile.
4