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.

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com