
Optimizations for Pairing-Based Cryptography
Este repositorio contiene el código Rust funcional que corresponde a una serie en curso de publicaciones de blog que cubren optimizaciones en criptografía basada en emparejamientos utilizando BLS12-381 como curva de referencia.
Tenga en cuenta: Este código tiene fines educativos, no ha pasado por una auditoría de seguridad y no es adecuado para producción. Úselo bajo su propio riesgo.
Esta publicación cubrirá la aritmética modular de Montgomery de principio a fin, incluidos el contexto, las alternativas, la teoría y el código práctico funcional en Rust que se ejecuta 9 veces más rápido que una implementación genérica de enteros grandes. La próxima publicación del blog optimizará aún más la rutina de multiplicación (relativamente) pesada en lenguaje ensamblador x86-64 de bare-metal.
mont1: https://github.com/nccgroup/pairing/tree/main/mont1Esta segunda publicación lleva el algoritmo de multiplicación de Montgomery desarrollado en Rust aún más lejos para buscar el máximo rendimiento que una máquina x86-64 moderna puede ofrecer a partir de una implementación escrita a mano en lenguaje ensamblador. Varias instrucciones especializadas y características microarquitectónicas avanzadas que permiten un mayor paralelismo hacen que la rutina de multiplicación de Montgomery se ejecute más de 15 veces más rápido que una implementación genérica de enteros grandes.
mont2: https://github.com/nccgroup/pairing/tree/main/mont2Copyright 2021 Eric Schorn; Licenciado bajo la Licencia BSD de 3 Cláusulas.