web-dev-qa-db-ja.com

暗号化トークンから秘密キーを抽出するのは簡単ですが、「不可能」なのはなぜですか。

多くの暗号化ドングルは、いったん書き込まれると格納された秘密鍵を抽出することは不可能であると主張しています。

ユビコ

YubiKey AESキー情報は、YubiKeyデバイスから抽出することはできません。プログラムするだけです。

Nitrokey

通常のソフトウェアソリューション以外では、秘密鍵は常にNitrokey内に安全に保管されます。それらの抽出は不可能であり、これによりNitrokeyはコンピューターウイルスやトロイの木馬の影響を受けなくなります。

文字通り述べられている主張は、マーケティングのナンセンスのようです。ドングル自体は秘密鍵にアクセスできるので、どういうわけかそれを読み取ることができます。

それでも、それは興味深い主張です。 「決して」、「常に」、「不可能」という言葉の選択は、ここで証明できるものがあることを示唆しています。あるいは多分私は彼らにあまりにも多くの信用を与えています。これに何かありますか?それは何ですか?

私の推測では、暗号ドングルを物理的に改ざんしない限り秘密鍵を抽出することは不可能だということです。デバイスの外部で秘密鍵を中継するための物理チャネルがないことを示すことができるのはもっともらしいようです。そのため、キーの記述が複雑になり、それを解決する方法がわかりません。私が見ることができる1つの方法は、逐語的にキーを書き込むのではなく、どういうわけかそれをランダム化できるようにすることですが、これらのデバイスは実際にキーの書き込みを許可すると思います。

それとも、それよりも多くの実体があります。これらのデバイスは、デバイスを破壊せずに直接読み取ることのできないビットを格納するためのエキゾチックなメカニズムを使用していることを私は知っています。


私はこれにいくつかの本当の肉があることを示唆する答えをここで見つけましたが、それは詳細には入りません。

https://security.stackexchange.com/a/92796/4588

カードから直接秘密鍵を抽出することはほぼ不可能です。酸によるパッケージの破壊と電子顕微鏡の作業、熟練したチーム、十分な時間、お金、運があれば、理論的にはキーを抽出できますが、物理的なアクセスだけでなく、カードが物理的に破壊されるシナリオも伴います。

38
Praxeolitic

まあ「不可能」を証明することは不可能です。そのため、リンクされた回答で私が「ほとんど不可能」と言ったのは、おそらくそれを過大評価しているからです。安全なハードウェアデバイスを使用することで、攻撃ベクトルは「ホストにリモートでインストールされたマルウェアがシークレットを盗む」から、「ハードウェアデバイスに物理的にアクセスして秘密キーを破壊的に削除する必要がある」に至る。後者は確かに不可能ではありませんが、はるかに困難です。

これらのUSBドングルは、スマートカードと非常によく似ています。私はスマートカードの経験が多いので、それを答えに使用しますが、同じ原則のほとんどが適用されます。実際、これらのUSBドングルの多くは内部でスマートカードSoCを使用しています。それらは安価でプログラム可能であり、堅牢なセキュリティを提供するので、多くのアプリケーションでは、何か新しいものを構築するのではなく、内部でスマートカードを使用することは理にかなっています。

プログラム可能なスマートカードは、シングルチップの完全なコンピューター、またはシステムオンチップ(SoC)です。今では非常に限られたコンピュータですが、それでもコンピュータです。スマートカードの「外界」への接続は、特権の少ないシンプルなシリアルインターフェイスです。カードはホストからコマンド(要求のようなもの)を受け取り、カードは応答で応答します。コマンドは、カードが実行するようにプログラムされているものに限定されます。

したがって、命令にデジタル署名するようにプログラムされたスマートカード(クレジットカードEMVの支払い要求など)がある場合、ホストはコマンドといくつかの入力で構成されるカードにシリアルインターフェイス経由で要求を送信します。カードはコマンドを解析し、それが有効であると仮定して、同じインターフェイスを介してホストにデジタル署名を送り返します。多くの点で、スマートカードがサーバーであり、ホストシステムがクライアントであるクライアント/サーバーの関係に似ています。秘密鍵はプロセス中にカードから出ることはありません。リクエストイン、レスポンスアウトです。ホストには、スマートカードに秘密鍵を返させたり、プログラムされていないことを実行したりするメカニズムはありません。もちろん、これは明らかに無意味でセキュリティを提供しない「すべての秘密鍵をください」というコマンドがないことを前提としています。スマートカードには、ユーザーにPINが割り当てられており、PINはコマンド形式の一部です。スマートカードは、PIN無効な場合はコマンドを拒否します。独自の内部メモリを備えているため、無効な試行の回数を内部的に記録し、シャットダウンするようにプログラムできます(極端な場合はカードを消去します)。

スマートカードのプログラミング(フラッシュ)は、出荷前に行われます。もちろん、攻撃者がスマートカードを再プログラムして「すべてのキーを与える」プログラムを実行するだけで安全ではない場合、ほとんどのカードは、ライトワンスメモリにある種のセキュリティビットを採用しています。したがって、カードがプログラムされ、書き込みビットが設定されます。その後、カードは再プログラムの試みを拒否します。

これを正確に実行しているスマートカードに夢中にならないようにしてください。これらはプログラム可能なデバイスであるため、実装方法は異なりますが、一般的な概念は、単純な低許可インターフェースを介してホストからの要求に応答するようにプログラムされた独自の内部セキュアストレージを備えた自己完結型コンピューターです。 「不可能」という言葉はマーケティングであることに同意しますが、それは真実からほど遠くないです。 非常に基本的なデザインとロックされた機能は、攻撃されにくいハード化されたデバイスになってしまうことを意味します。

ただし、古い公理「物理的なセキュリティなしには情報セキュリティはありません」が引き続き適用されます。秘密キーはまだ物理的にスマートカードにあります。物理的なアクセスと十分なモチベーションがあれば、どんな「秘密」もほとんど「非秘密」にすることができます。リンクされた例のように、スマートカードをバイパスし、キーを物理メモリから直接読み取ることができます。一般的な方法は、カードを取り、SoCを取り外し、酸分解を使用してパッケージを焼き払うことです。電子顕微鏡と十分なスキルを使用して、キーを格納するシリコン上のスポットを特定し、リードを接続して、それらを読み取ることができます。それは確かに不可能ではありませんが、ほとんどの場合、私たちが防御しようとしている攻撃や攻撃者のタイプではありません。正直に言って、攻撃者がそのレベルに到達すると、私は $ 5レンチ についてもっと心配します。

46
Gerald Davis

このようなハードウェア暗号モジュールは、 FIPS 140-2 と呼ばれる一連の標準によって規制されており、内部の秘密鍵を保護するためにデバイスが到達する必要があるとんでもない長さを指定します。

FIPS 140-2には4つのレベルがあります。

レベル1:これは基本的な暗号のようなことをします。

レベル2:「改ざん防止」;デバイスに明白な損傷を与えずに秘密キーを抽出または変更することは不可能です(例:シールを破る、ピンを再はんだ付けするなど)。

レベル3:これらのデバイスは「物理アクセスを検出する可能性が高い」必要があり、通常、改ざんが検出された場合にキーをゼロに設定します-サーバーラックと考えてくださいアクセスパネルにセンサーが付いています。または クールな新しいDARPAの研究 の場合、空気や湿度にさらされると溶解する回路。

レベル4:改ざん検出とキーのゼロ化の要件を強化します。極度の温度と極度の電圧を使用する攻撃に対しても高い耐性が必要です。


だからあなたが言うとき

それでも、それは興味深い主張です。 「決して」、「常に」、「不可能」という言葉の選択は、ここで証明できるものがあることを示唆しています。

FIPS 140-2標準と比較して「証明された」ことを意味していると思います。実際、提供されたリンクをクリックすると、これらのデバイスは両方ともFIPS 140-2レベル2。

23
Mike Ounsworth