Un estudio de Haridhayal Maheswaran, Samuel Kennedy y Basel Halak, publicado en Discover Computing el 26 de octubre de 2026, describe una extensión de instrucciones RISC-V que ejecutó encapsulación y decapsulación de Classic McEliece en una FPGA. La prueba usó parámetros reducidos: SYS_T=2, SYS_N=48 y GFBITS=12.
Classic McEliece es un mecanismo poscuántico de encapsulación de claves (KEM). La demostración permite observar cómo se comportan en hardware algunas operaciones de este algoritmo, pero las reducciones porcentuales de ciclos que destacan en el estudio proceden de una simulación, no de mediciones en la placa.
En este artículo
- Qué ejecutó la FPGA y con qué parámetros
- Cómo se comparan los recuentos de ciclos
- Qué operaciones aceleró la extensión
- Qué limita la generación de claves y el escalado
- Qué cubrieron las pruebas y la estimación de potencia
Qué ejecutó la FPGA y con qué parámetros
Los investigadores integraron la extensión en un procesador RV32I estrechamente acoplado a una placa DE1-SoC con una FPGA Intel Cyclone V 5CSEMA5F31C6. La configuración completa ocupó 10.531 módulos lógicos adaptativos (ALM) y alcanzó una frecuencia máxima ajustada de 118,89 MHz en la esquina lenta a 85 °C. El procesador y los aceleradores funcionaban a 5 MHz en la placa.
La diferencia entre ambas frecuencias importa: 118,89 MHz es el máximo ajustado que informa el diseño, mientras que los recuentos de la ejecución en la placa corresponden al reloj de 5 MHz. Además, el hardware ejecutó las operaciones con claves generadas en un host.
Cómo se comparan los recuentos de ciclos
En una simulación con memoria asíncrona, la extensión redujo los ciclos un 87,4% para encapsulación y un 86,1% para decapsulación frente a una base sin aceleración. La FPGA utilizó memoria síncrona y arroja cifras distintas. La tabla separa esos resultados y los diferentes alcances de encapsulación.
| Régimen | Operación | Ciclos | Condiciones |
| Simulación con memoria asíncrona | Encapsulación | 1.010 | Parámetros reducidos; simulación frente a una configuración sin aceleración |
| Simulación con memoria asíncrona | Decapsulación | 1.708.050 | Parámetros reducidos; simulación frente a una configuración sin aceleración |
| FPGA con memoria síncrona | Operación de encapsulación | 1.820 | Claves generadas en un host |
| FPGA con memoria síncrona | Encapsulación completa | 13.585 | Incluye SHA-256 |
| FPGA con memoria síncrona | Decapsulación | 3.654.113 | Claves generadas en un host |
Al pasar de la simulación con memoria asíncrona a la FPGA con memoria síncrona, los recuentos aumentan 1,80 veces para encapsulación y 2,14 veces para decapsulación. Las lecturas síncronas añaden latencia, así que las reducciones frente a la base simulada no son una medida de la mejora obtenida en la placa.
Qué operaciones aceleró la extensión
El diseño conservó tres asignaciones: Chien search para buscar en la lista de soporte, eliminación gaussiana de tamaño fijo para generar el polinomio mínimo y reducción sistemática en streaming durante la generación de la clave pública. El perfilado también dejó claro dónde se desplaza el trabajo: tras acelerar las etapas de decodificación, la generación de la lista de soporte, basada en una red de permutación de Bénes, aún consumía más del 99% de los ciclos de decapsulación en ambos regímenes de memoria.
En cambio, el candidato composeinv asistido por DMA aceleró la etapa controlbits apenas entre 1,0 y 1,1 veces en el perfil integrado. La clasificación recursiva y el coste de mover datos restaban valor a la aceleración aislada, por lo que los investigadores descartaron esa opción. También corrigieron cuatro defectos de una máquina de estados heredada de Berlekamp–Massey y un fallo en el banco de registros de transposición antes de las pruebas integradas.
Qué limita la generación de claves y el escalado
La FPGA no generó las claves completas en el propio dispositivo: el equipo usó claves producidas en un host. La ruta de generación completa superó el presupuesto de simulación de 300 millones de ciclos porque controlbits seguía ejecutándose en software.
El estudio también analiza el conjunto mceliece348864, con n=3488 y t=64. Su matriz sistemática empaquetada ocupa 334.848 bytes y la clave pública, 261.120 bytes. Aunque la matriz por sí sola cabe en principio, la matriz, la clave y las memorias del procesador no caben juntas en los aproximadamente 496 KiB de memoria de bloques de la FPGA. Los autores señalan el uso de memoria bancaria o externa y el procesamiento en streaming de la parte derecha de la matriz como opciones de rediseño. El estudio no extrapola a ese conjunto el rendimiento de la configuración reducida.
Qué cubrieron las pruebas y la estimación de potencia
Las pruebas de sistema pasaron un test de respuesta conocida de referencia y cuatro patrones dirigidos de error de peso dos. Para n=48 y t=2 existen 1.128 patrones válidos de ese peso. En una prueba de componente distinta, la comprobación de la inversa recorrió los 4.096 elementos del campo finito.
Quartus PowerPlay estimó un consumo total de 458,34 mW para el diseño FULL a 5 MHz. Para una decapsulación, los investigadores calcularon aproximadamente 731 ms y 335 mJ, con cerca del 90% de la energía atribuida a fuga estática. Son estimaciones de esa FPGA, esa configuración y su modelo de actividad. Dos ventanas VCD breves quedaron dentro del 1% de la estimación vectorless para la potencia total y del 9% para la dinámica, pero ninguna cubrió una decapsulación completa.
El estudio no realizó experimentos de canal lateral. La latencia fija de las instrucciones, por sí sola, no demuestra que el software sea de tiempo constante ni que el hardware mantenga un consumo constante.