ハードウェアセキュリティの最新動向
ML-KEMのカプセル化の解除では、受け取った暗号文を秘密鍵で復号した結果から暗号文をもう一度作り、受け取った暗号文と一致するかを比べる。この部分の実装の注意として、正しいものはどれか。
- A一致しなかったときはすぐに処理を打ち切り、どのバイトで違ったかを詳しいエラーとして相手に返すと、原因が分かって親切で安全である
- B一致するかどうかの比べ方は、量子コンピュータに強い方式を使っている限り安全性に関係しないので、最も速い方法を選べばよい
- C比べる処理は秘密に関係なく同じ時間で行い、一致しない場合もエラーを返さず、秘密の値から作った無関係な鍵を返して区別させない
答えと解説を見る
正解:C. 比べる処理は秘密に関係なく同じ時間で行い、一致しない場合もエラーを返さず、秘密の値から作った無関係な鍵を返して区別させない
作り直した暗号文と比べる手順は、細工した暗号文を送って反応を見る攻撃(選択暗号文攻撃)を防ぐためのものです。比べる処理の時間や、一致しなかったことを示すエラーから一致・不一致が外に漏れると、それ自体が攻撃の手がかりになり、秘密鍵を少しずつ推測されるおそれがあります。そのためFIPS 203では、一致しないときにエラーを返さず、秘密の値と暗号文から作った別の鍵を返すと定めており(暗黙の拒否)、実装では比べる処理と結果を選ぶ処理を定数時間で行います。方式が量子コンピュータに強くても、実装の時間や消費電力から秘密が漏れれば安全性は失われ、2024年ごろには、割り算の時間が秘密に依存する実装の問題(KyberSlash)も報告されました。
- A. 詳しいエラーや早い打ち切りは、外から一致・不一致を知る手がかりになります。
- B. 方式の数学的な強さと、実装から漏れる情報は別の問題です。
- C. 正しい。時間でもエラーでも、一致したかどうかを外に見せません。