{"id":21007,"date":"2019-10-15T09:30:29","date_gmt":"2019-10-15T07:30:29","guid":{"rendered":"https:\/\/www.teldat.com\/sin-categorizar\/21007\/dtls-securidad-udp-tls-heartbleed\/"},"modified":"2022-12-19T17:38:41","modified_gmt":"2022-12-19T15:38:41","slug":"dtls-securidad-udp-tls-heartbleed","status":"publish","type":"post","link":"https:\/\/www.teldat.com\/es\/blog\/dtls-securidad-udp-tls-heartbleed\/","title":{"rendered":"DTLS: seguridad sobre UDP"},"content":{"rendered":"<p><strong><img decoding=\"async\" class=\"alignleft wp-image-5352 size-medium\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/JesusCristina_OCT2019-300x225.png\" alt=\"dtls\" width=\"300\" height=\"225\" title=\"\">DTLS<\/strong> ( <em>Datagram transport Layer Security<\/em>, por sus siglas en ingl\u00e9s) <strong>proporciona privacidad en las comunicaciones UDP<\/strong>. Para entender DTLS bien, lo primero que hay que hacer es entender UDP.<\/p>\n<p><!--more--><\/p>\n<p><strong>UDP<\/strong> <em>(User Datagram Protocol)<\/em> es un protocolo del nivel de transporte basado en el intercambio de <em><strong>datagramas<\/strong> <\/em>(encapsulado de capa 4 o de transporte del modelo OSI). Permite enviarlos a trav\u00e9s de la red sin que se haya establecido previamente una conexi\u00f3n, dado que los propios datagramas incorporan suficiente informaci\u00f3n de direccionamiento en su cabecera. Al no tener confirmaci\u00f3n ni control de flujo, los paquetes pueden adelantarse unos a otros. Es m\u00e1s, tampoco se sabe si el env\u00edo se ha realizado correctamente, ya que no hay <strong>confirmaci\u00f3n de entrega o recepci\u00f3n.<\/strong><\/p>\n<p>Adem\u00e1s de proporcionar privacidad a protocolos de datagrama, el <strong>protocolo DTLS<\/strong> permite a las aplicaciones cliente\/servidor comunicarse sin escuchas no deseadas (<em>eavesdropping<\/em>), accesos no permitidos, modificaciones en los mensajes.<\/p>\n<p>El protocolo DTLS est\u00e1 basado en el<strong> protocolo TLS<\/strong> (<em>Transport Layer Security)<\/em> y proporciona garant\u00edas de seguridad equivalentes. La sem\u00e1ntica de los datagramas de los protocolos subyacentes no cambia al utilizar DTLS.<\/p>\n<p>El motivo para no utilizar directamente <strong>TLS sobre UDP<\/strong> es que en UDP puede perderse o reordenarse paquetes y TLS no tiene herramientas para hacer frente a estos inconvenientes. La falta de fiabilidad genera los siguientes problemas:<\/p>\n<ul>\n<li><strong>TLS no permite el descifrado independiente de paquetes,<\/strong> puesto que la verificaci\u00f3n de integridad depende del n\u00famero de secuencia. TLS utiliza n\u00fameros de secuencia impl\u00edcitos, mientras que el protocolo DTLS utiliza n\u00fameros de secuencia expl\u00edcitos para resolver este problema.<\/li>\n<li><strong>\u00a0La capa de enlace de TLS permite que los mensajes se reciban de forma fiable<\/strong>, rompi\u00e9ndose la conexi\u00f3n si se pierden estos mensajes. DTLS resuelve este problema utilizando un timer de retransmisi\u00f3n para los paquetes.<\/li>\n<\/ul>\n<p>Existe, sin embargo, un problema de seguridad en DTLS, <strong><em>heartbleed<\/em><\/strong>, resultado de una <strong>mala implementaci\u00f3n de la funcionalidad conocida como heartbea<\/strong>t. Aunque esta vulnerabilidad ya ha sido solventada, lo cierto es que presentaba<strong> un problema de seguridad<\/strong> bastante grave.<\/p>\n<p>En febrero de 2012, la funcionalidad heartbeat se present\u00f3 como parte de la <a href=\"https:\/\/www.teldat.com\/397\" target=\"_blank\" rel=\"noopener\">RFC<\/a> para los protocolos TLS y DTLS. Su principal ventaja es que permite mantener una conexi\u00f3n abierta sin la necesidad de renegociar. La implementaci\u00f3n con el <strong>fallo de seguridad<\/strong> fue a\u00f1adida en la <strong>versi\u00f3n 1.0.1f de OpenSSL.<\/strong><\/p>\n<p>Para explotar el fallo de seguridad se siguen los siguientes pasos:<\/p>\n<p>1.<strong> Un equipo env\u00eda un mensaje de \u201cheartbeat request\u201d<\/strong>, que suele ser una cadena de texto, junto con la longitud exacta de dicha carga \u00fatil.<br \/>\n2.<strong> El equipo receptor debe enviar<\/strong>, entonces, la misma <strong>cadena exacta<\/strong> de vuelta al remitente.<br \/>\n3.<strong> Las versiones afectadas de OpenSSL asignan un b\u00fafer de memoria para el mensaje a devolver<\/strong> basado en el campo de longitud del mensaje de solicitud, sin tener en cuenta el tama\u00f1o real de su carga \u00fatil. Al no comprobarse la longitud, el mensaje se devuelve junto con cualquier cosa que haya sido asignada en el buffer de memoria.<\/p>\n<p>Al leer un bloque de memoria arbitrario del servidor, los atacantes pueden recibir datos importantes, lo que <strong>compromete la seguridad del servidor, sus comunicaciones y sus usuarios.<\/strong> Entre los datos que se pueden obtener est\u00e1 la clave maestra del propio servidor, que permitir\u00eda a los ciberdelincuentes descifrar el tr\u00e1fico actual o almacenado mediante un <strong>ataque pasivo \u201cman-in-the-middle\u201d,<\/strong> si no se utiliza <em><strong>perfect forward secrecy<\/strong><\/em> para las comunicaciones; o activo, en caso de que se utilice <em><strong>perfect forward secrecy.<\/strong><\/em><\/p>\n<p>La correcci\u00f3n del fallo de seguridad se incluy\u00f3 en la versi\u00f3n 1.0.1g de OpenSSL.<\/p>\n<p>En definitiva, <strong>DTLS presenta una soluci\u00f3n de seguridad para UDP bastante potente<\/strong>. Sin embargo, si se quiere utilizar la <strong>funcionalidad de heartbeat,<\/strong> hay que tener en cuenta el problema de seguridad, y utilizar la <strong>versi\u00f3n adecuada de OpenSSL<\/strong> en la cual el fallo haya sido resuelto (1.0.1g o subsiguientes).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DTLS ( Datagram transport Layer Security, por sus siglas en ingl\u00e9s) proporciona privacidad en las comunicaciones UDP. Para entender DTLS bien, lo primero que hay que hacer es entender UDP.<\/p>\n","protected":false},"author":203,"featured_media":19724,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[1161],"tags":[1110],"class_list":["post-21007","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comunicacion-corporativa","tag-telecomunicacion-de-redes"],"acf":[],"wpml_current_locale":"es_ES","wpml_translations":[{"locale":"en_US","id":19721,"slug":"dtls-security-udp-tls-heartbleed","post_title":"DTLS security over UDP","href":"https:\/\/www.teldat.com\/dtls-security-udp-tls-heartbleed\/"}],"_links":{"self":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts\/21007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/users\/203"}],"replies":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/comments?post=21007"}],"version-history":[{"count":0,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts\/21007\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/media\/19724"}],"wp:attachment":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/media?parent=21007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/categories?post=21007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/tags?post=21007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}