Sistemi di congruenze lineari Per sistema sistema di congruenze lineari si intende il problema di determinare, se esistono, tutti gli interi che soddisfano contemporaneamente ad un certo numero di assegnate congruenze lineari: a 1 x b 1 (mod n 1 ) a 2 x b 2 (mod n 2 ). a h x b h (mod n h )
Sistemi di congruenze lineari Per sistema sistema di congruenze lineari si intende il problema di determinare, se esistono, tutti gli interi che soddisfano contemporaneamente ad un certo numero di assegnate congruenze lineari: a 1 x b 1 (mod n 1 ) a 2 x b 2 (mod n 2 ). a h x b h (mod n h ) Osservazione 1) Ovviamente se anche una sola delle congruenze non è separatamente risolubile, allora il sistema non è risolubile. Pertanto, affinché un sistema di congruenze ammetta soluzioni, è necessario che MCD(a i, n i ) divida b i, per ogni i = 1,..., h.
2) Si dimostra che, se una congruenza lineare ax b (mod n) è compatibile, allora, posto d = MCD(a, n), essa ha le stesse soluzioni di a d x b d (mod n d ). Da notare che MCD( a d, n d ) = 1.
2) Si dimostra che, se una congruenza lineare ax b (mod n) è compatibile, allora, posto d = MCD(a, n), essa ha le stesse soluzioni di a d x b d (mod n d ). Da notare che MCD( a d, n d ) = 1. Pertanto, sostituendo in questo modo ogni singola congruenza lineare di un dato sistema con la sua equivalente, si ottiene un sistema di congruenze lineari avente le stesse soluzioni di quello di partenza. Esso è del tipo a 1 x b 1 (mod n 1 ) a 2 x b 2 (mod n 2 ) con MCD(a i, n i ) = 1.. a h x b h (mod n h ),
Teorema (Teorema Cinese del Resto) Un sistema di congruenze lineari a 1 x b 1 (mod n 1 ) a 2 x b 2 (mod n 2 ). a h x b h (mod n h ) dove i, j = 1,..., h, i j MCD(n i, n j ) = 1 e MCD(a i, n i ) = 1, ha sempre soluzioni. Inoltre vi è un unica soluzione modulo R = n 1... n h data da [x 0 ] R con x 0 una soluzione particolare. Si dimostra che una soluzione è data da: x 0 = R 1 x 1 + R 2 x 2 + + R h x h dove per ogni i = 1,..., h R i = n 1 n 2... n h n i, mentre x i è una soluzione della congruenza lineare a i R i x b i (mod n i ).
Esempio Si vede facilmente che x 3(mod 5) x 4(mod 3) x 2(mod 7) x 5(mod 2) R 1 = 42, R 2 = 70, R 3 = 30, R 4 = 105. Si cercano le soluzioni delle congruenze lineari previste nel teorema: 42x 3(mod 5) ha soluzione x 1 = 6, (si trova eseguendo l algoritmo delle divisioni successive) 70x 4(mod 3) ha soluzione x 2 = 1 (70 4 = 66 che è multiplo di 3)
30x 2(mod 7) ha soluzione x 3 = 1 (30 2 = 28 che è multiplo di 7) 105x 5(mod 2) ha soluzione x 4 = 1 (105 5 = 100 che è multiplo di 2). Allora una soluzione del sistema è x = 42 ( 6) + 70 + 30 + 105 = 47, mentre la più piccola soluzione positiva è 163 e tutte le soluzioni del sistema sono 163 + 210h, h Z.
Il sistema crittografico RSA Prima di tutto le lettere vengono rappresentate da numeri in codice. Per esempio Nell American Standard Code for Information Interchange le lettere vengono rappresentate dai numeri da 065 a 090. Ogni utente B deve scegliere una coppia di numeri (n B, e B ) in modo che n B sia il prodotto di due numeri primi distinti molto grandi, n B = p B q B, e MCD(e B, p B 1) = 1, MCD(e B, q B 1) = 1. La coppia (n B, e B ) è pubblica, ma non è pubblica la scomposizione di n B. La segretezza di questo sistema sta proprio in questo: B deve costruire n B scegliendo due numeri primi p B e q B molto grandi e moltiplicandoli. Come si fa a trovare un numero primo? si prende un numero dispari m e si sottopone a certi tests di primalità: se un test viene superato va bene, altrimenti si prova con m + 2.
La coppia (n B, e B ) dà a B la chiave segreta per decodificare i messaggi: si tratta del numero d B, soluzione della congruenza lineare e B x 1(mod ϕ(n B )) (1) e tale che 0 d B < ϕ(n B ). Sicuramente (1) ammette soluzione visto che ϕ(n B ) = (p B 1)(q B 1) e quindi MCD(e B, ϕ(n B )) = MCD(e B, (p B 1)(q B 1)) = 1. Inoltre questa soluzione è unica (mod ϕ(n B )). Quindi B è l unico che può conoscere la chiave d B tale che: e B d B 1(mod ϕ(n B )), 0 d B < ϕ(n B ) perchè soltanto B conosce ϕ(n B ).
Si supponga che l utente A debba inviare il messaggio M all utente B. Allora consulta gli elenchi ufficiali e trova la coppia (n B, e B ). Se il messaggio è più lungo di n B, A lo può spezzare in modo standard in più di uno. Quindi si può supporre che M < n B, e MCD(M, n B ) = 1. Il messaggio codificato che A invia a B è M tale che M M e B (mod n B ). Usando il Teorema di Eulero si dimostra che: M M d B (mod n B ) e quindi B, risolvendo questa congruenza (mod n B ) avrà decodificato il messaggio.
Esempio L utente A vuole inviare il messaggio M = 4 all utente B, la cui coppia identificativa è (n B = 221, e B = 7). Allora soltanto B sa che n B = 13 17 e quindi ϕ(n B ) = ϕ(13)ϕ(17) = 12 16 = 192. Pertanto la congruenza lineare 7x 1(mod 192) dà a B (e soltanto a lui) la chiave d B = 55 per la decodifica dei messaggi. L utente A invia a B il messaggio M = 30 perchè 30 4 7 (mod 221). Allora B, facendo un pò di calcoli, ottiene che 30 55 4(mod 221).