Hola hacketones! Bienvenidos a un nuevo CTF de la ruta de Cyber Security 101 para la certificación SEC1 en este post resolveremos: TryHackMe – Public Key Cryptography Basics
Considere la siguiente situación cotidiana. Supongamos que se reúne con un socio comercial tomando un café y discutiendo planes de negocios relativamente confidenciales. Analicemos la reunión desde la perspectiva de la seguridad.
- Puedes ver y escuchar a la otra persona. Por lo tanto, es fácil confirmar su identidad. Eso es autenticación ; es decir, confirmas la identidad de la persona con la que hablas.
- También puede confirmar que lo que escucha proviene de su socio comercial. Puede distinguir qué palabras y frases provienen de su socio comercial y cuáles de otros. Eso es autenticidad ; es decir, verifica que el mensaje proviene genuinamente de un remitente específico. Además, sabe que lo que dicen le llega y que no hay posibilidad de que algo altere las palabras de la otra parte. Eso es integridad ; es decir, garantizar que los datos no hayan sido alterados ni manipulados.
- Finalmente, puede elegir un asiento lejos de los demás clientes y hablar en voz baja para que solo su socio pueda escucharlo. Esto se refiere a la confidencialidad ; es decir, solo las personas autorizadas pueden acceder a los datos.
Comparemos rápidamente esto con la correspondencia en el ámbito cibernético. Cuando alguien te envía un mensaje de texto, ¿cómo puedes estar seguro de que es quien dice ser? ¿Cómo puedes estar seguro de que nada cambió el texto al viajar por los distintos enlaces de la red? Al comunicarte con tu socio comercial a través de una plataforma de mensajería en línea, debes asegurarte de lo siguiente:
- Autenticación : Debe asegurarse de comunicarse con la persona correcta y no con otra persona que finge estarlo.
- Autenticidad : Puedes verificar que la información proviene de la fuente reclamada.
- Integridad : Debes asegurarte de que nadie modifique los datos que intercambias.
- Confidencialidad : desea evitar que una persona no autorizada escuche sus conversaciones.
La criptografía puede proporcionar soluciones para satisfacer los requisitos mencionados, entre muchos otros. La criptografía de clave privada, es decir, el cifrado simétrico, protege principalmente la confidencialidad. Sin embargo, la criptografía de clave pública, es decir, la criptografía asimétrica, desempeña un papel importante en la autenticación, la autenticidad y la integridad. En esta sala se mostrarán varios ejemplos de cómo la criptografía de clave pública logra este objetivo.
Requisitos previos de aprendizaje
Esta sala es la segunda de tres salas introductorias sobre criptografía. Antes de empezar, asegúrese de haber completado la primera de la lista.
- Fundamentos de criptografía
- Fundamentos de criptografía de clave pública (esta sala)
- Conceptos básicos de hash
Objetivos de aprendizaje
En esta sala cubriremos varios criptosistemas asimétricos y aplicaciones que los utilizan, tales como:
- RSA
- Diffie-Hellman
- SSH
- Certificados SSL/TLS
- PGP y GPG
Primero, iniciemos la máquina virtual presionando el botón Iniciar máquina a continuación.
Arrancar la máquina
La máquina se iniciará en vista de pantalla dividida . Si la máquina virtual no está visible, utilice el botón azul » Mostrar vista dividida» en la parte superior de la página.
También puede acceder a la máquina virtual mediante SSH en la dirección IP MACHINE_IPusando las siguientes credenciales:
- Nombre de usuario:user
- Contraseña:Tryhackme123!
Tarea 2 Uso común del cifrado asimétrico
El intercambio de claves para el cifrado simétrico es un uso generalizado de la criptografía asimétrica. El cifrado asimétrico es relativamente lento en comparación con el simétrico; por lo tanto, dependemos del cifrado asimétrico para negociar y acordar los cifrados y claves simétricos.
Pero la pregunta es, ¿cómo se acuerda una clave con el servidor sin transmitirla para que la gente que espía pueda verla?
Analogía
Imagina que tienes un código secreto para comunicarte e instrucciones para usarlo. La pregunta es cómo puedes enviarle estas instrucciones a tu amigo sin que nadie más pueda leerlas. La respuesta es más sencilla de lo que parece: podrías pedirle a tu amigo un candado. Solo tu amigo tiene la llave de este candado, y asumiremos que tienes una caja indestructible que puedes cerrar con ella.
Si le envías las instrucciones en una caja cerrada a tu amigo, podrá desbloquearla y leer las instrucciones en cuanto las reciba. Después, podrán comunicarse usando el código secreto sin riesgo de que alguien los espíe.
En esta metáfora, el código secreto representa un cifrado y una clave simétricos, el candado representa la clave pública del servidor y la clave representa la clave privada del servidor.
| Analogía | Sistema criptográfico |
| Código secreto | Cifrado y clave de cifrado simétrico |
| Cerrar | Clave pública |
| Llave de la cerradura | Clave privada |
En consecuencia, solo necesitarías usar criptografía asimétrica una vez para que no afecte la velocidad, y luego podrás comunicarte de forma privada usando cifrado simétrico.
El mundo real
En realidad, se necesita más criptografía para verificar que la persona con la que se habla es quien dice ser. Esto se logra mediante firmas y certificados digitales, que abordaremos más adelante en esta sala.
Responda las preguntas a continuación
En la analogía presentada, ¿qué objeto real es análogo a la clave pública?
Lock
Tarea 3 RSA
RSA es un algoritmo de cifrado de clave pública que permite la transmisión segura de datos a través de canales inseguros. Con un canal inseguro, es probable que los atacantes lo intercepten.
Las matemáticas que hacen que RSA sea seguro
RSA se basa en el problema matemáticamente complejo de factorizar un número grande. Multiplicar dos números primos grandes es una operación sencilla; sin embargo, hallar los factores de un número enorme requiere mucha más potencia de cálculo.
Es sencillo multiplicar dos números primos, incluso en papel; por ejemplo, 113 × 127 = 14351. Incluso para números primos mayores, sería factible, incluso a mano. Considere el siguiente ejemplo numérico:
- Número primo 1: 982451653031
- Número primo 2: 169743212279
- Su producto: 982451653031 × 169743212279 = 166764499494295486767649
Por otro lado, es bastante complicado determinar qué dos números primos se multiplican entre sí para dar 14351 y es aún más difícil encontrar los factores de 166764499494295486767649 .
En ejemplos reales, los números primos serían mucho mayores que los de este ejemplo. Una computadora puede factorizar fácilmente 166764499494295486767649 ; sin embargo, no puede factorizar un número de más de 600 dígitos. Y estará de acuerdo en que la multiplicación de dos números primos enormes, cada uno de unos 300 dígitos, sería más fácil que la factorización de su producto.
Ejemplo numérico
Repasemos el cifrado, el descifrado y el uso de claves en el cifrado asimétrico. La clave pública es conocida por todos los corresponsales y se utiliza para el cifrado, mientras que la clave privada está protegida y se utiliza para el descifrado, como se muestra en la figura a continuación.

En la sala de Fundamentos de Criptografía , explicamos la operación módulo y mencionamos su importancia en la criptografía. En el siguiente ejemplo numérico simplificado, vemos el algoritmo RSA en acción:
- Bob elige dos números primos: p = 157 y q = 199. Calcula n = p × q = 31243 .
- Con ϕ ( n ) = n − p − q + 1 = 31243 − 157 − 199 + 1 = 30888 , Bob selecciona e = 163 tal que e es primo relativo a ϕ ( n ) ; además, selecciona d = 379 , donde e × d = 1 mod ϕ ( n ) , es decir, e × d = 163 × 379 = 61777 y 61777 mod 30888 = 1 . La clave pública es ( n , e ) , es decir, (31243,163) y la clave privada es $(n,d), es decir, (31243,379) .
- Digamos que el valor que quieren cifrar es x = 13 , entonces Alice calcularía y enviaría y = x e mod n = 13 163 mod 31243 = 16341 .
- Bob descifrará el valor recibido calculando x = y d mod n = 16341 379 mod 31243 = 13. De esta manera, Bob recupera el valor que Alice envió.
La demostración de que el algoritmo anterior funciona se puede encontrar en aritmética modular y queda fuera del alcance de este módulo. Cabe recordar que, en este ejemplo, elegimos un número primo de tres dígitos, mientras que en una aplicación real, p y q serían al menos un número primo de 300 dígitos cada uno.
RSA en CTF
Las matemáticas detrás de RSA aparecen con relativa frecuencia en los CTF, lo que requiere calcular variables o descifrar algún cifrado basándose en ellas. Hay muchos buenos artículos en línea que explican RSA y te brindarán casi toda la información necesaria para completar los desafíos. Un buen ejemplo de un desafío CTF de RSA es la sala » Descifrando RSA» .
Existen herramientas excelentes para superar los desafíos de RSA en los CTF. Mi favorita es RsaCtfTool , que me ha funcionado bien. También he tenido cierto éxito con rsatool .
Necesita conocer las variables principales de RSA en los CTF: p, q, m, n, e, d y c. Según nuestro ejemplo numérico:
- p y q son números primos grandes
- n es el producto de p y q
- La clave pública es n y e
- La clave privada es n y d
- m se utiliza para representar el mensaje original, es decir, texto sin formato
- c representa el texto cifrado, es decir, el texto cifrado
Los desafíos de Crypto CTF a menudo le presentan un conjunto de estos valores, y usted necesita romper el cifrado y descifrar un mensaje para recuperar la bandera.
Responda las preguntas a continuación
Sabiendo que p = 4391 y q = 6659 , ¿cuánto es n ?
29239669
Sabiendo que p = 4391 y q = 6659 , ¿cuál es ϕ ( n ) ?
29228620
Tarea 4 Intercambio de claves Diffie-Hellman
Uno de los desafíos del cifrado simétrico es compartir la clave secreta. Supongamos que desea enviar un documento protegido con contraseña a su socio comercial para discutir estrategias comerciales confidenciales. ¿Cómo compartiría la contraseña con él? Lo ideal sería contar con un canal seguro para enviar la contraseña, sabiendo que los atacantes no pueden leerla ni alterarla.
Intercambio de claves Diffie-Hellman
El intercambio de claves busca establecer un secreto compartido entre dos partes. Es un método que permite a ambas partes establecer un secreto compartido a través de un canal de comunicación inseguro sin necesidad de un secreto compartido preexistente y sin que un observador pueda obtener esta clave. Por consiguiente, esta clave compartida puede utilizarse para el cifrado simétrico en comunicaciones posteriores.
Considere el siguiente escenario. Alicia y Bob desean comunicarse de forma segura. Desean establecer una clave compartida para criptografía simétrica, pero no desean usar criptografía asimétrica para el intercambio de claves. Aquí es donde entra en juego el intercambio de claves Diffie-Hellman.
Alice y Bob generan secretos independientemente; llamemos a estos secretos A y B. También tienen algún material público común; llamémoslo C.
Debemos hacer algunas suposiciones. En primer lugar, al combinar secretos, es prácticamente imposible separarlos. En segundo lugar, el orden en que se combinan no importa. Alice y Bob combinarán sus secretos con el material común para formar AC y BC. Luego se los enviarán y combinarán la parte recibida con su secreto para crear dos claves idénticas, ambas ABC. Ahora pueden usar esta clave para comunicarse.
Si los párrafos anteriores le parecieron demasiado abstractos, investiguemos el proceso exacto.
- Alice y Bob acuerdan las variables públicas : un número primo grande p y un generador g , donde 0 < g < p . Estos valores se divulgarán públicamente a través del canal de comunicación. Aunque su valor es inseguro, elegiremos p = 29 y g = 3 para simplificar nuestros cálculos.
- Cada parte elige un entero privado. Como ejemplo numérico, Alicia elige a = 13 y Bob elige b = 15. Cada uno de estos valores representa una clave privada y no debe revelarse.
- Es hora de que cada parte calcule su clave pública utilizando su clave privada del paso 2 y las variables públicas acordadas del paso 1. Alice calcula A = g a mod p = 3 13 mod 29 = 19 y Bob calcula B = g b mod p = 3 15 mod 29 = 26. Estas son las claves públicas.
- Alice y Bob se intercambian las claves. Bob recibe A = g a mod p = 19 , es decir, la clave pública de Alice. Y Alice recibe B = g b mod p = 26 , es decir, la clave pública de Bob. Este paso se denomina intercambio de claves .
- Alice y Bob finalmente pueden calcular el secreto compartido usando la clave pública recibida y su propia clave privada. Alice calcula B a mod p = 26 13 mod 29 = 10 y Bob calcula A b mod p = 19 15 mod 29 = 10. Ambos cálculos arrojan el mismo resultado: g a b mod p = 10 , la clave secreta compartida.

Los números elegidos son demasiado pequeños para proporcionar seguridad y, en aplicaciones de la vida real, consideraríamos números mucho más grandes.
El intercambio de claves Diffie-Hellman se utiliza a menudo junto con la criptografía de clave pública RSA . Diffie-Hellman se utiliza para la concordancia de claves, mientras que RSA se utiliza para firmas digitales, transporte de claves y autenticación, entre otras funciones. Por ejemplo, RSA ayuda a comprobar la identidad de la persona con la que se habla mediante firma digital, ya que se puede confirmar con base en su clave pública. Esto evitaría que alguien atacara la conexión con un ataque de intermediario contra Alice haciéndose pasar por Bob. En resumen, Diffie-Hellman y RSA se incorporan a numerosos protocolos y estándares de seguridad para ofrecer una solución de seguridad integral.
Responda las preguntas a continuación
Considere p = 29 , g = 5 , a = 12. ¿Qué es A ?
7
Considere p = 29 , g = 5 , b = 17. ¿Cuál es B ?
9
Sabiendo que p = 29 , a = 12 y tienes B de la segunda pregunta, ¿cuál es la clave calculada por Bob? (clave = B a mod p )
24
Sabiendo que p = 29 , b = 17 y tienes A de la primera pregunta, ¿cuál es la clave calculada por Alice? (clave = A b mod p )
24
Tarea 5 SSH
Autenticación del servidor
Si ha utilizado un cliente SSH anteriormente, conocerá el mensaje de confirmación que aparece en la salida de la terminal a continuación.
Terminal
root@TryHackMe#ssh10.10.244.173The authenticity of host ‘10.10.244.173 (10.10.244.173)’ can’t be established.
ED25519 key fingerprint is SHA256:lLzhZc7YzRBDchm02qTX0qsLqeeiTCJg5ipOT0E/YM8.
This key is not known by any other name.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘10.10.244.173’ (ED25519) to the list of known hosts.
En la interacción anterior, el cliente SSH confirma si reconocemos la huella digital de la clave pública del servidor. ED25519 es el algoritmo de clave pública utilizado para la generación y verificación de la firma digital en este ejemplo. Nuestro cliente SSH no reconoció esta clave y nos solicita que confirmemos si deseamos continuar con la conexión. Esta advertencia se debe a la probabilidad de un ataque de intermediario (man-in-the-middle); un servidor malicioso podría haber interceptado la conexión y respondido haciéndose pasar por el servidor objetivo.
En este caso, el usuario debe autenticar el servidor, es decir, confirmar su identidad comprobando la firma de la clave pública. Si responde «sí», el cliente SSH registrará la firma de la clave pública para este host. En el futuro, se conectará silenciosamente a menos que este host responda con una clave pública diferente.
Autenticación del cliente
Ahora que hemos confirmado que nos comunicamos con el servidor correcto, necesitamos identificarnos y autenticarnos. En muchos casos, los usuarios de SSH se autentican con nombres de usuario y contraseñas, como si iniciaran sesión en una máquina física. Sin embargo, considerando los problemas inherentes a las contraseñas, esto no se ajusta a las mejores prácticas de seguridad.
En algún momento, seguramente se encontrará con una máquina con SSH configurado con autenticación de clave. Esta autenticación utiliza claves públicas y privadas para demostrar que el cliente es un usuario válido y autorizado en el servidor. Por defecto, las claves SSH son claves RSA . Puede elegir el algoritmo que desea generar y añadir una contraseña para cifrar la clave SSH .
ssh-keygenEs el programa que se utiliza habitualmente para generar pares de claves. Admite varios algoritmos, como se muestra en la página del manual a continuación.
Terminal
root@TryHackMe#manssh-keygen[…]
-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsaSpecifies the type of key to create. The possible values are “dsa”, “ecdsa”, “ecdsa-sk”, “ed25519”, “ed25519-sk”, or “rsa”.
[…]
Lo siguiente es solo para su información. En esta etapa, le recomendamos que solo reconozca sus nombres.
- DSA (Algoritmo de Firma Digital) es un algoritmo de criptografía de clave pública diseñado específicamente para firmas digitales.
- ECDSA (algoritmo de firma digital de curva elíptica) es una variante de DSA que utiliza criptografía de curva elíptica para proporcionar tamaños de clave más pequeños para una seguridad equivalente.
- ECDSA-SK (ECDSA con clave de seguridad) es una extensión de ECDSA. Incorpora claves de seguridad basadas en hardware para una mayor protección de las claves privadas.
- Ed25519 es un sistema de firma de clave pública que utiliza EdDSA (algoritmo de firma digital de curva de Edwards) con Curve25519.
- Ed25519-SK (Ed25519 con clave de seguridad) es una variante de Ed25519. Similar a ECDSA-SK, utiliza una clave de seguridad basada en hardware para una mejor protección de la clave privada.
Generemos un par de claves con las opciones predeterminadas.
Terminal
root@TryHackMe#ssh-keygen -ted25519Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/strategos/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/strategos/.ssh/id_ed25519
Your public key has been saved in /home/strategos/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:4S4DQvRfp52UuNwg++nTcWlnITEJTbMcCU0N8UYC1do strategos@g5000
The key’s random art image is:
+–[ED25519 256]–+
| . +XXB. |
| . . . oBBo |
| . . . = + o=o |
| . . * X .o.E |
| . . o S + o . |
| . . o .. + o |
| o +. + o |
| +. . |
| .. |
+—-[SHA256]—–+
En el ejemplo anterior, no usamos una frase de contraseña para mostrar el contenido de la clave privada. Analicemos las claves pública id_ed25519.puby privada generadas id_ed25519.
Terminal
strategos@g5000:~/.ssh$catid_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINqNMqNhpXZGt6T8Q8bOplyTeldfWq3T3RyNJTmTMJq9 strategos@g5000
strategos@g5000:~/.ssh$catid_ed25519—–BEGIN OPENSSH PRIVATE KEY—–
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACDajTKjYaV2Rrek/EPGzqZck3pXX1qt090cjSU5kzCavQAAAJA+E+ajPhPm
owAAAAtzc2gtZWQyNTUxOQAAACDajTKjYaV2Rrek/EPGzqZck3pXX1qt090cjSU5kzCavQ
AAAEB981T2ngdoNm8gEzRU35bGHofqRMjfo5egxl0/9fap/NqNMqNhpXZGt6T8Q8bOplyT
eldfWq3T3RyNJTmTMJq9AAAACm9xYWJAZzUwMDABAgM=
—–END OPENSSH PRIVATE KEY—–
Tenga en cuenta que la clave privada se compartió anteriormente con fines de demostración y se purgó posteriormente. Compartir una clave privada sería el acto más inseguro que cualquiera puede cometer contra su propia seguridad. Por otra parte, si hubiéramos usado [nombre del archivo] -t rsa, las claves resultantes habrían sido mucho más largas.
Claves privadas SSH
Como se mencionó anteriormente, debe tratar sus claves SSH privadas como contraseñas. Nunca las comparta bajo ninguna circunstancia; se llaman claves privadas por algo. Alguien con su clave privada puede iniciar sesión en servidores que la acepten, es decir, que la incluyan entre las claves autorizadas, a menos que la clave esté cifrada con una frase de contraseña.
Es muy importante mencionar que la contraseña utilizada para descifrar la clave privada no lo identifica en absoluto ante el servidor; solo descifra la clave privada SSH . La contraseña nunca se transmite ni sale de su sistema.
Usando herramientas como John the Ripper , puedes atacar una clave SSH encriptada para intentar encontrar la frase de contraseña, lo que resalta la importancia de usar una frase de contraseña compleja y mantener privada tu clave privada.
Al generar una clave SSH para iniciar sesión en una máquina remota, debe generar las claves en su máquina y luego copiar la clave pública, ya que esto significa que la clave privada nunca existe en la máquina de destino ssh-copy-id. Sin embargo, esto no es tan importante para las claves temporales generadas para acceder a las cajas CTF.
Los permisos deben estar configurados correctamente para usar una clave SSH privada ; de lo contrario, el cliente SSH ignorará el archivo con una advertencia. Solo el propietario debe poder leer o escribir en la clave privada ( 600o con un nivel de acceso más estricto). ssh -i privateKeyFileName user@hostAsí es como se especifica una clave para el cliente OpenSSH estándar de Linux .
Claves en las que confía el host remoto
Esta ~/.sshcarpeta es el lugar predeterminado para almacenar estas claves para OpenSSH. El authorized_keysarchivo (nótese la ortografía en inglés estadounidense) en este directorio contiene las claves públicas que permiten el acceso al servidor si la autenticación de clave está habilitada. En muchas distribuciones de Linux , la autenticación de clave está habilitada por defecto, ya que es más segura que usar una contraseña. Solo se debe aceptar la autenticación de clave si se desea permitir el acceso SSH al usuario root.
Uso de claves SSH para obtener un «mejor Shell»
Durante las pruebas de penetración (CTF), las pruebas de penetración y los ejercicios de red teaming, las claves SSH son una excelente manera de «actualizar» una shell inversa, siempre que el usuario tenga habilitado el inicio de sesión. Tenga en cuenta que www-data no suele permitir esto, pero los usuarios normales y root sí lo permiten. Dejar una clave SSHauthorized_keys en el archivo de una máquina puede ser una puerta trasera útil, y no es necesario lidiar con los problemas de las shells inversas no estabilizadas, como Control-C o la falta de autocompletado de tabulación.
Responda las preguntas a continuación
Comprueba la clave privada SSH en [nombre del archivo ~/Public-Crypto-Basics/Task-5]. ¿Qué algoritmo utiliza?
rsa
Tarea 6 Firmas y certificados digitales
En el mundo «analógico» , de vez en cuando se le pide firmar un documento. Cuando visita el banco para abrir una cuenta de ahorros, lo más probable es que le pidan firmar varios documentos. Cuando desea crear una cuenta en la biblioteca local, le pedirán que complete y firme la solicitud. El propósito puede variar según la situación. Por ejemplo, puede confirmar que acepta los términos y condiciones, autorizar una transacción o acusar recibo de un artículo. En el mundo «digital» , no puede usar su firma, sello ni huella dactilar; necesita una firma digital.
¿Qué es una firma digital?
Las firmas digitales permiten verificar la autenticidad e integridad de un mensaje o documento digital. Comprobar la autenticidad de los archivos significa saber quién los creó o modificó. Mediante la criptografía asimétrica, se genera una firma con la clave privada, que puede verificarse con la clave pública. Solo usted debería tener acceso a la clave privada, que prueba que firmó el archivo. En muchos países modernos, las firmas digitales y físicas tienen el mismo valor legal.
La forma más sencilla de firma digital es cifrar el documento con tu clave privada. Si alguien quiere verificar esta firma, la descifrará con tu clave pública y comprobará si los archivos coinciden. Este proceso se muestra en la imagen a continuación.

Algunos artículos utilizan términos como firma electrónica y firma digital indistintamente. Se refieren a pegar la imagen de una firma sobre un documento. Este método no prueba la integridad del documento, ya que cualquiera puede copiar y pegar una imagen.
En esta tarea, usamos el término firma digital para referirnos a la firma de un documento con una clave privada o un certificado. Este proceso es similar a la imagen anterior, donde Bob cifra un hash de su documento y lo comparte con Alice, junto con el documento original. Alice puede descifrar el hash cifrado y compararlo con el hash del archivo que recibió. Este método prueba la integridad del documento, a diferencia de pegar una imagen sofisticada de una firma. Abordaremos el hash en la sección «Fundamentos del Hashing» .
Certificados: ¡Demuestra quién eres!
Los certificados son una aplicación esencial de la criptografía de clave pública y también están vinculados a las firmas digitales. Su uso es común en HTTPS. ¿Cómo sabe tu navegador web que el servidor con el que te comunicas es el auténtico tryhackme.com?
La respuesta está en los certificados. El servidor web tiene un certificado que indica que es el sitio web tryhackme.com original. Los certificados tienen una cadena de confianza que comienza con una CA raíz (Autoridad de Certificación). Desde la instalación, tu dispositivo, sistema operativo y navegador web confían automáticamente en varias CA raíz. Los certificados solo son confiables cuando las CA raíz declaran confiar en la organización que los firmó. En cierto modo, es una cadena; por ejemplo, el certificado está firmado por una organización, la CA confía en la organización y tu navegador confía en la CA. Por lo tanto, tu navegador confía en el certificado. En general, existen largas cadenas de confianza. Puedes consultar las autoridades de certificación en las que confían Mozilla Firefox aquí y Google Chrome aquí .
Supongamos que tienes un sitio web y quieres usar HTTPS. Este paso requiere un certificado TLS. Puedes obtenerlo de las distintas autoridades de certificación por una cuota anual. Además, puedes obtener tus propios certificados TLS para tus dominios usando Let’s Encrypt de forma gratuita. Si gestionas un sitio web, conviene configurarlo y migrarlo a HTTPS, como haría cualquier sitio web moderno.
Responda las preguntas a continuación
¿Qué utiliza un servidor web remoto para demostrar su valía al cliente?
Certificates
¿Qué utilizarías para obtener un certificado TLS gratuito para tu sitio web?
Tarea 7 PGP y GPG
PGP significa Pretty Good Privacy (Privacidad Bastante Buena). Es un software que implementa cifrado para cifrar archivos, realizar firmas digitales y más. GnuPG o GPG es una implementación de código abierto del estándar OpenPGP.
GPG se utiliza comúnmente en el correo electrónico para proteger la confidencialidad de los mensajes. Además, puede utilizarse para firmar un mensaje y confirmar su integridad.
A continuación se muestra un ejemplo de generación de GPG . Se le pregunta sobre el propósito de su uso gpg, ya sea solo para firmar o para firmar y cifrar. Además de seleccionar el algoritmo criptográfico, tuvimos que elegir una fecha de caducidad para la clave generada. Finalmente, proporcionamos información sobre nosotros: nuestro nombre, dirección de correo electrónico y un comentario, generalmente sobre el propósito de esta clave.
Terminal
gpg–full-gen-key
gpg(GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) RSAand RSA(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA(sign only)
(9) ECC(sign and encrypt) *default*
(10) ECC(sign only)
(14) Existing key from card
Your selection? 9
Please select which elliptic curve you want:
(1) Curve 25519 *default*
(4) NISTP-384
(6) Brainpool P-256
Your selection? 1
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: strategos
Email address: strategos@tryhackme.thm[…]
pub ed25519 2024-08-29 [SC]
AB7E6AA87B6A8E0D159CA7FFE5E63DBD5F83D5ED
uidStrategos <strategos@tryhackme.thm>
sub cv25519 2024-08-29 [E]
Es posible que necesite usar GPG para descifrar archivos en CTF. Con PGP/ GPG , las claves privadas se pueden proteger con frases de contraseña de forma similar a como protegemos las claves privadas SSH . Si la clave está protegida con una frase de contraseña, puede intentar descifrarla con John the Ripper . gpg2johnLa clave proporcionada en esta tarea no está protegida con una frase de contraseña. La página de manual de GPG se puede encontrar en línea aquí .
Ejemplo práctico
Ahora que tienes tu par de claves GPG , puedes compartir la clave pública con tus contactos. Siempre que quieran comunicarse de forma segura, cifrarán los mensajes que te envían con tu clave pública. Para descifrarlos, tendrás que usar tu clave privada. Debido a la importancia de las claves GPG , es fundamental que guardes una copia de seguridad en un lugar seguro.
Supongamos que tienes una computadora nueva. Solo necesitas importar tu clave y podrás empezar a descifrar los mensajes recibidos de nuevo:
- Deberías gpg –import backup.keyimportar tu clave desde backup.key
- Para descifrar sus mensajes, debe emitirgpg –decrypt confidential_message.gpg
Responda las preguntas a continuación
Usa GPG para descifrar el mensaje ~/Public-Crypto-Basics/Task-7. ¿Qué palabra secreta contiene?
Pineapple
Tarea 8 Conclusión
Hemos definido la criptografía como la ciencia de proteger las comunicaciones en presencia de adversarios. Otra ciencia importante que estudia cómo romper o eludir los sistemas criptográficos es el criptoanálisis . En cuanto a probar todas las combinaciones posibles de contraseñas, lo llamamos ataque de fuerza bruta . Sin embargo, cuando sabemos que la contraseña probablemente sea una palabra del diccionario, tendrá más sentido probar palabras del diccionario en lugar de todas las combinaciones posibles; esto se denomina ataque de diccionario .
- La criptografía es la ciencia de proteger las comunicaciones y los datos mediante códigos y cifras.
- El criptoanálisis es el estudio de métodos para romper o eludir los sistemas de seguridad criptográficos sin conocer la clave.
- Un ataque de fuerza bruta es un método de ataque que implica probar todas las claves o contraseñas posibles para descifrar un mensaje.
- El ataque de diccionario es un método de ataque en el que el atacante prueba palabras del diccionario o combinaciones de ellas.
Esta sesión se centró en la criptografía de clave pública, la criptografía asimétrica y el intercambio de claves. Les proporcionó una comprensión esencial de RSA , Diffie-Hellman, pares de claves SSH , firmas y certificados digitales, y OpenPGP. Ahora, es el momento de aprender sobre el hash.
Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!