Descrição:

Quando tratamos de segurança de dados, consideramos desde os meios físicos pelos quais passa uma informação e as camadas de serviço utilizadas para transmiti-la, até o próprio formato no qual ela está codificada. Com o avanço crescente da tecnologia, especialmente com o advento dos dispositivos móveis, o leque de possibilidades que temos em nossas mãos para nos comunicar aumentou e, com ele, também a quantidade de brechas de segurança. É uma consequência natural que, neste novo cenário, surjam constantemente novas demandas para a maior comodidade do usuário: não basta mais apenas ser capaz de se comunicar com outros dispositivos, o dispositivo móvel também deve ser um substituto viável para realizar operações antes desempenhadas por outros aparelhos eletrônicos, ou restritas ao meio não digital, e que podem envolver dados mais delicados, como, por exemplo, transações financeiras.

Uma das mais importantes camadas de segurança de dados é a criptografia. Formas mais robustas de criptografia, no entanto, demandam mais recursos computacionais, visto que normalmente fazem uso de ferramentas matemáticas com as quais os dispositivos de hardware que utilizamos diariamente não foram projetados para trabalhar eficientemente. A técnica de criptografia de curvas elípticas é especialmente interessante para essa abordagem. É uma técnica poderosa, cuja segurança está baseada no problema dos logaritmos discretos, e, portanto, é computacionalmente inviável obtermos a mensagem original a partir da mensagem cifrada sem o conhecimento da chave privada associada à chave pública utilizada na etapa de cifração. Essa técnica de criptografia faz uso de aritmética de corpos finitos, e é nesse ponto que a maior parte dos hardware comerciais apresenta um gargalo de eficiência.

Dessa forma, a possibilidade de um dispositivo de hardware otimizado para trabalhar com este tipo de aritmética, e que possa ser conectado a uma máquina host para realizar funções criptográficas para uso em uma aplicação local, se torna bastante atraente, adicionando uma camada robusta de segurança para os sistemas que utilizamos. Este desafio, então, tornou-se o escopo de nosso projeto de formatura, que tem como objetivo a síntese de um coprocessador criptográfico capaz de realizar operações sobre curvas elípticas para satisfazer quatro casos de uso: cifrar uma mensagem, decifrar uma mensagem, gerar uma assinatura digital e validar uma assinatura digital (todos cenários que poderiam ser implementados, por exemplo, em uma compra virtual pelo smartphone).

A síntese desse coprocessador foi feita em linguagem VHDL, através da ferramenta Xilinx ISE Design Suit, que conta com um ambiente completo para a implementação, otimização e síntese do projeto em uma FPGA. A placa de desenvolvimento utilizada foi a Nexys 2, da Digilent, que conta com a FPGA Xilinx Spartan 3-E, conectada à nossa máquina host através de uma interface serial. O coprocessador conta com uma arquitetura hierárquica, com cada camada responsável pelo fluxo de operações de um nível de abstração de dados (corpos finitos, curvas elípticas, algoritmo criptográfico).

Finalizando o projeto, também temos uma camada de software, implementada em linguagem C++, que tem duas funções principais: executar um terminal que simula uma aplicação com requisitos de segurança, responsável pelo tratamento de dados e chamadas ao coprocessador; e simular os casos de uso criptográficos (através da biblioteca Cryptopp), que podemos utilizar então para realizar uma comparação e determinar as vantagens e desvantagens de uma implementação em hardware como proposta alternativa para o cenário apresentado.

Participantes:

Dennis Tritapepe Seman Cuflat

Orientador:

Prof. Dr. Wilson Vicente Ruggiero

Co-orientador

Jonatas Faria Rossetti