Use este identificador para citar ou linkar para este item: http://repositorio.utfpr.edu.br/jspui/handle/1/37285
Registro completo de metadados
Campo DCValorIdioma
dc.creatorRosa, Ana Carla Quallio-
dc.date.accessioned2025-06-30T20:36:08Z-
dc.date.available2025-06-30T20:36:08Z-
dc.date.issued2025-02-17-
dc.identifier.citationROSA, Ana Carla Quallio. Avaliação de diferentes implementações do sistema de criptografia RSA. 2025. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) – Universidade Tecnológica Federal do Paraná, Campo Mourão, 2025.pt_BR
dc.identifier.urihttp://repositorio.utfpr.edu.br/jspui/handle/1/37285-
dc.description.abstractWith the increasing flow of information between different devices, encryption systems have become essential to ensure data authenticity, confidentiality, and integrity. A common approach is asymmetric encryption, which uses two keys: one for encrypting messages and another for decrypting them. In this context, the RSA algorithm emerges as one of the most widely adopted encryption systems. This study aims to evaluate RSA implementations, investigating the impact of adopting different approaches, including selecting libraries within the same programming language and using various programming languages. Experiments were conducted in C, C++, Java, JavaScript, Python, and Rust, using two libraries per language: OpenSSL and Libgcrypt (C), Botan and Crypto++ (C++), Bouncy Castle and Java Crypto (Java), Forge and Crypto (JavaScript), Cryptography and PyCryptodome (Python), and Rust OpenSSL and Rust Crypto (Rust). The analysis of average execution times demonstrated that Rust, C, and Python achieved the best performance in encryption and decryption processes, mainly due to their implementations’ use of OpenSSL as the foundation. Regarding key generation, C++ and Python obtained the shortest average times for 2048 and 4096-bit keys. Additionally, an analysis of confidential data storage structures revealed similar patterns used to store private keys across the studied languages. Finally, a memory dump analysis exposed fragments of private keys in various libraries. In the case of JavaScript, it was possible to recover the private key entirely in both tested implementations, highlighting a vulnerability that could compromise system security if an attacker gains access to the program’s core dump. The results provide a basis for selecting RSA implementations, considering performance and security.pt_BR
dc.languageporpt_BR
dc.publisherUniversidade Tecnológica Federal do Paranápt_BR
dc.rightsopenAccesspt_BR
dc.rightsAttribution 4.0 International*
dc.rights.urihttp://creativecommons.org/licenses/by/4.0/*
dc.subjectLinguagem de programação (Computadores)pt_BR
dc.subjectCriptografia de dados (Computação)pt_BR
dc.subjectProteção de dadospt_BR
dc.subjectProgramming languages (Electronic computers)pt_BR
dc.subjectData encryption (Computer science)pt_BR
dc.subjectData protectionpt_BR
dc.titleAvaliação de diferentes implementações do sistema de criptografia RSApt_BR
dc.title.alternativeEvaluation of different implementations of the RSA encryption systempt_BR
dc.typebachelorThesispt_BR
dc.description.resumoCom o aumento do fluxo de informações entre diferentes dispositivos, os sistemas de criptografia tornaram-se essenciais para garantir a autenticidade, confidencialidade e a integridade dos dados. Uma abordagem comum é a criptografia assimétrica, que utiliza duas chaves: uma para cifrar mensagens e outra para decifrá-las. Nesse contexto, o algoritmo RSA emerge como um dos sistemas mais amplamente adotados nessa abordagem de criptografia. Este trabalho tem como objetivo conduzir uma avaliação das implementações do RSA, investigando o impacto da adoção de diferentes abordagens, incluindo a seleção de bibliotecas em uma mesma linguagem, e a utilização de linguagens de programação distintas. Os experimentos foram conduzidos em C, C++, Java, JavaScript, Python e Rust, utilizando duas bibliotecas por linguagem: OpenSSL e Libgcrypt (C), Botan e Crypto++ (C++), Bouncy Castle e Java Crypto (Java), Forge e Crypto (JavaScript), Cryptography e PyCryptodome (Python), além de Rust OpenSSL e Rust Crypto (Rust). A análise dos tempos médios de execução demonstrou que Rust, C e Python apresentaram o melhor desempenho nos processos de cifração e decifração, principalmente devido ao uso do OpenSSL como base de suas implementações. Quanto à geração de chaves, C++ e Python obtiveram os menores tempos médios para chaves de 2048 e 4096 bits. Além disso, foi conduzida uma análise das estruturas de armazenamento de informações confidenciais, revelando similaridades nos padrões utilizados para armazenar chaves privadas entre as linguagens selecionadas. Por fim, a análise de despejo de memória revelou a presença de fragmentos da chave privada em diversas bibliotecas. No caso do JavaScript, foi possível recuperar a chave integralmente nas duas bibliotecas, evidenciando uma vulnerabilidade que pode comprometer a segurança do sistema caso um atacante obtenha acesso ao despejo de memória do programa. Os resultados obtidos fornecem uma base para a escolha de implementações do RSA, considerando tanto desempenho quanto segurança.pt_BR
dc.degree.localCampo Mourãopt_BR
dc.publisher.localCampo Mouraopt_BR
dc.contributor.advisor1Campiolo, Rodrigo-
dc.contributor.referee1Campiolo, Rodrigo-
dc.contributor.referee2Santos, Luiz Arthur Feitosa dos-
dc.contributor.referee3Gonçalves, Rogério Aparecido-
dc.contributor.referee4Corrêa, Wellington José-
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentDepartamento Acadêmico de Computaçãopt_BR
dc.publisher.programCiência da Computaçãopt_BR
dc.publisher.initialsUTFPRpt_BR
dc.subject.cnpqCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOpt_BR
Aparece nas coleções:CM - Ciência da Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
avaliacaoimplementacoessistemascriptografia.pdf1,79 MBAdobe PDFThumbnail
Visualizar/Abrir


Este item está licenciada sob uma Licença Creative Commons Creative Commons