
Optimizations for Pairing-Based Cryptography
이 저장소는 BLS12-381을 참조 곡선으로 사용하는 페어링 기반 암호화의 최적화를 다루는 연재 중인 블로그 포스트 시리즈에 해당하는 작동하는 Rust 코드를 포함합니다.
참고: 이 코드는 교육 목적으로 작성되었으며, 보안 감사를 거치지 않았고 프로덕션에 적합하지 않습니다. 사용에 따른 책임은 본인에게 있습니다.
이 포스트는 맥락, 대안, 이론, 그리고 일반적인 Big Integer 구현보다 9배 더 빠른 Rust의 실용적인 작동 코드를 포함하여 Montgomery 모듈러 산술을 처음부터 끝까지 다룹니다. 다음 블로그 포스트에서는 베어메탈 x86-64 어셈블리 언어로 (상대적으로) 무거운 곱셈 루틴을 더욱 최적화할 것입니다.
mont1 하위 디렉터리에 있습니다: https://github.com/nccgroup/pairing/tree/main/mont1이 두 번째 포스트는 Rust로 개발된 Montgomery 곱셈 알고리즘을 한 단계 더 발전시켜, 어셈블리 언어로 직접 작성된 구현에서 현대 x86-64 머신이 제공할 수 있는 최대 성능을 추구합니다. 병렬성을 높일 수 있는 여러 특수 명령어와 고급 마이크로아키텍처 기능 덕분에 Montgomery 곱셈 루틴은 일반적인 Big Integer 구현보다 15배 이상 빠르게 실행됩니다.
mont2 하위 디렉터리에 있습니다: https://github.com/nccgroup/pairing/tree/main/mont2저작권 2021 Eric Schorn; 3-Clause BSD License에 따라 라이선스가 부여됩니다.