ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS Transport Layer Security Protocol MAESTRIA EN GERENCIA DE SISTEMAS OCTAVA PROMOCION TRABAJO DE SEGURIDAD INFORMATICA PROF: LIC. JULIO CESAR ARDITA - CYBSEC S.A. INTEGRANTES Hugo Alvarez V. Segundo Saránsig A. Quito-Ecuador, Julio-12-2007 1 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS CONTENIDO CAPITULOS 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. RESUMEN EJECUTIVO INTRODUCCION COMERCIO ELECTRONICO ALGUNOS PROTOCOLOS DE ENCRIPCION 4.1. SSH (Secure Shell) 4.2. SSL (Secure Socket Layer) 4.3. HTTPS DESCRIPCION DE TLS Y SU ORIGEN OBJETIVOS DE TLS ESTRUCTURA DE TLS 7.1. El TLS Record Protocol 7.1.1. Estados de Conexión 7.1.2. El Record Layer 7.2. El TLS Handshake Protocol 7.2.1. Propiedades de Handshake Protocol 7.2.2. Subprotocolos de Handshake Protocol 7.2.3. Secuencia de una conexión segura LA AUTENTICACION 8.1. Tipos de Certificados 8.2. Autenticación del Servidor 8.3. Autenticación del Cliente DIFERENCIAS ENTRE SSL y TLS APLICACIONES DE CON TLS ESTANDARES RELACIONADOS TLS PROTOCOLO WTLS CONCLUSIONES TERMINOLOGIA REFERENCIAS PAGINA 3 3 4 5 5 6 6 6 7 7 7 8 9 10 10 10 11 13 14 14 15 16 17 18 19 20 20 22 2 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS 1. RESUMEN EJECUTIVO: La protección de datos es un tema de creciente actualidad que, en el sector de las telecomunicaciones, ha incrementado su interés debido al crecimiento de clientes que utilizan nuevas tecnologías. Un sinónimo de la globalización es justamente la evolución vertiginosa que el comercio electrónico ha tenido lugar. Pues hemos de considerar que esta herramienta económica por ahora se ha vuelto en una ventaja competitiva. Pero surge el dilema de cómo asegurar que los principios fundamentales de seguridad como: confidencialidad, integridad y disponibilidad no sean violentados. Para ello como es de saber, han surgido algunos avances sobre todo con productos que actúan en la capa de transporte. Ejemplos de ellos son los protocolos de seguridad basados en complejos algoritmos de criptografía: SSH, SSL, WTLS, etc. Siendo el protocolo SSL 3.0 la versión más ampliamente difundida en la actualidad también ha sido sujeta de varias mejoras dando lugar al surgimiento por ahora del protocolo TLS 1.1. Como se podrá evidenciar en las siguientes páginas, se hace un estudio detallado del protocolo en cuestión y las diversas aplicaciones que en la actualidad están utilizándolo como protocolo que asegura la entrega/recepción de datos entre la capa de red y aplicación. Varias son las aplicaciones (http, smtp, nntp, etc.) que utilizan éste protocolo, pero sobre todo con mayor presencia en aplicaciones sobre Internet vía HTTPS. 2. INTRODUCCION: En la actualidad la seguridad de la información es muy importante, en el sitio www.gocsi.com podemos ver que éste viene realizando encuestas de seguridad por muchos años y de donde se concluye que el 78% de accesos a Internet es el punto de más vulnerabilidad, y también vemos que la mayoría de las empresas destinan entre 1% y 2% de su presupuesto a temas de seguridad. Compañías que desean surgir, simplemente han optado por ofrecer sus bienes y servicios sobre Internet apoyándose en herramientas que por ahora con seguridad le garantizan que sus transacciones se las haga de modo seguro. TLS y su antecesor SSL, han ofrecido la seguridad buscada y que se han convertido de echo en los productos preferidos para poner a disposición del mundo sitios de comercio electrónico seguros y avalados más aún por entidades certificadoras como VeriSign por ejemplo. Tenemos hoy en día tiendas comerciales que brindan la posibilidad de realizar compras vía Web a través de pagos vía tarjeta de crédito o aplicaciones de intercambio seguro de correo. Este documento trata justamente los detalles a través de los cuales las transacciones electrónicas son garantizadas. Se lo ha divido en dos partes principales: a) En la primera parte hacemos una breve sinopsis de lo que es el comercio electrónico y algunos protocolos de seguridad existentes (numerales 3 y 4) b) En la segunda parte que inicia en el numeral 5, se hace una referencia absoluta del protocolo TLS 1.1, donde en detalle trataremos temas como: los orígenes de TLS, Objetivos de éste protocolo, Arquitectura de TLS, mecánica de autenticación que el protocolo emplea, algunas diferencias entre TLS y SSL, Aplicaciones que usan TLS, etc. Finalmente el trabajo concluye con una breve referencia de WTLS y conclusiones. 3 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS 3. COMERCIO ELECTRONICO: El comercio electrónico ha presentado una evolución vertiginosa en los últimos años. Lo que comenzó con transacciones comerciales electrónicas se ha convertido en una herramienta imprescindible tanto a nivel particular como empresarial. Hoy en día, el comercio electrónico es uno de los principales medios para realizar transacciones comerciales y se espera que crezca de forma exponencial. No obstante, el crecimiento acelerado del uso de la Internet sobre todo en América Latina ha sido de los más rápidos en el mundo. Estos acontecimientos indican que mientras el comercio electrónico tiene un enorme potencial para ampliar el comercio y aumentar la competitividad de las diferentes regiones en los mercados internacionales, el reto reside en asegurar que el comercio electrónico contribuya a la integración y al desarrollo de todas las naciones. No obstante, es menester aprovechar las oportunidades y generar un entorno propicio a fin de evitar la profundización de desigualdades en cuanto al acceso y uso de las tecnologías de información, lo cual podría ampliar la brecha social y económica entre los países del mundo. El comercio electrónico puede ayudar a superar las desventajas creadas por las largas distancias y los obstáculos geográficos y posibilitar el acceso a los mercados de cada país a costos sustancialmente menores. Los dividendos podrían ser particularmente altos para las compañías y economías más pequeñas de la región, que tradicionalmente se han visto perjudicadas por la falta de información, los altos costos de acceso a los mercados y la distancia que los separa de éstos. Si bien la mayor parte de las ganancias ocurrirán probablemente en el comercio electrónico inter-empresarial, sobre todo en el sector de los servicios bancarios y financieros, las compras en línea por parte de los consumidores continuarán creciendo, y se prevé que ambos sectores en un mediano plazo se constituyan la fuerza motora de la economía global. Para los gobiernos, las tecnologías de información facilitan los medios para llegar a los ciudadanos y brindar nuevas oportunidades para el intercambio de información y la transparencia, la capacitación, el aprendizaje y el desarrollo. Al mismo tiempo, los gobiernos pueden reducir costos de actividades, sean éstas operativas, de compras o contratación. Las ganancias resultantes en términos de productividad propulsarían las economías de los países, conducirían hacia un mayor nivel de vida de sus ciudadanos y generarán nuevas oportunidades para el bienestar y el desarrollo de las comunidades. El comercio electrónico puede hacer una importante contribución al futuro crecimiento económico sostenible del mundo, sin embargo, existen varios desafíos que han de ser superados para poder aprovechar a plenitud los potenciales beneficios económicos y sociales que ofrece el comercio electrónico; con respecto a la infraestructura, el crecimiento del comercio electrónico se ha desacelerado por los obstáculos que representan la baja calidad de la infraestructura de telecomunicaciones, la estrechez del ancho de banda y los altos costos de conexión en algunos países. La confiabilidad y los costos asociados a la entrega de bienes constituyen una barrera adicional. El aumento de la participación y la expansión del uso de la Internet en todos los países del mundo dependerán de una mayor conciencia entre las personas y empresas, en especial la pequeña y mediana empresa, así como de la formación de una base de recurso humano capacitado para utilizar y crear mediante el uso de las tecnologías digitales. 4 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS Los marcos jurídicos, comerciales y financieros fueron creados para las transacciones físicas y podrían resultar insuficientes en la actualidad para garantizar el respeto y cumplimiento de contratos, asegurar la validez de las firmas electrónicas y proteger de forma eficaz los derechos de propiedad intelectual en apoyo al crecimiento de las transacciones electrónicas es un reto. En un principio, el medio electrónico no crea la confianza que caracteriza a las transacciones realizadas personalmente. Actualmente persiste la incertidumbre entre los consumidores, tanto las personas naturales como las empresas, de que quizás no reciban del mundo en línea un nivel de protección similar al que obtienen en el mundo físico en cuanto a la privacidad, seguridad, autenticación y protección al consumidor. El comercio electrónico es inherentemente global y no conoce fronteras. Las políticas y actividades de comercio electrónico (nacionales, regionales, del sector público o privado) alcanzarán su mayor eficacia si son compatibles con un enfoque mundial. Es necesaria la cooperación internacional para evitar que los enfoques nacionales fragmenten los mercados regionales y mundiales y restrinjan el comercio de forma indebida, gobiernos, empresas y consumidores deben trabajar mancomunadamente para crear un entorno en el cual el comercio electrónico pueda crecer para maximizar los beneficios económicos y sociales para todos. Los gobiernos deben tomar medidas para satisfacer el interés público y crear un entorno de normas y políticas para el comercio electrónico que sean flexibles, estimulen la innovación y la competencia y no favorezcan a ninguna tecnología en particular. El sector privado debe desempeñar un papel de liderazgo en la estimulación del crecimiento del comercio electrónico a través de la inversión y la innovación. Pensando en todas las ventajas y beneficios que el concepto como tal trae, la tecnología como tal ha desarrollado y ha puesto a disposición herramientas que justamente apoyen el desarrollo de ésta actividad. Tenemos como ejemplo el desarrollo protocolos de seguridad en transportación de la información que vía algoritmos complejos de criptografía garantizan justamente el entorno comercial electrónico. De todos depende que esto sea utilizado de buena manera evitando de alguna manera cerrar brechas que hasta ahora siguen abiertas y quien no lo haga, simplemente corre el riesgo de quedarse aislado frente a éste dinámico entorno de negocios. 4. ALGUNOS PROTOCOLOS DE ENCRIPCION Al margen del protocolo TLS, que más adelante detallaremos tenemos de algunos de los más utilizados: 4.1. SSH (Secure Shell): SSH permite a los usuarios registrarse en sistemas de host remotamente. A diferencia de rlogin o telnet SSH encripta la sesión de registro imposibilitando que alguien pueda obtener una contraseña de texto. SSH está diseñado para reemplazar los métodos comunes para registrarse remotamente en otro sistema a través de la shell de comando. El programa scp reemplaza otros programas diseñados para copiar ficheros entre hosts como por ejemplo FTP o RCP. Ya que estas aplicaciones antiguas no encriptan contraseñas entre el cliente y el servidor, las evita 5 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS siempre que sea posible. El uso de métodos seguros para registrarse remotamente a otros sistemas hará disminuir los riesgos de seguridad para ambos sistemas y el sistema remoto. La forma en que se entabla una comunicación es en base la misma para todos los protocolos seguros: a) El cliente envía una señal al servidor pidiéndole comunicación por el puerto 22. b) El servidor acepta la comunicación en el caso de poder mantenerla bajo encriptación mediante un algoritmo definido y le envía la llave pública al cliente para que pueda descifrar los mensajes. c) El cliente recibe la llave teniendo la posibilidad de guardar la llave para futuras comunicaciones o destruirla después de la sesión actual. Se recomienda que si se esta en un computador propio, la clave sea guardada, en otro caso, destruirla 4.2. SSL (Secure Socket Layer) : El protocolo SSL fue desarrollado por Netscape para permitir confidencialidad y autenticación en Internet. SSL es una capa por debajo de HTTP y tal como lo indica su nombre esta a nivel de socket por lo que permite ser usado no tan solo para proteger documentos de hipertexto sino también servicios como FTP, SMTP, TELNET entre otros. La idea que persigue SSL es encriptar la comunicación entre servidor y cliente mediante el uso de llaves y algoritmos de encriptación. 4.3. HTTPS: El protocolo HTTPS es la versión segura del protocolo HTTP, el sistema HTTPS utiliza un cifrado basado en SSL para crear un canal cifrado (cuyo nivel de cifrado depende del servidor remoto y del navegador utilizado por el cliente) más apropiado para el tráfico de información sensible que el protocolo HTTP. Cabe mencionar que el uso del protocolo HTTPS no impide que se pueda utilizar HTTP. Es aquí, cuando nuestro navegador nos advertirá sobre la carga de elementos no seguros (HTTP), estando conectados a un entorno seguro (HTTPS). Los protocolos HTTPS son utilizados por navegadores como: Safari (navegador), Internet Explores, Mozilla Firefox, Opera entre otros. Es utilizado principalmente por entidades bancarias, tiendas en línea, y cualquier tipo de servicio que requiera el envío de datos personales o contraseñas. El protocolo HTTPS es una versión segura del protocolo HTTP que implementa un canal de comunicación seguro y basado en SSL/TLS entre el navegador del cliente y el servidor HTTP. 5. DESCRIPCION DE TLS Y SU ORIGEN: SSL (Secure Sockets Layer) 3.0 desarrollado por Netscape se publicó en 1996, que más tarde serviría de base para desarrollar el protocolo TLS (Transport Layer Security) 1.0. El 6 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS estándar del protocolo TLS, tiene su origen en el RFC 22461. En la actualidad está en vigencia la versión 1.1 referenciada en el RFC 43462 y en proceso de desarrollo la versión 1.2. TLS es un protocolo para establecer una conexión segura entre un cliente y un servidor, con capacidad de autenticar tanto al cliente como al servidor y crear una conexión cifrada entre los dos. Este protocolo es utilizado de manera masiva para brindar seguridad a nivel de la capa de transporte, garantizando de esta manera autenticación y privacidad de la información entre extremos sobre Internet mediante el uso de criptografía. Visa, MasterCard, American Express y muchas de las principales instituciones financieras han aprobado SSL/TLS para garantizar seguridad en tendencias globales de e-commerce. 6. OBJETIVOS DE TLS: En orden de prioridad según el RFC 4336, los objetivos de TLS son los siguientes: a) Seguridad criptográfica: TLS puede ser usado para establecer conexiones seguras entre dos entidades. b) Interoperabilidad: Los programadores independientes deberían poder desarrollar aplicaciones usando TLS que puedan luego intercambiar parámetros criptográficos exitosamente, aun cuando un programador no conociera el código del otro. c) Extensibilidad: TLS busca ser extensible de manera que se le puedan añadir nuevos métodos de codificación cuando sea necesario. d) Eficiencia relativa: como las operaciones criptográficas tienden a ser altamente intensivas en el uso del CPU, TLS trata de reducir el número de conexiones que deben ser establecidas desde cero usando session caching. Además, en su diseño se ha cuidado reducir la actividad de red que su uso genera. 7. ESTRUCTURA DE TLS: Figura No. 7.1 - Protocolo TLS Como podemos ver en el gráfico anterior, TLS está en la capa de transporte y básicamente está formado por dos componentes: el TLS Record Protocol y el Handshake Protocol. 7.1. El TLS Record Protocol: Es utilizado para la encapsulación de varios protocolos de nivel superior, uno de ellos es el TLS Handshake Protocol, el cual es utilizado para autenticar tanto a los clientes como a los servidores, y para negociar un algoritmo de cifrado así como las llaves criptográficas, 1 2 RFC 2246 – Contiene las especificaciones de la versión 1.0 del protocolo TLS. RFC 4336 – Contiene las especificaciones de la versión 1.1 del protocolo TLS. 7 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS antes de que el protocolo de la aplicación transmita o reciba el primer byte de datos. En definitiva, ofrece seguridad en las conexiones y tiene dos propiedades básicas: Figura No. 7.2 – Esquema general de TLS Record Protocol a) La conexión es privada; se utiliza criptografía simétrica para el cifrado de los datos (DES, AES, RC4, etc), las llaves para los algoritmos simétricos son generadas una sola vez para cada sesión, y están basadas en un secreto negociado por otro protocolo (TLS Handshake), el TLS Record Protocol puede ser utilizado sin cifrado también. b) La conexión es confiable, el transporte de mensajes, incluye una verificación de integridad de mensajes, utilizando una MAC3 con llave, para esto se utilizan algoritmos de funciones de hash seguros como SHA1, SHA256, MD5. 7.1.1. Estados de Conexión: Existen dos estados: actuales y pendientes de lectura y escritura cada uno. Los registros sólo se procesan bajo el estado actual. Es posible pasar de un estado pendiente de conexión a un estado actual por medio de Handshake Protocol. Cada estado de una conexión define primeramente los parámetros de seguridad. Cuadro No. 7.1 – Parámetros de Seguridad de una Conexión 3 En criptografía, Message Authentication Code o MAC (del inglés, código de autenticación de mensajes) es un código que se genera a partir de un mensaje de longitud arbitraria y de una clave secreta compartida entre remitente y destinatario, y que sirve para autenticar el mensaje. También se lo llama cryptographic checksum 8 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS En segundo lugar el Record Protocol genera estos cuatro elementos: los Cliente y Server write MAC secret y Client y Server write key. Por cada registro procesado se deben actualizar los estados actuales. Cada estado comprende los elementos detallados en el siguiente cuadro: Cuadro No. 7.2 – Elementos de cada estado actual 7.1.2. El Record Layer: En esta capa se realiza lo siguiente: a) Fragmentación: El Record Layer de TLS recibe datos no interpretados de capas superiores en bloques no vacíos de cualquier tamaño, y los fragmenta en bloques de información de hasta 2^14 bytes o menos. Muchos mensajes del cliente del mismo ContentType pueden unirse en un solo TLS PlainText record, o un solo mensaje puede fragmentarse en varios registros. Una vez hecha la fragmentación (si es que es necesaria) se introduce la información en una estructura llamada TLSPlaintext. Figura No. 7.3 – Estructura de un mensaje b) Compresión y Descompresión: Durante la conexión se puede especificar un algoritmo de compresión y descompresión para comprimir los datos de un registro TLSPlainText. Esto es adicional antes que los datos sean encriptados, luego este texto plano se traslada a un registro comprimido llamado: TLSCompressed. Figura No. 7.4 – Estructura de un texto plano y comprimido 9 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS Si al descomprimir, la longitud del fragmento supera los 2^14 bytes, se reporta un mensaje de Alerta de Error , llamado decompression_failure , el cual es fatal. c) Protección del Registro: Finalmente antes que los datos sean transmitidos por TCP, sucede la encriptación y autenticación de los mismos. Las funciones de encriptación y MAC definidas al inicio del estado de lectura y escritura de una conexión traducen la estructura TLSCompressed a TLSCipherText. Las funciones de desencriptación realizan el proceso inverso. El MAC del registro incluye también un número de secuencia para que los mensajes perdidos, extra o repetidos sean detectados. Cuadro No. 7.3 – Cómo encriptan los dos algoritmos de encripción El MAC es calculado antes de la encriptación, el cipher o algoritmo criptográfico encripta el bloque entero incluyendo el MAC. 7.2. El TLS Handshake Protocol: Este protocolo está compuesto de tres sub-protocolos4 que se emplean para permitir que los interlocutores lleguen a un acuerdo respecto a los parámetros de seguridad para el nivel de registro, se autentifiquen, instancien parámetros de seguridad negociados y se comuniquen condiciones de error. 7.2.1. Propiedades de Handshake Protocol: a) La identidad de la otra parte puede ser verificada utilizando criptografía asimétrica (RSA o DSS), esta autenticación puede ser opcional, pero generalmente se requiere por al menos una de las partes. b) La negociación de un secreto compartido es segura: el secreto negociado no está disponible para ningún atacante, incluso si el atacante utilizara un ataque hombre en el medio. c) La negociación es confiable: ningún atacante puede modificar la comunicación sin ser detectado por las partes que intervienen en la comunicación. 7.2.2. Subprotocolos de Handshake Protocol: Para que un cliente y un servidor puedan empezar a comunicarse, ellos primero se ponen de acuerdo en la versión del protocolo, seleccionan los algoritmos criptográficos a usar, autenticarse (opcionalmente) uno con el otro, y usan técnicas de criptografía de clave pública para generar secretos compartidos. Para todo ello utiliza los siguientes subprotocolos: 4 SUBPROTOCOLOS DE HANDSHAKE: a) Change Cipher Spec Protocol, b) Alert Protocol, c) Handshake Protocol 10 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS a) Protocolo de cambio de especificaciones criptográficas: Este protocolo marca las transiciones entre distintas estrategias de cifrado. Consta de un mensaje que se encripta y comprime con las especificaciones actuales de la conexión (no las pendientes). Cuando el destinatario recibe este mensaje la capa de registro copia el estado de lectura pendiente al estado de lectura actual. De forma similar, el emisor cambia su estado de escritura al enviar este mensaje. Este mensaje se envía durante el acuerdo, después de haber acordado los parámetros de seguridad pero antes de que se envíe el mensaje de verificación finalizada. b) Protocolo de alerta: Uno de los tipos de mensaje que soporta la capa de registro es el de alerta. Estos mensajes incluyen la severidad de la alerta y una descripción de la misma. Los mensajes de alerta con nivel de fatal provocan la inmediata terminación de la comunicación. Existen distintos tipos de alertas: • Alerta de cierre: El cliente y el servidor deben saber que la conexión se está cerrando para evitar un ataque de truncado. Cualquiera de los dos puede iniciar el intercambio de mensajes de cierre. Cualquier información recibida después de la alerta de cierre es ignorada. • Alerta de error: La gestión de errores el el protocolo de mutuo acuerdo es muy simple, cuando uno de los interlocutores detecta un error lo envía al otro y, si se trata de un error fatal, cierran la conexión. c) Protocolo de mutuo acuerdo o handshaking: Los parámetros del estado de la sesión son producidos por este protocolo, que opera sobre el protocolo de registro TLS. Cuando un cliente y un servidor empiezan a comunicarse, acuerdan la versión del protocolo, selección de algoritmos criptográficos, opcionalmente se autentifican mutuamente y emplean algoritmos de clave pública para generar secretos compartidos. 7.2.3. Secuencia de una conexión segura: Cuadro No. 7.4 – Ítems requeridos para iniciar una sesión de Handshake 11 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS Figura No. 7.5 – Proceso de conexión segura usando SSL/TLS A continuación una breve explicación del proceso de conexión segura vía Handshake: En primer lugar el cliente envía un mensaje Client Hello al servidor el cual debe de responder con un mensaje similar de Server Hello. Estos mensajes son utilizados para dar a conocer ciertas características de ambos: la versión del protocolo usado, algoritmos de cifrado conocidos y preferidos, longitudes máximas de clave que admite para cada uno de ellos, funciones hash y métodos de compresión a utilizar. Adicionalmente cliente y servidor pueden intercambiar dos números generados aleatoriamente para ser usados como tal. En este momento, además, el servidor asigna un identificador a la sesión y se hace constar la fecha y hora de la misma. El identificador de sesión es enviado al cliente en el mensaje de Server Hello. Si el servidor no respondiera con un mensaje de Server Hello o este no fuese valido o reconocible la sesión abortaría inmediatamente. Generalmente el servidor, el segundo en contestar, elige los algoritmos más fuertes de entre los soportados por el cliente. Si no hay acuerdo en este punto se envía un mensaje de error y se aborta la sesión. 12 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS Cuadro No. 7.5 - Algoritmos de intercambio de clave soportados por TLS A continuación del mensaje de Server Hello, el servidor puede enviar su Certificado (típicamente un X.509) de forma que sea autenticado por el cliente y que, además, este reciba su clave pública. Si no es así, le envía al cliente su clave pública mediante un mensaje de Server Key Exchange (o también si ha enviado su Certificado y este es únicamente para firma y autenticación). Está claro es que al menos uno de estos dos mensajes es necesario para establecer el canal seguro. Un último mensaje que puede enviar el servidor en esta fase de negociación es una solicitud de certificado al cliente. Por último, la fase concluye con el envío, por parte del servidor, de un mensaje de Server Hello Done. Si el Servidor ha solicitado su certificado al cliente, este debe de responder con el o con un mensaje de alerta indicando que no lo posee. A continuación se envía un mensaje de Client Key Exchange donde el cliente envía al servidor, cifrada mediante la clave pública de este, la clave maestra, un número aleatorio generado por el y que actuará como clave del algoritmo simétrico acordado para el intercambio de datos. Por último, si el cliente ha enviado un certificado y este tiene capacidades de firma, enviará adicionalmente un mensaje de Certificate Verify firmado digitalmente con el objeto de que el servidor pueda verificar que la firma es válida. En este punto el cliente da por concluida la fase mediante un mensaje de Change Cipher Spec seguido, inmediatamente, de un mensaje de Finished que ya va cifrado mediante los algoritmos y claves recién negociados. En respuesta, el servidor envía su propio mensaje de Change Cipher Spec y, a continuación, su mensaje de Finished cifrado con los parámetros negociados. En este momento finaliza la fase de Handshake y cliente y servidor pueden intercambiar datos libremente. Durante la transmisión de datos los mensajes son fragmentados y comprimidos por el Record Protocol antes de su envío y descomprimidos y reconstruidos por el mismo protocolo al otro extremo de la comunicación. El algoritmo de compresión utilizado es característico de la sesión y se negocia, como hemos visto, en la fase de Handshake. 8. LA AUTENTICACION: El servicio de autenticación debe garantizar que una comunicación sea autentica. En el caso de un solo mensaje, tales como una señal de alarma o peligro, la función del servicio de autenticación es garantizar al receptor que el mensaje viene desde la fuente que el mensaje 13 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS dice que vino. En el caso de una interacción de mensajes, tal como una conexión TLS, el servicio abarca dos aspectos: a) En el momento de la iniciación de la conexión, el servicio garantiza que las dos entidades son autenticas, esto es, que cada una es la entidad que esta dice que es. b) El servicio debe garantizar que la conexión no vaya a ser interferida de manera tal que una tercer parte pueda camuflarse como una de las dos partes legitimas con el propósito de transmitir o recibir mensajes de forma no autorizada. Con referencia al primer punto, otra cosa a tener en cuenta es que cuando hablamos de Internet o el protocolo TCP/IP, estamos hablando de una metodología de desarrollo de sistemas del tipo Cliente/Servidor. Cuando queremos establecer una conexión TLS, una de las partes actúa como servidor, brindando algún tipo de servicio. La otra parte actúa como un cliente, haciendo pedidos al servidor, para que luego este último retorne un resultado. La forma de autenticar las partes en una conexión cliente/servidor no es simétrica, sino que depende de si es el cliente quien quiere autenticar al servidor, o es el servidor quien quiere autenticar al cliente. Además, cuando se autentica un servidor, lo que se esta autenticando es la organización que es responsable por el servidor en el que corre el servicio, un una cierta dirección IP. Cuando se autentica un cliente, lo que se esta autenticando es el usuario que esta corriendo el programa cliente. 8.1. Tipos de Certificados: a) Certificados de clientes TLS/SSL (*): Se usan para identificar clientes a los servidores vía TLS/SSL (autenticación de clientes). b) Certificados de servidores TLS/SSL (*): Se usan para identificar servidores a los clientes vía TLS/SSL (autenticación de servidor). c) Certificados S/MIME: Son usados para e-mail firmado y encriptado. Un simple certificado podría ser usado como un certificado S/MIME y un certificado TLS/SSL. d) Certificados para firmar objetos: Se usan para identificar firmantes de código en Java, scripts en JavaScript, u otros archivos firmados. e) Certificados de CA: Se usan para identificar entidades certificadores autorizadas como: Verisign, Identidata Holding, Alagraf, y ID Certify. f) Los software cliente y servidor usan certificados de CA para determinar que otros certificados son confiables. (*) "TLS/SSL" no significa que el nombre del certificado sea ese, sino que existen certificados de esos tipos tanto para SSL como para TLS. 8.2. Autenticación del Servidor: El software cliente que requiera un servicio de un servidor, el cual se va a transferir a través de una conexión TLS, puede querer tener cierta validación criptográfica de la identidad del servidor, es decir que quiere autenticar que el servidor que envía la información es realmente quien dice que es. Para autenticar el enlace entre una clave pública y el servidor identificado por el certificado que contiene la clave pública, un cliente con capacidad para usar TLS (o SSL) debe recibir un "SI" por respuesta a cuatro preguntas a fin de poder autenticar la identidad del servidor. Aunque la cuarta pregunta técnicamente no es parte del protocolo TLS, es 14 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS responsabilidad del cliente soportar este requerimiento, el cual ofrece alguna garantía de la identidad del servidor y además ayuda a protegerse contra un tipo de ataque a la seguridad conocido como hombre en el medio. Las preguntas son: a) b) c) d) La fecha de hoy esta dentro del período de validez del certificado? El CA emisor es un CA confiable? La clave pública del CA emisor valida la firma digital del servidor? El nombre de dominio especificado en el DN del servidor es igual a nombre de dominio real? e) Si todo lo anterior está bien, el servidor es autenticado Figura No. 8.1 – Autenticación del Servidor 8.3. Autenticación del Cliente: Los servidores preparados para usar TLS pueden ser configurados para requerir que el cliente sea autenticado, para tener cierta garantía de la identidad del cliente. Cuando un servidor configurado de esta manera requiere autenticación del cliente, el cliente envía al servidor un certificado X.509 y separadamente envía también ciertos datos firmados digitalmente para autenticarse a sí mismo. El servidor usa los datos firmados digitalmente para validar la clave pública en el certificado y para autenticar la identidad que el certificado dice que representa. El protocolo TLS requiere que el cliente cree una firma digital a partir de datos generados aleatoriamente (conocidos solo por el cliente y el servidor), los cuales se les aplica una función de hashing (MD5 o SHA-1) durante el handshake. El hash de los datos luego se encripta con la clave privada que corresponde a la clave pública en el certificado presentado al servidor. Un servidor que usa TLS hace las siguientes preguntas para autenticar la identidad de un usuario: a) b) c) d) e) f) La clave publica del usuario valida a su firma digital? La fecha de hoy esta dentro del período de validez? El CA emisor es un CA confiable? La clave pública del CA emisor valida la firma digital del cliente? El certificado del usuario esta listado en la entrada LDAP de ese usuario? El cliente autenticado esta autorizado para tener acceso a los recursos que requirió? 15 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS Figura No. 8.2 – Autenticación del Cliente 9. DIFERENCIAS ENTRE SSL y TLS: Como hemos dicho TLS se construye a partir de las especificaciones de SSL 3.0 y son tan semejantes que a TLS a veces se lo conoce como SSL 3.1. Los mismos autores dicen “[...] el protocolo TLS está basado en las especificaciones de SSL. Las diferencias entre este protocolo y SSL no son grandes, pero si suficientes para que TLS y SSL no puedan interoperar (aunque TLS incorpora un mecanismo mediante el cual una implementación de TLS puede trabajar con SSL 3.0)”. Las principales diferencias entre SSL 3.0 y TLS 1.1 son las siguientes: a) En los mensajes Certificate Request y Certificate Verify del protocolo de Handshake. En SSL 3.0 si el servidor solicita un certificado al cliente para que se autentique, este debe de responder con el o con un mensaje de alerta advirtiendo de que no lo tiene. En TLS 1.1 si el cliente no posee certificado no responde al servidor de ninguna forma a este requerimiento. b) Cálculo de las claves de sesión. El mecanismo utilizado para construir las claves de sesión es ligeramente diferente en TLS 1.1. c) TLS 1.1 no soporta el algoritmo de cifrado simétrico FORTEZZA que si es soportado por SSL 3.0. Esto es debido a que TLS busca ser íntegramente público mientras que FORTEZZA es un algoritmo propietario. d) TLS utiliza un mecanismo diferente y más seguro en el cálculo del MAC. e) TLS 1.1 introduce nuevos códigos de alerta no contemplados por SSL 3.0 f) TLS 1.1 introduce un nuevo mecanismo en el relleno de los bloques para frustrar ataques basados en el análisis de la longitud de los mensajes. A la vez presenta varias mejoras y extensiones para: a) HTTP sobre el puerto 80 y HTTPS sobre el puerto 443 b) Nuevos Ciphersuites con cambios recientes en las regulaciones de exportación de US permiten la exportación de software con capacidades de encriptación de datos con claves de 56 bits e intercambio de claves de hasta 1024 bits. c) Soporte de Elliptic Curve Cryptosystems (ECC) con claves como: ECES (Elliptic Curve Encryption Scheme), ECDSA (Elliptic Curve Digital Signature Algorithm), ECNRA (Elliptic Curve Nyberg-Rueppel Signature Scheme with Appendix), ECDH (Elliptic 16 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS Curve Diffie-Hellman Key Agreement), ECMQV (Elliptic Curve Menezes-Qu-Vanstone Key Agreement). d) Incorporación de Kerberos Cipher Suites, las credenciales Kerberos se usan para llevar a cabo una autenticación mutua y para establecer un master secret usado subsecuentemente para asegurar la comunicación cliente-servidor. La opción de Kerberos debe agregarse en el mensaje ClientKeyExchange. e) Perfiles para Autorización usando Attribute Certificate, el X.509 AttributeCertificate provee una estructura con la cual se puede brindar tales servicios. Esta especificación define dos perfiles(uno simple y uno full) para el uso de X.509 AttributeCertificates al proveer los servicios de autorización. 10. APLICACIONES DE TLS: Es común pensar que TLS/SSL son protocolos utilizados sólo con los browsers para mostrar un Internet más seguro, sin embargo; estos son protocolos de propósito general que pueden ser usados para autenticación y protección, por ejemplo para: a) b) c) d) e) Transacciones seguras sobre sitios de e-commerce. Autenticación de clientes a un sitio Web seguro. Acceso Remoto. Acceso a Bases de Datos (SQL). Correo Electrónico. Respecto a los puntos a) y b) en el Cuadro No. 9.1, se detallan algunos ejemplos de navegadores que a la fecha soportan TLS/SSL. TLS/SSL se ejecuta en una capa entre los protocolos de aplicación como HTTP, SMTP, NNTP y sobre el protocolo de transporte TCP, que forma parte de la familia de protocolos TCP/IP. Aunque pueda proporcionar seguridad a cualquier protocolo que use conexiones de confianza (tal como TCP), se usa en la mayoría de los casos junto a HTTP para formar HTTPS. Por lo tanto HTTPS es usado para asegurar páginas Web para aplicaciones de comercio electrónico, utilizando certificados de clave pública para verificar la identidad de los extremos. Cuadro No. 10.1 – Browsers que soportan SSL y TLS Aunque un número creciente de productos clientes y servidores pueden proporcionar SSL/TLS de forma nativa, muchos aún no lo permiten. En estos casos, un usuario podría querer usar una aplicación SSL independiente como Stunnel para proporcionar cifrado. No obstante, el Internet Engineering Task Force recomendó en 1997 que los protocolos de aplicación ofrecieran un forma de actualizar a TLS a partir de una conexión sin cifrado (plaintext), en vez de usar un puerto diferente para cifrar las comunicaciones – esto evitaría el uso de envolturas (wrappers) como Stunnel. 17 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS SSL/TLS también puede ser usado para tunelar una red completa y crear una red privada virtual (VPN), como en el caso de OpenVPN. Como hemos visto, SSL es capaz de trabajar de forma transparente con todos los protocolos que trabajan sobre TCP. La IANA tiene asignado un número de puerto por defecto a cada uno de ellos que podemos ver en la tabla siguiente: Cuadro No. 10.2 – Protocolos, Puertos seguros según la IANA NOTA: Estos puertos son válidos también para las implementaciones de estos mismos protocolos sobre TLS. 11. ESTANDARES RELACIONADOS CON TLS: Como sabemos la primera definición de TLS apareció en el RFC 2246, pero desde su publicación han aparecido muchas otras. A continuación se numeran algunas de las más actuales: a) RFC4934: Extensible Provisioning Protocol (EPP) Transport Over TCP. b) RFC4785: Pre-Shared Key (PSK) Ciphersuites with NULL Encryption for Transport Layer Security (TLS) c) RFC4681: TLS User Mapping Extension d) RFC4680: TLS Handshake Message for Supplemental Data e) RFC4642: Using Transport Layer Security (TLS) with Network News Transfer Protocol (NNTP) f) RFC4572: Connection-Oriented Media Transport over the Transport Layer Security (TLS) Protocol in the Session Description Protocol (SDP) g) RFC4513: Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms h) RFC4511: Lightweight Directory Access Protocol (LDAP): The Protocol i) RFC4507: Transport Layer Security (TLS) Session Resumption without Server-Side State j) RFC4492: Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) k) RFC4366: Transport Layer Security (TLS) Extensions 18 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS l) RFC4346: The Transport Layer Security (TLS) Protocol Version 1.1 12. PROTOCOLO WTLS: El protocolo WTLS es una adaptación del estándar de Internet TLS (Transport Layer Security) y de los protocolos SSL. La intención de los autores de WTLS fue tomar TLS y añadir soporte a datagramas, optimizar el tamaño de los paquetes transmitidos y seleccionar algoritmos rápidos entre los permitidos. WAP ha definido WTLS siguiendo una serie de criterios: a) b) c) d) Debe soportar datagramas. Debe soportar portadoras de ancho de banda angosta. Debe soportar retardos potencialmente largos. La capacidad de memoria y procesamiento de los terminales puede ser pequeña. Si se utiliza WTLS para el envío de mensajes seguros ofrece los siguientes servicios: a) Integridad de los datos: Se asegura que los datos intercambiados entre el Terminal y la pasarela WAP no han sido modificados. b) Confidencialidad de los datos: Se asegura que la información intercambiada entre el terminal y la pasarela WAP no puede ser entendida por terceras partes que puedan interceptar el flujo de datos. c) Autenticación: El protocolo contiene servicios para autenticar el terminal y la pasarela WAP. d) Protección por denegación de servicio: Asegura que las capas superiores del protocolo WAP están protegidas contra ataques por denegación de servicios (DoS, Denial of Service) mediante la identificación y reenvío de los mensajes no comprobados. El Foro WAP ha establecido tres tipos diferentes de seguridad, cada uno de ellos con sus requerimientos y características. En la tabla siguiente se muestran las especificaciones de seguridad y la relación que a nivel de capas de web y wap se manejan Clases de Implementación de Seguridad TLS Stacks de WEB y WAP Cuadro No. 12.1 – Clases de Implementación de Seguridad TLS y Stacks de WEB y WAP 19 ESPE-MGS-VIII SEGURIDAD INFORMATICA Protocolo TLS El hecho de que WTLS se ejecute en la cima de un inseguro servicio de datagrama, y no en un seguro protocolo de transporte como TCP/IP, obliga a realizar algunos ajustes para asegurar el intercambio de mensajes durante la realización de algunas operaciones WTLS. 13. CONCLUSIONES: Cada día muchas organizaciones están aprovechando las oportunidades ofrecidas por el comercio electrónico basado en Internet, y como hemos dicho el número va creciendo. Entre estas aplicaciones se encuentran las compras en línea, la banca electrónica, la tele-educación, los casinos virtuales, los servicios de pago por visión y vídeo bajo demanda, interconexión de extranets, intranets, etc. Si bien es cierto que existe una “seguridad certificada” por organismos que así lo aseguran, no es suficiente para que muchas empresas y más aún usuarios potenciales tengan recelo de utilizar estos beneficios “seguros”. Es indudable que no les falta razón, pues las aplicaciones de comercio electrónico, banca, etc; siempre han sido objeto de violaciones escandalosas de seguridad, pues el sólo hecho de tener sitios seguros, no es una garantía del 100% al menos en temas de seguridad. Como lo hemos evidenciado, al avance de la tecnología siempre se lo ha visto como una lucha entre el bien y el mal y que nunca terminará. Pues siempre el mal ha estado tratando de encontrar brechas por donde puede atacar y hacer daño a todo nivel. Está muy claro que el avance al menos en temas se seguridad como lo es SSL/TLS, muestran avances significativos, pero no suficientes ante la credibilidad del usuario, por ello es necesaria una mayor investigación en otras áreas relacionadas, como, la de las tarjetas inteligentes, ya que éstas serán el soporte básico en la utilización de la mayoría de las aplicaciones. Asimismo, será de vital importancia el desarrollo de nuevas técnicas de análisis de protocolos de seguridad, debido a que los protocolos orientados al comercio electrónico presentan características de eficiencia y escalabilidad opuestas a las de los tradicionales protocolos de seguridad, como los de intercambio de claves o los de autenticación de usuarios. En definitiva, queda aún mucho trabajo por desarrollar y muchas áreas que requieren un mayor grado de estudio antes de que el comercio electrónico pueda llegar a tener el nivel de implantación que se vislumbra, pero no cabe duda que el camino recorrido hasta momento es significativo y que la dirección parece ser la correcta. 14. TERMINOLOGIA • • • • • ALE (Automatic Link Establishment): Establecimiento automático de enlace. Técnica que permite a las estaciones de radio enlazarse automáticamente unas con otras. Ancho de banda: Tamaño de un canal de transmisión (ancho). Diferencia expresada en hertzios (frecuencia) entre la frecuencia mas alta y la más baja de una banda. El ancho de banda define la capacidad máxima especificada de un canal de comunicación. ARP (Adresses Resolution Protocol): Este protocolo parte de conocer la dirección de red IP y averigua la dirección MAC. Arpanet: Red que estaba patrocinada por el Departamento de Defensa de los Estados Unidos. La Arpanet fue reemplazada y ampliada, y hoy sus descendientes forman la arteria principal de lo que llamamos la Internet. ASP (Aplication Service Provider): Proveedor de servicios relacionados con tecnologías de información y de comunicaciones. Utiliza diferentes tecnologías en banda ancha: 20 ESPE-MGS-VIII • • • • • • • • • • • • • • • • • • SEGURIDAD INFORMATICA Protocolo TLS ADSL (Asymetric Digital Subscriber Line), WLL (Wireless Local Loop) y LMDS (Local Multipoint Distribution System), para crear redes públicas o privadas a través de tecnologías de seguridad. Comunicación de datos: Transmisión de datos entre estaciones de red. DES: Estándar de Encriptación de Datos. Conocido sistema de criptografía de clave secreta. El DES es un mecanismo de encriptación de datos muy utilizado y del cual existen varias implementaciones tanto en software como en hardware. El DES transforma información de texto llano en datos encriptados, llamado texto cifrado mediante un algoritmo especial y un valor semilla llamado clave. Si el receptor conoce la clave, puede usarla para convertir el texto cifrado en los datos originales. FTP (File Transfer Protocol): Provee la habilidad de enviar archivos de un host a otro, corre sobre TCP. Existen dos aspectos que hacen de FTP muy particular en su uso: su capacidad para transferir archivos entre computadores completamente distintos y su facilidad de compartir archivos públicos. Hacker: Término en inglés con el que se apoda a aquellas personas que, utilizando líneas telefónicas, intentan violar la integridad de un sistema o red de ordenadores, sin que sus usuarios lleguen a darse cuenta de ello, cometiendo así un delito. Hipertexto: En un texto clásico, la estructura es totalmente lineal: se lee de principio a fin; en un hipertexto, se pretende poder romper esa estructura lineal, mediante "enlaces" (también llamados "Vínculos" o "Hipervínculos") que permiten saltar a otros temas relacionados, donde encontrar información ampliada. Las páginas Web de Internet (como ésta) son un ejemplo claro de Hipertexto. HTML (HyperText Markup Language): El Lenguaje de marca de hipertexto, es un sistema para marcar o aportar información adicional a los documentos de forma que puedan publicarse en el World Wide Web. Los documentos preparados en HTML incluyen gráficos de referencia y marcas de formato. Utilice un explorador de Web (como Microsoft Internet Explorer, Netscape, etc.) para ver estos documentos. Es el lenguaje de descripción de páginas habitual en Internet. HTTP: El protocolo usado en las páginas del WWW (HyperText Transfer Protocol). IMAP: Internet message access protocolo IP (Internet Protocol): Es el protocolo que utiliza direcciones de 32 bits (4 octetos). Es responsable de la transmisión de los datos en el nivel de red. Es en este nivel que sé enrutan los paquetes en función de las direcciones. IPSec: Internet Protocol Security. RPC (Remote Procedure Call): Procedimiento de llamada remoto que conjuntamente con XDR (Externa Data Representation) y NFS (Network File System) ejecutan funciones que corresponden aproximadamente a las capas Sesión, Presentación y Aplicación del modelo OSI, y se combinan para proveer acceso transparente a recursos de redes remotas. SCPC: Single Channel Per Carrier: Un sólo canal por operador. SMTP (Simple Mail Transfer Protocol): Contiene los mecanismos para el intercambio de correo electrónico entre máquinas, corre sobre TCP. SNMP (Simple Network Managment Protocol): Una centralizada estación de administración utiliza SNMP para obtener información de otros hosts y routers TCP/IP. SNMP define el formato para la data de administración y el tipo de intercambios que puede tomar lugar entre la estación de administración y otros dispositivos de la red. SSL: Capa de conexión segura (Secure Sockets Layer). SSH (Secure Shell) SSL (Secure Socket Layer) TCP/IP: Nombre común aplicado a una familia de protocolos de comunicación de datos que permiten conectar computadoras y redes. Los datos se transmiten en pequeños trozos 21 ESPE-MGS-VIII • • • SEGURIDAD INFORMATICA Protocolo TLS de información llamados paquetes. Es muy usado en Internet, como también en ambientes LAN y WAN por sus facilidades de enrutamiento. TLS (Transport Layer Secure) Telnet: Es un protocolo de acceso de terminal remoto. Que corre sobre TCP. Permite a un terminal atacharse a un servidor de terminales o a un host de comunicaciones. WWW: World Wide Web: posiblemente, el servicio más conocido de Internet: una serie de páginas de información, con texto, imágenes (a veces, incluso otras posibilidades, como sonido o secuencias de video), y enlazadas a su vez con otras páginas que tengan información relacionada con ellas. 15. REFERENCIAS [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] http://www.ietf.org/ http://en.wikipedia.org/wiki/Secure_Sockets_Layer http://www21.ocn.ne.jp/~k-west/SSLandTLS/index-e.html http://www.tecnun.es/ http://technet2.microsoft.com/windowsserver/en/library/ http://www-2.dc.uba.ar/materias/seginf/material/Clase13-Unidad5_5taparte_vf.pdf http://www.iit.upcomillas.es/palacios/seguridad_dr/tema4_ssl.pdf http://www.tejedoresdelweb.com/307/article-5670 http://www.geocities.com/SiliconValley/Byte/4170/articulos/tls/index.htm http://computacion.cs.cinvestav.mx/~jjangel/Pagina_Seguridad_Informacion_es.html http://www.gwolf.org/seguridad/pki/node1.html http://www.microsoft.com/spain/technet/recursos/articulos/11110308.aspx http://internetng.dit.upm.es/ponencias-jing/2004/seguridad-en-web.pdf *** 22