Download IMD-IS. Aritmética modular
Document related concepts
Transcript
IMD-IS. Aritmética modular Emmanuel Briand ETSII. Universidad de Sevilla. Emmanuel Briand IMD-IS. Aritmética modular Clases de congruencia modulo n Pares e impares: clases modulo 2 Pares = Impares {. . . , −2, 0, 2, 4, 6, . . .} (resto 0) = {. . . , −1, 1, 3, 5, 7, . . .} (resto 1). Emmanuel Briand IMD-IS. Aritmética modular Clases de congruencia modulo n Pares e impares: clases modulo 2 Pares = Impares {. . . , −2, 0, 2, 4, 6, . . .} (resto 0) = {. . . , −1, 1, 3, 5, 7, . . .} (resto 1). Clases modulo 3 {. . . , −3, 0, 3, 6, 9, . . .} (resto 0) {. . . , −2, 1, 4, 7, 10, . . .} (resto 1) {. . . , −1, 2, 5, 8, 11, . . .} (resto 2) Más generalmente, tenemos n clases modulo n. Emmanuel Briand IMD-IS. Aritmética modular Suma y producto modulo 2 + PAR IMPAR × PAR IMPAR PAR PAR IMPAR PAR PAR PAR IMPAR IMPAR PAR IMPAR PAR IMPAR + [0] [1] [0] [0] [1] [1] [1] [0] Emmanuel Briand × [0] [1] [0] [0] [0] [1] [0] [1] IMD-IS. Aritmética modular Suma y producto modulo 6 + 0 1 2 3 4 5 × 0 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 0 0 0 0 1 1 2 3 4 5 0 1 0 1 2 3 4 5 2 2 3 4 5 0 1 2 0 2 4 0 2 4 3 3 4 5 0 1 2 3 0 3 0 3 0 3 4 4 5 0 1 2 3 4 0 4 2 0 4 2 5 5 0 1 2 3 4 5 0 5 4 3 2 1 Emmanuel Briand IMD-IS. Aritmética modular Suma y producto modulo 7 + 0 1 2 3 4 5 6 × 0 1 2 3 4 5 6 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 1 2 3 4 5 6 0 1 0 1 2 3 4 5 6 2 2 3 4 5 6 0 1 2 0 2 4 6 1 3 5 3 3 4 5 6 0 1 2 3 0 3 6 2 5 1 4 4 4 5 6 0 1 2 3 4 0 4 1 5 2 6 3 5 5 6 0 1 2 3 4 5 0 5 3 1 6 4 2 6 6 0 1 2 3 4 5 6 0 6 5 4 3 2 1 Emmanuel Briand IMD-IS. Aritmética modular Los tres tipos de elementos en Zn Los elementos de Zn se reparten entre tres clases: Unidades Divisores de cero y ponemos el [0] aparte. Emmanuel Briand IMD-IS. Aritmética modular Notaciones Las tres expresiones siguientes son sinónimas: [x ]n = [y ]n x ≡y Existe un entero k tal que x mod n = y + kn Ejemplo importante [x ]n es una unidad si y solo si existe a, ax ≡1 mod n. Emmanuel Briand IMD-IS. Aritmética modular Notaciones Las tres expresiones siguientes son sinónimas: [x ]n = [y ]n x ≡y Existe un entero k tal que x mod n = y + kn Ejemplo importante [x ]n es una unidad si y solo si existe a, existe k tal que ax + kn = 1 Emmanuel Briand IMD-IS. Aritmética modular Notaciones Las tres expresiones siguientes son sinónimas: [x ]n = [y ]n x ≡y Existe un entero k tal que x mod n = y + kn Ejemplo importante [x ]n es una unidad si y solo si a y n son coprimos. Emmanuel Briand IMD-IS. Aritmética modular Cálculo del inverso Modulo 1745, ¾ cuáles son los inversos de las clases de: 1485 ? 1744 ? 2 ? 333 ? Calcular un inverso se puede hacer por medio del algoritmo de Euclides extendido. Emmanuel Briand IMD-IS. Aritmética modular Sistemas de ecuaciones modulares ≡1 x ≡ 2 2x ≡ 1 x ≡ 4 3x mod 2 mod 3 mod 5 mod 7 Emmanuel Briand x x x x ≡1 ≡2 ≡3 ≡4 IMD-IS. Aritmética modular mod 2 mod 3 mod 5 mod 7 ax ≡ b mod n ax ≡b mod n Hay tres casos: Si [a] es una unidad (a y n coprimos): sea [c ] su inversa. La ecuación es equivalente a: x Sino, sea d ≡ bc mod n = Mcd(a, n). Si d no divide b, no hay solución. Si d divide b, la ecuación se simplica en: a d x ≡ Emmanuel Briand b d mod n d IMD-IS. Aritmética modular Resolución: dos ecuaciones x x ≡ b1 ≡ b2 Emmanuel Briand mod q1 mod q2 IMD-IS. Aritmética modular Resolución: dos ecuaciones x x ≡ b1 ≡ b2 mod q1 mod q2 La primera ecuación es equivalente a: Existe k tal que x = b1 + q1 k Ahora resolvemos en k . Puede no haber soluciones, pero si hay soluciones, son de la forma: k ≡c mod q2 Es equivalente a: Existe j tal que k = c + q2 j Para x : x = b1 + q1 (c + q2 j ) = . . . + jq1 q2 Es decir x ≡ ... Emmanuel Briand mod q1 q2 IMD-IS. Aritmética modular La forma del conjunto de las soluciones x x ≡ b1 ≡ b2 mod q1 mod q2 . . . x ≡ br x x x ≡1 ≡0 ≡2 mod 2 mod 3 mod 5 mod qr Teorema chino de los restos, caso fácil Si para cada par (i , j ) con i 6= j , los moduli qi y qj son coprimos, entonces el conjunto de los soluciones es una clase modulo el producto de los moduli q1 q2 · · · qr .. Emmanuel Briand IMD-IS. Aritmética modular La forma del conjunto de las soluciones x x ≡ b1 ≡ b2 mod q1 mod q2 . . . x ≡ br x x x ≡1 ≡0 ≡2 mod qr Teorema chino de los restos, caso general En general, el conjunto de las soluciones es: o bien vacío o bien una clase modulo mcm(q1 , q2 , . . . , qr ). Emmanuel Briand IMD-IS. Aritmética modular mod 2 mod 3 mod 5 Forma más completa del teorema chino de los restos Consecuencia del teorema chino de los restos: Ej: 30 = 2 × 3 × 5, los factores son coprimos. [x ]30 7−→ ([x ]2 , [x ]3 , [x ]5 ) Es una biyección de Z30 en Z2 × Z3 × Z5 . 07→(0, 0, 0) 107→(0, 1, 0) 207→(0, 2, 0) 17→(1, 1, 1) 117→(1, 2, 1) 217→(1, 0, 1) 27→(0, 2, 2) 127→(0, 0, 2) 227→(0, 1, 2) 37→(1, 0, 3) 137→(1, 1, 3) 237→(1, 2, 3) 47→(0, 1, 4) 147→(0, 2, 4) 247→(0, 0, 4) 57→(1, 2, 0) 157→(1, 0, 0) 257→(1, 1, 0) 67→(0, 0, 1) 167→(0, 1, 1) 267→(0, 2, 1) 77→(1, 1, 2) 177→(1, 2, 2) 277→(1, 0, 2) 87→(0, 2, 3) 187→(0, 0, 3) 287→(0, 1, 3) 97→(1, 0, 4) 197→(1, 1, 4) 297→(1, 2, 4) Emmanuel Briand IMD-IS. Aritmética modular El número de unidades en Zn Recordamos: [a] es una unidad de La función φ Zn si y solo si a es coprimo con n. de Euler La aplicación que asocia a n el número de unidades modulo n se llama función φ de Euler () y se nota φ. n 1 2 3 4 5 6 7 8 9 10 11 12 φ(n) 1 1 2 2 4 2 6 4 6 4 10 4 Emmanuel Briand IMD-IS. Aritmética modular Formulas para la función φ de Euler Unos casos particulares simples: n =p (primo) n = pr n (potencia de primo) = pq (producto de dos primos distintos φ(n) = p − 1 φ(n) = p r −1 (p − 1) φ(n) = (p − 1)(q − 1) φ(n) φ(n) φ(n) n = (1 − p1 ) n = (1 − p1 ) Emmanuel Briand n = (1 − p1 )(1 − q1 ) IMD-IS. Aritmética modular Formula general para la función φ de Euler Formula general para la función de Euler Si n = p1r1 p2r2 · · · pkrk (descomposición en primos, es decir los pi son primos distintos y los ri son > 0), entonces φ(n)/n = (1 − 1/p1 )(1 − 1/p2 ) · · · (1 − 1/pr ) Emmanuel Briand IMD-IS. Aritmética modular Las potencias de una unidad 2 Calculamos a, a , a 3 . . . modulo n. Emmanuel Briand IMD-IS. Aritmética modular Las potencias de una unidad 2 Calculamos a, a , a 3 . . . modulo n. Teorema de Euler Sea φ(n) el número de unidades modulo n. Entonces: a φ(n) ≡1 mod n Emmanuel Briand (para a coprimo con n) IMD-IS. Aritmética modular Las potencias de una unidad 2 Calculamos a, a , a 3 . . . modulo n. Teorema de Euler Sea φ(n) el número de unidades modulo n. Entonces: a φ(n) ≡1 (para a coprimo con n) mod n Pequeño teorema de Fermat Si p es primo entonces: a p −1 ≡1 mod p (para a no múltiplo de p ) Emmanuel Briand IMD-IS. Aritmética modular Simplicación de cálculos de grandes potencias (con un pequeño modulo) Calcular 2 1000 modulo 53. Emmanuel Briand IMD-IS. Aritmética modular Simplicación de cálculos de grandes potencias (con un pequeño modulo) Calcular 2 1000 modulo 53. El número 53 es primo (y 2 no es múltiplo de 53). Por el pequeño teorema de Fermat, 2 52 ≡1 mod 53. Claro , tenemos también 2 Calculamos 1000 104 ≡ 2156 ≡ · · · ≡ 1 mod 53 mod 52, tenemos: 1000 = 19 × 52 + 12 Por lo tanto: 2 1000 = (252 )19 × 212 ≡ 119 × 212 ≡ 212 mod 53 Este cálculo puede hacerse a mano. Emmanuel Briand IMD-IS. Aritmética modular Test de primalidad: test de Fermat Sea a con 0 < a < p. Si p NO pasa el test de Fermat en base a (es decir: si a p 6≡ 1 mod p) entonces queda demostrado que p no es primo. Si p pasa el test de Fermat en base a, entonces p puede ser primo o no. Pero probablemente lo es. Emmanuel Briand IMD-IS. Aritmética modular Test de primalidad: test de Fermat Sea a con 0 < a < p. Si p NO pasa el test de Fermat en base a (es decir: si a p 6≡ 1 mod p) entonces queda demostrado que p no es primo. Si p pasa el test de Fermat en base a, entonces p puede ser primo o no. Pero probablemente lo es. Para los enteros < 100 000: Proporción de primos: 9, 6 %. Porporción de no primos que pasan el test de Fermat en base 2: 0, 078 %. La probabilidad de no ser primo pasando el test es: 0, 81 %. Emmanuel Briand IMD-IS. Aritmética modular Exponenciación rápida modular Ejemplo de cálculo de a En Zn , donde n e= e mod n tiene 520 cifras decimales, queremos calcular 2 e con 21296030073134284288338650858589188423664700096843949738 30389790731064167107488788931123422658660437316652890057 87483780386120271622964903883759506751921231714044369373 07484337419905426252983925649385894548909400852148161881 75481883182508834409971051959433672221049428272799288060 33089390061346156788765830755067658931895709032029937028 58343604716055508161586473290122638688568546900544834155 2620802273008678257385909313 Exponenciación ingenua: e −1 multiplicaciones ½ Tarda una eternidad ! Exponenciación rápida: 1788 multiplicaciones. ½ Inmediato ! Emmanuel Briand IMD-IS. Aritmética modular Pequeño ejemplo con RSA Trabajamos modulo n = 91 y mandamos como mensajes m números entre 1 y 6 (incluidos). Ciframos con m 7→ me (n, e ) = (91, 5). Desciframos con c mod n, con e 7→ c d = 5. mod n, con d La clave pública es = 29. La clave privada es (n, d ) = (91, 29). Diccionario: Emmanuel Briand IMD-IS. Aritmética modular Pequeño ejemplo con RSA Trabajamos modulo n = 91 y mandamos como mensajes m números entre 1 y 6 (incluidos). Ciframos con m 7→ me (n, e ) = (91, 5). Desciframos con c mod n, con e 7→ c d = 5. mod n, con d La clave pública es = 29. La clave privada es (n, d ) = (91, 29). Diccionario: Mensaje en claro Mensaje cifrado 1 1 2 32 3 61 4 23 5 31 6 41 Emmanuel Briand IMD-IS. Aritmética modular Transmisión de un mensaje con RSA Transmitimos números=mensajes codicados en un canal inseguro. m = número entre 1 y M , mensaje en claro. Codicamos el mensaje antes de transmitirlo (lo representamos como un número, por medio de un proceso público). Ciframos: c = me mod n, c es el mensaje cifrado Trasmitimos c . A la recepción, se descifra c por medio de la formula: m mod n y se descodica. Emmanuel Briand IMD-IS. Aritmética modular = cd Transmisión de un mensaje con RSA Transmitimos números=mensajes codicados en un canal inseguro. m = número entre 1 y M , mensaje en claro. Codicamos el mensaje antes de transmitirlo (lo representamos como un número, por medio de un proceso público). Ciframos: c = me mod n, c es el mensaje cifrado Trasmitimos c . A la recepción, se descifra c por medio de la formula: m = cd mod n y se descodica. Hace falta que m = (me )d mod n para todos los mensajes en claro posibles. Emmanuel Briand IMD-IS. Aritmética modular Transmisión de un mensaje con RSA Transmitimos números=mensajes codicados en un canal inseguro. m = número entre 1 y M , mensaje en claro. Codicamos el mensaje antes de transmitirlo (lo representamos como un número, por medio de un proceso público). Ciframos: c = me mod n, c es el mensaje cifrado Trasmitimos c . A la recepción, se descifra c por medio de la formula: m = cd mod n y se descodica. Hace falta que m = (me )d mod n para todos los mensajes en claro posibles. Esto ocurre cuando: Todos los mensajes en claro son coprimos con n. Elegir M < ed ≡1 menor factor primo de n. mod φ(n) (por el Teorema de Euler). Emmanuel Briand IMD-IS. Aritmética modular ¾ Como fueron elegidos les claves (n, e ) y (n, d ) ? Trabajamos modulo n = 91 y mandamos como mensajes m números entre 0 y 6 (incluidos). Ciframos con m 7→ me (n, e ) = (91, 5). Desciframos con c mod n, con e 7→ c d = 5. mod n, con d La clave pública es = 29. La clave privada es (n, d ) = (91, 29). Emmanuel Briand IMD-IS. Aritmética modular ¾ Como fueron elegidos les claves (n, e ) y (n, d ) ? Trabajamos modulo n = 91 y mandamos como mensajes m números entre 0 y 6 (incluidos). Ciframos con m 7→ me (n, e ) = (91, 5). Desciframos con c mod n, con e 7→ c d = 5. mod n, con d La clave pública es = 29. La clave privada es (n, d ) = (91, 29). = 7 y q = 13. = pq. Tenemos n = 91, φ(n) = 72. Elegimos M = 6 (importa que M < p). Elegimos corresponde es d = 29. Hemos elegido dos primos p Ponemos: n Emmanuel Briand e = 5. IMD-IS. Aritmética modular El d que le Ejemplo de clave RSA 1024 bits p = 1088674954135031448070360672486207340789233108502873 9956397237105547037176615145623548568640250593833590 973843267235567109644848147330427379985520112979269, q = 1102966700842980716537314503991462186490108279882492 0292638334301839453387017970315771818785871989403805 508820838149133951943902116850319780199515561950161, n = = p ×q 1200772222452698983587363892507754632069773183051649 3143139194894316519075033872598235904950479409900825 1045283703751376633771055728609203858170596884456881 2459785890404876326478825394048109189324147035669670 8392439679232254365104192153883529037509434620051856 0043825917460473370490508587653084011973404212309. Emmanuel Briand IMD-IS. Aritmética modular φ(n) = (p − 1)(q − 1) = 1200772222452698983587363892507754632069773183051649 3143139194894316519075033872598235904950479409900825 1045283703751376633771055728609203858170596884456859 3295620392603659865711307746281156461390008197133068 3488882538493605308740880559951490294897176296312207 7379720532759411781740244406905923826937729282880, e = 17, d = = inverso de e modulo φ(n), 2825346405771056431970267982371187369575936901297998 3866209870339568280176550288466437423412892729178412 0106549891179709726520131126139303195695522081074963 1283812688479199684026606461838015203270607522666043 1738547149396718373507954258709388929169826579558135 854051890061038066291822213389629135750053948913. Emmanuel Briand IMD-IS. Aritmética modular Otro ejemplo con RSA Encodamos MARTES, cambiando cada letra por su posición en el alfabeto inglés (26 letras, A=1, B=2,. . . ). Esto nos da 6 enteros, que son considerados como 6 mensajes diferentes: 13, 1, 18, 20, 5, 19 Con la clave pública (n, e ) = (2491, 17), cifrar estos mensajes. Se intercepta el mensaje cifrado [1838,764,1072,2081,1072,2470], cifrado con las misma clave publica, ¿ Como lo descifrarías ? Emmanuel Briand IMD-IS. Aritmética modular