Criptografia Assimétrica (Asymmetric Cryptography)
Definição
Criptografia Assimétrica (Asymmetric Cryptography) é um tipo de criptografia que utiliza um par de chaves: uma chave pública e uma chave privada.
A chave pública é usada para criptografar dados, enquanto a chave privada correspondente é usada para descriptografá-los.
Diferente da criptografia simétrica, não é necessário compartilhar a chave privada, o que torna o sistema mais seguro para comunicação em ambientes inseguros.
Alguns algoritmos assimétricos conhecidos são:
- RSA (Rivest–Shamir–Adleman)
- DSA (Digital Signature Algorithm)
- ECC (Elliptic Curve Cryptography)
Objetivos da Criptografia Assimétrica
- Comunicação segura em ambientes inseguros: sem a necessidade de troca prévia de segredo.
- Garantir autenticidade: possibilitar assinaturas digitais que validam a identidade do remetente.
- Troca segura de chaves: base para o estabelecimento de sessões criptografadas (como em HTTPS).
- Base para autenticação de identidade: usado em certificados digitais e protocolos de segurança.
Exemplo prático (Python) — Criptografar e descriptografar com RSA
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
# Gerar chave privada e chave pública
chave_privada = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
chave_publica = chave_privada.public_key()
# Mensagem original
mensagem = b"Programício é incrível!"
# Criptografar com chave pública
mensagem_cifrada = chave_publica.encrypt(
mensagem,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# Descriptografar com chave privada
mensagem_decifrada = chave_privada.decrypt(
mensagem_cifrada,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print("Mensagem original:", mensagem.decode())
print("Mensagem cifrada:", mensagem_cifrada)
print("Mensagem decifrada:", mensagem_decifrada.decode())
(Nota: Em aplicações reais, a criptografia assimétrica é geralmente usada para proteger chaves de sessão — não mensagens inteiras — devido a limitações de tamanho e performance.)
Saída
Mensagem original: Programício é incrível!
Mensagem cifrada: b'\x87\xf2\xfa... (texto cifrado)'
Mensagem decifrada: Programício é incrível!
(A mensagem cifrada será diferente a cada execução.)
O ciclo da criptografia assimétrica
[Mensagem Original] --> (Criptografia com Chave Pública) --> [Mensagem Cifrada]
[Mensagem Cifrada] --> (Descriptografia com Chave Privada) --> [Mensagem Original]
Chave pública para cifrar, chave privada para decifrar.
Mantém a confidencialidade sem troca de segredo.
Mantém a confidencialidade sem necessidade de compartilhamento prévio de segredo.