組み込みシステムでのキーの安全な保管と使用


7

マイクロプロセッサを使用しています。PIC32MZ2048efm144MCUは、特定のキーで暗号化されたコマンドを受け取り、それらを復号化してコマンドを実行します。暗号化されたコマンドはオフラインで保存されるため、いつでもキーを変更することはできません。キーはFIXEDです。コマンドはサーバーによって暗号化され、電話によってダウンロードされます。電話は、暗号化されたコマンドを後で、オンラインでないときにMCUに送信します。コマンドは、電話機がMCUに通信する前に暗号化されるため、セッションキーは使用できません。

外部の暗号化/復号化モジュールをPICに接続することは許可されていますが、データは少なくとも1つの方向で復号化されて渡されます。

ここにもたらされたソリューション: 組み込みデバイスのメモリへの安全なキーの保存

ワンタイムキーを使用して暗号化しますが、1つの超秘密キーを保存する必要があります

私の雇用主が要求するのは、キーにアクセスできないようにすることです。そのため、セキュアメモリモジュールとMCUによって提供されるもの以外の物理的保護は考慮されていません。

軍用グレードの機器が使用されていないと仮定すると、皆さんが知っていて推奨できる既知のソリューションはありますか?

前もって感謝します!


防止しようとしていることについて詳しく説明できますか?マイクロプロセッサは何をしますか?公開鍵/秘密鍵を使用するとうまくいくと思いますか?秘密鍵をマイクロプロセッサに保存した場合 次に、コマンドを送信するデバイスがセッションキーを作成し、公開キーを使用してそれを暗号化して、ユーザーに送信します。その後、両側がセッションキーを使用します。攻撃者が公開キーを持っている場合はどうなりますか(公開キーと呼ばれていても、実際に公開する必要はありません)。
mkeith

@mkeith私は質問を更新しました、それが役に立てば幸いです:)
Sonja

3
そのPICを選択したので、それが提供する「プログラムで安全なキーストレージ」を使用してみませんか?独自の暗号モジュールが組み込まれています!
pjc50 2016年

2
あなたはあなたの秘密の価値を明確に数値化したとは思いません。あなたは安くて信頼できる方法を望んでいるようです(私はそれは不明だと思います)。この最初のソリューションで脆弱性が発見された、何ができる必要があるかについての説明を求めます。署名済みの無線ファームウェア更新は、私の最初の交渉不可能な機能です...それは常にシステムの問題です。
Sean Houlihane 2016年

さて、PICのメモリが保護されている場合(そして、キーストレージモジュールさえある場合)、単純なAES暗号化を使用しないのはなぜですか。私はそれが対称的であることを知っていますが、サーバーが安全である場合(私たちがある程度想定する必要があります)、ここでリスクはありません-またはありますか?
Jan Dorniak 2016年

回答:


11

この回答で実際に問題が解決されないのは残念です。しかし、コメントに収めるには長すぎるため、問題を正しい方法で再考することができます(現状のままでは問題があると思います)。

この種の問題は、システムのすべてのコンポーネントを考慮して、潜在的なハッカーが何ができるか、何ができないかを合理的に想定して解決する必要があります。

例えば:

「PIC32MZ2048efm144(MCU)は特定のキーで暗号化されたコマンドを受け取り、それらを復号化してコマンドを実行します」と言います。コマンドの実行結果は、いくつかのGPIOをトグルして、何かを作動させていると思います。

それでは、MCUと暗号化/復号化モジュールの間で一部のデータが復号化されて転送される可能性があることを恐れているのはなぜですか。解読されたコマンドを確認するためにハードウェアにアクセスできるハッカーは、とにかく、MCUのGPIOを直接操作し、「ものを作動させる」ことも簡単にできます。

2番目の例:

オンタイムキーを使用することはアイデアです。しかし、あなたが言うように、ワンタイムキーを生成するために使用されるメインマスターキーはどこに保存しますか?元の問題とまったく同じ質問に直面します。

実際、ハッカーがシステムの任意の場所に侵入する可能性があると想定した場合、システムを安全にする方法はありません(これは私が現在想定しているようです)。

では、システムを安全にするものは何でしょうか?

スマートカードは、ハッカーがメモリ内とCPUブロック間のIC内の内部ルートをプローブできると想定するのは無理があるため、安全になります。

電気ドアロックは、ハッカーがロックを作動させるワイヤーに到達できると想定するのは無理があるため、安全になっています。

その他...基本的に、ハッカー実行できないことを特定することから始め、そこからソリューション全体を解決する必要があります。たとえば、システム全体を物理的に改ざんされない安全な箱に入れることは可能ですか?この場合、内部バスを通過するコマンドを自由に復号化できます。

ハッカーが合理的に実行できないことを知らなければ、安全なシステムを構築することはできません。あなたはそれを私たちに言わなかった。したがって、完全なソリューションを提案することはできません。


まず最初に、精巧な答えをありがとう!私はあなたに答えると思う方法で質問を更新しました:)
Sonja '21

私があなたの投稿の編集からわかったことは、鍵だけを保護する必要があるということです。コマンドの実際の結果を保護する必要ありません。この場合、提案したように外部の安全なモジュールに鍵を置き、復号化されたコマンドが明確に見えることを受け入れます。私の提案が何らかの理由で無効である場合は、何が許容され、何が許容されないかを時間をかけて詳細に説明してください。私たちが必要とするのは、あなたの投稿のもう1つの文だけではありません。物事の全体像が必要です。本当に。
薄暗い

5
また、コマンドの暗号化は実際にやりたいことではないように感じます。通常、データ(何かに関する何らかの情報、またはドキュメント...)を暗号化する必要があります。ただし、デバイスに送信されるコマンドを暗号化する必要はほとんどありません。コマンドに通常必要なのは、承認された当事者からのものであることを保証するために、それら署名することです。しかし、彼らのコンテンツは実際にはほとんど機密性がありません。したがって、これも確認する必要があります。
薄暗い

2

これは、非対称キー暗号化が役立つ古典的なケースのように見えます。非対称鍵暗号化では、秘密鍵と公開鍵の2つの鍵があります。秘密鍵を完全に保護したいが、公開鍵を公開することができ、保護する必要がない場合。安全なシステムでは秘密鍵を、埋め込みデバイスでは公開鍵を保持できる場合があります。


データの復号化は、秘密鍵(および公開鍵による暗号化)を使用して行われます。それ以外の場合は、誰もが復号化できることを意味します(誰もが公開鍵にアクセスできるため)、これは問題になります。したがって、デバイスに秘密鍵が必要です。それでは、秘密鍵をデバイスに挿入する方法は?さて、最初の問題に戻っては...
薄暗い

コマンドを解読できても、新しいコマンドを最初から作成することはできないため、公開鍵にアクセスできるようにすることはそれほど問題ではありません
masterX244

これは通常、暗号化署名と同じです。これには、誰かが公開鍵を持っている場合(実際に公開する必要はなく、対称鍵と同じくらい安全に保管できる)、すべてを復号化できるという欠点があります。しかし、masterX244が言うように、通常、新しいコマンドを作成/署名することはできません。これは良い解決策だと思います。
CoderTao 2016年

0

コマンドを暗号化する理由(つまり、脅威モデルとは何か)は説明しません。あなたの目的は、PICベースのデバイスを所持している敵が、それに送信されたコマンドが何であるかを決定するのを防ぐことですか?または、PICベースのデバイスが敵によって置き換えられた一連のコマンドを実行するのを防ぎ、サーバーからのコマンドの実行のみを許可しようとしていますか?

前者の場合、ほとんど不可能な作業に直面します。デバイスは、コマンドを実行するためにコマンドを解読する必要があります。PICデバイスを所有することは、解読キーを所有することを意味します。攻撃者はキー(自分が所有するPICデバイスに格納されている)を抽出するか、ファームウェアがコマンドを復号化してメモリからキャプチャするまで単に待機することができます。

一方、デバイスがサーバーから発信されたコマンドのみを実行することを確認しようとしているだけであれば、あなたは幸運です。この場合、公開鍵暗号化(RSAなど)または公開鍵デジタル署名方式(DSSなど)を使用できます。これらでは、デバイスは公開鍵のみを保存します。これは、コマンドを復号化(またはデジタル署名を検証)するには十分ですが、デバイスが受け入れるコマンドの暗号化(またはデジタル署名の生成)には使用できません。それには、送信する前にコマンドを暗号化(または署名)するために使用する秘密鍵が必要です。秘密鍵がサーバーから離れる必要はありません。さらに良いことに、外部と通信しないマシンでコマンドを暗号化して署名し、それらをサーバーにコピーするだけなので、外部からアクセス可能なサーバーで秘密鍵が見つかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.