Hola, ¿qué tal? Bienvenida o Bienvenido a este entrenamiento de Aruba Network Security Essentials. Mi nombre es Ricardo Cobos y en este video hablaré de algoritmos de hash y Diffie-Hellman. En el video anterior hablé de algoritmos de cifrado, los cuales son una operación matemática que puede procesar una serie de datos o mensaje y utilizando una llave, obtenemos como resultado un cyphertext y después de ese cyphertext se puede volver al mensaje original aplicando la operación de cifrado inversa junto con la misma llave, al menos en el caso de cifrado simétrico, y de esa manera, nosotros podemos tener confidencialidad. El algoritmo de hash es, por otro lado, una operación matemática que nos ofrece el servicio de integridad, ¿cómo ocurre? Cuando nosotros tenemos un mensaje, vamos a pensar un mensaje de texto, y se le aplica el proceso de hash que podrÃa ser comparado con un proceso de digestión de los datos, lo que se obtiene es una cadena de caracteres de una longitud fija, y esto sin importar el tamaño del mensaje original al cual se le aplicó el proceso de hash. Y opuesto a lo que tenemos con cifrado, en el caso de hash de esta cadena de caracteres, nosotros no podemos volver al mensaje original, esto es imposible. Lo que nos ofrece este tipo de algoritmo es, obviamente, una radiografÃa o una huella del mensaje original, y con esto, las entidades que estén involucradas en el intercambio de mensajes sabrán si el mensaje fue modificado en tránsito o no. ¿Por qué? Porque lo que ocurre es que el mensaje va a ser enviado junto con su hash, y cuando llega al destinatario, este lo que hará es tomar el mensaje, aplicar el algoritmo de hash y tener ese resultado que después comparará con el hash que se recibió junto con el mensaje. En el momento en el que se vea alguna discrepancia, entonces, se puede inferir que el mensaje fue modificado en tránsito. Si los dos hash coinciden, entonces, ese mensaje no fue modificado en tránsito y es considerado Ãntegro. Se debe de esperar, en el caso de los algoritmos de hash, un cambio en el mensaje va a implicar un cambio en el hash. No se puede modificar el mensaje sin que un hash de ese nuevo mensaje sea completamente diferente al original. También, dos mensajes diferentes no pueden dar como resultado el mismo hash. Y, finalmente, no se puede, como ya mencioné anteriormente, del hash obtener el mensaje original, ya que los hash no trabajan como los algoritmos de cifrado donde del cyphertext puedo volver al mensaje original. En el caso de hash, si yo tengo una cadena de caracteres o el hash mismo, no poder obtener el mensaje original. Hay algunos algoritmos de hash bien conocidos como MD5, SHA1, SHA2 de 256 bits, 384, 512 y SHA3. Ahora, una vez más, me gustarÃa recalcar en el caso de hash que lo comparáramos como un proceso de digestión. Si nosotros almorzamos algo y después lo digerimos, obviamente habrá un resultado al final, pero ese resultado final no importa cuánto intentemos, no podemos regresar al almuerzo original, a ese alimento que comimos. Lo mismo ocurre con los algoritmos de hash; de un texto o de un mensaje, cuando este se digiere por el algoritmo nos da una cadena de caracteres, el hash mismo, y de este, simplemente, no se puede regresar al mensaje original. Eso quiere decir que los hash no tienen reversa. Ahora, regresando un poco a la parte de llaves, cuando nosotros hablábamos un poco de cifrado, nosotros sabÃamos que, sobre todo un cifrado simétrico, nosotros sabemos que cuando una fuente quiere enviar un mensaje y le quiere dar confidencialidad, utiliza una llave, lo procesa, como resultado tenemos el cyphertext. Este cyphertext se envÃa al destinatario y este destinatario tiene que tener una copia de esa misma llave para hacer el proceso de descifrado, el proceso inverso. Sin embargo, ¿cómo transmitimos esa llave? ¿Cómo comunicamos esa llave? Obviamente, esto tiene que ser fuera de banda. Ya que si fuera a través del medio, lo que ocurrirÃa es que un usuario malicioso, un hacker, podrÃa interceptar esa llave, ¿cierto? Forzosamente, o al menos, aparentemente, para comunicar esta llave, la llave tiene que ser a través de un medio de un canal seguro y que nadie pueda acceder a ella. Porque si a través del medio inseguro, por ejemplo, internet, nosotros comunicamos la llave antes de cifrar el mensaje, este usuario malicioso podrÃa robar la llave y entonces no habrÃa seguridad. Y este ha sido un problema durante muchos años, hasta que un grupo de ingenieros pudo venir con una solución y esta solución para comunicar llaves a través del mismo canal por el cual queremos comunicar los datos cifrados, se llama "Diffie-Hellman". Este algoritmo, Diffie-Hellman, de hecho, es considerado un algoritmo de cifrado asimétrico. Lo que nos permite es tener dos identidades o dos personas que estén hablando a través de un medio inseguro y utilizar ese mismo medio inseguro para compartir información de la cual se derivará la llave final de cifrado que ellos utilizarán para ofrecer confidencialidad a su intercambio de mensajes. Hace sentido, mientras que, como ya mencioné en el slide anterior, la llave, por lo general, deberÃa ser comunicada a través de un canal paralelo fuera de banda y no por la misma red insegura en la que queremos cifrar los datos. Diffie-Hellman nos ofrece un método automático y más flexible para poder generar, a través de un canal de comunicación inseguro, una llave que no puede ser comprometida, la cual usaremos para comenzar a cifrar los datos. ¿Cómo funciona? En el caso de Diffie-Hellman, las dos partes van a generar por su lado, un par de valores completamente aleatorios e independientes el uno de otro. Uno de estos valores va a ser el valor privado y el otro va a ser el valor público. Eso quiere decir que Alice va a tener su valor privado y público, que van a ser diferentes a los valores privados y públicos de Bob. Es importante entender que el valor público y privado de Alice tienen un tipo de correlación. Y lo mismo ocurre con el valor público y privado de Bob. Ahora, los valores privados deben continuar privados. Eso quiere decir que el valor privado de Alice, este es el valor numérico, ella lo tiene que tener en su poder y de ninguna manera debe ser compartido, y lo mismo ocurre con Bob. Sin embargo, lo que ellos harán será compartir sus valores públicos. Eso quiere decir que este valor público que tiene Bob, lo compartirá con Alice. Y el valor público de Alice, ella lo compartirá con Bob a través del medio inseguro. Eso es importante entender. Eso significa que si tuviéramos algún hacker en el medio, este hacker realmente podrÃa tener copias, podrÃa ser un eavesdropping y obtener las copias de estos valores públicos. Vamos a colocarlos aquÃ, que tenemos el valor público de Alice y el valor numérico público de Bob. Este hacker podrÃa realmente interceptarlos. Sin embargo, esto no va a comprometer la seguridad del intercambio de llaves o de la generación de llaves, ¿por qué? Porque ahora Alice lo que hará es tomar el valor público de Bob y combinarlo con su valor privado y, como resultado, Alice tendrá una llave de cifrado. Del mismo modo, Bob tomará los valores públicos de Alice o el valor público de Alice junto con su valor privado, y tendrá como resultado la misma llave que Alice generó. Esto se debe gracias a la relación Ãntima entre los valores públicos y privados de cada uno de los lados. Y aún cuando el hacker tenga la copia del valor público de Alice y el valor público de Bob. Desafortunadamente para él, él no tiene conocimiento de los valores privados. Y estas llaves que cada uno de los dos, de las dos entidades, Alice y Bob, están generando y que son llaves idénticas, vale la pena recalcarlo, se obtienen utilizando tanto el valor público de la otra persona junto con el valor privado local. Y, de esa manera, ahora los dos, Alice y Bob, pudieron generar una llave de cifrado idéntica a través del medio inseguro que ellos utilizarán para cifrar los datos que intercambien, lo cual ofrece flexibilidad y un alto nivel de seguridad, siempre cuando los valores privados nunca se publiquen o nunca se comprometan. Existen dos variantes de este algoritmo Diffie-Hellman. Podemos utilizar valores primos o se puede ocupar una curva elÃptica, que es una serie de una versión de este algoritmo de cifrado bastante avanzada y es lo que se ocupa hoy en dÃa. Diffie-Hellman se ocupa en las comunicaciones de HTTPS, se ocupa en túneles de cifrado de IPSec. De hecho, se ocupa por muchos sistemas de comunicaciones actuales que tú ya ocupas a través de tu celular, tu computadora. Realmente es una herramienta que estamos utilizando todos los dÃas sin saber. Muy bien. Recomendaciones para los algoritmos. Es importante saber que una gran variedad de algoritmos de cifrado y de hash, algunos ya son considerados viejos e inseguros, como son RC4 y DES para algoritmos de cifrado y MD5 para algoritmo de hash. Lo mismo ocurre con Triple DES. Entonces, los algoritmos de cifrado que se ocupan hoy dÃa son AES, algunas veces Triple DES, pero como ya comenté aquà abajo, es importante evitarlo lo más posible. Estos algoritmos tienen varios modos de operación y también llaves de cifrado de diferentes longitudes. En el caso de autenticación, hay varios algoritmos de hash que también se soportan. Y para poder comunicar llaves o poder generar llaves, como ya platicamos, está Diffie-Hellman y Elliptic Curve Diffie-Hellman. Sin embargo, es importante entender que conforme pasan los años y el poder de cómputo y la capacidad de intentar romper estas llaves, incrementa o crece. Es por eso que se hace una migración periódicamente hacia algoritmos más seguros, y la tendencia en la actualidad, es movernos a los algoritmos de AES con llaves de 256 bits, algoritmos de hash como HMAC, KMAC o CMAC, y SHA, SHA3 con 384 bits o mayor, asà como Diffie-Hellman de curva elÃptica. Muy bien, con esto termino el video. Espero que te haya agradado el contenido. En el siguiente comenzaré a hablar de algoritmos de cifrado asimétrico y después practicaremos de certificados digitales y Public Key Infrastructure. Te veo en la próxima.