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.
Texto Original: SECRET Clave: 123456 Texto Cifrado: (cifrado usando DES)
Texto Original: SECRET Clave: 1234567890ABCDEF1234567890ABCDEF Texto Cifrado: (cifrado usando AES)
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}')
Clave Pública: (clave pública RSA) Texto Original: SECRET Texto Cifrado: (cifrado usando clave pública RSA)
Clave Pública: (clave pública ECC) Texto Original: SECRET Texto Cifrado: (cifrado usando clave pública ECC)
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}')
| 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) |
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.
* Clave AES generada. * Clave AES cifrada con la clave pública RSA del receptor. * Clave AES cifrada enviada al receptor.
compartida.
* Datos cifrados usando la clave AES. * Datos cifrados enviados al receptor.
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.