MENSAJES SECRETOS y códigos CON TITI-83 LEANDRO TORTOSA GRAU IES HAYGÓN Título: Mensajes secretos y códigos con TI-83 Leandro Tortosa Grau. I.S.B.N.: 84-8454-038-3 Depósito legal: A-XXX-2000 Edita: Editorial Club Universitario Web: www.editorial-club-universitario.es Printed in Spain Imprime: Imprenta Gamma Telf.: 965 67 19 87 C/. Cottolengo, 25 – San Vicente (Alicante) E-mail: gamma@1gamma.com Web: www.1gamma.com Reservados todos los derechos. Ni la totalidad ni parte de este libro puede reproducirse o transmitirse por ningún procedimiento electrónico o mecánico, incluyendo fotocopia, grabación magnética o cualquier almacenamiento de información o sistema de reproducción, sin permiso previo y por escrito de los titulares del Copyright. A Jordi Pérez Belda, tu recuerdo siempre permanecerá en nuestra memoria. PRÓLOGO Los griegos desarrollaron las secciones cónicas unos 400 años antes de nuestra era. Posteriormente, casi 2000 años después, Kepler llegó a la conclusión que las trayectorias que siguen los planetas del sistema solar en torno al sol pueden ser descritas perfectamente mediante elipses. Esto no es mas que un sencillo ejemplo donde se pone de manifiesto la utilidad de una ciencia, las matemáticas, que es producto de la mente humana e independiente de la experiencia. Existen muchos ejemplos de teorías matemáticas cuyas aplicaciones posteriores han reafirmado la importancia de las mismas. Basta citar las aplicaciones actuales de la teoría de la computación matricial en ingeniería, física, aeronaútica, mecánica cuántica y otras, cuando las matrices fueron inventadas alrededor de 1860 por los británicos J. Sylvester y A. Cayley. También cabe mencionar las aplicaciones actuales de la teoría de números en criptografía. En definitiva, podemos compartir la dificultad de A. Einstein en comprender que las matemáticas se adapten de forma tan perfecta a los objetos reales. La Historia está llena de códigos. En muchos casos, han decidido el desenlace de grandes batallas y han causado la muerte de reyes y reinas. La necesidad de mantener secretos e información reservada ha provocado que las naciones hayan puesto en marcha departamentos que se encargan de la seguridad de las comunicaciones y los sistemas de información. La historia de los códigos es una continua lucha entre los creadores de códigos y los descifradores de los mismos. Hasta no hace demasiado tiempo, con la prohibición absoluta de poder utilizar cualquier tipo de calculadora, las tareas numéricas de matemáticas se convertían en un auténtico martirio. Actualmente, aunque ya no existen esas trabas para su utilización, no sabemos sacarle el adecuado partido ni aprovechar siquiera un elevado porcentaje de las capacidades que estas máquinas nos ofrecen. Lo que pretendemos con el uso de la calculadora gráfica precisamente es, sin olvidar la destreza mental referente al tema de la estimación, la adaptación a una realidad en la que se gana tiempo sin perder necesariamente rigor matemático. Pretendemos ahorrar tiempo en cálculos repetitivos que no nos aportan nada y que nos quitan tiempo, necesario para la resolución de problemas prácticos. En el capítulo 1 introducimos las ideas básicas de funcionamiento de la calculadora gráfica TI-82/83 de Texas Instrument. Se trata de una introducción, por lo que lo más sensato es describir algunas teclas fundamentales y las funciones básicas que utilizaremos con una mayor frecuencia. En el capítulo 2 exponemos algunas ideas, conceptos y destrezas matemáticas que necesitaremos posteriormente. Muchos de estos conceptos no se encuentran en los libros de texto oficiales, aunque no por ello son menos interesantes. El capítulo 3 constituye la parte esencial del libro, en el que se repasan algunos métodos para escribir mensajes secretos y codificar información. Se realiza un repaso histórico sobre los diversos métodos utilizados a lo largo del tiempo, estudiando más detalladamente los sitemas de cifrado basados en la fución afín, el método de Vigenère, el cifrado matricial y el método RSA. Finalmente incluimos un apéndice en el que se proponen diversos problemas para pensar y se explican algunos hechos o anécdotas relacionadas con el mundo de las matemáticas o los propios matemáticos. Alicante, septiembre de 2000. LEANDRO TORTOSA GRAU ÍNDICE CAPÍTULO 1: INTRODUCCIÓN A LAS CALCULADORAS GRÁFICAS ....................... 1 1.1 Elementos básicos en la calculadora TI-82/83 ..................................................... 2 1.2 Introducción a los gráficos ................................................................................... 9 1.3 Listas en la calculadora ........................................................................................ 21 CAPÍTULO 2: INTRODUCCIÓN MATEMÁTICA .............................................................. 29 2.1 Sistemas de numeración y sus orígenes ................................................................ 30 2.2 Introducción a la teoría de números ..................................................................... 37 2.3 Introducción al cálculo matricial .......................................................................... 49 CAPÍTULO 3: CRIPTOGRAFÍA Y CODIFICACIÓN .......................................................... 75 3.1 Introducción histórica ........................................................................................... 76 3.2 Cifrado y descifrado de mensajes ......................................................................... 84 3.2.1 Definiciones básicas .................................................................................... 84 3.2.2 El cifrado César ............................................................................................ 86 3.2.3 Cifrados basados en la función afín ............................................................. 87 3.2.4 Cifrados por sustitución con calculadora Ti-82/83 ...................................... 93 3.2.5 Criptoanálisis de los cifrados por sustitución .............................................. 100 3.3 El cifrado Vigenère ............................................................................................... 107 3.4 Cifrado matricial ................................................................................................... 111 3.5 El sistema de cifrado RSA .................................................................................... 124 3.5.1 Descripción del método .............................................................................. 126 3.5.2 Cálculo de potencias en aritmética modular ............................................... 131 3.5.3 Cálculo de las inversas en aritmética modular ............................................ 133 3.5.4 El sistema RSA en la actualidad .................................................................. 137 3.6 Introducción a la codificación ............................................................................... 140 3.6.1 Introducción a la codificación y detección de errores ................................. 140 3.6.2 Detección de errores: el método del control de la paridad .......................... 142 3.6.3 El código de Huffman ................................................................................. 144 3.6.4 Detección de errores ..................................................................................... 147 3.6.5 Códigos de Hamming ................................................................................... 154 PROBLEMAS DIVERSOS Y CURIOSIDADES MATEMÁTICAS........................ 161 BIBLIOGRAFÍA ....................................................................................................... 187 Capítulo 1 INTRODUCCIÓN A LAS CALCULADORAS GRÁFICAS 1 1. 1 Elementos básicos en la calculadora -83 TI Algunas teclas y funciones básicas de la calculadora-83 TI Comenzamos suponiendo que no poseemos conocimientos previos sobre una máquina de estas características. Analizaremos en este capítulo introductorio algunas características esenciales de la calculadora TI-83, aunque es aconsejable repasar detenidamente el manual de instrucciones. Para encenderla apretamos la tecla de encendido ´. Todas las teclas sirven para más de una posibilidad o admiten dos funciones; una de ellas está sobre la misma y la otra está en color azul (en la TI-82) o en amarillo y verde (en la TI-83) encima de ella. Para seleccionar cualquiera de las segundas opciones de cada tecla hay que presionar en primer lugar 2. Entonces, después de realizar esta operación, seleccionamos las funciones o mandatos que están coloreadas de amarillo. Igualmente debemos señalar que la mayoría de las teclas tienen una tercera opción, que suele ser algún carácter en color verde. Para acceder a esta tercera posibilidad en las teclas donde aparece esta tercera opción debemos presionar la tecla de color verde j (azul en la TI-82), la cual nos permite escribir en la pantalla caracteres alfabéticos. Tras encender la calculadora es posible que en la pantalla no se vea nada o al contrario, que presente un tono muy oscuro. Es entonces cuando hay que regular la intensidad y el brillo. Para ello presionamos 2 y después regulamos la intensidad de la pantalla con las teclas de dirección del cursor; en nuestro caso arriba y abajo. El cursor tiene cuatro posiciones, izquierda A, derecha B, arriba C, abajo D, que nos permiten movernos por toda la pantalla. Puede suceder que, al encender la pantalla, aparezcan operaciones hechas con anterioridad, ya que no borramos de la memoria las operaciones o cálculos realizados cuando apagamos la calculadora. Hay varias posibilidades para borrar lo ejecutado 2 anteriormente, pero como estas calculadoras son utilizadas en distintos niveles sería recomendable preguntar al profesor si se puede utilizar la tecla M, cuyo fin es borrar lo que hay escrito en pantalla. Si durante el trascurso de nuestras operaciones nos hemos equivocado en alguna posición concreta, no es necesario borrar toda la pantalla ya que con la tecla { podemos borrar algo concreto que estaba equivocado. EJEMPLOS DE PANTALLA CON ERRORES. Para apagar la calculadora apretamos 2´, ( ® en azul). Tenemos la posibilidad de utilizar la tecla 2Ì (± en azul), para poder guardar un resultado que vamos a utilizar en la línea de pantalla siguiente. Sin duda, una de las grandes ventajas que presenta esta máquina es la capacidad de realizar cálculos aritméticos con paréntesis y sin ellos. Veamos un ejemplo donde se pongan de manifiesto estas capacidades algebraicas. Ejemplo. Si queremos realizar el siguiente cálculo aritmético 5 * (8 + 7) / 2 - 5 / 3 * (7 + 5) tenemos la posibilidad de disponer en pantalla toda la operación, obteniendo el resultado al final directamente o bien resolver las distintas operaciones individualmente, conectando una operación con la siguiente por medio de la opción ± en amarillo que se encuentra en la tecla Ì. Esta opción nos proporciona el último resultado obtenido en pantalla. 3 Existe una tercera alternativa basada en la posibilidad de almacenar información en los diferentes registros de memoria de la calculadora. Opción 1: 5 * ( 8 + 7) / 2 - 5 / 3 * ( 7 + 5 ) Í 17.5. (Como vemos en la figura anterior). Opción 2: 5ÍyÌ*(8+7) Í yÌ/ 2 Í y Ì - 5 Í y Ì / 3 Í y Ì * ( 7 + 5 ) Í 130. Cuestión. Notemos que el resultado no coincide con el obtenido anteriormente. Averigua qué es lo que falla y resuélvelo de manera adecuada. Opción 3: 5 ¿ ƒ o (A). (8+7) ¿ ƒ p (B) . 2 ¿ ƒ q (C). 5/3 ¿ ƒ X-1 (D) . (7+5) ¿ SIN (E). Después se realiza A * B / C - D * E Í 17.5. Debemos notar que la función de la tecla ¿ (proviene de STORE), es la de almacenar algún valor concreto, asignándole la letra que queramos. Además, el concepto de almacenamiento es fundamental en el aspecto de la programación y para asignación de información en general. Los registros vienen a ser lugares de memoria en los que se pueden almacenar datos. EJERCICIO 1. 1 Intenta encontrar alguna opción más para poder realizar esta operación sin apuntar los resultados parciales en un papel y sin aprenderlos de memoria. 4 El orden de las operaciones. En cuanto al orden en el que se evalúan las operaciones, la máquina dispone de un control de operaciones que define el orden en que se introducen y evalúan funciones y expresiones. Introducimos números y funciones en una sucesión simple y directa. El control de operaciones evalúa las funciones de una expresión siguiendo el siguiente orden: 1 Funciones que se introducen después del argumento, 2, -1,!,º, conversiones. 2 Potencias y raíces. 3 Funciones de un solo argumento como √ (, sen(, log(. 4 Permutaciones y combinaciones. 5 Multiplicación, multiplicación implícita y división. 6 Adición y sustracción. 7 Funciones relacionales, como > o ≤ . 8 Operadores lógicos. Hay que señalar que, dentro de un nivel de prioridad, el control de operaciones evalúa las funciones de izquierda a derecha y los cálculos con paréntesis son los primeros que se evalúan. Para introducir un número negativo, usamos la tecla de negación, pulsando Ì e introduciendo el número. La negación en la TI-83 se encuentra en un nivel inferior que, por ejemplo, elevar al cuadrado; significa que se realiza primero el cuadrado y después la negación. Detención de cálculos. Es importante señalar que cuando la TI-83 está realizando cálculos o se encuentra dibujando un gráfico, aparece en la esquina superior derecha una línea vertical en movimiento, como indicador de que se encuentra ocupada y no responde a ninguna otra acción que le encomendemos. Cuando se realiza una pausa en un gráfico o en la ejecución de un programa, el indicador de actividad se convierte en una línea vertical de puntos en movimiento. Además, mientras la calculadora está realizando un gráfico o un cálculo, podemos interrumpir estas operaciones simplemente pulsando É. Puede suceder que algunas veces, cuando estás trabajando en la pantalla, al apretar una tecla que precise 2 se te olvide, y entonces obtengas un resultado u otra pantalla en la 5 que aparezcan menús u opciones no requeridas o desconocidas. Entonces, para volver a la pantalla principal desde cualquier otra en la que te encuentres tendrás que presionar 23, (K) y de esta forma vuelves a la situación en que te encontrabas inicialmente. Esta tecla es muy importante ya que es la que nos permite salir de la pantalla en la que nos encontramos y volver a una pantalla anterior. Aprovechamos el cálculo del ejemplo anterior para distinguir dos teclas que pueden confundirse cuando necesitamos restar dos cantidades. Son las teclas Ì y ¹. Ejemplo. Cuando queremos realizar la operación 8 - 5 debemos utilizar la tecla ¹, pero si lo que queremos es trabajar con números negativos debemos utilizar la tecla Ì. Ejemplo. Realiza las operaciones 8 ¹ 5 y después 5 ¹ 8, comentando los diferentes resultados. Ejemplo: Asigna el número 2 a la letra H y después imprime en pantalla el opuesto de H, comentando lo que pasa. 6 Uno de los mensajes de error más comunes que pueden aparecer en la calculadora es ERR:SYNTAX, que tiene la siguiente disposición en pantalla: ERR:SYNTAX 1:Goto 2:Quit Si nos aparece este mensaje la calculadora, podemos elegir entre dos opciones. La opción 1, Goto, nos permite rectificar en pantalla algún error de sintaxis que hemos escrito de forma incorrecta. Si elegimos esta opción, nos lleva directamente al lugar donde se encuentra el error que debemos rectificar; si posteriormente nos vuelve a mandar el mismo mensaje puede suceder que haya que rectificar algún otro error. La opción 2, nos permite ignorar el fallo y continuar en la línea siguiente. A continuación resumimos las acciones de las teclas de edición más utilizadas en la máquina. Pulsación Acción |}~† Desplazamiento del cursor dentro de una expresión. Estas teclas repiten el movimiento. y| Desplaza el cursor hasta el principio de una expresión. y~ Desplaza el cursor hasta el final de una expresión. Í Evalúa una expresión o ejecuta una instrucción. ‘ En una línea con texto de la pantalla principal, borra (deja en blanco) esa línea. En una línea en blanco de la pantalla principal, borra todo el contenido de la pantalla principal. En un editor, borra (deja en blanco) la expresión o el valor donde esté el cursor, no almacena un cero. 7 { Borra el carácter en la posición del cursor. ƒ Cambia el cursor a Ø; la siguiente pulsación inserta un carácter alpha (carácter alfabético en verde sobre la tecla), o ejecuta SOLVE. „ Permite introducir variables en los distintos modos. Otra de las teclas fundamentales de esta máquinas es z. Las opciones z controlan cómo se muestran e interpretan los números y gráficos en la TI-83. El sistema de memoria constante guarda las opciones MODE cuando apagamos la máquina. Para mostrar las opciones, pulsamos z. Los valores predeterminados están resaltados. La siguiente pantalla nos muestra las opciones que aparecen al presionar z. En la primera línea se muestran las opciones sobre el tipo de notación numérica que se utiliza, la notación Normal, Sci (Científica) y Eng (Ingeniería). En la segunda fila, se controla el número de cifras decimales. El modo decimal Float (número en coma flotante) muestra hasta 10 dígitos, más el signo y el separador decimal. En la tercera línea tenemos la opción de la unidad de medida de ángulos. La siguiente línea nos permite seleccionar el tipo de representación gráfica. El modo de representaciones cartesianas es Func. La quinta línea nos permite determinar si queremos una conexión poligonal de puntos o no. La siguiente muestra el modo de representación gráfica de sucesiones. La séptima línea nos permite trabajar con números complejos. La última opción se refiere a si queremos trabajar con la pantalla completa o dividida. 8 1. 2 Introducción a los gráfic os Para definir un gráfico en cualquiera de los modos, se deben seguir los pasos siguientes. 1. Pulsamos z y configuramos el modo de gráficos apropiado para nuestro caso. 2. Pulsamos o e introducimos una o más funciones en el editor Y=. 3. Definimos el estilo de gráficos de cada una de las funciones. 4. Pulsamos p y definimos las variables de la ventana de visualización. 5. Pulsamos y [FORMAT] y seleccionamos los parámetros de formato de los gráficos. Una vez definido nuestro gráfico, presionamos s para visualizarlo. Es importante señalar que es posible seleccionar y anular la selección de una función en el editor de funciones Y=. Una ecuación está resaltada cuando el signo = está resaltado. Si esto no es así, cuando presionemos s, dicha función no será representada. Para seleccionar o anular la selección de una función en el editor Y=, seguimos los pasos que se especifican a continuación. 1. Pulsamos o para entrar en el editor de funciones. 2. Situamos el cursor en la función que se desee seleccionar o cuya selección queramos anular. 3. Pulsamos | para situar el cursor en el signo = de la función. 4. Pulsamos Í para cambiar el estado de la selección. Cuando introduzcamos o editemos una función, se seleccionará automáticamente y cuando se suprima, se anulará su selección. Señalemos que los elementos Plot1, Plot2 y Plot3 que se encuentran en la parte superior de la pantalla, se refieren a gráficos de carácter estadístico. 9 Antes de comenzar una nueva representación gráfica o un conjunto de representaciones gráficas, es conveniente trabajar con una pantalla standard de representaciones. Para ello podemos presionar la tecla q y utilizar la opción 6:Zstandard. De esta manera conseguimos una ventana de visualización con los siguientes parámetros: Xmin = -10 Xmax = 10 Xscl = 1 Ymin = -10 Ymax = 10 Yscl = 1 Xres = 1. Supongamos que queremos representar gráficamente las funciones f1(x) = (20 - x3)1/2, f2(x) = 2 x3 - x2 +1. Siguiendo los pasos especificados anteriormente, introducimos las funciones en el editor de funciones Y=, y presionamos la tecla s para su representación. Vemos el resultado de estas acciones en las pantallas siguientes. Como se observa en las pantallas anteriores, las dos funciones intersectan en un punto, ambas cortan el eje OY y únicamente la función polinómica corta el eje de OX. La función Y1 es decreciente, mientras que Y2 es creciente. Supongamos que nos planteamos determinar el punto en que ambas funciones se cortan. Para ello, una primera aproximación consiste en presionar la tecla r, con lo que el aspecto de la pantalla cambia radicalmente. Lo vemos en las pantallas siguientes. 10 En la primera pantalla observamos que existe un cursor sobre la primera función Y1, que aparece escrita en la parte superior izquierda. La posición en la que se encuentra el cursor, es decir, sus coordenadas cartesianas, aparecen escritas en la parte inferior de la pantalla. En la segunda pantalla, el cursor ha saltado a la segunda función Y2, que vuelve a aparecer escrita en la misma posición. Ahora, si movemos los cursores |~ nos movemos a lo largo de la función, con lo que las coordenadas se encuentran constantemente en cambio. Para pasar de una función a otra utilizamos los cursores †}. Figura 1.1 Una aproximación al punto de intersección de las dos funciones consistiría en aproximarnos a dicho punto con el cursor y anotar las coordenadas que nos aparecen en pantalla. Lo vemos en la primera pantalla de la figura 1.1. Pero esto no es más que una 11 aproximación, ya que el cursor va dando "saltos" de un punto a otro y no podemos determinar de forma precisa donde se encuentra el punto de corte. Podemos pensar en realizar un zoom sobre la zona de intersección para obtener más precisión. Esto es precisamente lo que hacemos en la segunda pantalla de la figura 1.1, en la que elegimos la opción Zoom In del menú q. Observamos la ganancia en precisión en la tercera pantalla de esta figura. Sin embargo, disponemos de otra opción en esta máquina mucho más rápida que ir repitiendo continuas aproximaciones con el zoom hasta llegar a la aproximación adecuada para el error deseado. Tenemos la opción y [CALC]. En esta pantalla aparecen todos los cálculos de tipo matemático que pueden llevarse a cabo sobre las funciones gráficas. Como vemos en la primera pantalla de la figura 1.2, en este menú se puede calcular un valor determinado de la función, máximos, mínimos, puntos de intersección y algunas otras características de carácter avanzado. Nos centramos en el cálculo de los puntos de intersección entre gráficas. Figura 1.2 Como observamos en las pantallas de la figura 1.2, la máquina nos pregunta por las gráficas objeto del cálculo. Puede darse la circunstancia que tuviéramos diversas representaciones y debamos indicar cuáles son el objeto de la investigación. Por eso, es 12