これらのオプションはどれも非常に安全でないため、他のオプションよりも特に優れている、または劣っているオプションはありません。オプション4を使用します。
SRAMはキーを保存する最も安全な場所ですが、外部からキーを注入してはなりません。これらは常に、起動時にプロセッサ内で生成する必要があります。他のことをするとすぐに残りが無効になります-それは自動的に安全ではありません。
キーを不揮発性メモリに保存しないでください。これは正しいことです。EEPROMまたはフラッシュメモリが読み取られないように保護するかどうかは関係ありません。このコード読み取り保護ヒューズは簡単に元に戻すことができます。攻撃者はキャップを外すだけです(黒いエポキシパッケージを取り除くか化学的にエッチングして、内部のシリコンダイを露出させます)。この時点で、それらは不揮発性メモリセルであるダイの一部を覆います(これらのセクションは非常に規則的であり、個々のメモリセルは非常に小さいので見えますが、大きな構造が見られます)。 UVに不透明な部分はその部分でマスクされます。その後、攻撃者はチップに5〜10分間、UVライトを照射するだけで、CRPヒューズを含むすべてのヒューズをリセットできます。OTPメモリは、標準のプログラマであれば誰でも読み取ることができます。
または、十分な資金がある場合(たとえば、これらのキーを取得することは、1000ドル以上の価値がある場合)、いくつかの種類の電子顕微鏡でメモリセルを直接読み取ることができます。
安全のために、キーは隠さずに消去する必要があります。
- いいえ、上記と同じ理由で。
次に、オプション4に進みます。
- 暗号化を使用するだけです。鍵の配布は解決された問題です。そのため、すぐに利用できるソリューションを使用してください。チップはRNGを使用する必要があり、十分なエントロピーが利用可能であることを保証するために他のさまざまな考慮事項を行う必要があります。また、ブートローダーは、汎用である必要な秘密鍵を生成するプログラムを直接起動する必要があります。登録され、SRAMに直接移動されます。SRAMは、消去されるまで残ります。
ただし、CPU以外に秘密鍵が何であるかを理解できないという問題があります。問題ありません。公開鍵暗号を使用してください。OTPメモリに保存しているのは公開鍵です。このキーは誰でも読み取ることができ、スタック交換に投稿できます。オイルタンカーの側面に高さ5フィートの文字でペイントできます。これは重要ではありません。公開鍵暗号化のすばらしい点は、非対称であることです。何かを暗号化するための鍵はそれを復号化できません。秘密鍵が必要です。逆に、公開鍵で暗号化されたものを復号化するための鍵は、何かを暗号化するために使用することはできません。したがって、CPUは秘密鍵を生成し、保存されている公開鍵を使用して秘密鍵を暗号化し、USBまたはRS232などの任意の方法で送信します。秘密鍵を読むには秘密鍵が必要ですが、保存、送信、またはチップに関わる必要はありません。秘密鍵を秘密鍵(チップ外の別の場所)で復号化すると、準備が整います。完全にチップ内で生成された安全に送信された秘密鍵があり、公開鍵以外は何も保存する必要がありません。これは、前述のように、読み取りから保護する必要はまったくありません。
このプロセスは正式にキーネゴシエーションと呼ばれ、すべてのものがそれを使用します。今日は何度か使用しています。それを処理するために利用できる多くのリソースとライブラリがあります。キーを何にも「挿入」しないでください。
最後にもう1つ注意してください。AESキーはサイドチャネルアタックを使用して簡単に回復できるため、これらはすべて無効です。サイドチャネル攻撃は、電源に接続し、電流引き込みの微小な変化と、CPUのビットフリッピングによって引き起こされるこれらの変化間のタイミングを測定します。レジスタとして。これと、AES(または使用可能な暗号化アルゴリズムの非常に小さなセットのいずれか)の動作に関する知識を組み合わせることで、キーの回復が比較的簡単で安価になります。キーの読み取りは許可されませんが、キースペースを255個の可能なキーのように、途方もなく小さいものに絞り込むことができます。チップは上流にあるため、それを検出することもできません。
これにより、「安全な」暗号化プロセッサのAES-256暗号化ブートローダーが無効になり、それほど難しくありません。私の知る限り、この攻撃に対する真のハードウェア対策はありません。ただし、この脆弱性の原因となっているのは、暗号化アルゴリズム自体、およびビットを反転するためにCPUが必要とする方法です。サイドチャネル耐性またはサイドチャネル証明アルゴリズムを開発する必要があると思います(うまくいけば、開発中です)。
つまり、現在のところ、組み込みデバイスにキーを安全に保存する方法(または一時キーを使用する方法)に対する本当の答えは次のとおりです。
ただし、少なくともオプション4のキーネゴシエーションを使用して毎回新しいキーを生成する場合、サイドチャネル攻撃は使用中のチャネルのキーを危険にさらすだけであり、データを暗号化している間に電力を監視する時間があれば、 。内部で生成された新しいキーを頻繁にネゴシエートする場合、これにより、有用なセキュリティが提供されます。
キーを生成し、それらをできるだけ短時間保存します。