[[hack_roadmap-0|Up]]
====== Criptografía Simétrica y Asimétrica ======
La criptografía, fundamental en la protección de datos y la seguridad de las
comunicaciones, se divide principalmente en dos categorías: criptografía
simétrica y asimétrica. Cada una tiene sus propias características, ventajas y
aplicaciones. A continuación, se desarrollan estos conceptos en detalle.
===== Criptografía Simétrica =====
==== Conceptos Clave: ====
* **Clave Única:** Utiliza la misma clave para cifrar y descifrar los datos.
* **Velocidad:** Generalmente más rápida y eficiente que la criptografía asimétrica.
* **Confidencialidad:** La seguridad depende de mantener la clave secreta.
* **Aplicaciones Comunes:** Cifrado de datos en disco, comunicación segura en redes privadas.
==== Ejemplos de Algoritmos Simétricos: ====
* **DES (Data Encryption Standard):** Algoritmo de cifrado simétrico de bloque con una longitud de clave de 56 bits.
Texto Original: SECRET
Clave: 123456
Texto Cifrado: (cifrado usando DES)
* **AES (Advanced Encryption Standard):** Algoritmo de cifrado simétrico de bloque que puede usar claves de 128, 192 o 256 bits.
Texto Original: SECRET
Clave: 1234567890ABCDEF1234567890ABCDEF
Texto Cifrado: (cifrado usando AES)
==== Ejemplo de Uso de AES en Python: ====
from Crypto.Cipher import AES
import os
def encrypt_AES_GCM(msg, secretKey):
aesCipher = AES.new(secretKey, AES.MODE_GCM)
ciphertext, authTag = aesCipher.encrypt_and_digest(msg)
return (ciphertext, aesCipher.nonce, authTag)
secretKey = os.urandom(32) # Use a secure random key of 256 bits
msg = b'SECRET'
(ciphertext, nonce, authTag) = encrypt_AES_GCM(msg, secretKey)
print(f'Ciphertext: {ciphertext}')
==== Recursos: ====
* [[https://en.wikipedia.org/wiki/Advanced_Encryption_Standard|AES Encryption - Wikipedia]]
* [[https://en.wikipedia.org/wiki/Data_Encryption_Standard|DES Encryption - Wikipedia]]
===== Criptografía Asimétrica =====
==== Conceptos Clave: ====
* **Par de Claves:** Utiliza un par de claves, una pública y una privada. La clave pública cifra los datos y la clave privada los descifra.
* **Seguridad:** La clave privada debe mantenerse secreta, mientras que la clave pública puede distribuirse libremente.
* **Aplicaciones Comunes:** Firmas digitales, intercambio de claves, cifrado de emails.
==== Ejemplos de Algoritmos Asimétricos: ====
* **RSA (Rivest-Shamir-Adleman):** Algoritmo de cifrado asimétrico ampliamente utilizado para la transmisión segura de datos.
Clave Pública: (clave pública RSA)
Texto Original: SECRET
Texto Cifrado: (cifrado usando clave pública RSA)
* **ECC (Elliptic Curve Cryptography):** Utiliza curvas elípticas para proporcionar un alto nivel de seguridad con claves más pequeñas.
Clave Pública: (clave pública ECC)
Texto Original: SECRET
Texto Cifrado: (cifrado usando clave pública ECC)
==== Ejemplo de Uso de RSA en Python: ====
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import binascii
key = RSA.generate(2048)
public_key = key.publickey().export_key()
private_key = key.export_key()
msg = b'SECRET'
rsa_public_key = RSA.import_key(public_key)
cipher = PKCS1_OAEP.new(rsa_public_key)
ciphertext = cipher.encrypt(msg)
print(f'Ciphertext: {binascii.hexlify(ciphertext)}')
rsa_private_key = RSA.import_key(private_key)
cipher = PKCS1_OAEP.new(rsa_private_key)
plaintext = cipher.decrypt(ciphertext)
print(f'Plaintext: {plaintext}')
==== Recursos: ====
* [[https://en.wikipedia.org/wiki/RSA_(cryptosystem|RSA Encryption - Wikipedia]])
* [[https://en.wikipedia.org/wiki/Elliptic-curve_cryptography|Elliptic Curve Cryptography - Wikipedia]]
===== Comparación entre Criptografía Simétrica y Asimétrica =====
| **Característica** | **Criptografía Simétrica** | **Criptografía Asimétrica** |
| **Clave** | Única (misma para cifrar y descifrar) | Par de claves (pública y privada) |
| **Velocidad** | Más rápida | Más lenta |
| **Seguridad** | Depende de la secrecía de la clave | Depende de la seguridad de la clave privada |
| **Uso Común** | Cifrado de datos en reposo, VPN | Firmas digitales, intercambio de claves |
| **Tamaño de Clave** | Más corto (128-256 bits) | Más largo (1024-4096 bits) |
===== Aplicaciones Combinadas =====
En la práctica, ambos tipos de criptografía a menudo se utilizan juntos para
aprovechar las fortalezas de cada uno. Un ejemplo común es el uso de
criptografía asimétrica para el intercambio seguro de una clave simétrica, que
luego se utiliza para cifrar grandes volúmenes de datos de manera eficiente.
==== Ejemplo de Protocolo Híbrido: ====
* **Intercambio de Claves:** Utilizando RSA para intercambiar una clave AES.
* Clave AES generada.
* Clave AES cifrada con la clave pública RSA del receptor.
* Clave AES cifrada enviada al receptor.
* **Cifrado de Datos:** Utilizando AES para cifrar los datos con la clave
compartida.
* Datos cifrados usando la clave AES.
* Datos cifrados enviados al receptor.
==== Recursos: ====
* [[https://en.wikipedia.org/wiki/Hybrid_cryptosystem|Hybrid Cryptosystem - Wikipedia]]
===== Conclusión =====
La comprensión de la criptografía simétrica y asimétrica es fundamental para
asegurar la información en entornos digitales. Mientras que la criptografía
simétrica es eficiente para el cifrado de grandes volúmenes de datos, la
criptografía asimétrica proporciona un mecanismo seguro para el intercambio de
claves y la autenticación. Juntas, estas técnicas forman la base de muchas
aplicaciones y protocolos de seguridad modernos.
===== Recursos Adicionales =====
* [[https://www.geeksforgeeks.org/difference-between-symmetric-and-asymmetric-key-encryption/|Cryptography Overview]] (Geeks for Geeks)