UNIVERSIDAD AUTÓNOMA METROPOLITANA
U n i d a d A z c a p o t z a l c o
UN
MÉTODO
PARA
AUMENTAR
LA
SEGURIDAD
DE
LA
INFORMACIÓN
EN
LAS
REDES
TCP/IP,
USANDO
TARJETAS
INTELIGENTES
TESIS PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS DE LA COMPUTACION
PRESENTA
ING.
ENRIQUE
RODRÍGUEZ
DE
LA
COLINA
Asesor: Dr. ROSSEN PETROV POPNIKOLOV
Jurado: Dr. GUILLERMO MORALES LUNA Dr. ROSSEN PETROV POPNIKOLOV
Jurado Externo: Dr. JUAN CARLOS SANCHEZ GARCÍA
RESUMEN
Como medio para aumentar la seguridad de la información en las redes de datos de TCP/IP y más específicamente en Internet, se aplican las funciones de Tarjetas Inteligentes (TI).
La Internet, red que trabaja sobre los protocolos de comunicación TCP/IP, ofrece una gama de servicios, en los cuales es necesario contar con mecanismos para garantizar la autenticidad, la autorización de acceso, la integridad y la confidencialidad de la información. La TI por su capacidad de procesamiento y almacenamiento de información, es la herramienta ideal para lograr la seguridad requerida.
La norma IS0-7816 clasifica dichas tarjetas en tres grupos: Tarjetas de Memoria (TM), Tarjetas Lógicas (TL) y Tarjetas Inteligentes (TI). Los tres tipos tienen un Circuito Integrado (CI) incrustado con memoria EPROM1. Las Tarjetas Inteligentes (TI), contienen además un microcontrolador programable y memoria operativa RAM.
Las primeras aplicaciones con TI surgen como una necesidad de manejar el dinero electrónicamente y reducir el fraude en pequeñas transacciones. De ahí se parte con aplicaciones desarrolladas con tarjetas de memoria y que más tarde motivarían a los diseñadores para crear mejores aplicaciones con tarjetas más poderosas. La tecnología de las TI está desarrollándose muy rápidamente en la actualidad y en distintas aplicaciones.
Para poder hacer uso de la tarjeta inteligente como un sistema de seguridad fue necesario desarrollar distintas fases:
Fase 1: Resolver la forma en la que la TI se acopla como un dispositivo externo a una PC. Se investigó sobre los distintos lectores de TI y se estudió la forma de conectarlos. Finalmente se utilizó un tipo de lector portátil que se conecta al puerto serie, se desarrolló un programa para mandar datos al lector y que éste a su vez los interpretara.
Para conectar el lector seleccionado a la PC, fue necesario el uso de controladores que el mismo fabricante ha desarrollado.
Fase 2: Estudio de la TI para poder programarla y saber cómo usarla, para esto se debe entender a la TI como un sistema mínimo de cómputo que cuenta con un microprocesador, memoria RAM, memoria ROM y un sistema operativo propietario. Antes de su utilización las TI se encuentran en un estado virgen el cual debe ser configurado con los parámetros de inicio. Una vez configurada la TI se desarrolla una aplicación dentro de la tarjeta que consiste básicamente en crear directorios adecuados a la información que se va a manejar.
Fase 3: Se inicia con la creación de un programa en lenguaje C que usa las DLL (Dynamically Linked Library) tanto del lector como de las TI y que son propietarias del fabricante.
En esta etapa del desarrollo del software, surgió la necesidad de crear una plataforma más general por lo tanto se convirtieron las DLL que están compiladas en el lenguaje de programación VisualTM C++ y se pasaron al lenguaje desarrollado por Borland, BuilderTM C++.
Fase 4: La cuarta fase del desarrollo contiene dentro del programa de C el código con el cual se envían los comandos al lector para que éste los transmita a la tarjeta. Dichos comandos corresponden a las instrucciones que las TI debe ejecutar y están basados en el estándar de ISO2 que corresponde a la parte de comunicación.
Fase 5: El programa de interfaz combina el desarrollo y uso de los comandos de control de la tarjeta, el lector y las pantallas de interacción con el usuario.
La aplicación programada en la PC en conjunto con la programación de la TI son la base para desarrollar un método en el cual se combinan dos algoritmos de encriptamiento (RSA3 y DES4), hardware y software. Esto es significativamente más seguro con respecto a un método que sólo se haya desarrollado con software y que utiliza un solo algoritmo de encriptamiento.
Como nota del presente trabajo debe quedar claro que se intenta promover el uso de las TI como una opción de nuevas tecnologías y no hacer pública la información confidencial y registrada con derechos de autor del fabricante.
El lector y las TI utilizadas son parte del objetivo general de la tesis sin embargo el utilizar diferentes marcas o modelos de lectores y TI, no afecta en esencia el resultado.
Este trabajo tiene por objetivo el demostrar que se puede incrementar la seguridad de la información transmitida combinando varios métodos y que está abierto para continuar en esta rama de investigación proponiendo como herramienta las TI o el uso de hardware que permita aislar parte de la información del sistema que la esté generando. También es posible complementar este trabajo combinando nuevos métodos de encriptamiento que demuestren ser más seguros.
2 (International Standars Organization) 3 RSA (Rivest, Shamir y Adleman),
CONTENIDO
RESUMEN iv
ÍNDICE DE ILUSTRACIONES vi
ABREVIATURAS Y ACRÓNIMOS vii
1. ANTECEDENTES
8
1.1. INTRODUCCIÓN 10
1.2. PLANTEAMIENTO 11 1.3. OBJETIVO PRINCIPAL 12
2. BASES
TEÓRICAS
DEL DESARROLLO
13
2.1. DESCRIPCIÓN DE TARJETAS INTELIGENTES 13 2.2. CRIPTOGRAFÍA 18
2.3. TCP/IP 31
2.4. CONCLUSIONES DEL CAPÍTULO 40
3. TRABAJO
DESARROLLADO 42
3.1. COMPONENTES Y EQUIPO PARA EL DESARROLLO 44 3.2. PROGRAMACIÓN DE LA APLICACIÓN 63
3.3. DESCRIPCIÓN DE LA APLICACIÓN 69 3.4. RESULTADOS Y COMENTARIOS 76 3.5. CONCLUSIONES DEL CAPÍTULO 77
4. CONCLUSIONES 78
5. BIBLIOGRAFÍA
79
ANEXO A. DESARROLLO DE SOCKETS 82
ANEXO B. EJEMPLO DE APLICACIÓN CON TI 101
ÍNDICE DE ILUSTRACIONES
Fig. 2.1: Elementos contenidos en la Tarjeta Inteligente 14 Fig. 2.2: Encriptamiento y desencriptamiento, sistema de llaves secretas, simétrico 19 Fig. 2.3: Sistema de llaves privadas y públicas propuesto 20 Fig. 2.4: Integridad de los datos por medio de funciones de dispersión "Hashing" 21 Fig. 2.5: Envío de llave secreta encriptada con RSA y archivo con DES 22 Fig. 2.6: Diagrama de flujo simplificado del Algoritmo RSA 26
Fig. 2.7: Forma de los paquetes UDP 36
Fig. 2.8: Forma de los paquetes TCP 36
Fig. 2.9: Cabecera IP 37
Fig. 2.10: Cabecera TCP 37
Fig. 3.1: Niveles de directorios dentro de la TI 43
Fig. 3.2: Diagrama de conexión, lector de TI a la PC. 44
Fig. 3.3: Lector Reflex 72 45
Fig. 3.4: Descripción de la TI, Cryptoflex 50
Fig. 3.5: Personalización de la TI 52
Fig. 3.6: Archivos de la TI antes de personalización 52
Fig. 3.7: Archivos de la TI después de la personalización 53 Fig. 3.8: Formato de los comandos de entrada y salida de las TI 54
Fig. 3.9: Niveles de software que controlan a las TI 55
Fig. 3.10: Dos llaves secretas por sesión para aplicar 3DES y posteriormente encriptadas con RSA 65 Fig. 3.11: Diagrama a bloques de como se relacionan las partes programadas 66
Fig. 3.12: Diagrama de flujo de la aplicación 67
Fig. 3.13: Pantalla de C++, con las formas que integran una de las pantallas de la aplicación 68 Fig. 3.14: Etapas que describen el proceso de la aplicación desarrollada 69
Fig. 3.15: Pantalla de inserción de TI en el lector 69
Fig. 3.16: Acceso Negado por error en NIP o por no detectar una TI 70
Fig. 3.17: Pantalla de solicitud para teclear el NIP 70
Fig. 3.18: Selección de archivo a ser encriptado 71
Fig. 3.19: Pantalla del proceso de encriptamiento 72
Fig. 3.20: Fragmento de 16 líneas del encriptamiento del número 1 visto en Winword 72 Fig. 3.21: Se observa archivo plano a la izquierda y archivo encriptado a la derecha 73 Fig. 3.22: Pantalla del menú de encriptamiento y desencriptamiento 73 Fig. 3.23: Archivo plano observado con analizador de protocolos al ser enviado 74 Fig. 3.24: Pantalla que muestra el archivo encriptado con la ayuda de un analizador de protocolos 75
ABREVIATURAS Y ACRÓNIMOS
3DES (Triple DES) DES, aplicado 3 veces ver cap. 2 página 25
API Application Program Interface
CBC Encadenamiento de Bloques Encriptados (Cipher Block Chainig)
CI Circuito Integrado. Dispositivo electrónico de integración a gran escala de componentes “Chip”
DES Encriptamiento de Datos Estándar (Data Encryption Standard)
DLL Ligas a librerías dinámicas (Dynamically Linked Library)
DNS Servicio de Nombres de Dominio (Domain Name Service)
EPROM Memoria ROM programable borrable de las siglas (Electrically Eraseble
Programmable Read Only Memory)
FTP Protocolo de Transferencia de Archivos (File Transfer Protocol)
ICMP Protocolo de Control de Mensaje de Internet (Internet Control Message
Protocol)
IP Protocolo de Internet (Internet Protocol)
ISO Organización Internacional para la Estandarización (International Organization
for Standarization)
MAC Código de Autenticidad del Mensaje (Message Authenticity Code)
NAT Traducción de Direcciones de Red (Network Address Translation)
RAM Memoria de Acceso Aleatorio (Read Access Memory)
ROM Memoria de sólo lectura (Read Only Memory)
RSA Rivest, Shamir y Adleman
SHA-1 Algoritmo de funciones de dispersión "Hash" Seguro 1 (Secure Hash
Algorithm-1)
TCP/IP Transport Control Protocol / Internet Protocol, veáse página 31
1. ANTECEDENTES
Las primeras aplicaciones con TI surgen como una necesidad de manejar el dinero electrónicamente y reducir el fraude en pequeñas transacciones realizadas por miles de personas, estas transacciones al acumularse durante el día representan grandes cantidades de dinero, un ejemplo real de esta necesidad se tuvo en Francia con los teléfonos públicos en los años 80’s. De ahí se parte con aplicaciones desarrolladas con tarjetas de memoria; estas más tarde motivarían a los diseñadores para crear mejores aplicaciones con tarjetas más poderosas que contaban con los primeros microprocesadores encapsulados en un “chip”.
Podemos decir que las Tarjetas Inteligentes o “smartcards” del idioma inglés, son realmente pequeñas computadoras en tamaño, pero no en capacidad de almacenamiento y procesamiento. Al demostrarse la utilidad de éstas, se creó un nivel sin precedente de uso mundial y se establecieron estándares con respecto a la tarjeta misma, a los equipos con los que opera y al ambiente en el que se utiliza. Posteriormente las TI se estandarizaron en el ISO (International Standars Organization), el IEC (International Electrotechnical Commission) y en el ANSI (American National Standars Institute).
Cuando surgieron las primeras TI se utilizaron como monederos electrónicos que proporcionaron beneficios adicionales como el control de fraude en operaciones de crédito y débito, el acceso controlado o restringido a instalaciones como fábricas o edificios, el almacenamiento de información médica importante, aplicaciones para el uso controlado de canales satelitales o por cable y pases para transporte en trenes, autobuses y aviones, entre otros.
En este trabajo se plantean las TI como una herramienta de encriptamiento y seguridad en redes ya que permiten el almacenaje de llaves de encriptamiento y códigos de acceso sin la necesidad de recordarlos o inclusive conocerlos.
Entre otras funciones importantes, las TI permiten aplicar distintos algoritmos de encriptamiento o llaves de encriptamiento, generar y reconocer “Números de Identificación Personal” (NIP), accesos a sistemas con un nombre de usuario conocido como “Login” y contraseña de entrada “password”.
De este modo se transmiten datos de forma más segura a través de las redes de computadoras en general y específicamente en las redes basadas en los protocolos de TCP/IP5. Después de ser enviada la información cifrada o encriptada, el nodo-receptor puede desencriptar la información,
haciendo uso de otra tarjeta inteligente que contenga las llaves y algoritmos correspondientes para desencriptar dicha información.
La plataforma de operación para el proyecto es el conjunto de protocolos TCP/IP, utilizado en Internet. Internet representa la interconexión de la mayoría de las redes de computadoras utilizando equipos ruteadores, que cuentan con un sistema de direccionamiento común y un conjunto de protocolos de comunicación común.
Como es sabido, los protocolos son reglas que controlan el comportamiento de los equipos y de los programas en las redes de computadoras y que rigen la Internet, Intranets y Extranets.
Las cuatro capas utilizadas en TCP/IP son:
• Interfaz con la Red • De Red
• Transporte • Aplicación
Los protocolos de todas y cada una de estas capas trabajan en conjunto para poder transmitir la información hasta el lado opuesto. Los protocolos más comunes en TCP/IP son: el IP, "Internet
Protocol" que trabaja en la capa de red, transportando la información entre redes; el TCP
(Protocolo de Control de la Transmisión) que trabaja sobre la capa de transporte y es el encargado de mover la información entre puntos finales6; el UDP (Protocolo de Datagramas del Usuario) que trabaja sobre la capa de transporte, lleva información entre los puntos finales de la comunicación. Otro protocolo es el ICMP (Protocolo de Control de los Mensajes de Internet), el cual transporta los mensajes de los errores en la red y se usa para notificar condiciones anormales.
Dentro de las redes que trabajan con TCP/IP se encuentra la Internet, una red de alcance mundial y con libre acceso que actualmente carece (casi por completo) de las funciones de seguridad en la transmisión de la información.
Algunos puntos importantes relacionados con el tema de la seguridad de la información que deben ser considerados son:
- La protección de la integridad de la información. - La protección de la disponibilidad de la red.
- La protección de la confidencialidad de la información.
Al proponer una solución a estos problemas entramos al amplio tema del encriptamiento, de la autenticidad y de hacer privada la información por medio de TI.
Tener una forma de asegurar la integridad de la información en la red es de suma importancia tanto para los usuarios, como para los diseñadores de programas. De no existir la protección necesaria, la información estaría expuesta ante cualquier usuario con intenciones de indagar, alterar o borrar cualquier dato transmitido, lo que representa un alto riesgo, pérdida de tiempo y dinero.
1.1. INTRODUCCIÓN
Una Tarjeta Inteligente (TI) es una tarjeta de plástico, que tiene las dimensiones de una tarjeta bancaria según los estándares internacionales. Contiene un Circuito Integrado (CI) que es un microprocesador incrustado. Este microprocesador hace la diferencia entre la Tarjeta Inteligente y las demás tarjetas con Circuitos Integrados, también conocidas como "tarjetas chip" que sólo cuentan con memoria.
La norma IS0-7816 clasifica dichas tarjetas en tres grupos: Tarjetas de Memoria (TM), Tarjetas Lógicas (TL) y Tarjetas Inteligentes (TI). Los tres tipos tienen un CI incrustado con memoria EPROM7. Las TI, contienen además un microcontrolador programable y cierta cantidad de memoria operativa RAM.
En el caso de las TI, el microprocesador puede procesar diferentes tipos de información y por consiguiente diversas industrias están interesadas en su versátil uso.
Inicialmente el sistema operativo, el lenguaje ensamblador y el software de aplicación de las TI, eran un secreto y solamente se utilizaban para fines militares, pero hoy en día están presentes en los estándares de la ISO8 y ANSI9 y son desarrollados por empresas como Bull CP8, Gemplus-DataCard, SCS, ORGA Giesecke&Devrient, Schlumberger entre otras.
Compañías importantes, tales como: Microsoft, IBM, HP, Siemens, están desarrollando tecnología propia para integrar las TI en sus productos de redes más novedosos, por lo que se espera que sean un modelo a seguir dentro de la gama de aplicaciones que ofrecen.
Hay múltiples aplicaciones que involucran una TI como almacenamiento de dinero para realizar pagos de servicios; por ejemplo: en estacionamientos, gasolineras, lavanderías, teléfonos públicos, transporte, teléfonos celulares, compras en Internet, control de accesos. Por todas estas aplicaciones y muchas más, están consideradas como una herramienta indispensable en el futuro del comercio electrónico.
Las TI pueden comunicarse a través de un lector con una gran variedad de dispositivos como: terminales punto de venta, cajeros automáticos, computadoras personales10, teléfonos celulares, teléfonos públicos, dispositivos de acceso a edificios, etc. y pueden ejecutar transacciones seguras a través de Internet.
Actualmente se están desarrollando programas para controlar planes de pago con la tarjeta inteligente en diferentes países del mundo y proyectos con TI que integran aplicaciones como el registro de personas, hospedajes, control de comidas, accesos a eventos, reservaciones, compra de productos en máquinas automáticas, etc.
7 EPROM Memoria programable borrable de las siglas "Electrically Eraseble Programmable Read Only Memory" 8 ISO (International Standars Organization)
9 ANSI (American National Standars Institute). 10 Computadoras Personales, “Personal Computers” (PC)
En algunos países la tarjeta se utiliza en servicios para los estudiantes en las universidades incluyendo: acceso al campus, identificación para inscripciones, pago de fotocopias, cafetería, gimnasios, almacenamiento de datos como horarios, calificaciones, etc.
También otros países han optado por ofrecer el pago de servicios con el uso de TI a través de cajeros electrónicos o vía Internet. En fin, existe una gran variedad de transacciones que se realizan con el uso de TI, en México se ha instalado un monedero electrónico para realizar compras desde los teléfonos públicos o cualquier equipo de cómputo conectado en red.
Como se puede observar las TI representan un sin número de aplicaciones que algunos países ya están desarrollando rápidamente dando pie a la creatividad de los fabricantes de hardware y software para las necesidades del futuro, como son el almacenamiento más rápido y eficiente o nuevas aplicaciones de seguridad que es el tema de esta tesis.
Seguridad con Tarjetas Inteligentes
Las TI pueden ofrecer altos niveles de seguridad, por ejemplo: en la transmisión de información y en las transacciones electrónicas que operan en ambientes tan abiertos como la Internet, Intranets y redes bancarias. En las TI se tiene la facilidad de implementar algoritmos como el DES, 3DES y RSA (1024 bits) que pueden usarse para proteger los datos transmitidos y que incluyen procesos de autenticidad, manejo de códigos secretos y firmas electrónicas.
Como ya se había mencionado anteriormente, las TI cuentan con toda la potencia de un microprocesador integrado que puede almacenar llaves criptográficas y certificados electrónicos, esto representa una forma más segura de almacenamiento con respecto a un disco duro, el cual pudiera llegar a fallar, ser dañado con virus o sufrir pérdida de información por errores humanos. Otro factor a favor en las TI es la facilidad de portar consigo una identificación electrónica lista para ser utilizada en cualquier sistema que se le requiera o para agilizar la marcación de números telefónicos remotos, el acceso a direcciones de red o almacenamiento de información importante.
1.2. PLANTEAMIENTO
La idea principal del proyecto es: utilizar Tarjetas Inteligentes y sus lectores correspondientes para mejorar la seguridad en las redes TCP/IP. Se usaron TI, con funciones criptográficas.
El lector se conecta a cualquier PC, por medio de su puerto serial, sirviendo de interfaz entre la Tarjeta Inteligente y la computadora (PC). Una vez instalado el lector, se puede hacer uso de la TI, para la transportación de información encriptada que viaja por la red de forma más segura. La Internet, ofrece una gama de servicios, en los que es necesario garantizar la seguridad de la información ya que se desarrolló para un ambiente abierto completamente.
La TI, por su capacidad de procesamiento y almacenamiento de información independiente del hardware de la red, nos brinda la herramienta ideal para lograr la seguridad requerida y el almacenaje de llaves de encriptamiento.
Las partes desarrolladas son: la instalación del lector en la PC, el desarrollo de un programa con interfaz para el usuario final que controle las funciones de la tarjeta inteligente y las funciones del lector de tarjetas en las aplicaciones de encriptamiento y desencriptamiento.
En este proyecto están involucradas varias áreas de las ciencias de la computación, como son: el conocimiento de redes de computadoras, el conocimiento de TCP/IP, la arquitectura de computadoras como son los puertos serie y la arquitectura del sistema mínimo de computadora que representa la TI, el diseño de programas de uso específico en lenguaje propietario de la TI y en C, la lógica digital, la electrónica en general y la criptografía.
1.3. OBJETIVO PRINCIPAL
Diseñar y desarrollar un programa de aplicación para el encriptamiento, utilizando Tarjetas Inteligentes (hardware), con un enfoque para lograr mayor seguridad en la transmisión de información, en las redes TCP/IP.
1.3.1. OBJETIVOS PARTICULARES
• Analizar los algoritmos de seguridad en la transmisión de datos, para ser desarrollados con las herramientas que la TI y el software de programación desarrollado proporcionan, con un enfoque hacia el encriptamiento, la confidencialidad y la autenticidad de la información. • Crear y ejecutar los algoritmos necesarios, a fin de generar una aplicación para mejorar la
seguridad en la transmisión de información en las redes TCP/IP.
1.3.2. ALCANCE
En este proyecto se desarrolló un programa para una aplicación con TI, enfocado a la seguridad de la información transmitida en redes TCP/IP encriptándola. No existe programa similar en nuestro país, por lo que representa una aportación al uso de las TI en la transmisión segura de datos.
El criptoprocesador que tiene la TI aprovecha las ventajas de los algoritmos RSA y triple DES que al combinarlos, proporcionan la seguridad que se requiere en una red mundial como la Internet. Este método al combinar dos algoritmos de encriptamiento y utilizar software y hardware representa una innovación a nivel Nacional.
De acuerdo a la investigación realizada hasta el momento no hay un procedimiento fidedigno que asegure su invulnerabilidad con recursos y tiempo limitado.
2. BASES TEÓRICAS DEL DESARROLLO
2.1. DESCRIPCIÓN DE TARJETAS INTELIGENTES
La función básica de las Tarjetas Inteligentes, es la de almacenar la información de forma visual, tangible y electrónica, que identifique a su portador y que pueda sustentar las transacciones que sean posibles y válidas.
La información visual sobre la TI, puede presentarse por medio de gráficos, fotografías, hologramas o códigos de barras. Es tangible por medio de realzado y electrónica, a través de mecanismos como: bandas magnéticas, que se siguen usando en las tarjetas de crédito o bien por medio de un Circuito Integrado (CI) incrustado, el cual es su principal característica.
La TI es la transición de una tarjeta de identificación a una “ficha de identificación” capaz de protegerse a sí misma al intentar ser falsificada, en caso de robo o pérdida. Tiene diversas ventajas sobre las tarjetas de banda magnética, es más resistente a variables externas, como campos magnéticos, además de que tiene la capacidad de alcanzar mejor desempeño que las tarjetas de crédito convencionales.
El ISO/IEC 7810, define las características físicas de las tarjetas de identificación, las dimensiones generales y forma establecidas para las “Tarjetas de Crédito” y para las Tarjetas Inteligentes.
Existen estándares para el uso de TI en aplicaciones específicas como salud, transportación, en la banca, comercio electrónico e identidad. También existen estándares para nuevos tipos de TI, lo cual nos confirma que el ISO 7816 no es el único.
El ISO 7816 define las características de la Tarjeta Inteligente como son: • Características físicas, dimensiones y posición de los contactos • Señales electrónicas
• Protocolos de transmisión • Comandos de instalación
La TI, es una tarjeta plástica de alto desempeño, es rectangular de 85.6 mm de ancho por 53.98 mm de alto y 0.76 mm de espesor. Contiene un circuito integrado incrustado en el frente que debe medir 2 mm de ancho por 1.7 mm de alto.
En cuanto a la comunicación entre la Tarjeta Inteligente y el lector, a la TI se le denomina como esclavo y al lector como maestro. Esto se refiere a que la comunicación es regida por el lector y que la tarjeta debe responder de acuerdo a éste.
El canal de comunicación es de un sólo conducto, una vez que el lector envía un comando a la tarjeta inteligente, ésta se bloquea hasta que recibe una respuesta de que los contactos están correctamente alineados, previendo un serio daño. Cuando el lector detecta que los contactos ya están alineados la energía es enviada a la TI.
2.1.1. CARACTERÍSTICAS FÍSICAS DE UNA TARJETA INTELIGENTE
Las TI, también llamadas tarjetas de seguridad inteligentes del inglés –“intelligent secure card”, “chip card” o “smart card”, presentan una gran variedad de facetas, dependiendo principalmente del tipo de circuito integrado "chip" incrustado en la parte plástica y de los tipos de mecanismos de conexión entre la tarjeta y el lector de tarjetas.
Una necesidad de crear las TI fue la de poder almacenar información de forma segura y práctica para realizar ciertas actividades.
Estas características se desarrollaron con base a los principales elementos contenidos en cualquier sistema de cómputo, como se muestra en la figura 2.1.
Fig. 2.1: Elementos contenidos en la Tarjeta Inteligente
Específicamente todos los componentes básicos de un sistema de cómputo están incorporados dentro de un Circuito Integrado. Las conexiones físicas entre los componentes del CI están cubiertas con una estructura monolítica de silicio.
El alto nivel de integración de los componentes del CI de la tarjeta dificulta que las señales que pasan a través de los componentes del CI sean interceptadas. Por lo tanto, la interconexión obtenida resulta ser más segura que un sistema de cómputo con conexiones físicas macroscópicas entre los componentes.
En adición al seguro intercambio de información entre los módulos que componen el sistema del CI, las pequeñas dimensiones de éste permiten montar el CI en una tarjeta plástica de dimensiones similares a la de una de crédito bancario. Cuando se inserta el CI en una tarjeta bancaria, el portador somete a la tarjeta a diferentes esfuerzos físicos, transportándola de un lado a otro, por ejemplo: en un bolsillo del pantalón; este tipo de fuerzas afectan a un sistema de cómputo convencional que tiene la unión de sus partes con alambrado o pistas de conducción macroscópicas. Sin embargo, a un diseño microscópico, no le afectan este tipo de fuerzas por tener todos sus componentes integrados.
Para lograr el menor tamaño del CI, es necesario tomar en consideración la resolución de la tecnología utilizada para crear el chip, la cual se caracteriza por lo siguiente:
• La llamada "medida característica", (por ejemplo; el tamaño de un sólo transistor integrado dentro del CI) unidad en micrones.
• El ancho del "bus" interno del procesador, es decir, si es de 8 bits, 16 bits, 32 bits o 64 bits. • El tipo de memoria utilizado; por ejemplo: RAM, ROM, EPROM.
• Elementos auxiliares tales como: filtros de voltaje, potencia, frecuencia de alimentación y los registros en el mapa de memoria.
2.1.2. SEGURIDAD OFRECIDA POR LA TARJETA INTELIGENTE
Ante todo una Tarjeta Inteligente es esencialmente una plataforma de computación segura, esto es un lugar a salvo para información valiosa tal como llaves privadas, números de cuenta, contraseñas “passwords”, o el historial médico. También es una plataforma de procesamiento segura, es decir, es el lugar adecuado para realizar el procesamiento de la información sin exponerla al mundo externo. Ejemplos de ello serían procesamiento de llaves criptográficas públicas y privadas. Así es como se puede afirmar que las TI proporcionan el más seguro acceso a redes de computadoras utilizando sistemas con tecnología de llaves públicas.
Uso de la Tarjeta Inteligente a través de la infraestructura de la red
La tarjeta genera y almacena el par de llaves privada y pública, puede procesar el encriptamiento y desencriptamiento de los datos, además puede almacenar certificados electrónicos, aplicaciones específicas y/o datos adicionales.
2.1.3. SOFTWARE DE LAS TARJETAS INTELIGENTES
Existen fundamentalmente dos tipos de software en las TI:
El primero, es el software en el servidor, el cual consta de una serie de programas que corren en una computadora conectada a una Tarjeta Inteligente y que también se conoce como el software del lado del lector de tarjetas. La mayor parte de las tarjetas trabajan con el software en el servidor, éste se escribe en una computadora o en estaciones de trabajo "workstations", incorporando a la TI dentro de su sistema.
El software del servidor normalmente es una aplicación para el usuario final quien tiene interacción con los diferentes niveles de acceso de los lectores de la Tarjeta Inteligente, en resumen el software en el servidor incluye todo el soporte de la infraestructura administrativa de la tarjeta.
El software en el servidor se escribe en lenguajes de programación de alto nivel que se encuentran en las estaciones de trabajo, por ejemplo: lenguaje C, C++, Java, BASIC, COBOL, PASCAL, o FORTRAN y están mezclados con librerías y dispositivos de entrada/salida para el manejo de accesos e interconexión de los lectores de TI.
El segundo, es el software de la tarjeta, el cual como su nombre lo indica corre la aplicación sobre la tarjeta misma, por lo que es denominado también como “software del lado de la tarjeta”. Este software está catalogado como "las funciones y el software de aplicación del sistema operativo de la tarjeta".
Para muchas aplicaciones es suficiente el software incluido en la tarjeta pero en ocasiones es requerida una aplicación específica la cual puede ser desarrollada en lenguaje ensamblador o lenguaje de alto nivel.
El software de aplicación utiliza la capacidad de cómputo y almacenamiento de datos que tiene la tarjeta, haciéndolos relativamente independientes de la integridad de otra máquina, lo que aumenta la seguridad.
El software del servidor sustituye a la tarjeta para un desarrollo alternativo de la misma aplicación. Por ejemplo, cuando un historial médico es guardado fuera de la tarjeta en un lugar como un disco duro o base de datos en un servidor central.
Para integrar el software de la Tarjeta Inteligente desde "el lado del servidor", con el software del "lado de la tarjeta", se tiene que tomar en cuenta en la programación, que el software del lado de la tarjeta pone más atención en el tipo o modelo de tarjeta utilizada. El software de "lado de la tarjeta", provee servicios de cómputo para aplicaciones que tienen acceso a la información y protege este contenido de otras aplicaciones que pueden, de forma indebida intentar el acceso a la información. El software creado del "lado de la tarjeta" está pensado para operar con diferentes tipos y versiones de TI, así como también con varios tipos de lectores.
Cuando se desarrolla el software del lado de la tarjeta se adoptan las propiedades de seguridad y las reglas de una tarjeta en particular. Por ejemplo, el programa que se encuentra en ejecución no muestra la información almacenada en la tarjeta, a menos que se presente un código de
identificación personal (PIN). Otro ejemplo es un programa que se ejecuta en la tarjeta y que puede calcular una firma electrónica utilizando una llave privada almacenada en la misma Tarjeta Inteligente. El software ejecutándose sobre la TI provee seguridad, autorizando el acceso a los datos almacenados en ella. Esto es determinado por el tipo de TI y por las entidades del sistema como por ejemplo: las personas, computadoras, terminales, vídeo juegos, etc.
El software del lado del servidor conecta a la Tarjeta Inteligente y al usuario con el sistema. Por ejemplo, un programa ejecutándose en una terminal tipo ATM, del inglés (Automatic Teller Machine) puede solicitar la inserción de una TI, para identificar a un cliente y así darle acceso a los servicios que se tienen en el servidor.
Software de Seguridad
Las llaves están almacenadas en la tarjeta, los algoritmos y los protocolos están desarrollados en el software del lado de la tarjeta.
La criptografía principalmente se utiliza para autentificar las entidades del sistema, tales como usuarios, tarjetas, terminales y para encriptar la comunicación entre la tarjeta y el mundo exterior. Las funciones criptográficas se crean dentro de la tarjeta para su propia seguridad o también pueden ser desarrolladas para proporcionar seguridad en sistemas externos. La protección brindada por la propia seguridad de la tarjeta garantiza la seguridad en las aplicaciones externas. Antes de que la tarjeta permita el acceso a los recursos, ésta debe determinar quien intenta hacer uso de los mismos. Similarmente antes de que ésta sea aceptada por otras entidades del sistema, la tarjeta debe ser capaz de probar quien es ella y si es auténtica, entonces una de las primeras actividades que debe realizar la tarjeta cuando es activada es autentificar las entidades del sistema, primero la persona que insertó la tarjeta, después la terminal donde fue insertada, ella misma y algunas o todas las entidades del sistema.
Un simple procedimiento para autentificar, es la posesión de un código de acceso como un PIN de 4 dígitos o puede ser más complicado mediante la codificación de un mensaje llamado reto o "challenge" con una llave o algoritmo en particular.
Si en alguna parte del proceso de autenticidad alguna entidad demuestra que no es quien dice ser, toda comunicación con la entidad es bloqueada. Un historial de las fallas puede ser almacenado en la Tarjeta Inteligente y después de cierto número de intentos fallidos, la tarjeta puede dejarse bloqueada para cualquier tipo de acceso posterior o inclusive puede destruirse su información. El encriptamiento puede ser aplicado a todos los mensajes que van desde la Tarjeta Inteligente o hacia ella o sólo puede ser aplicada sobre algunos de los mensajes. Si una TI se está comunicando con dos aplicaciones simultaneas, estas pueden ser tratadas con diferentes llaves de encriptamiento.
Los programadores de TI normalmente no tienen que diseñar nuevos programas de encriptamiento o autenticidad ya que utilizan las características construidas en la tarjeta. Estas características vienen probadas y garantizan un razonable nivel de confianza.
A continuación se muestran algunos algoritmos de encriptamiento, utilizados en diferentes tipos de tarjetas.
Algoritmo Usos en tarjetas
DES y 3DES Canales de comunicación
A3 y A8 Telefonía celular móvil GSM
Curvas elípticas Firmas electrónicas
TSA7 Historial médico
RSA Firmas electrónicas
2.2. CRIPTOGRAFÍA
La criptografía es una operación matemática aplicada a los datos haciéndolos ilegibles durante la transmisión entre dos puntos. El archivo normal es convertido al archivo encriptado por medio de llaves que deben ser iguales o relacionadas en ambos lados.
La criptología del griego "criptos" (oculto) y "logos" (tratado) es el nombre genérico con el que se designan dos disciplinas opuestas y a la vez complementarias: la Criptografía y el Criptoanálisis. La Criptografía se ocupa del diseño para encriptar o enmascarar una cierta información de carácter confidencial. El Criptoanálisis, por su parte, se ocupa de romper esos procedimientos de cifrado o encriptamiento para así recuperar la información original y hacerla entendible nuevamente.
Es obvio pensar que las dos disciplinas se han desarrollado de forma paralela, ya que toda información cifrada o encriptada lleva siempre implícito el método para su criptoanálisis o desencriptamiento.
En realidad, el arte de la Criptografía como medio para proteger la información es tan antiguo como la propia escritura. Este arte permaneció durante siglos ligado solamente a los círculos militares y diplomáticos pero en la actualidad las necesidades son diferentes popularizándose rápidamente para mantener la transmisión de la información por Internet de una manera íntegra.
Véase la figura 2.2, el método de llave secreta en donde ambos usan la misma llave para encriptar y desencriptar.
Encriptamiento Desencriptamiento
Fig. 2.2: Encriptamiento y desencriptamiento, sistema de llaves secretas, simétrico
Existen dos tipos generales de esquemas de seguridad, el de llaves secretas y el de llaves públicas:
En un sistema de llaves secretas, el que envía y el que recibe el mensaje deben usar la misma llave para encriptar y para desencriptar los datos como se observa en la anterior figura 2.2.
El manejo de llaves secretas es un procedimiento en el cual todas las partes deben poseer la misma llave y que nadie externo debe obtener acceso a las llaves ya que se vería comprometido el sistema completo.
En un sistema de llaves públicas existen de igual forma dos llaves, pero una es secreta, llamada la llave privada y la otra llave es la pública.
Las llaves no son las mismas pero están relacionadas matemáticamente.
La llave privada, es guardada en secreto por el propietario y no puede ser determinada con la llave pública, esta es libremente distribuida hacia los destinatarios elegidos para la comunicación. La tecnología para criptografía con llaves públicas y privadas, utilizada para la seguridad en redes fue desarrollada por la compañía RSA Data Security. Sin embargo, el uso de la tecnología de llaves secretas está restringido en algunos países.
La tecnología de llaves públicas implica complicados cálculos matemáticos y esto significa que el proceso de encriptamiento y desencriptamiento puede llevarse mucho tiempo como para lograr transacciones eficientes a gran velocidad.
Llave secreta Llave
Los cálculos de las llaves secretas utilizando el algoritmo DES son mucho más rápidos que los cálculos de las llaves usando el algoritmo RSA debido a que DES utiliza llaves de 64 bits en esta aplicación y RSA, llaves de 1024 bits.
Una forma de solucionar este problema es combinando las tecnologías DES y RSA.
En lugar de almacenar llaves secretas en la TI, es mejor utilizar la función del generador de llaves utilizándola como una llave secreta por sesión.
La llave de encriptamiento que se genera por sesión con la función de la TI, se utiliza para encriptar el mensaje original con el algoritmo DES, siendo a su vez encriptada la llave de sesión con la llave pública utilizando el algoritmo RSA.
El archivo encriptado y la llave encriptada viajan por la red hacia su destino de forma independiente.
La llave de sesión es desencriptada utilizando la llave privada que tiene el receptor con el algoritmo RSA y con la llave de sesión recuperada, se aplica el inverso del algoritmo DES al mensaje que llegó encriptado para obtener el mensaje original en el destino.
Véase en la figura 2.3, el sistema de llaves privadas y públicas propuesto.
Al final de la recepción, la llave de sesión es desencriptada por la tarjeta y utilizada para el desencriptamiento. Una vez que se termina de utilizar la llave de sesión ésta es destruida.
Integridad de los datos, por medio de TI
El uso de firmas digitales es el método más común para mantener la integridad de los datos. Un algoritmo de funciones de dispersión "hashing" es aplicado al mensaje original para producir un compendio "digest" del mensaje. La operación de las funciones de dispersión "hashing" puede ser realizada en la PC o en la TI. La llave pública de quien envía, es utilizada para encriptar el compendio "digest" que a su vez se utiliza para crear la firma digital. Véase en la figura 2.4, integridad de los datos por medio de las funciones de dispersión "hashing".
Fig. 2.4: Integridad de los datos por medio de funciones de dispersión "Hashing"
Una firma digital es una combinación del mensaje original y de la llave privada enviada. La llave privada de quien envía es usada para encriptar el compendio "digest" del mensaje. El compendio "digest" se crea corriendo el mensaje a través de lo que se llama un "algoritmo de funciones de dispersión "hashing", el cual reduce los mensajes a un único y compacto paquete de datos. La firma digital es llamada una firma de dispersión "hash". A través de este proceso la firma digital es única para el que envía.
Diferente al pensamiento de la mayoría, de que la firma digital es la imagen digitalizada de una firma, la firma digital es un procedimiento matemático que se ejecuta para lograr un paquete de datos único y que conste que fue emitido por la parte transmisora.
Véase en la figura 2.5, el paso de la llave secreta encriptada con RSA y el archivo con DES que se asemeja a la transmisión de una firma electrónica.
Fig. 2.5: Envío de llave secreta encriptada con RSA y archivo con DES
El archivo original es enviado separado de la firma. El receptor desencripta la firma con la llave pública del transmisor y obtiene el compendio "digest" del mensaje.
El recipiente también somete el archivo original a la misma operación con el algoritmo de las funciones de dispersión "hashing" que el transmisor realizó y compara el resultado con el del compendio "digest". Si son iguales, el mensaje original fue recibido sin alteración.
La firma digital también se utiliza para la autenticidad y el no repudio. Por ejemplo, el receptor está seguro de que el mensaje llegó del transmisor y sólo del transmisor porque es sólo con la llave pública del transmisor con la que se puede desencriptar el compendio "digest" y el archivo encriptado.
2.2.1. DES
"Data Encryption Standard" DES (norma de encriptamiento de datos), es un algoritmo de encriptamiento para la protección de datos durante su transmisión y almacenaje.
El chip DES es un producto estratégico en E.U.A. y no está permitida su exportación sin un permiso especial. El ANSI (American National Standards Institute) adoptó el DES con el nombre de Data Encryption Algorithm (DEA).
"Encriptamiento en bloque" se le denomina a aquel mensaje encriptado en grupos (bloques) de dos o más componentes.
El encriptamiento en bloque se compone de cuatro elementos: • Transformación inicial
• Una función criptográficamente débil iterada r veces • Transformación final
• Algoritmo de expansión de llave
DES es un algoritmo de encriptamiento en bloque; la longitud del bloque es de 64 bits y la longitud de la llave es de 56 bits, lo que equivale a que existan:
2 56= 7,2 x 10 16 llaves diferentes.
La norma contempla que DES pueda ser implementado mediante un circuito integrado electrónico y su descripción completa se puede conseguir en forma de FIPS, (Federal
Information Processing Standars).
DES trabaja alternativamente sobre las dos mitades del bloque a encriptar de la siguiente forma y secuencia:
1. Se hace una permutación inicial fija y por tanto, sin valor criptográfico. 2. Se divide el bloque en dos mitades, derecha e izquierda.
3. Se realiza una operación modular que se repite 16 veces; esta operación consiste en sumar módulo 2 a la parte izquierda con una transformación g (k1) de la parte derecha, que a su vez está gobernada por una llave k1.
4. Se intercambian las partes derecha e izquierda.
5. Se omite el intercambio en la vuelta número 16, pero se remata el algoritmo con una permutación final que es la inversa de la inicial.
Para desencriptar el DES basta con repetir la operación modular, que es una involución, es decir, su aplicación repetida dos veces conduce a los datos originales. No es preciso invertir la transformación g (k1) sino repetirla, esto permite que dicha transformación sea una función de un sólo sentido, empleando operaciones no lineales.
Las propiedades fundamentales de DES son:
• Dependencia entre símbolos; cada bit del archivo encriptado es una función compleja de todos los bits de la llave y de todos los bits del archivo original dividido en bloques.
• Cambio de los bits de entrada; un cambio de un bit en el mensaje original produce el cambio aproximadamente del 50% de los bits del bloque encriptado.
• Cambio de los bits de la llave; un cambio en un bit de la llave produce aproximadamente, el cambio de la mitad de los bits del bloque encriptado.
Criptografía Simétrica
La criptografía simétrica se refiere al conjunto de métodos que permiten tener comunicación segura entre las partes siempre y cuando anteriormente se hayan intercambiado la llave correspondiente que llamaremos llave simétrica. La simetría se refiere a que las partes tienen la misma llave tanto para encriptar como para desencriptar. Este tipo de criptografía se conoce también como criptografía de llave privada.
Existe una clasificación de este tipo de criptografía en tres familias, la criptografía simétrica de bloques ("block cipher"), la criptografía simétrica de lluvia ("stream cipher") y la criptografía simétrica de dispersión (“hash functions”). Con ligeras modificaciones, un sistema de criptografía simétrica de bloques puede modificarse para convertirse en alguna de las otras dos formas. Sin embargo se usan en diferentes aplicaciones.
La criptografía simétrica ha sido la más usada en toda la historia, ésta ha podido ser empleada en diferentes dispositivos: manuales, mecánicos, eléctricos y hasta con algoritmos actuales que son programables en cualquier computadora. La idea general es aplicar diferentes funciones al mensaje que se quiere encriptar de tal modo que sólo conociendo una llave pueda aplicarse de forma inversa para poder así desencriptar.
DES es un sistema criptográfico, que toma como entrada un bloque de 64 bits del mensaje y éste se somete a 16 interacciones con una llave de 56 bits. En la práctica el bloque de la llave tiene 64 bits, ya que a cada conjunto de 7 bits se le agrega un bit que puede ser usado como de paridad. Dependiendo de la naturaleza de la aplicación, DES tiene cuatro modos de operación para poder implementarse: ECB (Electronic Codebook Mode) para mensajes cortos, de menos de 64 bits, CBC (Cipher Block Chaining Mode) para mensajes largos, CFB (Cipher Block Feedback) para encriptar bit por bit ó byte por byte y el OFB (Output Feedback Mode) el mismo uso pero evitando la propagación de error.
En la actualidad no se ha podido romper el sistema DES desde la perspectiva de poder deducir la llave simétrica a partir de la información interceptada, sin embargo con un método a fuerza bruta, es decir probando alrededor de 256 posibles llaves, se pudo romper DES en Enero de 1999. Lo anterior quiere decir que, es posible obtener la llave del sistema DES en un tiempo relativamente corto, por lo que lo hace inseguro para propósitos de alta seguridad. La opción que se ha tomado para poder suplantar a DES ha sido usar lo que se conoce como encriptado múltiple, es decir aplicar varias veces el mismo algoritmo para fortalecer la longitud de la llave, esto ha tomado la forma de un nuevo sistema de encriptamiento que se conoce actualmente como triple-DES o 3DES.
2.2.2. 3DES
El funcionamiento de 3DES consiste en aplicar tres veces DES de la siguiente manera: la primera vez se usa una llave K1 junto con el bloque B0, de forma ordinaria E (de encriptamiento), obteniendo el bloque B1. La segunda vez se toma a B1 con la llave K2, diferente a K1 de forma inversa, llamada D (de desencriptamiento) y la tercera vez a B2 con una llave K3 diferente a K1 y K2, de forma ordinaria E (de encriptamiento), es decir, aplicando de la interacción 1 a la 16 a B0 con la llave K1, después se aplica de la 16 a la 1, a B1 con la llave K2, finalmente se aplica una vez más de la 1 a la 16 a B2 usando la llave K3, obteniendo finalmente a B3.
Este sistema 3DES usa entonces una llave de 168 bits, aunque se ha podido mostrar que los ataques actualmente pueden romper a 3DES con una complejidad de 2112 operaciones, es decir efectuar al menos 2112 operaciones para obtener la llave a fuerza bruta, además de la memoria requerida. Se optó por 3DES ya que se aplica de forma similar al DES pero proporciona mayor seguridad.
En los últimos 20 años se han diseñado una gran cantidad de sistemas criptográficos simétricos, entre ellos están: RC-5, IDEA, FEAL, LOKI'91, DESX, Blowfish, CAST, GOST, etcétera. Sin embargo, no han tenido el alcance de DES, a pesar de que algunos de ellos tienen mejores propiedades.
Podemos afirmar que el estádo actual de la criptografía simétrica es la búsqueda continua de nuevos algoritmos como por ejemplo el AES/Rinjdael que es una combinación de AES (Advanced Encryption Standard) y del algoritmo desarrollado por Joan Daemen y por Vincent Rijmen (Rijndael) que pasó a ser un estándar en Noviembre del 2001 ante el National Institute
for security Technologies (NIST) que se encuentra en U.S.A.
AES/Rinjdael es un algoritmo que al igual que DES, trabaja con llaves simétricas y es de encriptamiento por bloques, sin embargo el tamaño de los bloques es de 128 bits y las llaves de encriptamiento van desde tamaños de 128 bits hasta 256 bits.
2.2.3. RSA
El Criptosistema RSA, fue inventado en 1978 por R.L. Rivest, A. Shamir y L. Adleman en el MIT (Massachusetts Institute of Technology).
Para poner en práctica el RSA necesitamos dos números primos grandes p y q. Después para encriptar un mensaje haciendo uso del RSA usamos n = p q, por lo tanto debemos conocer p y q para el desencriptamiento.
La seguridad de RSA depende de lo difícil que es factorizar n ya que hay que encontrar a los números primos p, q y estos son números muy grandes. La llave pública usada por el criptosistema RSA es un número muy grande. Los números primos p y q, deben de mantenerse secretos y el entero n formado parte de la “llave pública”.
En aplicaciones prácticas este número tiene más de 200 dígitos. Para trabajar con un número tan largo necesitamos una computadora potente si se quieren realizar las operaciones necesarias en un tiempo razonable.
RSA (Rivest, Shamir y Adleman), los apellidos antes mencionados se refieren a los creadores del RSA basados en el modelo, Diffie-Hellman que resuelve 3 deficiencias de los modelos de llave secreta anteriormente propuestos y son:
1. La distribución de las llaves en el sistema 2. El manejo del número de llaves n(n-1)/2 3. No tienen firma digital
El algoritmo de llave pública RSA puede ser formado por distintas longitudes de llaves, con las siguientes características:
• Contra más larga sea la llave más difícil es descubrir el mensaje.
• Las llaves más complejas son de 2048 bits y las estándar son de 1024 bits. • Está basado en dos números primos cada número > 200 dígitos.
Véase figura 2.6 que muestra un diagrama de flujo simplificado del algoritmo RSA.
Fig. 2.6: Diagrama de flujo simplificado del Algoritmo RSA
En el caso de RSA, el problema matemático es el de factorizar un número entero "n" de tamaño grande (1024 bits), este número entero se sabe es producto de dos números primos p, q de la misma longitud, entonces la llave pública es el número n y la privada es p, q. El razonamiento del funcionamiento de RSA es el siguiente:
a. A cada usuario se le asigna un número entero n, que funciona como su llave pública. b. Sólo el usuario respectivo conoce la factorización de n (o sea p, q), que mantiene en
secreto y es la llave privada.
c. Existe un directorio de llaves públicas.
d. Si alguien quiere mandar un mensaje m entonces elige la llave pública e y se aplica la operación c=memod n y se crea el mensaje encriptado c, (que sólo podrá desencriptar el usuario con la llave correspondiente).
e. Una vez que se realizaron los pasos anteriores el mensaje c puede viajar sin problema por cualquier canal inseguro.
f. Cuando la información encriptada llega a su destino el receptor procede a desencriptar el mensaje con la siguiente fórmula: m= cd mod n.
g. Estas formulas son inversas y por lo tanto dan el resultado deseado donde d, es tal que (d, e) mod z = 1 y z= (p-1) (q-1).
En términos muy generales es así como funciona el sistema RSA. Sin embargo en la realidad existen dos formas que son las más comunes, estas formas dependen de la aplicación y se llaman el esquema de firma y el esquema de encriptamiento, a continuación se describe el esquema de encriptamiento.
Esquema de encriptamiento
Uso: este esquema se usa principalmente para encriptar llaves de sistemas simétricos (llaves de 128 bits aproximadamente)
1. Se toma el mensaje M (por ejemplo con una llave simétrica de 128 bits), como en la práctica actual es recomendable usar bloques de longitud de 1024 bits los complementa, esos 128 bits con una serie de técnicas para obtener uno de 1024 bits, después se aplica un proceso de codificación para que la computadora entienda el mensaje como un número entero m.
2. Se le aplica la fórmula de encriptamiento de RSA al entero m. 3. Se envía el número entero c.
4. Al recibir este número se aplica la fórmula de desencriptamiento al entero c para obtener el entero m.
Factorización y logaritmos discretos
Curiosamente, la inmensa mayoría de los algoritmos asimétricos que se usan en la actualidad se apoyan en problemas como el de la factorización o el de los logaritmos discretos. En realidad existen otros algoritmos que se basan en teorías diferentes, pero hoy por hoy no están suficientemente estudiados como para ser considerados seguros de forma general, por lo que no se suelen emplear en la práctica. Sistemas como RSA, Diffie-Hellman, e incluso la criptografía de curvas elípticas depositan su seguridad en estos dos problemas. Todos ellos descansan en la supuesta imposibilidad de resolverlos de forma algorítmicamente eficiente y se dice "supuesta" porque nadie ha demostrado que no pueda existir un algoritmo capaz de hacerlo de forma satisfactoria.
Complejidad algorítmica
Alguien podría decir que un algoritmo "eficiente" es cuando haya computadoras más y más rápidas, problemas que ahora son difíciles se podrán resolver y eso es radicalmente falso. En Teoría de Algoritmos, se define el orden de complejidad de un algoritmo como una función "Ø(n)" de la entrada "n". Esta medida nos dice cómo crece el tiempo de computación a medida que aumenta el tamaño de la entrada. Por ejemplo, si un algoritmo fuera cuadrático, es decir, Ø(n^2), se tiene que el tiempo de ejecución es proporcional al cuadrado de la entrada. Eso quiere decir que si sobre la entrada 2 tarda 4 minutos, sobre la entrada 10 debe tardar 100 y sobre 1000, 1,000,000 de minutos.
Según esto, si se desea factorizar un número, se puede tratar de dividirlo por todos los números menores que él, uno por uno. Suponiendo que la prueba de divisibilidad se ejecutara en un tiempo constante x - simplificación que en realidad no es cierta -, el algoritmo necesitaría aproximadamente n pasos para tratar el número n. Eso quiere decir que el programa puede factorizar sin problemas números pequeños pero si al ejecutarlo sobre un número de 1024 bits, se precisan llevar a cabo una cantidad de pasos elementales enorme.
Por desgracia, actualmente es imposible construir una máquina capaz de llevar a cabo semejante computación. [22]
Si por el contrario se pudiera encontrar un algoritmo capaz de resolver el problema anterior en un número de pasos proporcional, por ejemplo, al logaritmo de n, se podría factorizar un número de 1024 bits con cien veces más pasos que los que necesitaríamos para hacerlo con un número de tan sólo 10 bits. No se trata de tener máquinas más rápidas, que por supuesto ayudan, sino de investigar algoritmos con orden de complejidad menor, capaces de resolver los mismos problemas en menos pasos.
Tiempo de factorización en la práctica al aplicar RSA
Hoy en día, parece ser que en el problema de la factorización se ha avanzado enormemente, este gran impulso lo ha provocado en gran parte la criptografía y más concretamente el sistema RSA. Aunque se muestre que un algoritmo corre a tiempo subexponencial o más aún a tiempo polinomial, el tiempo de calendario (tiempo real en meses, días o minutos) puede variar mucho dependiendo de la entrada del algoritmo y del equipo de cómputo con que se cuenta. Existe una
forma de medir el potencial de cómputo y de esta forma determinar cuál sería el tiempo en calendario que llevaría factorizar un número entero ”grande”.
La notación “mips” significa millones de instrucciones por segundo y es tomada como medida estándar para registrar la potencia de cómputo con que se cuenta. Un mips tiene como origen la potencia de cómputo que realizaba una DEC VAX 11/780. Un "mipsy" significa el número de operaciones que se pueden realizar en un año con un poder de cómputo de un mips, es decir 31 536 x 109 instrucciones.
Seguridad en la red
a. Autenticidad
La autenticidad de las entidades (personas, computadoras-servidores o computadoras-clientes) que se encuentran en la red es; indicando que son los que realmente dicen ser, normalmente esta etapa se asegura con números de identificación personal NIP ó PIN (del inglés), datos biométricos como serían las firmas, la huella digital, intercambios de preguntas y respuestas o firmas electrónicas.
b. Autorización
Para tener acceso a la información o servicios dentro de la red usualmente se utilizan contraseñas (passwords) y números de cuenta para prevenir que extraños vean la información con sólo pasar las firmas digitales.
c. Confidencialidad
La confidencialidad de las transacciones entre entidades de la red utilizando técnicas criptográficas, es el evitar que extraños conozcan el contenido de la información almacenada. d. Integridad de la información
La integridad de la información que fluye a través de la red (que en algunos casos se considera dentro de la autenticidad), se asegura por medio de varios niveles de acceso a la red mediante técnicas criptográficas y firmas digitales.
e. Confirmación de la transacción
La confirmación de la transacción entre dos entidades de la red; significa que el autor de los datos no debe recibir reclamación por parte de los usuarios, para esto pueden utilizarse firmas electrónicas.
Como una manera de mantener alejados a los intrusos de la red se debe encriptar la información que fluye a través de ella y como un método auxiliar se debe usar secuencias de reconocimiento de respuesta. Por ejemplo:
Primero, la autenticidad del usuario de la tarjeta por medio de un PIN o huella digital, estos datos se teclean o introducen a un dispositivo de lectura y se comparan con la información que tiene la tarjeta grabada en su interior.
Como segundo paso la autenticidad de la tarjeta con el servidor, aquí el servidor genera un número aleatorio como “recibo” y lo envía a la tarjeta. El “recibo” es encriptado por la tarjeta utilizando una llave privada que está almacenada dentro de ella y posteriormente lo regresa al servidor. El servidor lo desencripta y verifica que el “recibo” corresponda al original.
Clasificación de seguridad según la vulnerabilidad de los algoritmos
Seguridad incondicional (teórica):
El sistema es seguro frente a un atacante con tiempo y recursos computacionales ilimitados. Seguridad computacional (práctica):
El sistema es seguro frente a un atacante con tiempo y recursos computacionales limitados. Seguridad probable:
No se puede demostrar su integridad, pero el sistema no ha sido violado. Seguridad condicional:
2.3. TCP/IP
La pila de protocolos TCP/IP, es de los protocolos más usados en todo el mundo y por esta razón se eligieron como medio para la comunicación e implementarle un método seguro de transmisión de la información.
En el caso de TCP/IP es mejor utilizar OSI sólo como modelo de referencia teórica y estudiar con detenimiento el verdadero modelo TCP/IP como se hace a continuación.
2.3.1. DIRECCIONES IP
El principal beneficio de IP es que es capaz de convertir un conjunto de redes físicamente distintas en una sola red aparentemente homogénea. Una red Internet, es una red IP aparentemente homogénea. La Internet es la red de redes. En realidad sólo es una interconexión de redes (inter-red) muy grande y que se extiende por todo el planeta. La característica de cualquier internet es que cada uno de los nodos tiene una dirección IP única y distinta a la de cualquier otro nodo. Las direcciones IP son cadenas de treinta y dos bits, organizadas como una secuencia de cuatro bytes. Todas las tramas11 IP llevan una dirección de origen (donde se originó la trama) y una dirección destino (a donde se dirige la misma).
Estas direcciones tienen una representación con cuatro números enteros separados por puntos y en notación decimal. Las direcciones representan la interfaz de conexión de un equipo con la red. Así, un anfitrión "host12" que está conectado a varias redes como regla general, no tendrá una única dirección de red, sino varias (normalmente una por cada red a la que está conectado). Pero internamente, esto es parcialmente cierto.
Las direcciones IP se dividen en dos partes (cada una con un cierto número de bits), cuyo significado tiene que ver con el sistema de ruteo de tramas.
La primera parte (cuya longitud no es fija y depende de una serie de factores) representa la red y debe ser igual para todos los anfitriones "hosts" que estén conectados a una misma red física. La segunda parte representa el "host" y debe ser diferente para todos los anfitriones "hosts" que están conectados a la misma red física.
El mecanismo de toma de decisión de IP, que hace que todas las tramas lleguen a su destino, es el siguiente:
Cuando la dirección origen y la dirección destino, están ambas en la misma red (esto se sabe porque su dirección de red es igual en ambas, la dirección de red será la consecuencia de sustituir
11 Trama "frame" , Unidad de datos en las capas física y de enlace de datos del modelo OSI. Una trama es el medio por el cual se transportan paquetes
o segmentos de datos.
por ceros toda la parte del anfitrión "host" en la dirección considerada) IP, supone que existe un mecanismo de nivel inferior (en este caso Ethernet, Token Ring, etc.) que se encarga de hacer llegar la trama hasta el anfitrión "host" destino. Cuando la dirección de red origen y la de destino no coinciden, entonces hay que rutear.
Para rutear, se dispone de una tabla que contiene entradas para cada una de las redes a las que se quieren hacer llegar tramas que no sean locales a este anfitrión "host".
Un anfitrión "host", en general, está conectado a varias redes, de las que hace de “gateway” (compuerta), si la dirección destino de la trama tiene una dirección de red que coincide con alguna de las direcciones de red propias, las que resultan de sustituir por ceros la parte del anfitrión "host" en cada una de las interfaces, entonces no hace falta rutear. Esta tabla tiene más o menos entradas, en función de la complejidad de la inter-red y la dirección del siguiente anfitrión "host" en el camino hasta la red de destino.
2.3.2. CLASES DE REDES
Existen 5 clases de direcciones IP. A cada tipo se le asigna una letra, así, existen direcciones de clases A, B, C, D, E. Las direcciones pertenecen a estas clases en función de los cuatro bits más significativos del primer byte.
Tabla 2.1.
La n representa la parte de red de la dirección y h, la parte de anfitrión "host", la x tiene otro tratamiento.
Las clases D y E no participan en el sistema de ruteo IP y no las comentaremos (las direcciones de clase D se usan en difusión o "multicasting" y las direcciones de clase E están reservadas, por ello no deben usarse para configurar anfitriones "hosts" en internet).
Por otro lado, las redes de clase A tienen el primer byte como parte de red y los tres restantes como parte del anfitrión "hosts", las redes de clase B tienen los dos primeros bytes como parte de red y los dos últimos como parte del anfitrión "hosts" y las redes de clase C, tienen como parte de red los tres primeros bytes y como parte del anfitrión "hosts" el último.
Así, puesto en notación con puntos, las redes de las distintas clases cubren los siguientes rangos de direcciones:
clase A de la 1.0.0.0 --> 127.255.255.255 clase B de la 128.0.0.0 --> 191.255.255.255 clase C de la 192.0.0.0 --> 223.255.255.255
2.3.3. MÁSCARAS DE RED
La máscara de red no es más que una dirección IP, donde se han sustituido todos los bits de la parte de red de la dirección por unos y los bits correspondientes a la parte de anfitrión "host" por ceros. Así, la máscara por defecto de red de una red de clase A será 255.0.0.0, la de una red de clase B será 255.255.0.0 y la de una clase C será 255.255.255.0.
Se ha comprobado que a veces el sistema de clases no es apropiado por lo tanto, se usa la máscara de red a pesar de que ésta, está implícita en el tipo de dirección, si se asigna una clase C de red completa y se quiere dividir en cuatro redes diferentes, no se utilizan cuatro redes clase C, lo que se hace es utilizar la máscara de red para separarla. En este caso la máscara de subred se extiende dos bits más allá de la frontera impuesta por el tipo de la dirección adquirida y se considera como si tuviera cuatro redes (en este caso la parte de red serían los primeros tres bytes y dos bits del cuarto y la parte de los anfitriones restantes).
Dentro de una misma red, se puede extender el mecanismo de ruteo, considerando que la parte de anfitrión "host" son los bits cero y la parte de red, son los bits uno de la máscara y asociando a cada dirección IP una máscara en el momento de configurarla, por supuesto, los valores por defecto serán los de la clase de la red, aunque se podrán añadir y solamente añadir, bits uno a la máscara, con el fin de dividirla en subredes.
Tablas de ruteo
Para indicar la ruta a tomar para cada destino se usan las tablas de ruteo y para construirlas formaremos para cada máquina, una tabla con la forma de dirigir las tramas hacia las redes que no vemos directamente, con la ventaja adicional de que como la dirección 0.0.0.0 representa obviamente la red local podemos usar esta dirección especial para indicar la ruta por defecto (es decir, la dirección local a la que se deben enviar las tramas que no tienen ruta y que necesariamente hay que rutear).