組み込みシステムのファイル暗号化(秘密鍵など)

組み込みシステムのファイル暗号化(秘密鍵など)

私はLinux上で動作する組み込みデバイスを開発しています。デバイスはサーバーと通信し、証明書と秘密鍵を使用してデータを送信します。

デバイスをデプロイするとき、悪意のある人が内蔵デバイスのファイルシステムをハッキングして秘密鍵を盗み、サーバーのデータを改ざんしようとする可能性があります。

秘密鍵を暗号化しても、実行中のプログラムは鍵を復号化する必要があるため、ファイルシステムのどこかで復号化鍵を見つけることができます。

誰でも物理的にアクセスできるようにデバイスを展開する必要があるため、ファイル権限を変更することは解決策ではありません。

プログラムの実行を妨げることなく秘密鍵を保護するための提案を聞きたいです。ありがとうございます。

編集:私たちはIntel Edisonで動作するYoctoを使用しています。

答え1

ハードウェアが物理的に安全でない場合、ソフトウェアによって実行される操作は物理的に安全ではありません。

別の暗号化がない場合は、暗号化に気を付けないでください。安全キーの位置です。コンピュータのフルディスク暗号化は、起動時に誰かがキー(キーの派生に使用されるパスワード)を入力するときに便利です。鍵が物理的に保護されている別のストレージ領域(TPMやスマートカードなど)にある場合は、ディスク全体の暗号化も可能です。

私の知る限り、Intel Edisonにはこのような別々のストレージスペースはありません。また、EdisonボードはSDカードまたはUSBスティックから起動できます。、USBポートに物理的にアクセスできる人は誰でもeMMCからすべてのデータを抽出できます。

USBブートはU-Bootに依存しているように見えるため、公式のU-BootイメージをUSBを無効にするカスタムイメージに置き換えると、eMMCのOSで強制的に起動できます。実際にこれが可能かどうかわかりません。ただこれに反論する情報が足りないだけです。

カスタムブートローダを使用しても、USB接続を介してボードをフラッシュできます。これにはeMMCの一部が含まれますが、少なくともフラッシュ割り込みの場合にはeMMC全体は含まれません。 eMMCのどこにキーを配置しようとしても、注意深い攻撃者はキーを上書きすることを避けることができます。

サーバーがデバイスのデータを信頼する必要がある場合、探している機能は「セキュアブート」(または「信頼できるブート」、「確認されたブート」、またはその他の名前、用語は標準化されていません)と呼ばれます。 Intelプロセッサの場合、これはTPMを介して行われます(ただし、内蔵マザーボードにはTPMはほとんどありません)。 ARMプロセッサの場合、これはTrustZoneといくつかのメーカー固有のツールによって達成されます。どちらの技術も多くのお金を費やすことができる敵に対して安全ではありませんが、それをクラッキングするにはUSBスティックだけでなく、少なくともはんだごてが必要です。

関連情報