La criptografía es una herramienta fundamental en la seguridad informática, utilizada para proteger la confidencialidad, integridad y autenticidad de la información. En este módulo, exploraremos diversas aplicaciones prácticas de la criptografía en el mundo real.
- Cifrado de Datos
Concepto
El cifrado de datos es el proceso de convertir información legible (texto plano) en un formato codificado (texto cifrado) que solo puede ser leído por alguien que posea la clave de descifrado adecuada.
Ejemplo
Un ejemplo común es el cifrado de archivos en un disco duro para proteger información sensible. Herramientas como BitLocker (Windows) y FileVault (macOS) utilizan criptografía para cifrar datos almacenados en dispositivos.
Ejercicio Práctico
Objetivo: Cifrar y descifrar un mensaje utilizando una clave simétrica.
from cryptography.fernet import Fernet # Generar una clave key = Fernet.generate_key() cipher_suite = Fernet(key) # Mensaje a cifrar message = b"Este es un mensaje secreto" cipher_text = cipher_suite.encrypt(message) print(f"Texto cifrado: {cipher_text}") # Descifrar el mensaje plain_text = cipher_suite.decrypt(cipher_text) print(f"Texto descifrado: {plain_text.decode()}")
Explicación:
- Generamos una clave simétrica utilizando
Fernet
. - Ciframos el mensaje.
- Desciframos el mensaje para obtener el texto original.
- Firmas Digitales
Concepto
Las firmas digitales proporcionan autenticidad y no repudio, asegurando que un mensaje o documento proviene de una fuente legítima y no ha sido alterado.
Ejemplo
Las firmas digitales se utilizan comúnmente en correos electrónicos, contratos electrónicos y software distribuido para verificar la identidad del remitente y la integridad del contenido.
Ejercicio Práctico
Objetivo: Crear y verificar una firma digital utilizando criptografía asimétrica.
from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import rsa, padding # Generar claves pública y privada private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) public_key = private_key.public_key() # Mensaje a firmar message = b"Este es un mensaje importante" # Firmar el mensaje signature = private_key.sign( message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) # Verificar la firma try: public_key.verify( signature, message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) print("La firma es válida.") except: print("La firma no es válida.")
Explicación:
- Generamos un par de claves pública y privada.
- Firmamos el mensaje con la clave privada.
- Verificamos la firma con la clave pública.
- Autenticación y Control de Acceso
Concepto
La criptografía se utiliza en sistemas de autenticación para verificar la identidad de usuarios y controlar el acceso a recursos.
Ejemplo
Los sistemas de autenticación multifactor (MFA) combinan algo que el usuario sabe (contraseña), algo que el usuario tiene (token) y algo que el usuario es (biometría) para proporcionar una autenticación más segura.
Ejercicio Práctico
Objetivo: Implementar una autenticación básica con hash de contraseñas.
import hashlib # Función para hashear una contraseña def hash_password(password): return hashlib.sha256(password.encode()).hexdigest() # Almacenar la contraseña hasheada stored_password_hash = hash_password("mi_contraseña_segura") # Verificar la contraseña def verify_password(stored_hash, provided_password): return stored_hash == hash_password(provided_password) # Ejemplo de verificación print(verify_password(stored_password_hash, "mi_contraseña_segura")) # True print(verify_password(stored_password_hash, "contraseña_incorrecta")) # False
Explicación:
- Hasheamos una contraseña utilizando SHA-256.
- Almacenamos el hash de la contraseña.
- Verificamos si una contraseña proporcionada coincide con el hash almacenado.
- Comunicaciones Seguras
Concepto
La criptografía asegura la confidencialidad e integridad de las comunicaciones a través de redes inseguras.
Ejemplo
El protocolo HTTPS utiliza criptografía para proteger la comunicación entre navegadores web y servidores, asegurando que los datos transmitidos no puedan ser interceptados o alterados.
Ejercicio Práctico
Objetivo: Configurar una conexión HTTPS básica utilizando Python y http.server
.
import http.server import ssl # Configurar el servidor HTTP server_address = ('localhost', 4443) httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler) # Envolver el servidor con SSL httpd.socket = ssl.wrap_socket(httpd.socket, certfile='path/to/cert.pem', keyfile='path/to/key.pem', server_side=True) print("Servidor HTTPS corriendo en https://localhost:4443") httpd.serve_forever()
Explicación:
- Configuramos un servidor HTTP básico.
- Envolvemos el servidor con SSL utilizando un certificado y una clave privada.
- Iniciamos el servidor HTTPS.
Conclusión
En esta sección, hemos explorado diversas aplicaciones de la criptografía, incluyendo el cifrado de datos, firmas digitales, autenticación y control de acceso, y comunicaciones seguras. Estos ejemplos prácticos ilustran cómo la criptografía se utiliza en la vida cotidiana para proteger la información y asegurar la integridad y autenticidad de los datos.
Resumen
- Cifrado de Datos: Protege la confidencialidad de la información.
- Firmas Digitales: Garantizan la autenticidad y no repudio.
- Autenticación y Control de Acceso: Verifican la identidad de usuarios y controlan el acceso a recursos.
- Comunicaciones Seguras: Aseguran la confidencialidad e integridad de las comunicaciones.
Preparación para el Siguiente Tema
En el próximo módulo, nos adentraremos en la Gestión de Riesgos y Medidas de Protección, donde aprenderemos a evaluar riesgos, implementar políticas de seguridad y desarrollar planes de respuesta a incidentes.
Fundamentos de Seguridad Informática
Módulo 1: Introducción a la Seguridad Informática
- Conceptos Básicos de Seguridad Informática
- Tipos de Amenazas y Vulnerabilidades
- Principios de la Seguridad Informática
Módulo 2: Ciberseguridad
- Definición y Alcance de la Ciberseguridad
- Tipos de Ataques Cibernéticos
- Medidas de Protección en Ciberseguridad
- Casos de Estudio de Incidentes de Ciberseguridad
Módulo 3: Criptografía
- Introducción a la Criptografía
- Criptografía Simétrica
- Criptografía Asimétrica
- Protocolos Criptográficos
- Aplicaciones de la Criptografía
Módulo 4: Gestión de Riesgos y Medidas de Protección
- Evaluación de Riesgos
- Políticas de Seguridad
- Controles de Seguridad
- Plan de Respuesta a Incidentes
- Recuperación ante Desastres
Módulo 5: Herramientas y Técnicas de Seguridad
- Herramientas de Análisis de Vulnerabilidades
- Técnicas de Monitoreo y Detección
- Pruebas de Penetración
- Seguridad en Redes
- Seguridad en Aplicaciones
Módulo 6: Buenas Prácticas y Normativas
- Buenas Prácticas en Seguridad Informática
- Normativas y Estándares de Seguridad
- Cumplimiento y Auditoría
- Formación y Concienciación