O trabalho consiste em implementar, utilizando a linguagem SystemC, um módulo de criptografia que utiliza o IDEA (International Data Encryption Algorithm) que é um algoritmo de cifra de bloco (simétrica) que faz uso de uma chave secreta de 128 bits e tanto o texto legível (entrada) quanto o texto ilegível (saída) possuem 64 bits. O algoritmo é usado tanto para a cifragem quanto para a decifragem.
No resultado final da implementação: O membro Lucas Nascimento codificou a estrutura do módulo em SystemC, definindo os registradores, os processos e as funções utilizadas no módulo como por exemplo a implementação dos rounds e half-round, realizando também a parte dos testes do módulo para a verificação do projeto. O membro Lucas Avelino implementou principalmente a conexão do módulo com a Network on Chip, realizando também parte da geração das sub-chaves. O projeto foi implementado em alto nível, utilizando loops ao invés de módulos de round e half-round, que podem ser utilizados no futuro. Mais detalhes sobre a implementação do projeto e as tarefas de cada um estão no GitHub do projeto: https://github.com/LSantos06/SystemC_IDEA.
- Lucas Avelino
- Matrícula: 13/0013072
- GitHub: lucasavelino
- Lucas Nascimento
- Matrícula: 14/0151010
- GitHub: LSantos06
O IDEA possui três grupos algébricos cujas operações são misturadas. Estas operações, que podem ser facilmente implementadas via hardware e/ou software, são:
-
Multiplicação módulo 2¹⁶+1 (multiplicação ignorando qualquer overflow);
-
Adição módulo 2¹⁶ (adição ignorando qualquer overflow);
-
Xor.
Todas estas operações são feitas com blocos de 16 bits, o que faz com que este algoritmo também seja eficiente em processadores de 16 bits.
A partir da chave secreta de 128 bits, são geradas 52 sub-chaves de 16 bits. Cada round utiliza 6 sub-chaves, totalizando 48 sub-chaves, mais 4 sub-chaves são geradas para a realização do half-round.
Figura 1: Um round de criptografia do IDEA (Repetido 8 vezes).