2

非対称暗号化を使用してファームウェアを暗号化しようとしています。ブートローダーはフラッシュを復号化して更新します。これは、60MHz で実行される 32 ビット CPU を搭載した組み込みデバイス上にあります。

さまざまな利点があるため、ECCを使用したいと考えています。私は暗号化に慣れていませんが、ECIES に実装されている ECC は、キー生成に ECC を使用し、実際のデータ暗号化に AES を使用することを理解しています。コードと RAM のサイズが原因で、複数の暗号化アルゴリズムをサポートできません。

AES と同じように使用できる ECC の実装はありますか。私が探しているのは、「秘密鍵」を使用してファームウェアを暗号化し、ブートローダーが「公開鍵」を使用してそれを復号化することだけです。

ありがとう。

4

3 に答える 3

2

質問の最後の文から始めましょう:

私が探しているのは、ファームウェアを暗号化するために「秘密鍵」を使用することであり、ブートローダーはそれを復号化するために「公開鍵」を使用します。

ここでの用語にはいくつかの混乱があります。秘密鍵は復号化(または署名)に使用され、公開鍵は暗号化(または検証)に使用されます。私が正しく理解していれば、ブートローダーがファームウェアの署名を検証して、自分で適切に署名されたファームウェアのみがブートローダーによって受け入れられるようにすることが必要です。

この目的に使用できるさまざまな非対称署名スキームがあります。これには、楕円曲線暗号に基づくものも含まれます。たとえば、ECDSAのOpenSSL実装を使用できます(http://www.openssl.org/docs/crypto/ecdsa.htmlを参照)。

質問には、最適な署名スキーム(および、ファームウェアを秘密にする必要がある場合は暗号化スキームも)を適切に選択するための十分な情報がないのではないかと思います。いずれにせよ、優れた暗号化はシステムを安全にするのに十分ではなく、安全な実装などの他の考慮事項もそれほど重要ではありません。

これがあなたにとって保護することが重要であり、ハッカーが破ろうとするのではないかと心配している場合は、セキュリティ専門家のサービスを調達することを強くお勧めします。暗号化を正しく使用することは、システムを完全に理解する必要がある非常にトリッキーなビジネスです。そうしないと、このような状況に陥る可能性があります。

于 2012-08-22T06:52:57.610 に答える
2

ECIES の構成要素を完全に理解しているかどうかはわかりません。

http://en.wikipedia.org/wiki/Integrated_Encryption_Scheme

これはかなりの作業であり、少なくとも 1 つの対称プリミティブを含む、非常に多くのプリミティブが必要になるようです。それもAESかもしれません。

于 2012-08-15T19:20:56.003 に答える
2

「認証」を探す場合、EC のような非対称アルゴリズムを使用する必要があります。これは通常、ユーザーまたはプロセスが「ファームウェア」を更新したい場合、「署名」によってブートローダーに対して自分自身を識別し、誰がこれを要求したかを確認する必要があるためです。アップデート。

それが完了すると、ブートローダーは安全なメモリから対称キーをロードして、実行したいことを解読します。

つまり、暗号化用の対称鍵 (AES) と、認証用の非対称 2 つの鍵 (=あなたは誰ですか?) を持っています。

注: 暗号化のために 60MHz で実行する 32 ビット CPU で EC を使用する利点はありません。アプリケーションが認証ではなく暗号化のために非対称を必要とする場合を除きます。これは、ユーザーとブートローダーの間の回線が安全でないために発生します。

したがって、ブートローダーの「公開鍵」を使用してファームウェアを暗号化し、ブートローダーはその「秘密鍵」を使用して復号化できますが、非対称アルゴリズムの計算が高いため、実装には多くのコストがかかります。

「軽量暗号化」を探してください。これは、アプリケーションの典型です。

于 2012-09-27T13:41:56.587 に答える