Skip to main content

組み込みセキュリティの鍵を握る暗号化

組み込み電子機器は、あらゆる産業のほぼいたるところに存在しています。車載ネットワークCANバスの監視、IoTデバイスのセンサデータの読み取り、調理器具の制御など、日常的なアプリケーションに低コストで統合できるマイクロコントローラは、エレクトロニクス産業だけでなく、電子機器を活用する産業にも革命を起こしました。

組み込み設計にはすばらしい利点がありますが、それは同時にリスク要因でもあります。大規模なシステムの一部であるか、独立して機能するシステムであるかにかかわらず、組み込みシステムの本質である柔軟性とカスタマイズ性が、深刻なセキュリティリスクに曝されやすい状況を作る可能性があるからです。

組み込みシステムの設計者は、最新のサイバー脅威を常に把握し、堅牢で持続的な階層型セキュリティソリューションを開発し、さらにソフトウェアとハードウェアの暗号化を組み込む必要があります。組み込みシステムの設計者がセキュアな暗号化ソリューションを実装する際の課題について、これから解説していきたいと思います。

 

組み込み設計はなぜ課題に直面しているのか?


そもそも組み込みシステムは低コストに設計されています。そのため安価で大量生産できますが、処理能力とメモリストレージに大きな制約があります。したがって、システムリソースには特定のタスクを1件実行する程度の容量しかなく、マルウェア検出やハードウェア監視を追加できない可能性があります。

このほかにも、ソフトウェアのアップデートやバグのパッチが定期的に行われない、設計に関連するセキュリティリスクの想定を誤る、といった問題もあります。組み込み機器は大量生産されることが多いため、ひとたび脆弱性が発見されると、大規模な攻撃を受けやすくなります。組み込み設計システムによっては、システム寿命も無視できないリスク要因です。

そのほか、I/Oとプログラミングのポートの露出も組み込みシステムを脆弱にする可能性があります(1)。I/Oに電圧ノイズと電圧パルスを投入し、マイクロコントローラを混乱させる事例も発生しています。ハッカーはこうした混乱に紛れてプログラムメモリ、個人データといった重要なシステムに侵入し、任意コードを実行する可能性があります。ハッカーは、プログラミングポートの露出を利用して、自分のプログラミングデバイスでメモリの内容をリードバックしたり、プログラムを書き換えてマルウェアを挿入したりします。

図1:マイクロコントローラはピンを露出しているため、ハードウェア攻撃を受けやすくなります

 

暗号化とは?


ごく基本的なことを説明すると、暗号化とは、指定された受信者以外にはデータを認識できないようにすることです。例えば、ウェブサイトにパスワードを送信するとき、パスワードは暗号化され、利用者本人と受信側のウェブサイトしか復号できません。

暗号化アルゴリズムにはさまざまな種類(AES、TLS、XTEA)がありますが、ほとんどすべての暗号化形式では、メッセージの暗号化と復号化に使用する鍵が必要です。鍵がなければ、暗号化されたメッセージを復号できません。この鍵を持つ人を送信者と受信者に限定し、鍵を守ることが絶対不可欠です。

暗号化アルゴリズムに使用される鍵は、非対称鍵と対称鍵の2種類に分類されます。非対称鍵とは、鍵ごとに異なる値を持つ鍵です。この鍵は、2人の当事者が1対の対称鍵を作成し、互いに鍵を送信しない場合に使用されます(公開鍵交換を参照)。対称鍵では同一の鍵を使用し、メッセージをより高速に暗号化します。

鍵の長さも暗号化メッセージの安全性に影響します。わずか4文字の鍵は、総当たり式で4文字の組み合わせをすべて試すと、1秒と経たないうちにあっけなく破られてします。しかし、256ビットの鍵は非常に長いです。256ビット鍵で暗号化されたメッセージに総当たり攻撃を行って、現実的な時間枠で解読できるコンピュータは、今のところ開発されていません。コンピュータが256ビット鍵を総当たり攻撃で破るには、最大2.29x1032年かかると言われています。つまり、敵が推測できない真の乱数を使用し、解読に時間がかかる長い鍵が必要なのです。

 

セキュア設計に役立つ暗号化


データには、保存中、転送中、処理中の3つの状態がありますが、いずれの状態も攻撃に対して脆弱です。保存中のデータ(フラッシュドライブなど)は、ハッカーによってコピーされる可能性があります。転送中のデータ(RAMとCPUの間など)は、ハッカーに読み取られる可能性があります。処理中のデータ(CPUでの処理など)は、処理後のデータがメモリに残っていると、ハッカーにアクセスされる可能性があります。

組み込み設計にますます強力なセキュリティ対策が求められる中、これらの状態に対応する暗号化関連のセキュリティソリューションが登場しています。こうしたソリューションでは、例えば、メモリに格納されているデータをとても簡単に暗号化できたり、チップ間でやりとりされるデータもオンザフライで暗号化できたりします。また、暗号化されたデータを復号せずにそのまま処理できる、新しい暗号化アルゴリズムもあります。

 

暗号化が直面する課題とは?


暗号化システムが直面する最大の課題のひとつは、鍵を安全に保管することです。ハッカーが暗号鍵にアクセスしたら、その鍵で暗号化されたデータはすべて瞬時にハッカーの手に落ちます。さらに、鍵が発見された瞬間から、その鍵はもう二度と信頼できなくなり、新しい鍵を生成しなければなりません。

ソフトウェアで実行される暗号化もリソースに大きな負荷をかけます。XTEAなどのアルゴリズムもありますが、AES-256、TLSといった業界標準の暗号化ほど安全性は高くありません。しかし、このような業界標準の暗号化方式は、大量のメモリを必要とし、複雑な数学的演算を実行するためにプロセッサに依存することがあります。

このようなリソースへの高い要求がシステムの低速化につながり、オンザフライでのデータの暗号化は現実的ではなくなります。強力な暗号化アルゴリズムによる性能低下は消費電力も増加させます。そのため、モバイルで実際に使用するのは難しいでしょう。

 

ハードウェアを味方につける


組み込み設計に強力なセキュリティ機能が必要とされる中、ハードウェアセキュリティの重要性が高まっています。簡単に言えば、ハードウェアセキュリティは、セキュリティ機能を物理的回路に統合することで、システムリソースを解放してメインアプリケーションに集中させることができます。また、エンジニアが設計するセキュリティアルゴリズムとルーチンは、往々にして脆弱性を含んでいるものですが、ハードウェアセキュリティを使用すれば、そもそもこれらを設計する必要がありません。

現在のマイクロコントローラの最も重要な機能のひとつに、セキュアブートがあります。このシステムは、構成ビットの状態、ファームウェア、システムROMをチェックし、結果として生じた署名と事前定義された署名を比較します。そして署名に何らかの変化があれば、何か改ざんされたとわかります。

今やハードウェア暗号化ペリフェラルは、CPUのリソースを使用せずにデータをオンザフライで暗号化・復号できるマイクロコントローラにおいて一般的になりつつあります。ハッカーによる物理的な攻撃でデータを取り出せないように、デバイス間のバスの暗号化・復号化にも使用されています。

オンチップ暗号鍵を使用することで、設計者はメモリを消さなくても、デバイス上のすべてのデータを瞬時に消去できるようになりました。改ざんや干渉を検出する設計では、オンチップ鍵をスクランブルできるかもしれません。そうすれば、一瞬で暗号化データを発見不可能にできるでしょう。

組み込み設計用のハードウェア暗号化アドオンに適しているのが、例えば、Maxim Integrated DeepCover暗号化コントローラです(図2)。このセキュリティ・コプロセッサは、暗号化などの複雑な暗号関数の処理をCPUからオフロードし、負荷を軽減します。コプロセッサに統合された暗号化方式には、28ビットと256ビットの両方の鍵を持つAES、SHA-2コンピュートエンジン、真の乱数発生器、TLSを含むセキュア通信のサポート、証明書ストレージ、ハードウェア攻撃に対抗する改ざん検出ピンなどがあります。

図2:Maxium DeepCover暗号化コプロセッサの回路図 

 

まとめ


暗号化は、知的財産、個人データ、システムデータを保護してくれる最高に強力なツールですが、システムの強さは一番弱い部分で決まります。安全性の低い鍵やアルゴリズムの不適切な実装は、システムを完全に危険にさらす可能性があります。鍵の保護、ハードウェアセキュリティの採用、そして何よりも暗号化アルゴリズムをカスタマイズしたり、一から作成したりしないことが大切です。