web-dev-qa-db-ja.com

PINを知らなくてもTPMからシークレットを抽出することはできますか?

TPMの一般的な操作、特にプリブートPINを使用することに関心があることを理解しています。誰かがマシンにアクセスした場合(オフになっている場合)、コンピューターをオンにしても、TPMに格納されているキーを取得するには不十分ですしたがって、データを復号化します。

このPIN=はTPMによってどのように使用されますか?どのくらい効果的ですか?たとえば、TPMに対して物理的な攻撃を実行することが可能であり、これらの攻撃の一部は潜在的に秘密を抽出します。

しかし、単純に言えば、これらのシークレット(BitLockerドライブのマスターキーと言います)がPINで暗号化されている場合、これを知らずにこれらのシークレットを取得することは事実上不可能であるPIN(基礎となる暗号化アルゴリズムを直接攻撃します。これはどのように機能しますか?または、秘密はクリアに保存されており、TPMはPINが正しいことを確認した直後にそれらを解放しますか?

最後に、攻撃者が完全な物理的アクセスを取得するシナリオでは、そのような手段(PINを取得するための物理的なキーロガーなど)を回避することは常に可能です。しかし、私が念頭に置いているシナリオは、オフになっているラップトップを攻撃者が盗むことです(DMA攻撃、コールドブート攻撃など)は、ディスクに格納されたキーで暗号化されています) PINを使用したTPM。この攻撃者が物理的な攻撃(改ざん防止のバイパスなど)を実行できると想定すると、PINを知らずに、正当なユーザーとの対話なしに、秘密を回復できます。 ?

3
crypto-guest

私は、PCI PTS PEDデバイスと認定の領域でTPMとHSMを使用してきたので、それを私の回答の基礎として使用します。それらはすべて同じように機能するわけではなく、通常、データシートは公開されていません。

通常、私が見たのは、適格な対称アルゴリズムの厳密な意味で暗号化されていない一種の鍵の導出ですが、テキストも明確ではありません。これは通常、鍵の導出方法の結果です

https://en.wikipedia.org/wiki/Key_derivation_function

たとえば、PCI標準では、主要な導出方法、ストレージ、ゼロ化を定義しています。上部のある時点で、マスターキーは指摘したように暗号化されていない必要がありますが、複数の部分に格納したり、ソルトハッシュしたり、ピンまたは任意の組み合わせでXOREDしたりできます。優れたTPMまたはHSMは、暗号化されていないマスターキーのみを持ち、マスターキーは、データの暗号化には決して使用しないでください。デバイスからマスターキーが出力されないように、プログラミング時にマスターキーが内部で生成されることは珍しくありません。

私が知っている唯一の攻撃ベクトルはTPM/HSM自体からではなく、TPM/HSMが使用する環境からのものです。私は広範なSPA/DPAテストを専門的に行いました。このシナリオでは、キーを何度も(少なくとも数千回)使用するようにデバイスを説得するだけでよく、プロセッサからのE/Mエミッションまたは電力を監視し、統計分析を行ってキーを決定できます。

これを説明しようと思います。マスタートップレベルキーXは、ユーザーが記憶し、OSを復号化するために毎回入力する必要があるaes 256キーによって暗号化されて保存されます。使用するピンの1〜4ビットをアサートします。次に、ピンの約4〜8ビットに変化する5000の異なるピンを生成し、残りは静的なままにします。プロセッサが十分にランダムに見えるようにするために必要なのは約4ビットだけです。私はこれらの5000ピンを挿入してEM信号をキャプチャし、それらが何のピンであったかを追跡します。私はそれらを2つのパイルに薄く分割し、1つのパイルは特定のsboxビット1を作成し、もう1つのパイルはsboxビット0を作成します。 。

現在、ほとんどの新しいセキュリティモジュールは、クロックストレッチング、ランダムな遅延、およびその他の誤った操作を実行することで軽減しようとしています。

そして、より高度なDPAは2次とより高い相関関係を調べます。これは指数関数的に長くかかり、競争は続きます。

私の例では、ピンが完全なaesキーであると仮定していますが、同じ理論を事実上すべての数学アルゴリズムに適用できます。

1
noone392