アプリケーションノート 3824

組込みシステムにおけるセキュリティ

筆者: Kris Ardis

要約: 機密性の高い情報を保護するのに暗号だけでは十分ではありません。このアプリケーションノートでは、なぜキーが保護されなくてはいけないのかについて説明します。真の不正検出にはDS5250が最高の選択肢であり、お客様の組込みシステムに最高レベルのセキュリティを提供します。

組込みシステムにおけるセキュリティは、補足的になりがちです。設計段階では、まず、できるだけ短期間で製品を市場に投入することが重視され、セキュリティのアップグレードは将来的な改版として残されます。これは、必ずしも非論理的なやり方ではありません。なぜなら、セキュリティに優れた製品は高価格で、市場に浸透する時期が遅いからです。

しかし、最初から高いレベルのセキュリティが必要なシステムも数多く存在します。政府や業界団体が一定のセキュリティを要求することもあります。たとえば、クレジットカードのVisaとMasterCardでは、POS端末やPINパッドについて必要なセキュリティを細かく定めたPCI基準を策定しています。収益を確保するために、設計段階からセキュリティを組み込むこともあります。アプリケーションをセキュアにすれば、リバースエンジニアリングが困難になり、デバイスのコピーを防止するとともに、真の不正検出が実現します。

では、セキュアマイクロコントローラの本当の役割は何であり、機密のアプリケーションにとってセキュアマイクロコントローラがそれほど重要である理由は何でしょうか。

システムのセキュリティは鍵のセキュリティ以上にならない

セキュリティは、暗号化だけで実現できるものではありません。どの暗号化アルゴリズムと鍵管理ルーチンを採用するかは重要ですが、通常それらはセキュアアプリケーションの弱点ではありません。アリスとボブというふたりの間だけで使うことができるセキュアな電話があると考えてみてください。電話に施された暗号化は、世界中のコンピュータを使っても解読に100年もかかり、現実的に解読不能だとします。弱点はどこでしょうか。電話そのものです。攻撃をしようとしている人が電話のうちの1つを手中に収めてしまえば、アリスやボブのふりをして、すぐに秘密情報にアクセスすることができるようになります。攻撃するには電話を盗む必要はなく、アリスやボブに気づかれないように盗聴器を仕掛けるだけでいいのです。

このシナリオでは、破っているのは暗号化ではなく、暗号化デバイスのセキュリティ、つまり「鍵」です。組込みシステムでは、鍵は桁数の多い秘密の数字であり、それを使って暗号化ルーチンが情報の暗号化処理やデータの認証を行います。したがって、セキュアな組込みシステムにとってもっとも重要なことは、この秘密鍵を守ることです。システムが攻撃されたら、この鍵を消去し、攻撃をする者の手に渡らないようにする必要があります。鍵が破壊されるとデバイスが動かなくなり、攻撃しようとしても、銀行の口座番号やパスワードといった重要な情報へのアクセスが閉ざされてしまいます。

鍵の保護で重要なことは、デバイスのセキュリティを破りやすくしてしまわないように、秘密鍵を組込みシステム外に出さないようにすることです (図1)。しかし、設計の中に専用メモリを組込んでも、鍵の保存としてはうまくいきません。なぜなら、マイクロコントローラとメモリの間のトランザクションは監視することができるからです。セキュリティという面で一番良いのは、プロセッサ内部に置いた鍵でデータの暗号化や認証を行うという方法です。そのためには、システムのマイクロコントローラが不揮発性メモリを内蔵する必要があります。

図1. 秘密鍵データは、デバイス外に出すべきではなく、IC間のやりとりもすべきではありせん。
図1. 秘密鍵データは、デバイス外に出すべきではなく、IC間のやりとりもすべきではありせん。

トリップワイヤとプラスチック保護

マイクロコントローラ内に鍵データを保管しても、秘密情報を入手する方法はなくなりません。たとえば、攻撃者がマイクロコントローラのアドレスやデータバスにアクセスすることができれば、外部I/Oポートに鍵データをダンプするコマンドを挿入することもできます。技術力の高い攻撃者であれは、マイクロコントローラのプラスチックパッケージを物理的に取り除き、マイクロプローブを使って内部メモリの内容を読み取ることもできます。したがって、セキュアシステム側では、このようなアクセスを阻止したり、、マイクロコントローラにメモリ内容を消去するように指示するような方法が必要です。

このようなセキュリティ課題に対するシンプルなアプローチとして、「問題となる領域」(つまり、マイクロコントローラ、クロック、メモリ)の全体を不正防止用材料で密封するという方法が考えられます。PCBの一部をプラスチックで固めたり、金属製のボックスで囲うなどの方法です。高温や筐体の除去を検出するためにトリップワイヤのデバイスを使うこともできます。ただし、マイクロコントローラが低電力モードに入っていて対応できなければ、このような検出を行っても意味がありません。

DS5250: 鍵を保護するための真のセキュリティ

ダラスセミコンダクタの最新型セキュアマイクロコントローラDS5250は、このような問題を解決し、政府機関や金融機関向けのアプリケーションでの使用にも十分な高いセキュリティレベルを実現するシステムを構築することができます。その秘密はメモリにあります。

NV SRAM

DS5250の内蔵不揮発性SRAM (NV SRAM)は機密情報と暗号鍵を完全に保存します。このカスタムの低リークSRAMは、以下の重要な2つの条件を満足します。
  1. データは不揮発性でなければならない。安価な小型バッテリにより、鍵データは数年間保持することができる。
  2. データは短時間で消去可能でなければならない。DS5250のSRAMは、チップの不正検出回路が起動した瞬間に消去される。

バッテリ駆動のタンパー検出および反応

セキュアなシステムを実現するためには、NV SRAMに加え、攻撃を検出するセンサが必要です。DS5250は、バッテリ駆動の複数のタンパーセンサを持っています。また、マイクロコントローラがアクティブでなくても、不正な攻撃に対応することができます。

DS5250は、フォルトインジェクション攻撃を検出することができる温度センサと電圧センサを内蔵しています。動作電圧や温度がマイクロコントローラの動作範囲を超えると、DS5250は内蔵NV SRAMの内容を瞬時に消去します。これによってハッカーが鍵データを回収する危険性を回避します。マイクロプローブによるNV SRAMセルの読み出しを防止するため、DS5250は最上層シリコンが超微細メッシュ構造となっています。このメッシュのトレースがショートすると、DS5250は自己破壊をトリガし、鍵データは消去されます。

DS5250には、外部回路から自己破壊をトリガすることができる入力も備えています。この入力を活用すれば、多層ものセキュリティを持つシステムとすることができます。自己破壊をトリガすることのできる外部回路は無限にあります。使用頻度が高いと思われる外部センサの例をいくつかあげます。
  1. 筐体が開かれると検出するスイッチ
  2. 覆いが取り除かれると切断されるPCBトレース
  3. ケースが開封されたり検査されると検出する光センサ
  4. 加圧されたシールが破壊されたことを検出する圧力センサ
  5. 通常、移動してはならない装置のためのモーションセンサ(通常、固定されて動作する現金引出機)

暗号化されたコード空間

起動時のシステムロード時、DS5250は、乱数による3DES鍵を用いて暗号化してから、コマンドコードを外部メモリに記憶します。こうして、攻撃者が悪質なコードを挿入してDS5250に実行させることを防止し、アプリケーションのリバースエンジニアリングもやりにくくなります。コードに完全性検査を組みこめば、攻撃者によるコード改変の試みを検出することもできます。

図2. コード空間の暗号化により、外部メモリ空間に記憶されたアルゴリズムとデータを守ります。
図2. コード空間の暗号化により、外部メモリ空間に記憶されたアルゴリズムとデータを守ります。

コード空間を暗号化すると、攻撃者によるアプリケーションのリバースエンジニアリングを防止するだけでなく、デバイスのコピーも防止することができます。暗号鍵は各DS5250ごとにランダムに生成されるため、2つのシステムが同一のデータを外部フラッシュメモリに記憶することはありません。攻撃者が外部フラッシュメモリを活用するためには暗号鍵を知る必要がありますが、すでに述べたように、DS5250から秘密情報を取りだすのは非常に困難です。

セキュリティを念頭に置いたエンジニアリング

セキュアシステムの設計は困難な仕事です。既存設計のセキュリティを高めるのは、さらに難しいです。そして、セキュアシステムの設計では、鍵保護が最重要事項となります。この鍵を守るために特に設計された製品がDS5250であり、高いセキュリティレベルの重要データを守ることができます。DS5250をはじめとするダラス/マキシムのセキュアマイクロコントローラの詳細は、セキュアマイクロコントローラをご覧ください。