暗号学におけるブラインディング(英:blinding、別名:盲目化)はメッセージのデータをランダムな値で暗号化や撹乱し、処理を行う主体に元のデータや鍵の内容を一切知られることなく、計算や署名を行わせる技術である。当初、ブラインディングはブラインド署名の文脈で知られるようになった。ブラインド署名では、メッセージの作成者がランダムな「ブラインド係数(blinding factor)」を用いてメッセージをブラインド(盲目化)し、次に署名者がそれに署名を行い、最後にメッセージの作成者がアンブラインド(盲目化の解除)を行う。このとき、署名者とメッセージの作成者は異なる。

1990年代後半以降、ブラインディングは主に、暗号化デバイスに対するサイドチャネル攻撃への対策を指すようになった。この場合、暗号化デバイス上でランダムなブラインドとアンブラインドが行われる。ブラインド署名に用いられる技術は、攻撃者がディフィー・ヘルマン鍵共有やRSA暗号のべき剰余関数への入力を知ることを防ぐために適応された。

ブラインディングは、ラビン署名のように、慎重に適用されなければならない。フォーマットされたメッセージにブラインディングが適用されても、ランダムな値が p および q に関するヤコビ記号の要件を満たさない場合、秘密鍵の復元につながる恐れがある。この秘密鍵の復元は、Evgeny Sidorovによって発見されたCVE-2015-2141で報告されている。

サイドチャネル攻撃は、攻撃者がアルゴリズムの結果以外のもの(例えば、デバイスによる消費電力、計算時間、または電磁波の放射など)を測定することによって、非対称鍵暗号方式における暗号操作の情報を復元することを可能にする。通常、攻撃者がアルゴリズムの特性と一部の入力を知っていることが前提となる。この前提において、ブラインディングはアルゴリズムの入力を予測不可能な状態に変更する役割を果たす。ブラインディング関数の特性に応じて、有用な情報の漏洩を部分的または完全に防ぐことができる。なお、安全性はブラインディング関数自体がサイドチャネル攻撃に対してどの程度耐性を持っているかにも依存する。

例 RSA暗号におけるブラインディングでは、 というブラインド操作を計算する。ここで、r は 1 から N の間のランダムな整数であり、N と互いに素(すなわち、)である。x は平文、e は公開RSA指数、N はRSAモジュラスである。通常通り、復号関数 が適用され、その結果として が得られる。最後に、関数 を用いてアンブラインドされる。 に を掛けることで、期待通りに が得られる。このようにして復号を行う場合、この操作にかかる時間を測定できる攻撃者であっても、定数 r を知らないためRSAプリミティブに与えられた実際の入力に関する知識がなく、その情報を利用することはできない(RSAが脆弱であると知られているタイミング攻撃を適用することによって)。 GPG 1.xにおけるブラインディング

脚注

出典

関連項目 サイドチャネル攻撃

外部リンク Breaking the Rabin-Williams digital signature system implementation in the Crypto++ library