Um estudo publicado em 26 de outubro na Discover Computing relata que uma extensão de instruções RISC-V executou encapsulamento e decapsulamento do Classic McEliece em uma FPGA. A demonstração usou parâmetros reduzidos; as reduções de ciclos de 87,4% e 86,1% vieram de simulações com memória assíncrona, não da execução na placa. O estudo dos pesquisadores avaliou a implementação em uma DE1-SoC com FPGA Intel Cyclone V.

Neste artigo

O que a FPGA executou

A equipe implementou uma extensão acoplada ao núcleo RISC-V RV32I para acelerar operações selecionadas do Classic McEliece, um mecanismo pós-quântico de encapsulamento de chaves. A configuração usou SYS_T=2, SYS_N=48 e GFBITS=12, valores reduzidos para avaliar a arquitetura. Na placa, o encapsulamento e o decapsulamento foram executados com chaves geradas por um host.

O projeto completo ocupou 10.531 ALMs. A ferramenta de síntese informou frequência máxima ajustada de 118,89 MHz no canto lento a 85 °C; o processador e os aceleradores, porém, operaram com clock de 5 MHz na placa. São medidas de configuração distintas.

Como os resultados de simulação diferem dos ciclos na placa

As reduções percentuais comparam uma simulação de memória assíncrona à versão sem aceleração. Na FPGA, a memória síncrona produziu contagens próprias:

Configuração e escopoEncapsulamentoDecapsulamentoCondição
Simulação com memória assíncrona1.010 ciclos, redução de 87,4%1.708.050 ciclos, redução de 86,1%Comparação com a base sem aceleração
Execução na FPGA com memória síncrona1.820 ciclos3.654.113 ciclosChaves geradas por um host

O artigo também informa 13.585 ciclos para o encapsulamento completo na FPGA, incluindo SHA-256. Esse total abrange mais trabalho que os 1.820 ciclos da operação de encapsulamento, por isso os dois valores não são intercambiáveis.

Na comparação entre os regimes de memória do estudo, a execução síncrona registrou 1,80× os ciclos de encapsulamento e 2,14× os de decapsulamento da configuração assíncrona. A latência de leitura da memória síncrona afeta essa diferença; ela não representa, por si só, uma comparação isolada do efeito dos aceleradores.

Onde as instruções personalizadas ajudam

A implementação manteve três mapeamentos: busca de Chien para a lista de suporte, eliminação gaussiana de tamanho fixo para gerar o polinômio mínimo e redução em fluxo para a forma sistemática da chave pública. No caso de genpoly_gen, a eliminação gaussiana reduziu a execução do programa de 297 para 38 ciclos, um ganho de 7,8×.

Já a tentativa de acelerar composeinv com DMA foi descartada. No perfil integrado, ela melhorou a etapa controlbits em apenas 1,0–1,1×: os custos de transferência e as ordenações recursivas anulavam boa parte do ganho do cálculo isolado. Depois da aceleração das etapas do decodificador, a geração da lista de suporte, impulsionada pela rede de permutação de Bénes, ainda consumia mais de 99% dos ciclos de decapsulamento nos dois regimes de memória avaliados.

Geração de chaves e escala de produção

A FPGA usou chaves geradas por um host. A geração completa de chaves no próprio dispositivo não foi demonstrada: o caminho completo ultrapassou o orçamento de simulação de 300 milhões de ciclos, com controlbits ainda executado em software.

A análise do conjunto de parâmetros mceliece348864 dimensiona o desafio de memória, sem extrapolar o desempenho. O estudo calcula uma matriz sistemática compactada de 334.848 bytes e uma chave pública de 261.120 bytes. Embora a matriz caiba, em princípio, nos cerca de 496 KiB de memória de blocos da FPGA, matriz, chave pública e memórias do processador não cabem juntas. O artigo aponta armazenamento em bancos ou memória externa e processamento em fluxo da matriz como caminhos de projeto para essa escala.

O que os testes e a estimativa de potência cobrem

Os testes de sistema incluíram um teste de resposta conhecida e quatro padrões direcionados de erro de peso dois. Para os parâmetros avaliados, há 1.128 padrões desse tipo; os pesquisadores caracterizam a verificação de sistema como não exaustiva e não estatística.

A estimativa vectorless do Quartus PowerPlay para o projeto completo, a 5 MHz, foi de 458,34 mW. Para uma decapsulação, o estudo estima cerca de 731 ms e 335 mJ, com aproximadamente 90% da energia atribuída à fuga estática. Esses valores correspondem à FPGA, à configuração e ao modelo de atividade avaliados. As janelas curtas de VCD usadas na comparação não cobriram uma decapsulação inteira.

O estudo não realizou experimentos de canal lateral. Latência fixa das instruções, por si só, não estabelece execução constante no tempo nem consumo constante de energia.