[論文レビュー] The Last Mile: High-Assurance and High-Speed Cryptographic Implementations
本論文は、Jasmin と EasyCrypt を組み合わせた新規フレームワークを提示する。このフレームワークにより、関数的正しさと側面チャネル耐性を「ゲームホッピング」検証で保証する、高信頼性かつ高速なアセンブリ言語実装を生成できる。著者らは、形式的検証済みのベクトル化 ChaCha20-Poly1305 実装を実現し、非検証の最速実装を上回ることを示した。形式的検証が性能を犠牲にする必要がないことを実証した。
We develop a new approach for building cryptographic implementations. Our approach goes the last mile and delivers assembly code that is provably functionally correct, protected against side-channels, and as efficient as hand-written assembly. We illustrate ur approach using ChaCha20-Poly1305, one of the mandatory ciphersuites in TLS 1.3, and deliver formally verified vectorized implementations which outperform the fastest non-verified code. We realize our approach by combining the Jasmin framework, which offers in a single language features of high-level and low-level programming, and the EasyCrypt proof assistant, which offers a versatile verification infrastructure that supports proofs of functional correctness and equivalence checking. Neither of these tools had been used for functional correctness before. Taken together, these infrastructures empower programmers to develop efficient and verified implementations by "game hopping", starting from reference implementations that are proved functionally correct against a specification, and gradually introducing program optimizations that are proved correct by equivalence checking. We also make several contributions of independent interest, including a new and extensible verified compiler for Jasmin, with a richer memory model and support for vectorized instructions, and a new embedding of Jasmin in EasyCrypt.
研究の動機と目的
- 高信頼性の暗号実装と高性能な手作業最適化コードの間のギャップを埋めるために、アセンブリレベルでの形式的検証を可能にする。
- 効率性、信頼性、開発者採用の面で妥協を強いられる従来のアプローチを克服するため、最適化と検証を統合したワークフローを提供する。
- 暗号エンジニアが、関数的正しさと同等性証明に裏付けられた実用的で段階的な手法を用いて、最適化され形式的検証済みの実装を開発できるようにする。
- ベクトル化命令とより洗練されたメモリモデルをサポートする、検証済みで拡張可能な Jasmin コンパイラを提供し、アセンブリへの正しいコンパイルを保証する。
- Jasmin を EasyCrypt に埋め込む新しいアプローチを確立し、関数的同等性と定数時間セキュリティの自動証明を可能にする。
提案手法
- 読みやすく、高水準と低水準のプログラミング特徴を併せ持つ Jasmin を用いて、『頭の中でアセンブリを書く』開発を可能にする参照実装を記述する。
- 『ゲームホッピング』技法を用い、段階的に参照実装をベクトル化され、プラットフォームに最適化されたバージョンに最適化しつつ、各変換が関数的正しさを保つことを証明する。
- EasyCrypt の関係的プログラム論理を活用し、参照実装と最適化実装の間の関数的同等性を形式的に検証する。
- 関数的正しさと定数時間セキュリティの証明をサポートする、Jasmin の新しい EasyCrypt への埋め込みを導入し、制御フローやメモリアクセスが秘密データに依存しないことを含む。
- Coq を用いて Jasmin コンパイラを検証し、Jasmin からアセンブリへの変換が正しく、すべての保証を保持することを保証する。
- 検証中に静的解析と簡素化された意味論を用い安全性を確保し、暗号学的定数時間モデル下での定数時間動作の最終的証明を実施する。
実験結果
リサーチクエスチョン
- RQ1効率性を犠牲にせずに、高信頼性と高性能な暗号実装を両立できる形式的検証フレームワークを設計できるか?
- RQ2『ゲームホッピング』技法を暗号的証明から、暗号実装の低レベル最適化の検証に効果的に適応できるか?
- RQ3非検証の手作業最適化アセンブリと同等またはそれ以上の性能を発揮しつつ、関数的正しさと側面チャネル耐性の形式的保証を維持できるか?
- RQ4Jasmin のような高信頼性言語用の検証済みコンパイラを、ベクトル化命令と複雑なメモリモデルをサポートするように拡張できるか?
- RQ5EasyCrypt に統合された証明インfraを構築し、低レベル暗号コードの関数的正しさと定数時間セキュリティの両方の証明を可能にできるか?
主な発見
- 著者らは、Jasmin で書かれた形式的検証済みのベクトル化 ChaCha20 および Poly1305 実装を提供し、OpenSSL や HACL* に含まれる最速の非検証アセンブリ実装を上回った。
- AVX2 最適化済みの ChaCha20 実装は、大容量メッセージに対して 1 バイトあたり 1.5 サイクル未塔を達成し、CompCert でコンパイルされた HACL* や非検証 OpenSSL コードを上回った。
- AVX2 指令を用いた検証済みの Poly1305 実装は、大容量メッセージに対して 1 バイトあたり 1.2 サイクル未塔を達成し、非検証および検証済みの代替実装を著しく上回った。
- フレームワークにより、最適化コードの関数的正しさと定数時間動作の検証が可能となり、参照実装と最適化実装の間の同等性証明が汎用的レコードを介して要約された。
- 新しい Jasmin コンパイラ拡張は、ベクトル化命令とより洗練されたメモリモデルをサポートし、Coq で形式的検証済みであり、ソースからアセンブリへの正しさを保証する。
- EasyCrypt への Jasmin の埋め込みは、関数的同等性と定数時間セキュリティの自動証明をサポートし、パフォーマンスが重要なコードのスケーラブルな検証を可能にした。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。