Exposto, JoséPedrosa, TiagoCampiolo, RodrigoNakai, Eduardo Yuzo2021-10-202021-10-202021http://hdl.handle.net/10198/24067Mestrado de dupla diplomação com a UTFPR - Universidade Tecnológica Federal do ParanáCryptography can be classified as secret-key and public-key cryptography. Both have distinct features and differs in performance, complexity, flexibility and security. Secret-key cryptography, considering its simplicity and performance, is commonly used for securing communications. The invention of public-key cryptography made it possible to develop more flexible cryptographic schemes and algorithms, such as key exchanges and digital signatures, hence extending the possibilities and the field of cryptography. Cryptographic implementations are primordial for securing the Internet, and as a consequence, correctness, security and efficiency are more emphasized. In this sense, this work addresses the evaluation and the implementation of Ed25519, an instance of the Edwards-curve Digital Signature Algorithm for digital messages authentication. The implementation lies on Rust: a safe, modern, high-level and strongly-typed programming language. This work has two contributions: (i) an Ed25519 implementation in Rust that considers readability, modularity and ease of use, and (ii) an evaluation of the Ed25519 implementation from a security/performance perspective. The implementation was comprised by three modules: field arithmetic, curve arithmetic and the interface. The security perspective presented essential qualities of cryptographic implementations, such as functional correctness, memory safety, constant-time operations and usability. The performance evaluation showed low execution times and proved to be as fast as implementations written in C; Rust’s RAM consumption showed similar results in comparison to implementations written in C.A criptografia pode ser classificada em simétrica e assimétrica. Ambos diferem-se com relação ao desempenho, complexidade, flexibilidade e segurança. A criptografia simétrica é comumente utilizada para estabelecer comunicações secretas. A criptografia assimétrica foi capaz de ampliar as primitivas criptográficas ao possibilitar primitivas para assinaturas digitais e acordo de chaves. Implementações criptográficas são primordiais na proteção de comunicações e informações. Nesse sentido, a segurança, corretude e eficiência são priorizadas. Este trabalho aborda a avaliação e implementação do algoritmo de assinaturas digitais Ed25519, uma instância do Edwards-curve Digital Signature Algorithm. Este trabalho tem como objetivo realizar a implementação do algoritmo Ed25519 em Rust, uma linguagem de programação de alto nível, moderna e fortemente tipada, com foco em memory safety. Dessa forma, as contribuições são: (i) uma implementação do Ed25519 em Rust que suporta legibilidade, modularidade e facilidade de uso e (ii) a avaliação da implementação em termos de desempenho e segurança. O desenvolvimento envolveu a implementação de três módulos: aritmética de corpos, aritmética de curvas e interface. Na perspectiva da segurança, foi possível apresentar atributos essenciais às implementações criptográficas, tais como correctness, memory safety, usabilidade e operações em tempo constante. A implementação apresentou tempos de execução aceitáveis e próximos das implementações em C; além disso, Rust apresentou consumo de memória RAM similar às implementações em C.engEdwards-curve digital signature algorithmElliptic curve cryptographyCryptographic librarySecurity analysisPerformance evaluationEvaluation and implementation of the Ed25519 digital signature algorithm in rustmaster thesis202775852