Memory-safe elimination of side channels

Detalhes bibliográficos
Ano de defesa: 2022
Autor(a) principal: Luigi Domenico Cecchini Soares
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Minas Gerais
Brasil
ICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
Programa de Pós-Graduação em Ciência da Computação
UFMG
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: http://hdl.handle.net/1843/42564
https://orcid.org/ 0000-0002-9579-8427
Resumo: Um programa é dito isócrono se seu tempo de execução não depende de informações sensíveis. Isocronicidade é uma propriedade essencial em implementações criptográficas, posto que programas isócronos não apresentam vazamento de informações relacionadas a seus tempos de execução. Nesta dissertação, nós demonstramos como adaptar para o contexto de resistência à canais laterais um algoritmo de linearização parcial de grafos de fluxo de controle que foi, inicialmente, concebido para maximizar o desempenho em programas vetorizados. Esta transformação é correta: dada uma instância das entradas públicas, o programa parcialmente linearizado sempre executa a mesma sequência de instruções, independente das entradas secretas. Caso o programa original seja publicamente seguro, os acessos à cache de dados serão indistinguíveis no código transformado. Esta transformação é, também, ótima: todo desvio dependente de dados secretos é linearizado; nenhum desvio que dependa apenas de dados públicos é linearizado. Assim, a transformação preserva laços que dependem de informações públicas. Se todos os desvios que saem de um laço dependem de dados sensíveis, o programa modificado não terminará. Nossa transformação estende trabalhos recentes de maneiras não triviais. Ela é capaz de lidar com construções como "goto", "break", "switch" e "continue", que não estão presentes na linguagem de domínicio específico FaCT (2018). Assim como a ferramenta Constantine (2021), nossa transformação garante invariância de operações, mas sem necessitar de informações provenientes da execução dos programas. Além disso, em contraste com SC-Eliminator (2018), nossa técnica é capaz de lidar com programas contendo laços sem limites conhecidos em tempo de compilação.