組み込みデバイスのベストプラクティス
秘密鍵の作成
秘密鍵をファームウェアに埋め込むと誰でも鍵を抽出でき、安全性が保たれなくなってしまいます。
SSL/TLSを使用するデバイスの秘密鍵作成に関して、いくつかのアイデアがあります。
- サーバーとして動作する各デバイスは、非組み込み環境と同様に、固有の秘密鍵を持つ必要があります。
- デバイスの配布前に鍵を配置できない場合は、セットアップ中に生成させます。
- デバイスがセットアップ中に独自の鍵を生成できない場合、デバイスを設定するクライアントで鍵を生成し、デバイスに送信させます。
- クライアントが秘密鍵を生成できない場合、クライアントにデバイスの既知のウェブサイトからSSL/TLS接続を通じて固有の秘密鍵を取得させます。
wolfSSLはこれらのすべてのステップで使用でき、すべての組み込みデバイス内に秘密鍵を安全に配置するのに役立ちます。 これらの手順を踏むことで、SSL/TLS接続自体の安全性を大幅に高めることができます。
wolfSSLによるデジタル署名と認証
wolfSSLは、アプリケーション、ライブラリ、ファイルを組み込みデバイスにロードする前にデジタル署名するためにも使用されます。 なお、デスクトップマシンやサーバーを対象としたほとんどのOSでは、システムライブラリを通じてこのような処理を実行できます。 しかし、組み込み向けのRTOSでは省略されていることも少なくありません。 歴史的にほとんどの組み込みアプリケーションにおいて、実行する必要がなかったためです。 今日ではデバイスをネットワークに接続することは一般的となり、これに伴ってセキュリティリスクは日々増大しています。 したがって、ターゲットデバイスが組み込みまたはモバイルデバイスであっても、配布するものにあらかじめデジタル署名を施し、検証を行うことが非常に重要となっています。
この流れは、セットトップボックス、DVR、POSシステム、VoIPや携帯電話、スマートホームデバイス、さらには自動車向けのコンピューティングシステムで特に顕著です。 wolfSSLは主要な組み込みおよびリアルタイムオペレーティングシステム、暗号標準、認証機能をサポートしています。 組み込みシステム開発者がデジタル署名機能を追加する際、wolfSSLは非常に優れた選択肢となります。
一般的に、組み込みデバイスでコードやファイルに署名を行うには、次のステップを実行します。
- 組み込みシステム開発者が、RSA鍵ペアを生成します。
- サーバー側で、スクリプトベースのツールを実行します。
- デバイスにロードされるコードのハッシュ(例:SHA-256)を作成します。
- ハッシュにデジタル署名を行います。
- コードとデジタル署名を含むパッケージを作成します。
- パッケージをRSA公開鍵とともにデバイスにロードします。デバイス上では再度ハッシュを作成し、デジタル署名を用いて検証を行います。
デバイスでデジタル署名を有効にする利点は、次の通りです。
- サードパーティがファイルをデバイスにロードできる、安全な方法を簡単に構築できます。
- 悪意のあるファイルがデバイスに侵入するのを防ぐことができます。
- ファームウェアアップデートを電子的に保護できます。
- 権限のない第三者によるファームウェアアップデートを防ぐことができます。
コード署名に関する一般的な情報は、以下のページからご確認いただけます。