このリポジトリには、参照曲線としてBLS12-381を使用したペアリング暗号の最適化を扱う一連のブログ記事に対応する、動作するRustコードが含まれています。
ご注意: このコードは教育目的のものであり、セキュリティ監査を受けておらず、本番環境には適していません。自己責任で使用してください。
この記事では、モンゴメリ法によるモジュラー演算を、背景、代替案、理論、そして汎用のBig Integer実装より9倍高速に動作するRustの実用的なコードまで、最初から最後まで解説します。次のブログ記事では、(比較的重い)乗算ルーチンをベアメタルx86-64アセンブリ言語でさらに最適化します。
mont1サブディレクトリにあります: https://github.com/nccgroup/pairing/tree/main/mont1この2番目の記事では、Rustで開発したモンゴメリ乗算アルゴリズムをさらに進め、最新のx86-64マシンがアセンブリ言語による手書き実装から引き出せる最大のパフォーマンスを追求します。並列性を高める複数の特殊命令と高度なマイクロアーキテクチャ機能により、モンゴメリ乗算ルーチンは汎用のBig Integer実装より15倍以上高速に動作します。
mont2サブディレクトリにあります: https://github.com/nccgroup/pairing/tree/main/mont2著作権 2021 Eric Schorn; 3条項BSDライセンスの下で提供されます。