Special
» 2017年09月27日 10時00分 公開

セキュリティの落とし穴:「外付けフラッシュメモリ」は組み込み認証で守る

フラッシュメモリは、セキュリティ上の脆弱性により、IPの盗難による商業的損害や、悪質なリバースエンジニアリングによる模造品の製造などの危機にさらされています。そこで、フラッシュメモリを正当なホストコントローラとユニークかつ、安全にペア接続させる方法について概説します。

[PR/EE Times]
PR

 近年、マイクロコントローラ(MCU)やシステムオンチップ(SoC)メーカーは、セキュリティの必要性を感じ始めたユーザーの要望に応えて、さまざまなセキュリティ機能を実装した製品群をリリースし始めています。今日では、金融系以外のアプリケーション向けにも、業界標準の32ビットCPUコアにハードウェア暗号アクセラレータや乱数発生器(RNG)、セキュアストレージを実装することがトレンドとなっています。

 MCUやSoCに外付けされたフラッシュメモリには、ユーザーが開発した貴重なアプリケーションコードやデータ(知的財産、Intellectual Property)が格納されていますが、オンチップメモリ(SoCのマスクROMやMCUの内蔵フラッシュメモリ)に比べて、ハッキングされやすいという脆弱(ぜいじゃく)性を持っています。

 このように、MCUやSoCにつながっている「コンパニオンチップ」であるフラッシュメモリは、セキュリティ上の脆弱性により、IPの盗難による商業的損害や、悪質なエレクトロニクスシステムアセンブラによるプリント基板(PCB)のリバースエンジニアリングによる模造品の製造などの危機にさらされています。

 この記事では、フラッシュメモリを正当なホストコントローラとユニークかつ、安全にペア接続させる方法について概説します。

今日のフラッシュメモリ上のセキュリティホール

 ユーザーにとって最も重要なセキュリティ要件は、外付けされているフラッシュメモリに格納されているアプリケーションコードを含むIPの盗難や複製を防ぐことでしょう。

 ご存じの通り、電化製品に組み込まれた「価値」の多くは、保護されているわけではありません。例えば、スマートホームIoT(モノのインターネット)のサーモスタットを例に挙げてみましょう。PCBを細かく解析することで、全てのコンポーネントを正確に識別することが可能で、製品を複製しようとすれば、誰でもPCBレイアウトを忠実に再現することができます。ハードウェア設計そのものに秘匿性はありません。

写真はイメージです。

 一方、ソフトウェア(顧客が開発したアプリケーションコードやIP)は秘匿性を求められる場合があります。今日、セキュアなMCUやSoCは、ハードウェアとソフトウェアの組み合わせにより暗号化や耐タンパ性、セキュアストレージ機能を実装しているため、直接攻撃することは困難です。そこで攻撃者は起動プログラムやアプリケーションコードを格納している外付けのフラッシュメモリを侵入ポイントとして考えます。外付けフラッシュメモリは取り外せば、中身を読み出すことができます。つまり全体としてのシステムの強さは、一部でセキュリティ強度が高くなっていても、脆弱な部分に引っ張られることになります。

 このため、多くのユーザーは、主にソフトウェアを保護するため、フラッシュメモリのパーティション空間にあるユニークID(UID)を利用しています。しかし、このUIDは攻撃に対抗するには、あまりにも低い障壁です。多少のセキュリティに関する知識を持つエンジニアなら、このUIDを見つければ、MCUとコードストレージハードウェアの間のペアリングを容易に解除することができます。つまり、いったんUIDが分かってしまうと、OEM顧客が設定した“Root of Trust”(=当該製品の固有性)と、プログラムコードからなされる信頼の大元が失われることになるのです。後はフラッシュメモリの内容を丸ごとコピーし、UIDの処理を対応すれば、模造品が本当にできてしまいます。

 このセキュリティシステムの弱点は、UID自体がセキュアでないことです。つまりUIDは固定値であるため、一度読み取られると権限のないホストであっても再利用されてしまうのです。

解決策:セキュアでダイナミックな認証

 理論上、この問題の救済策は簡単です。つまり、ホストであるMCUやSoCがメモリにアクセスするたびにUIDを動的に変更すれば良いのです。そして実装がしやすい固定値のUIDをフラッシュメモリ側とホストコントローラ側に用意し、利用します。ホストがフラッシュメモリにアクセスする際に動的なUIDを比較することで、フラッシュメモリを認証することができます。この認証プロセスが「チャレンジ&レスポンス」です。

 それでは、動的なUIDを生成して、認証プロセス「チャレンジ&レスポンス」を行うにはどのようにすればよいでしょうか。

UIDに対称暗号方式を適用

 UIDのみによる認証問題を解決するために、ウィンボンドはセキュア認証フラッシュメモリ「W74Mファミリ」を開発しました(図1参照)。ウィンボンドはシリアルNORやNANDフラッシュメモリICの幅広いポートフォリオを持ち、シリアルフラッシュ市場で高いシェアを有するトップクラスのメモリメーカーです。2016年は21億個ものシリアルフラッシュを出荷した実績があります。

 現在、フラッシュメモリのセキュリティ脆弱性が、設計時の大きな課題となっています。ここにW74Mファミリの紹介をしている理由があります。ウィンボンドはメモリの固有性(アイデンティティ)確保に対称暗号化を使い、それはまず、ホストとメモリの両方が同じ秘密を「ルートキー」として認識することから始まります。

図1:W74Mのアーキテクチャ

 当然のことながらホストがメモリと“チャレンジ&レスポンス”を行う際に相互の秘密であるルートキーを直接伝送することはありません。その代わりに「チャレンジ&レスポンス」で出力されるデータは、本メッセージデータに加え、HMAC(Hash-based Message Authentication Code)と呼ばれるチェックサムを送ります。本チェックサムはダイジェストやフィンガープリントとも呼ばれ、ルートキーと乱数などのダイナミック要素から生成されたセッションキーと本メッセージを一方向関数(逆算が困難な計算アルゴリズム)に入力して生成されます。

 W74Mファミリでは一方向関数にSHA-256を採用しています。SHA-256とは、計算結果のチェックサム(ダイジェスト)のサイズが256ビット長になるものです。SHAとは、Secure Hash Algorithmの略で、SHA-256は、連邦情報処理標準(FIPS)として米国立標準技術研究所(NIST)によって発行された暗号ハッシュ関数です。これは、金融取引などの処理に使用される認証技術であり、現在のところ解読は不可能と言われています。

 W74Mメモリは受信した「チャレンジ」メッセージと内部で生成した共通鍵(セッションキー:ルートキーと事前に受け取った乱数から生成)をSHA-256エンジンに入力し、256ビット長のダイジェストを計算します。そして受信したダイジェストと比較します。比較が一致すればメモリ側は、正当なホストコントローラからのメッセージを受信したと判断(認証)します(この認証できたという根拠は、一方向関数の計算結果であるダイジェストは、入力データが1ビットでも変更されると変化する、という特性からきています)。そしてW74Mメモリは同様に受信したメッセージから「レスポンス」メッセージを作成し返信します(このとき生成するダイジェストについては後述します)。

セキュア認証フラッシュメモリ「W74Mファミリ」

 次にホストコントローラは同様にW74Mから受信した「レスポンス」を検証します。つまり先に生成したセッションキーと受け取ったレスポンスメッセージを入力にSHA-256にてダイジェストを計算します。そして受信したダイジェストと比較します。相互の値が一致するとホストコントローラは接続されているメモリを認証できたことになり、以降、通常のメモリ動作(コードやデータの実行、読み出し/書き出しなど)が続行されます。

 このように前述したUIDによる認証方式とは異なり、W74Mでは、セッションキーというルートキーとは異なる鍵(一種のUID)が利用されること、またSHA-256のような一方向関数でメッセージ内容の改ざんを検出できます。

 さらに、定期的にセッションキーを変更することで、万が一、メッセージやレスポンスが盗み取られたとしても次のメッセージ/レスポンスではダイジェスト値が異なるのでホストあるいはW74M側のロジックは異常を検出できます。つまり、前述の固定値によるUIDで成功していた「なりすまし」攻撃は、W74Mメモリでは失敗します。逆算をして同じダイジェスト値を持つメッセージと鍵の組み合わせを求める(衝突耐性といいます)という攻撃も考えられますが、SHA-256関数は現状ではそれが非常に難しいとされています。ただし、ルートキーは守られる必要があります。W74Mメモリではルートキーは一度設定されると変更や読み出しができない仕組みになっています。

W74Mファミリの特徴

 図1はW74Mのその他2つの特長を示しています。1つ目は、不揮発性モノトニックカウンタを内蔵し、タイムスタンプ情報として動的に変更できることです。W74Mメモリはレスポンスメッセージを作成するときに、このカウンタもダイジェスト計算の入力とすることで再生攻撃(リプレイアタック)に対処できるようにしています。再生攻撃とは、盗聴者がある瞬間のメッセージを盗み取り保存しておき、時間経過した後に保存しておいたメッセージをあたかも正当な送信者に成りすまして再送し、受信者を混乱させる攻撃をいいます。

 本カウンタはルートキーが作られる際にゼロに初期化され、その後ホストコントローラはアプリケーション上で定期的あるいはランダムにカウンタをインクリメントするコマンドをW74Mに送信します。つまりホストコントローラとW74Mメモリ間でカウンタ値を変更し同期を取るわけです。ホストがW74Mに対して“チャレンジ&レスポンス“を実行する際には、W74Mは最新のカウンタ値をダイジェスト計算の入力に加えレスポンスするため、ホスト側が持っているセッションキーだけでなく最新のカウンタ値が同じでない限りダイジェスト値は一致せず、結果認証が成功しないことになります。

 こうしてホストコントローラは、「チャレンジ&レスポンス」を実行することでコードやデータなどのシステムリソースを保存しているフラッシュメモリが正当な部品であるかどうかを認証できます。たとえ攻撃者が、顧客の製品を分解し、PCB上に実装されたW74Mから内容をコピーしただけでは、その盗み出したコード/データは再利用できないため、模造品製造は容易にはできなくなるのです。

 図1で示されているW74Mの2つ目の特長は、認証のための鍵セット(インスタンス)が4チャネルあることです。W74Mメモリは、ルートキーおよび、HMACキー(前述のセッションキーに相当)、モノトニックカウンタを1セットとするインスタンスが4チャネルあります。W74Mは1個でありながら、認証チャネルは、例えば1つはホストデバイスコントローラ用にその他3つの認証チャネルはゲートウェイ用、クラウド/ネットワーク環境用、他のホストコントローラ用と独立に認証チャネルを割り当てることができます(マルチレイヤ認証:図2参照)。

図2:W74Mによるマルチレイヤ認証

 このマルチレイヤ認証のその他の応用例としては、複数のエレメントで構成されるドローンのような複雑なシステムなどがあります。これらエレメントの中で、W74Mは下記の認証に用いられます。

  • ドローンのメインプロセッサのコード/データ格納フラッシュメモリ
  • リムーバブルバッテリーモジュール
  • リモートコントローラ
  • カメラ

 W74Mに内蔵されているHMAC-SHA-256認証エンジンと4チャネルの鍵/カウンタセットを利用することにより、ドローンメーカーは周辺装置であるブランドメーカーのカメラや交換用バッテリのみでしか機能しないように製品のプロパティを制御できます。これにより、模造部品交換による不正行為を抑止することができます。

安全でセキュアな実装

 前述の通り、W74Mの認証機能は業界標準のSHA-256を一方向関数に利用し、固定の鍵ではなく、動的に変更するセッションキー(HMACキー)と不揮発性モノトニックカウンタを導入して再生攻撃にも対応できるように設計されています。セキュリティ上、一番大切な鍵(ルートキー)は、一度W74Mに設定すると変更や読み出しはできず、内部のOTPメモリに保存されます。

 W74Mメモリ自体は認証に必要な機能を内蔵していますが、ルートキーを設定するなどプロビジョニングする際には注意が必要です。顧客の製造工程時にW74Mメモリと対になるホストコントローラに、セキュアかつ確実に意図されたルートキーを設定する必要があります。ウィンボンドはお客様の代わりにルートキーのプロビジョニングを行うサービスを請け負うことも可能です。

 認証フラッシュメモリW74Mファミリは、標準パッケージに32Mビットから1Gビットまでの幅広いメモリ容量帯を取りそろえています。ブートコードストレージ用にNOR/NANDフラッシュ、また認証ICの2つの機能が求められる場合に、W74Mファミリは1チップパッケージで実現できます。その外形パッケージはフラッシュメモリの業界標準パッケージであるため、既存のPCBのフットプリントにそのまま載せ替えることも可能です。セキュリティ業界標準のSHA-256アルゴリズムを搭載しつつ、顧客のBOMコストやコンポーネント数の削減に貢献します。

 このほどW74Mファミリに、NORフラッシュのメモリ機能を持たず、認証機能だけを持つ製品(型番:「W74M00AVSSIG」や「W74M00AVSNIG」)をラインアップしました。1チップでマルチレイヤ認証デバイスとしての利用が可能です。

【著:Winbond アメリカ/CS. Lin(マーケティングエグゼクティブ)】

Copyright© 2017 ITmedia, Inc. All Rights Reserved.


提供:ウィンボンド・エレクトロニクス株式会社
アイティメディア営業企画/制作:EE Times Japan 編集部/掲載内容有効期限:2017年10月26日

Presented by

関連記事

モバイル機器やウェアラブル機器などあらゆる機器は、消費電力を低減するためにデバイス動作電圧の低電圧化が進みつつあります。そうした中で、1.2Vや1.5Vで動作する低電圧メモリが登場しています。今回は、ウィンボンド(Winbond)が展開する低電圧メモリを取り上げながら、低電圧メモリの利点や活用法を紹介しましょう。

RSSフィード

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.