1.Construir uma classe Python que implemente um KEM - ElGamal.
-
Inicializar cada instância recebendo o parâmetro de segurança (tamanho em bits da ordem do grupo cíclico) e gere as chaves pública e privada.
-
Conter funções para encapsulamento e revelação da chave gerada.
-
Construir, a partir deste KEM e usando a transformação de Fujisaki-Okamoto, um PKE que seja IND-CCA seguro.
-
Construir uma classe Python que implemente o EdCDSA a partir do “standard” FIPS186-5
- A implementação deve conter funções para assinar digitalmente e verificar a assinatura.
- A implementação da classe deve usar uma das “Twisted Edwards Curves” definidas no standard e escolhida na iniciação da classe: a curva “edwards25519” ou “edwards448”.
- Por aplicação da transformação de Fiat-Shamir construa um protocolo de autenticação de desafio-resposta
Neste trabalho pretende-se implementar em Sagemath de algumas dos candidatos a “standartização” ao concurso NIST Post-Quantum Cryptography na categoria de esquemas de assinatura digital. Ver também a directoria com a documentação. Construa
- Um protótipo Sagemath do algoritmo Dilithium ,
- Um protótipo Sagemath do algoritmo Sphincs+.
TO-DO: Add detailed description and sections for each project.