2017-02-21 4 views
1

私は、組み込みシステム上の不正なソフトウェアのアップグレードを防止する(または少なくとも防止する)方法について、具体的なアドバイスを受けています。それは防弾である必要はなく、システム自体が十分にロックダウンされているので、誰もそれに無許可でアクセスすることはできません。デジタル署名を使用してソフトウェアのアップグレードを制御するにはどうすればよいですか?

基本的には、どこからでもアップデートパッケージを受け取ることができるシステム上で実行されるインストーラプロセスを実行することですが、インストールを試みる前にそれらのパッケージが信頼できるソース(つまり、私)

単純な形式では、更新パッケージには実際のインストールパッケージと、自分で生成することができる一致するデジタル署名が含まれています。さらに、署名は、外部の関係者が関与することなく純粋に自己生成される。

したがって、これらは、可能なプロセス上の私の考えです:

  1. は、公開鍵/秘密鍵のペアを生成し、組み込みシステム自体と一緒に公開鍵を配布します。

  2. ソフトウェアインストールパッケージを作成するときは、プライベートキーを使用してシグネチャジェネレータでパッケージの内容(またはパッケージのMD5)をパイプします。

  3. このシグネチャとともにソフトウェアインストールパッケージを配布します。

  4. インストーラは、ソフトウェアインストールパッケージ(既に持っている公開鍵を使用)に対して署名をチェックし、一致するものがあればインストールします。

誰でもこのスキームで問題が見つかった場合は、その回避方法に関する詳細をお読みいただきたいと思います。さらに、(これは質問の主な目的ではありませんが)、鍵を生成するためのツールについてのアドバイスは高く評価されます。

答えて

1

解決策に明らかな問題はありません。既に考慮されている改善案を提案することができます

組み込みソフトウェアが十分にロックされている場合、ソフトウェアで配布されている公開鍵の完全性を保護するために追加の対策を講ずる必要はありません(例:インストーラパッケージは

は、私が提案するデジタル署名で保護しようとしているので、自身と難読化は、それは私が更新をダウンロードするには、TLS接続と考えてきました

頭痛)かもしれないが、それは本当に必要ではないでしょう公開鍵をX509証明書にカプセル化します。こうすることで、秘密鍵が侵害された場合でも、有効期間や失効の可能性を制御することができます。この場合、署名証明書を発行するルート証明書を使用して階層認証局が必要になります。ルート証明書の公開部分をインストーラのトラストストアに含めます。その後、期限切れ/失効後に別の署名証明書を使用することは、インストーラにとって透過的です。

ルート証明書の長さが長く、キーのサイズが大きい(便利に保護する必要があります)署名証明書の所要時間が短く、小さな鍵を使用できます。

このCAでは、追加のサービスが必要な場合にTLS証明書を生成することもできます。たとえば、利用可能なアップデートを確認します。この場合、インストーラーのトラストストアに証明書を含めて、中間者攻撃(SSLピンニング)を回避します。

フル配布またはハッシュに署名できます。セキュリティには影響しません(https://crypto.stackexchange.com/questions/6335/is-signing-a-hash-instead-of-the-full-data-considered-secure参照)が、広範な脆弱性があるためMD5は使用しないでください。 SHA-2関数を使用します。

キーを生成するには、コマンドラインでopensslを使用するか、GUIアプリケーションを使用します。KeyStore-Explorer

関連する問題