Una Introducción Matemática a la Criptografía (para mis alumnos de Álgebra I)



Documentos relacionados
Una Introducción Matemática a la Criptografía (para mis alumnos de Álgebra I)

CRIPTOGRAFÍA SIMÉTRICA Y ASIMÉTRICA

Métodos Encriptación. Tópicos en Sistemas de Computación Módulo de Seguridad

TALLER DE DETECTIVES: DESCIFRANDO MENSAJES SECRETOS. 1. Introducción

Fundamentos Matemáticos del Cifrado Asimétrico. Banco de Guatemala

Rompiendo llaves RSA expĺıcitamente con OpenSSL

SEGURIDAD EN SISTEMAS DE INFORMACION. TEMA 2 - parte 2. Criptografia asimétrica

CRIPTOGRAFIA DE CLAVE SECRETA. El emisor y el receptor conocen y usan la misma clave secreta para cifrar y descifrar mensajes.

Introducción. Algoritmos

Julio César Mendoza T. Ingeniería de Sistemas Quito

CRIPTOGRAFIA. Qué es, usos y beneficios de su utilización. Universidad Nacional del Comahue

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA JOSE LEONARDO CHIRINO PUNTO FIJO EDO-FALCON CATEDRA: ARQUITECTURA DEL COMPUTADOR PROFESOR: ING.

Criptografía. Por. Daniel Vazart P.

Práctica 5. Curso

Euclides extendido y Test de primalidad probabiĺıstico

Técnicas de cifrado. Clave pública y clave privada:

Ecuaciones de primer grado con dos incógnitas

Encriptación en Redes

2. Aritmética modular Ejercicios resueltos

Semana 14: Encriptación. Cifrado asimétrico

Titulación: Ingeniero en Informática. Curso 5º - Cuatrimestral ( ) Javier Jarauta Sánchez Rafael Palacios Hielscher José María Sierra

Capítulo 7 Teoría de los Números

Como sabemos, en un Sistema de Comunicación de Datos, es de vital importancia

Divisibilidad y números primos

Tema 11 Introducción a la Criptografía

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

ETS Caminos Santander. Curso Ejercicios de introducción a la programación.

Lección 12 Seguridad y criptografía. Universidad de Oviedo / Dpto. de Informática

Algoritmos de cifrado Definir el problema con este tipo de cifrado

Resumen de Requisitos Técnicos para incorporación de Organismos a la Plataforma Integrada de Servicios Electrónicos del Estado

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

TEMA 5. ELECTRÓNICA DIGITAL

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Sistemas de numeración

Seguridad en la transmisión de Datos

VÍDEO intypedia003es LECCIÓN 3: SISTEMAS DE CIFRA CON CLAVE PÚBLICA. AUTOR: Gonzalo Álvarez Marañón

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Módulo 9 Sistema matemático y operaciones binarias

Capítulo 8 Teoría de la Complejidad Algorítmica

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

8 millares + 2 centenas + 4 decenas + 5 unidades + 9 décimos + 7 céntimos

3. ARITMÉTICA MODULAR Congruencias de números enteros. Águeda Mata y Miguel Reyes, Dpto. de Matemática Aplicada, FI-UPM.

TEMA 2: Representación de la Información en las computadoras

SISTEMAS DE NUMERACIÓN. Sistema decimal

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

Funciones polinomiales de grados 3 y 4

POLINOMIOS Y FRACCIONES ALGEBRAICAS

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL

Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE)

ESTRUCTURAS ALGEBRAICAS 1

Probabilidades y Estadística (Computación) Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Ana M. Bianco y Elena J.

342 SOBRE FORMAS TERNARIAS DE SEGUNDO GRADO.

Informática Bioingeniería

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

La Lección de Hoy es Distancia entre dos puntos. El cuál es la expectativa para el aprendizaje del estudiante CGT.5.G.1

Base de datos en Excel

(CAST5, BLOWFISH,AES, AES192, AES256, TWOFISH)

INTERPOLACIÓN POLINÓMICA Y LA DIVISIÓN DE SECRETOS

Matemáticas Básicas para Computación

Materia: Informática. Nota de Clases Sistemas de Numeración

Dra. Elsa Estévez Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Operaciones Morfológicas en Imágenes Binarias

UNIDAD 1. LOS NÚMEROS ENTEROS.

Transformación de gráfica de funciones

Unidad 1 Sistemas de numeración Binario, Decimal, Hexadecimal

Tema 2. La Información y su representación

Profr. Efraín Soto Apolinar. Función Inversa

e-commerce Objetivo e-commerce

Datos del autor. Nombres y apellido: Germán Andrés Paz. Lugar de nacimiento: Rosario (Código Postal 2000), Santa Fe, Argentina

Preliminares. Tipos de variables y Expresiones

PROGRAMACIÓN LINEAL Introducción Inecuaciones lineales con 2 variables

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS

Acerca de Symantec Encryption Desktop

Naturaleza binaria. Conversión decimal a binario

Colegio Salesiano Don Bosco Academia Reparación Y Soporte Técnico V Bachillerato Autor: Luis Orozco. Subneteo

Correo electrónico ( ) Las direcciones de correo electrónico ( )

FIRMA DIGITAL. Claudia Dacak Dirección de Firma Digital Dirección General de Firma Digital y Comercio Electrónico

Unidad Didáctica. Códigos Binarios

by Tim Tran:

NÚMEROS NATURALES Y NÚMEROS ENTEROS

Complemento Microsoft Mathematics

Matemática de redes Representación binaria de datos Bits y bytes

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Qué es el Software Libre? Algunos principios básicos

Sistemas de Numeración

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

Redes de Ordenadores 3º Doble Tit. Informática y Telemática. Trabajo

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

Introducción al Cálculo Simbólico a través de Maple

Tema 2. Espacios Vectoriales Introducción

Redes de comunicaciones actuales permiten la conectividad de un gran número de usuarios. Explosión de servicios que necesitan la transmisión de datos

Informática. Temas 27/03/2014. Carrera: Bioingeniería Profesora: Lic. S. Vanesa Torres JTP: Ing. Thelma Zanon

RELACIONES DE RECURRENCIA

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Números Reales. MathCon c

MENSAREX: SISTEMA DE MENSAJERÍA DEL MINREX Gretel García Gómez Ministerio de Relaciones Exteriores Cuba.

Transcripción:

Una Introducción Matemática a la Criptografía (para mis alumnos de Álgebra I) Pablo De Nápoli 31 de mayo de 2014 Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 1 / 44

Qué es la Criptografía? κρυπτ oς =oculto γραφω =escribir La criptografía es el arte de escribir mensajes ocultos. Históricamente la criptografía tiene su origen en aplicaciones militares, pero hoy en día se utiliza habitualmente en aplicaciones de computación. Aclaración: La RAE no incluye en su diccionario encriptar/desencriptar, pero estos términos son de uso común en informática (del inglés crypt/decrypt). Se usan como sinónimos de cifrar/descrifrar. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 2 / 44

Algoritmos Criptográficos Un algoritmo criptográfico es un método matemático para convertir un mensaje en texto plano (que cualquiera puede leer) en un texto cifrado (que sólo es legible para el que sabe como descifrarlo). Generalmente los algoritmos de encriptación son públicamente conocidos, pero para poder descifrar el mensaje es necesario conocer además una clave. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 3 / 44

Aplicaciones de la Criptografía Los algoritmos de encriptación se usan todos los días detrás de escena en aplicaciones y protocolos tales como Secure Shell (SSH): acceso remoto a otras computadoras. HTTPS (Sitios web seguros, por ejemplo homebanking) GPG: The GNU Privacy Guard: usado por ej. para correo electrónico encriptado. IPSec: redes privadas virtuales. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 4 / 44

Dos Tipos de Algoritmos Algoritmos convencionales o simétricos: quien envía un mensaje encriptado utiliza el mismo procedimiento y la misma clave que su receptor para desencriptarlo. Algoritmos de clave pública o asimétricos: se utilizan claves diferentes para encriptar y para desencriptar. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 5 / 44

Cómo representan las computadoras la información? Desde el punto de vista matemático, siempre puede suponerse que el mensaje que se quiere transmitir es un número. Internamente las computadoras representan todos los caracteres (letras, números o simbolos especiales) como números binarios de acuerdo al código ASCII: Caracter Número Binario Eq. Decimal espacio 00100000 32! 00100001 33 A 01000001 65 a 01100001 97 Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 6 / 44

Funciones de una sóla vía Los algoritmos de clave pública se basan el hecho de en que existen operaciones matemáticas que se pueden realizar rápidamente en una computadora, para las que la operación inversa (aunque teóricamente es posible) demanda un tiempo de procesamiento tal que la hacen prácticamente imposible. Ej: dados dos números primos grandes p y q, es muy fácil calcular N = pq. Pero conocido N, es prácticamente imposible calcular p y q si ambos son suficientemente grandes. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 7 / 44

Otras aplicaciones de los algoritmos de llave pública Los algoritmos de clave pública resuelven el problema de la distribución de claves. Los algoritmos de clave pública también pueden usarse para autentificación (firma digital). Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 8 / 44

Dos algoritmos criptográficos En esta clase veremos como funciona el algorítmo de clave pública más utilizado, conocido como el algoritmo RSA (por las siglas de sus creadores). El algoritmo RSA fue inventado por Ron Rivest, Adi Shamir y Len Adleman trabajando en el M.I.T. en 1977. También veremos como funciona el algoritmo de intercambio de claves de Diffie-Hellman (1976) El algoritmo de Diffie-Hellman y el algoritmo RSA emplean varias herramientas de la teoría de números. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31alumnos de mayode deálgebra 2014 I) 9 / 44

Gauss dixit... La matemática es la reina de las ciencias, y la teoría de los números es la reina de la matemática. (Carl F. Gauss, 1777 1855) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 10 / 44

La Exponencial Modular Ambos algoritmos utilizan como función de una sóla vía, la función exponencial modular: x a x (mód n) que dado x devuelve el resto de a x módulo n. Es posible calcular a x en forma muy eficiente utilizando el método de cuadrados repetidos: por ejemplo calculemos 1001 19 (mód 301) Para ello, escribimos el exponente en binario: 19 = 2 4 + 2 + 1 = 10011 2 Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 11 / 44

1001 2 273 (mód 301) 1001 4 273 2 182 (mód 301) 1001 8 182 2 14 (mód 301) 1001 16 14 2 196 (mód 301) 1001 18 1001 16 1001 2 196 273 231 (mód 301) 1001 19 1001 18 1001 63 (mód 301) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 12 / 44

Raices Primitivas Si p es un número primo, decimos que g es una raíz primitiva módulo p, si g n módulo p recorre los valores 1, 2,..., p 1 cuando n recorre esos mismos valores. Por ejemplo: si elejimos p = 23, g = 5 es una raíz primitiva ya que tenemos la siguiente tabla de valores: n 1 2 3 4 5 6 7 8 9 10 11 g n 5 2 10 4 20 8 17 16 11 9 22 n 12 13 14 15 16 17 18 19 20 21 22 g n 18 21 13 19 3 15 6 7 12 14 1 Para todo primo p, existen raices primitivas. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 13 / 44

Una cita de Jacobi Fourier tenía la opinión de que el principal objetivo de la matemática era la utilidad pública y la explicación de los fenómenos naturales; pero un filósofo como él debería haber sabido que el único objetivo de la ciencia es el honor del espíritu humano, y que bajo este título una pregunta sobre los números es tan valiosa como una pregunta sobre el sistema del mundo. (Carl Gustav Jacobi,1804 1851) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 14 / 44

Parte I El Algoritmo de Diffie-Hellman Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 15 / 44

Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 16 / 44

El algoritmo de Diffie-Hellman Supongamos que dos personas, Alicia y Benito deben ponerse de acuerdo en una clave pero no disponen de un canal seguro para intercambiar la clave. Entonces pueden hacer lo siguiente: Acuerdan ( en público!) un número primo p (grande) y una base g, idealmente una raíz primitiva de p. A modo de ejemplo, supongamos que eligen p = 23 y g = 5. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 17 / 44

Cada uno por su lado... Alicia elige una clave secreta a (por ej. a = 6), calcula g a (módulo p) y da a conocer el resultado a Benito ( en público!). En el ejemplo: 5 6 8 (mód 23) Benito hace lo mismo, elije una clave secreta b (por ejemplo b = 15) calcula g b (módulo p) y comunica el resultado a Alicia ( en público!). En el ejemplo: 5 15 19 (mód 23) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 18 / 44

Un secreto en común Tanto Alicia como Benito pueden calcular g ab módulo p: han quedado con un secreto en común. Alicia (que conoce a y g b calcula En el ejemplo: 19 6 2 (mód 23) (g b ) a g ab (mód p) Mientras que Benito (que conoce g a y b) calcula: En el ejemplo: 8 15 2 (mód 23) (g a ) b g ab (mód p) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 19 / 44

Es seguro? La seguridad del algoritmo de Diffie-Hellman depende de que conociendo por ejemplo y = g a (o g b ) no sea posible determinar a (o b), no sea posible (desde el punto de vista práctico) resolver la ecuación de congruencia: (Problema del logaritmo discreto). g x y (mód p) Notemos que si g es una raíz primitiva de p este problema siempre tiene una solución, pero no se conoce ningún algoritmo eficiente (esto es: con complejidad polinomial en el número de bits de los datos) para resolverlo, si p y g son grandes). Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 20 / 44

Parte II El Algoritmo RSA Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 21 / 44

Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 22 / 44

Alicia hace pública su clave Alicia elige al azar dos primos enormes p y q (p q), y calcula N = pq. A los fijes de un ejemplo, elijamos p = 17 y q = 41. Entonces N = 697. También elige (al azar) e que no tenga factores en común con f = ϕ(n) = (p 1)(q 1) En nuestro ejemplo elegimos e = 231 f = 640 Alicia hace públicos N y e: son su clave pública. Alicia: Mi clave pública es el par (697,231) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 23 / 44

El Algoritmo de Euclides Para chequear que f y e no tengan factores comunes, se encuentra su máximo común divisor utilizando el algoritmo de Euclides (aprox. 325-265 AC): 640 = 231 2 + 178 231 = 178 1 + 53 178 = 53 3 + 19 53 = 19 2 + 15 19 = 15 1 + 4 15 = 4 3 + 3 4 = 3 1 + 1 3 = 1 3 + 0 último resto no nulo = maximo común divisor. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 24 / 44

Una consecuencia del algoritmo de Euclides Como vimos en la materia, el máximo común divisor entre f y e siempre se pueden escribir en la forma donde a y d son dos enteros. af + de En particular, esto es verdadero para al máximo común divisor entre e y f. En nuestro ejemplo 61 640 + ( 169) 231 = 1 Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 25 / 44

El secreto de Alicia Así pues, vemos que existen enteros a y d tales que: af + de = mcd(e, f ) = 1 En nuestro ejemplo: a = 61, d = 169. Por lo tanto, en particular existirá ( y podemos calcularlo!) un entero d tal que: de 1 (mód f ) Alicia mantiene d en secreto: es su clave privada. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 26 / 44

Como preferimos no trabajar con números negativos, hagamos un pequeño truco: 169 169 + 640 471 (mód 640) por lo tanto si elegimos d = 471 se seguirá verificando la relación de 1 (mód 640) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 27 / 44

Los mensajes son números Es posible pensar el conjunto de números {0, 1, 2,..., N 1} como un alfabeto, y representar el mensaje como un número (o varios) de ese alfabeto. Por lo tanto, podemos pensar que el mensaje a transmitir es un número m de la aritmética modular módulo N. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 28 / 44

Encriptando con el RSA Cuando Benito quiere enviarle un mensaje m a Alicia, busca su clave pública (e, N) y calcula c es el mensaje cifrado. c = m e (mód N) En el ejemplo, si Benito quiere enviar el mensaje m = 12 a Alicia, calcula 12 e = 12 231 466 (mód 697) y envia el mensaje cifrado c = 466 a Alicia. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 29 / 44

Alicia sabe matemática! Para desencriptar el mensaje, Alicia utilizará el siguiente teorema: (m e ) d m (mód N) Prueba: Como hemos elegido d de modo que de 1 (mód f ) existe un entero k tal que de = 1 + kf donde f = ϕ(n) = (p 1)(q 1) por lo que (m e ) d m de m(m f ) k (mód N) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 30 / 44

El teorema del RSA Para probar el teorema consideramos cuatro casos: Si p m y q m por el teorema de Fermat-Euler m f = 1 (mód N) (m e ) d = m (mód N) Si p m y q m, m 0 (mód p) (m e ) d 0 m (mód p) m q 1 1 (mód q)( por el teorema de Fermat) m f 1 (mód q) (m e ) d m (mód q) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 31 / 44

El teorema del RSA y como p y q son coprimos, se deduce que (m e ) d m (mód N) Si q m pero p m es análogo (intercambiamos los roles) Finalmente si p m y q m, m 0 (mód N) luego (m e ) d 0 m (mód N) En cualquiera de los cuatro casos probamos que (m e ) d m (mód N) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 32 / 44

Como desencripta Alicia Deducimos que Alicia puede descifrar el mensaje de Benito, calculando c d (mod N) En ejemplo, Alicia recibe el mensaje c = 466 de Benito, y calcula 466 471 12(mod 697) Sólo alicia que conoce f = ϕ(n) = (p 1)(q 1), puede desencriptar el mensaje. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 33 / 44

Es seguro? La seguridad del Algoritmo RSA depende de que aún conociendo N, no sea posible calcular los factores p y q, y por lo tanto f. Es decir, depende de que no sea posible (desde el punto de vista práctico) factorizar el número N. Actualmente no se conoce ningún algoritmo eficiente (o sea, con complejidad polinomial en el número de bits del número N) para factorizar números grandes, y se conjetura que tal algoritmo no existe. Notemos, sin embargo que sí existe un algoritmo para decidir si un número es primo o no en tiempo polinomial ( sin calcular sus factores!). Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 34 / 44

El RSA-576 RSA Security, Inc. organiza un concurso para factorizar números primos, con la finalidad de verificar la seguridad del RSA. Por ejemplo, el RSA 576 (576 bits de longitud, 174 digitos decimales) ha sido factorizado Y sus factores primos son p= 398075086424064937397125500550 386491199064362342526708406385189 575946388957261768583317 q= 472772146107435302536223071973 048224632914695302097116459852171 130520711256363590397527 Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 35 / 44

Un comentario final: En la práctica, que un programa de criptografía sea seguro o no, no depende sólo del algoritmo matemático que emplea, sino de muchos detalles que hacen a su implementación. Sólo pueden considerarse seguras las implementaciones de los algoritmos criptográficos para las que está disponible el código fuente ( o sea, el texto del programa en un lenguaje comprensible para los seres humanos), porque sin él no es posible auditar el código para verificar que el programa no tenga puertas traseras, u otros defectos que lo tornen inseguro. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 36 / 44

Parte III Bonus Trac: Una implementación (en C++) Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 37 / 44

IARSAC En https://github.com/pdenapo/iarsac pueden encontrar el código fuente de IARSAC (una Implementación del Algoritmo RSA en C++) que hice con fines didácticos, utilizando la librería NTL, disponible en http://www.shoup.net/ntl/ No la usen para propósitos serios! Recomiendo para ello GNU Privacy Guard (GPG), Open SSL, etc. Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 38 / 44

Interface de IARSAC class { encriptador_ rsa public : void generar_ claves ( long longitud ); void cifrar ( istream & texto_plano, ostream & texto_ encriptado ); void descifrar ( istream & texto_ encriptado, ostream & texto_plano ); void establecer_ parametros (); ZZ N; ZZ clave_ publica ; ZZ clave_ privada ; }; Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 39 / 44

Generación de claves en IARSAC ZZ p,q,f; p = GenPrime_ZZ ( longitud ); do { q = GenPrime_ZZ ( longitud );} while (p==q); N = p* q; f = (p -1) *(q -1) ; do { clave_ publica = RandomLen_ ZZ ( longitud ) %N; } while ( GCD ( clave_publica,f)!=1) ; clave_ privada = InvMod ( clave_publica, f); Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 40 / 44

Como encripta y desencripta IARSAC Para encriptar IARSAC usa: numero_ encriptado = PowerMod ( numero_plano, clave_publica, N); Para desencriptar IARSAC usa: numero_ plano = PowerMod ( numero_ encriptado, clave_privada, N); Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 41 / 44

En acción: generando claves./iarsac -g Alicia -l 80 -v Generando claves RSA para Alicia longitud de clave=80 bits Primos elegidos p=739997448982420881568093 q=1071100960056827043446387 clave_publica=790786829720893592282321 n=792611978044673896555170296609163838399535329991 f=792611978044673896555168485510754799151610315512 clave_privada= 311356550667082262837401003628093127448107692081 Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 42 / 44

En acción: encriptando echo "Alicia te amo!"> mi_texto_plano.txt./iarsac -c Alicia < mi_texto_plano.txt > mi_texto_cifrado.txt y para descifrar usamos cat mi_texto_cifrado.txt./iarsac -d Alicia Alicia te amo! Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 43 / 44

Referencias... N. Koblitz. A course in Number Theory and Crytography. Springer Verlag, (1987). W. Stein. Elementary Number Theory. Disponible en la página de su autor: http://sage.math.washington.edu/ent/ Introduction to Cryptography, en la documentación de PGP (Pretty Good Privacy), un programa creado por Phil Zimmermann, para permitir el uso masivo de la criptografía de llave pública: http://www.pgpi.org/doc/pgpintro/ Pablo De Nápoli () Una Introducción Matemática a la Criptografía (para mis 31 alumnos de mayo de Álgebra 2014 I) 44 / 44