IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インフィニオン テクノロジーズ エルエルシーの特許一覧

特許7443433不揮発性メモリデバイス内部からの保護された通信
<>
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図1A
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図1B
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図2A
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図2B
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図3
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図4
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図5
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図6
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図6A
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図6B
  • 特許-不揮発性メモリデバイス内部からの保護された通信 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-26
(45)【発行日】2024-03-05
(54)【発明の名称】不揮発性メモリデバイス内部からの保護された通信
(51)【国際特許分類】
   G06F 21/60 20130101AFI20240227BHJP
【FI】
G06F21/60 360
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2022124572
(22)【出願日】2022-08-04
(62)【分割の表示】P 2020570718の分割
【原出願日】2019-06-07
(65)【公開番号】P2022153639
(43)【公開日】2022-10-12
【審査請求日】2022-09-02
(31)【優先権主張番号】62/687,146
(32)【優先日】2018-06-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/431,548
(32)【優先日】2019-06-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522029730
【氏名又は名称】インフィニオン テクノロジーズ エルエルシー
【氏名又は名称原語表記】Infineon Technologies LLC
【住所又は居所原語表記】198 Champion Court, San Jose, CA 95134, United States of America
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】セルゲイ オストリコフ
(72)【発明者】
【氏名】スティーブン ロスナー
(72)【発明者】
【氏名】クリフ ジトロー
【審査官】松平 英
(56)【参考文献】
【文献】特表2003-510706(JP,A)
【文献】米国特許出願公開第2017/0310652(US,A1)
【文献】特表2019-502286(JP,A)
【文献】米国特許出願公開第2014/0215111(US,A1)
【文献】米国特許第09348771(US,B1)
【文献】米国特許出願公開第2015/0127930(US,A1)
【文献】米国特許出願公開第2005/0108571(US,A1)
【文献】特表2007-513406(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00-21/88
G09C 1/00-5/00
H04K 1/00-3/00
H04L 9/00-9/40
(57)【特許請求の範囲】
【請求項1】
システムであって、前記システムは、
サーバに通信可能に結合され、処理デバイスおよび暗号バッファを備える不揮発性メモリ(NVM)デバイスと、
前記サーバとネットワーク通信し、前記NVMデバイスに結合されたホストコンピューティングシステムと、
を備え、
前記ホストコンピューティングシステムは、前記サーバから受信した通信パケットを前記NVMデバイスに送信するように構成され、前記通信パケットは、前記NVMデバイスとのセキュア通信の開始要求を備え、
前記ホストコンピューティングシステムは、前記NVMデバイスと前記サーバとの間のセキュアハンドシェイクの実行を促進するように構成され、前記セキュアハンドシェイクは、前記セキュア通信を開始するセキュアプロトコルを用いており、前記セキュアプロトコルでは、前記NVMデバイスは、一対のセッション鍵のうちの第1のセッション鍵を生成し、前記ホストコンピューティングシステムにアクセス不可能な前記暗号バッファに格納し、
前記ホストコンピューティングシステムは、前記サーバから、セキュアプロトコルパケットを備えるトランスポート・コントロール・プロトコル(TCP)パケットを受信するように構成され、前記セキュアプロトコルパケットは、前記サーバが前記一対のセッション鍵のうちの第2のセッション鍵で暗号化した暗号化データを備え、
前記ホストコンピューティングシステムは、SPI暗号書き込み命令およびセキュアプロトコルオペレーション識別子を前記セキュアプロトコルパケットに追加することによって、シリアルペリフェラルインタフェース(SPI)パケットを生成し、前記SPIパケットを前記NVMデバイスに送信するように構成され、
前記SPI暗号書き込み命令に応答して、前記処理デバイスは、前記SPIパケットを前記暗号バッファに格納するように構成される、
システム。
【請求項2】
前記セキュアプロトコルは、セキュアソケット層(SSL)プロトコルおよびトランスポート層セキュリティ(TLS)プロトコルのうちの一方を備え、前記セキュアハンドシェイクは、一連の暗号化オペレーションの先駆けとなる一連の順次連続したオペレーションを含む、
請求項1記載のシステム。
【請求項3】
前記ホストコンピューティングシステムは、ブリッジドライバを備え、前記セキュアハンドシェイクの実行を促進するために、前記ブリッジドライバは、
前記サーバからのTCPパケットを、前記NVMデバイスに送信されるSPIパケットに変換し、
前記NVMデバイスからのSPIパケットを、前記サーバに送信されるTCPパケットに変換する、
請求項1記載のシステム。
【請求項4】
前記ホストコンピューティングシステムは、ブリッジドライバを備え、前記SPIパケットを生成するために、前記ブリッジドライバは、
前記暗号化データを分割し、前記暗号化データの部分を生成し、
前記SPI暗号書き込み命令および前記セキュアプロトコルオペレーション識別子を前記暗号化データのそれぞれの部分に追加することによって、SPIパケットを生成する、
請求項1記載のシステム。
【請求項5】
前記NVMデバイスは、
前記第1のセッション鍵を用いて、前記暗号化データを復号して、平文データを生成し、
前記平文データを前記NVMデバイスのNVM記憶素子に格納し、
前記ホストコンピューティングシステムは、前記NVM記憶素子に格納される前記平文データで実現されるコードの命令を実行するようにさらに構成される、
請求項1記載のシステム。
【請求項6】
不揮発性メモリ(NVM)デバイスであって、前記不揮発性メモリ(NVM)デバイスは、
メモリコントローラと、
前記メモリコントローラに結合され、前記NVMデバイスと通信可能に結合されたホストコンピューティングシステムによってアクセス不可能である暗号バッファと、
処理デバイスと、
を備え、
前記処理デバイスは、
前記ホストコンピューティングシステムを介して、セキュア通信の開始要求を備える通信パケットをサーバから受信し、
セキュアプロトコルを用いて、前記ホストコンピューティングシステムを経由する通信を介して、前記サーバとセキュアハンドシェイクを実行し、
前記ホストコンピューティングシステムを介して、前記サーバからセキュアプロトコルパケット内でデータを受信し、
前記セキュアプロトコルパケット内の暗号書き込み命令を検出することに応答して、前記セキュアプロトコルパケットを前記暗号バッファに格納し、
前記データを取り出すために、前記暗号バッファに格納された前記セキュアプロトコルパケットを構文解析し、
前記セキュアプロトコルパケットのヘッダから、セキュアプロトコルオペレーション識別子およびセキュアプロトコルメタデータを取り出し、
前記セキュアプロトコルパケットから取り出したセキュアプロトコルメタデータの照合を含めるために、前記セキュアプロトコルに従い、前記暗号バッファから前記セキュアプロトコルパケットの部分を伝送して処理する、
ように構成される、
不揮発性メモリ(NVM)デバイス。
【請求項7】
前記処理デバイスは、前記NVMデバイスのNVM記憶素子に格納される前記データのアクセスを、前記ホストコンピューティングシステムのために提供するようにさらに構成される、
請求項6記載のNVMデバイス。
【請求項8】
前記セキュアプロトコルは、セキュアソケット層(SSL)プロトコルまたはトランスポート層セキュリティ(TLS)プロトコルのうちの一方を備え、前記セキュアハンドシェイクは、一連の暗号化オペレーションの先駆けとなる一連の順次連続したオペレーションを含む、
請求項6記載のNVMデバイス。
【請求項9】
前記NVMデバイスは、フラッシュメモリデバイスをさらに備える、
請求項6記載のNVMデバイス。
【請求項10】
前記メモリコントローラは、前記ホストコンピューティングシステムのシリアルペリフェラルインタフェース(SPI)マスタに結合されたSPIスレーブを含み、前記セキュアハンドシェイクは、前記SPIスレーブと前記SPIマスタとの間で交換されるSPIパケット内のデータ伝送を介して実行される、
請求項6記載のNVMデバイス。
【請求項11】
前記NVMデバイスは、暗号アクセラレータをさらに備え、前記暗号アクセラレータは、前記暗号アクセラレータにプログラミングされた暗号化ツールキットの実行を介して、暗号化オペレーションを実行するように構成される、
請求項6記載のNVMデバイス。
【請求項12】
前記処理デバイスは、
前記セキュアプロトコルパケットから取り出された少なくとも前記セキュアプロトコルメタデータを用いて、前記データを認証し、
前記NVMデバイスのNVM記憶素子に前記データを格納する、
ようにさらに構成される、
請求項6記載のNVMデバイス。
【請求項13】
前記セキュアプロトコルに従い前記セキュアプロトコルパケットの前記部分を処理するために、前記処理デバイスは、前記暗号アクセラレータとインタラクトするようにさらに構成され、これにより、
暗号スイートコードに従い前記データの1つの列を認証し、
暗号化されているならば、セッション鍵を用いて、前記データの前記列を復号して、平文データの1つの列を生成し、
平文データの前記列を前記NVMデバイスのNVM記憶素子に格納し、
前記メモリコントローラおよび前記ホストコンピューティングシステムを介して、前記NVM記憶素子への前記データの前記列の書き込みに成功したことを、前記サーバへ折り返し報告する、
請求項11記載のNVMデバイス。
【請求項14】
不揮発性メモリ(NVM)デバイスを動作する方法であって、前記方法は、
前記NVMデバイスの処理デバイスにより、サーバに通信可能に結合されたホストコンピューティングシステムを介して、セキュア通信の開始要求を備える通信パケットを前記サーバから受信するステップと、
前記処理デバイスにより、セキュアプロトコルを用いて、前記ホストコンピューティングシステムを経由する通信を介して、前記サーバとセキュアハンドシェイクを実行するステップと、
前記処理デバイスを用いて、前記ホストコンピューティングシステムを介して、前記サーバからセキュアプロトコルパケット内で暗号化データを受信するステップと、
前記処理デバイスにより、前記セキュアプロトコルパケット内の暗号書き込み命令を検出することに応答して、前記セキュアプロトコルパケットを前記NVMデバイスの暗号バッファに格納するステップと、
前記処理デバイスにより、前記暗号化データを取り出すために、前記暗号バッファに格納された前記セキュアプロトコルパケットを構文解析するステップと、
前記処理デバイスにより、前記セキュアプロトコルパケットのヘッダから、セキュアプロトコルオペレーション識別子およびセキュアプロトコルメタデータを取り出すステップと、
前記処理デバイスにより、前記セキュアプロトコルパケットの部分を、前記暗号バッファから伝送するステップと、
前記処理デバイスにより、前記セキュアプロトコルメタデータの照合を含めるために、前記セキュアプロトコルに従い、前記暗号バッファから伝送された前記セキュアプロトコルパケットの前記部分を処理するステップと、
を含む方法。
【請求項15】
前記セキュアハンドシェイクを実行するステップは、シリアルペリフェラルインタフェース(SPI)パケット内のセキュアプロトコルデータを前記ホストコンピューティングシステムと交換するステップを含む、
請求項14記載の方法。
【請求項16】
前記セキュアプロトコルは、セキュアソケット層(SSL)プロトコルまたはトランスポート層セキュリティ(TLS)プロトコルのうちの一方を備え、前記セキュアハンドシェイクは、一連の暗号化オペレーションの先駆けとなる一連の順次連続したオペレーションを含む、
請求項14記載の方法。
【請求項17】
前記サーバとセキュアハンドシェイクを実行するステップは、一対のセッション鍵のうちの1つのセッション鍵の生成を含み、前記1つのセッション鍵は、前記ホストコンピューティングシステムにアクセス不可能であり、
前記方法は、
前記処理デバイスにより、前記セッション鍵を用いて、前記暗号化データを復号して、平文データを生成するステップと、
前記処理デバイスにより、前記平文データを前記NVMデバイスのNVM記憶素子に格納するステップと、
をさらに含む、
請求項14記載の方法。
【請求項18】
前記方法は、前記セキュアプロトコルパケットから取り出された少なくとも前記セキュアプロトコルメタデータを用いて、前記暗号化データを認証するステップをさらに含む、
請求項14記載の方法。
【請求項19】
前記方法は、前記ホストコンピューティングシステムによる、前記NVM記憶素子に格納されている前記平文データへのアクセスを提供するステップをさらに含む、
請求項17記載の方法。
【請求項20】
前記処理するステップは、
前記NVMデバイスの暗号アクセラレータにより、暗号スイートコードに従い前記セキュアプロトコルパケットの前記暗号化データの1つの列を認証するステップと、
前記暗号アクセラレータにより、前記セッション鍵を用いて、前記暗号化データの前記列を復号して、平文データの1つの列を生成するステップと、
平文データの前記列を前記NVM記憶素子に格納するステップと、
前記ホストコンピューティングシステムを介して、前記NVM記憶素子への前記暗号化データの前記列の書き込みに成功したことを、前記サーバへ折り返し報告するステップと、
をさらに含む、
請求項17記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本願は、2018年6月19日出願の米国特許仮出願第62/687146号の優先権の利益を主張する2019年6月4日出願の米国特許非仮出願第16/431548号の国際出願であり、上記米国特許仮出願は、ここでの参照をもってその開示内容全体が本明細書に取り込まれたものとする。
【0002】
技術分野
本開示はメモリデバイスの分野に関し、具体的には、不揮発性メモリデバイス内部からの通信を保護することに関する。
【背景技術】
【0003】
モノのインターネット(IoT)デバイスは、ホストコンピューティングシステム、または外部不揮発性メモリ(NVM)デバイスに結合されたデバイスを含み、ここで外部不揮発性メモリ(NVM)デバイスとは例えばフラッシュメモリデバイスなどであるが、強誘電体RAM(FRAM)、磁気抵抗RAM(MRAM)およびこれらと同様のものなど、他のデバイスを使用してもよい。ホストコンピューティングシステム上で実行されるアプリケーションは、アプリケーションまたはブートコードをNVMデバイスにダウンロードし、コードのソースを認証する能力、またはNVMに書き込まれている間にコードが変更されなかったことを保証する能力がなければ、このことによってセキュリティリスクがもたらされる。
【0004】
いくつかの実施形態において、コードの認証および安全な出所の保証が、ホストコンピューティングシステムによるセキュアプロトコルトランザクションを介して実施される。しかしながら、多くの小型化されたIoTデバイスのメモリコントローラユニットは、鍵を保護することができず、したがってセキュアプロトコルトランザクションに不正にアクセスされる。しかも、ホストコンピューティングシステムから外部NVMデバイスに書き込まれる平文データは保護されておらず、これによって攻撃者によるそのデータの読み出しおよび/または変更が可能となってしまう。その代わりに暗号化データがNVMデバイスのNVMに書き込まれるとしても、ホストコンピューティングシステムにおいてデータを復号しなければならず、したがってこれによりIoTデバイスを再び攻撃する可能性が開かれてしまい、例えばホストコンピューティングシステムとNVMデバイスの双方において、攻撃面が拡大される。
【0005】
添付の図面の各図には、限定ではなく例示として本開示が示されている。
【図面の簡単な説明】
【0006】
図1A】さまざまな実施形態による、外部不揮発性メモリ(NVM)デバイスを含むモノのインターネット(IoT)ノードのシステムのブロック図である。
図1B】1つの実施形態による、付加的なサブコンポーネントを示す図1Aのシステムのブロック図である。
図2A】1つの実施形態による、リモートコネクションとIoTノード内部のシリアルペリフェラルインタフェース(SPI)バスとを示す、図1Aのシステムのブロック図である。
図2B】1つの実施形態による、図2Aに示したハードウェアに対応する単純化されたデータフロー図である。
図3】1つの実施形態による、セキュア通信セッションを開始し、サーバとセキュアNVMデバイスとの間で暗号化データを交換する方法のフローチャートである。
図4図4Aは、1つの実施形態による、図1A図1Bのシステムの主要コンポーネントのソフトウェアおよびファームウェアのブロック図であり、図4Bは、1つの実施形態による、サーバとNVMデバイスとの間のセキュアプロトコル通信のための方法を示す、図1A図1Bの上述の主要システムコンポーネントのハードウェアのブロック図である。
図5】1つの実施形態による、サーバにより開始されたNVMデバイスにおける保護された書き込み命令の実行のために、IoTデバイスのホストコンピューティングシステムとNVMデバイスとにより実施されるステップを示すブロック図である。
図6】1つの実施形態による、サーバとセキュアNVMデバイスとの間でセキュア通信を確立する目的でセキュアプロトコル通信セッションを確立する方法のフローチャートである。
図6A】1つの実施形態による、例えば無線を介したファームウェアのアップデート(firmware over the air update(FOTA))のための、サーバとNVMデバイスとの間のセキュアプロトコルハンドシェイクのフローチャートである。
図6B】1つの実施形態による、例えばFOTAのための、サーバとNVMデバイスとの間のセキュアデータ伝送のフローチャートである。
図7】本明細書で述べる方法論のうちのいずれか1つまたは複数を機械に実施させるための命令セットを内部で実行させることのできるコンピューティングシステムの例示的な形態として、1つの機械の図式表現を示す図である。
【発明を実施するための形態】
【0007】
IoTデバイスのサーバとNVMデバイスとの間のデータ通信を保護する際の上述の欠点を解消するために(つまりはNVMデバイスおよび結合されたホストコンピューティングシステムの攻撃面を閉鎖するために)、サーバとNVMデバイスとの間で直接、セキュアプロトコル通信セッションを確立することができる。セキュアプロトコルを例えば、セキュアソケット層(SSL)プロトコルまたはトランスポート層セキュリティ(TLS)プロトコルのうちの一方とすることができる。これによりNVMデバイスは、サーバを直接的に認証することができ、例えば信頼性のあるサーバからのアップデートだけしか受け入れない。この解決手段によればさらにNVMデバイスは、セキュアプロトコルが相互認証を促進することから、サーバに対し自身を認証できるようになる。つまりこのことが意味するのは、NVMデバイスから受け取ったデータが途中で不正に変更されなかったことをサーバが照合できる、ということである。この解決手段によれば、セキュアプロトコル通信セッションの欠くことのできない部分として、ホストコンピューティングシステムも除外される。
【0008】
その代わりに、あとで詳しく説明するようにさまざまな実施形態において、ホストコンピューティングシステムは、サーバからのトランスポートコントロールプロトコル(TCP)パケットを、シリアルペリフェラルインタフェース(SPI)パケットにパッケージングし直し、このパケットは、NVMデバイスにより認識可能であるが、TCPパケット内に当初からカプセル化されていたセキュアプロトコルパケットを依然として含む。ホストコンピューティングシステムは、SPIパケットをNVMデバイスと交換して、セキュアプロトコルハンドシェイクおよびデータ伝送を促進することができる。実施形態において、セキュアハンドシェイクの態様を実行し、セキュアプロトコルを使用してサーバとのセキュアデータ伝送を確立する際に、(スタティックランダムアクセスメモリ(SRAM)の)暗号バッファおよび暗号アクセラレータ(両者ともにNVMデバイスに配置されている)とインタフェース接続するために、NVMデバイスのファームウェアおよびアプリケーションプログラミングインタフェース(API)をアップデートすることができる。
【0009】
さまざまな実施形態において、ホストコンピューティングシステムは同様に、NVMデバイスからSPIパケットを受け取り、SPIパケットを個々のTCPパケットにカプセル化し、このパケットがサーバへ伝送される。セキュアプロトコルパケットを取り扱う際に、ホストコンピューティングシステムは、復号鍵(例えばセッション鍵の1つ)へのアクセス権がないことから、NVMデバイスまたはサーバからの暗号化データを復号することはできない。しかもホストコンピューティングシステムは、(通信の仲介として以外)意味のあるかたちでセキュアプロトコル認証に寄与しておらず、これはいまやサーバとNVMデバイスとの間で直接行われる。
【0010】
1つの実施形態において、装置は不揮発性メモリ(NVM)デバイスを含み、これ自体はホストコンピューティングシステムに結合された処理デバイスを含む。NVMデバイスは、NVMデバイスに結合されサーバに通信可能に結合されたホストコンピューティングシステムを介して、サーバから通信パケットを受け取ることができる。この通信パケットは、セキュア通信の開始要求を伴う平文データを含む。NVMデバイスはさらに、セッション鍵(例えば一対のセッション鍵のうちの復号鍵)を生成するセキュアプロトコルを使用し、ホストコンピューティングシステムを経由した通信を介して、サーバとのセキュアハンドシェイクを実施することができる。NVMデバイスはさらに、ホストコンピューティングシステムを介してサーバから、セキュアプロトコルパケット内でデータを受け取ることができる。NVMデバイスはさらに、セキュアプロトコルパケットから取り出された少なくとも1つのセキュアプロトコルメタデータを使用して、データを認証することができる。NVMデバイスは、(暗号化されているならば)セッション鍵を使用し、データを復号して平文データを生成し、この平文データをNVMデバイスのNVM記憶素子に格納することもできる。
【0011】
実施形態において、ホストコンピューティングシステムは、(暗号化されているならば)データを復号することはできず、例えばその理由は、セキュアプロトコルセッションがサーバとNVMデバイスとの間で直接開始されたため、ホストコンピューティングシステムは適切なセッション鍵(例えば復号鍵)を有していないからである。ホストコンピューティングシステムはデータを認証することもできず、その理由は、ホストコンピューティングシステムは、セキュアプロトコルパケットのセキュアプロトコルメタデータへのアクセス権を有しておらず、NVMデバイスとサーバとの間で認証のために使用されている暗号スイートを知らないからである。
【0012】
別の実施形態において、システムはNVMデバイスを含み、このNVMデバイスは、ホストコンピューティングシステムを介してサーバとの接続を試み、ホストコンピューティングシステムは、サーバおよびNVMデバイスとネットワーク通信を行う。実施形態において、ホストコンピューティングシステムは、サーバからNVMデバイスへ、このNVMデバイスとのセキュア通信の開始要求を有する平文データを含む通信パケットを伝送することができる。ホストコンピューティングシステムはさらに、NVMデバイスとサーバとの間のセキュアハンドシェイクの実施を促進することができ、このセキュアハンドシェイクは、セキュアプロトコルを使用してセキュア通信を開始し、このセキュア通信においてNVMデバイスは、ホストコンピューティングシステムにはアクセス不可能な第1のセッション鍵を生成する。ホストコンピューティングシステムはさらにサーバから、セキュアプロトコルパケットを含む伝送制御プロトコル(TCP)パケットを受け取ることができる。セキュアプロトコルパケットは、サーバが第2のセッション鍵(例えばサーバにより生成された一対のセッション鍵のうちの暗号化鍵)を用いて暗号化した暗号化データを含む。ホストコンピューティングシステムはさらに、TCPパケットのTCPヘッダを取り除いて、セキュアプロトコルパケットを露出させることができる。ホストコンピューティングシステムはさらに、シリアルペリフェラルインタフェース(SPI)暗号書き込み命令とセキュアプロトコルオペレーション識別子とを、セキュアプロトコルパケットに追加することによって、SPIパケットを生成することができる。次いでホストコンピューティングシステムは、SPIパケットをNVMデバイスへ伝送することができる。
【0013】
このようにして、(サーバなどの)ソースとNVMデバイスとの間でセキュア通信セッションを確立し使用することによって、非セキュアホストコンピューティングシステムを上回る多数の利点を提供することができる。それらの利点には、ダウンロードまたはアップロードのソースを認証するケイパビリティ、ダウンロードまたはアップロードされたデータの機密性を保証するケイパビリティ、さらにはダウンロードおよびアップロードされたデータの完全性および真正を保証するケイパビリティが含まれる。
【0014】
実施形態において、(サーバなどの)ソースとNVMデバイスとの間でセキュア通信セッションを確立し使用することによって、たとえセキュアホストコンピューティングシステムを使用したとしてもそれを上回る多数の利点を提供することができる。それらの利点には、攻撃の可能な層としてホストコンピューティングシステムを取り除くことで、セキュアコネクションの攻撃面が小さくなる、ということが含まれる。より具体的には、暗号文データとしてNVMデバイスへ伝達される平文データは、通信経路沿いのいかなるポイントでも復号されず、あとでさらに詳しく説明するように、NVMデバイスのセキュア暗号バッファにいったん到達してそこにバッファリングされたときだけしか復号されない。しかも、ホストコンピューティングシステムの非セキュアユーザアプリケーションと共存するセキュアソリューションを実装することは、重要なことである。サーバとNVMメモリとの間の直接的なセキュアプロトコルコネクションによって、かかる非セキュアユーザアプリケーションのためにセキュアソリューションを実装する要求が単純化される(場合によっては省かれる)。
【0015】
図1Aは、さまざまな実施形態による、外部不揮発性メモリ(NVM)デバイスを含むモノのインターネット(IoT)ノード101のシステム100のブロック図である。IoTノード101は、いくつかの文脈ではエッジデバイスとも呼ばれる。システム100は、ネットワーク115と(またはネットワーク115を介して)接続されており、このネットワークはクラウドとも呼ばれ、一般にはインターネットを介した1つまたは複数のバックボーンコネクションであると解することができる。システム100はさらにサーバ105を含むことができ、ファームウェアアップデートを受け取る目的で、センサデータまたは他のインテリジェンスを提供する目的で、またはこれらと同様の目的で、このサーバ105にネットワーク115を介してIoTノード101を接続することができる。サーバ105は一般に、伝送制御プロトコル(TCP)/インターネットプロトコル(IP)を介して、例えばTCP/IPを介して、通信すると解される。
【0016】
さまざまな実施形態において、IoTノード101をマルチチップモジュールまたは半導体パッケージとして例示することができ、これは不揮発性メモリ(NVM)デバイス110に結合されたホストコンピューティングシステム102を含む。NVMデバイス110を、フラッシュデバイス、ソリッドステート記憶デバイス、強誘電体RAM(FRAM)、磁気抵抗RAM(MRAM)、または他の不揮発性メモリデバイスとすることができる。
【0017】
実施形態において、ホストコンピューティングシステム102は、他のコンポーネントもある中で特に、プロセッサ104、メモリコントローラユニット106(例えばマスタMCU)およびブリッジドライバ108を含む。あとでさらに詳しく説明するように、ホストコンピューティングシステム102は、例えばシリアルペリフェラルインタフェース(SPI)バス、インターインテグレーテッドサーキット(I2C)バス、または他のタイプのバス伝送プロトコルなどのようなバス117を介して、NVMデバイス110に結合することができる。あとでさらに詳しく説明するように、サーバ105とNVMデバイス110との間の通信を促進するために、伝送制御パケット(TCP)をSPIパケットに変換し、またこの逆を行うように、ブリッジドライバ108を整合することができる。
【0018】
実施形態において、NVMデバイス110は、通信インタフェース130、マイクロコントローラ118(例えばNVMデバイス110の処理デバイス)、NVM記憶素子120(これをNVM記憶セルの記憶アレイとして構成することができる)、スレーブメモリコントローラ(SMC)122、スタティックランダムアクセスメモリ(SRAM)126、および暗号(「クリプト」)アクセラレータ140を含む。通信インタフェース130は、読み込み/書き込みポート136を含むことができる。SMC122は、SMCバッファ124と、例えばSPIベースの命令を復号するSPI命令デコーダ125とを含むことができる。さらにSRAM126は暗号バッファ128を含むことができ、このバッファ128は、暗号化オペレーションを含むSPIパケットをバッファリングすることができる。実施形態において、SMC122は、ホストコンピューティングシステム102のMCU106から、読み込みオペレーションおよび書き込みオペレーションを受け取り、SRAM126およびNVM120を参照して、読み込み命令および書き込み命令の完了を指示する。
【0019】
図1Bは、1つの実施形態による、付加的なサブコンポーネントを示す図1Aのシステム100のブロック図である。付加的な実施形態において、ホストコンピューティングシステム102は、例えばMCU106の一部とすることができるSPIマスタ152を含む。しかもNVMデバイス110のSMC122はさらに、SPIマスタ152とのやりとりにおいて、SPIパケットを用いバス117を介して通信するためのSPIスレーブ154を含む。表1には、SPIスレーブ154との通信のためにSPIマスタ152により使用可能な例示的なアプリケーションプログラミングインタフェース(API)のセットが示されており、ここで「SPI」は、シリアルペリフェラルインタフェースのことを表し、「TCP」は、例えばTCP/IPのTCPを参照する伝送制御プロトコルのことを表す。
【0020】
【表1】
【0021】
実施形態において、マイクロコントローラ118は、アドバンストハイパフォーマンスバスライト(Advanced High-Performance Bus (AHB)-Lite)といったシステムオンチップ(SoC)バスアーキテクチャを介して、通信を行う。したがって1つの実施形態において、マイクロコントローラ118はAHB-Liteマスタ148を含む。AHB-Liteプロトコルは、アドバンストマイクロコントローラバスアーキテクチャ(Advanced Microcontroller Bus Architecture(AMBA))のオープン標準であり、これはSoC設計の機能ブロックの接続および管理のために、オンチップ相互接続仕様を提供する。本明細書ではAHB-Liteを引き合いに出すけれども、他のマイクロコントローラバスアーキテクチャも考えられる。
【0022】
相応の実施形態において、SMC122および暗号アクセラレータ140は各々、AHB-Liteスレーブ156Aおよび156Bをそれぞれ含み、AHB-Liteマスタ148がこれらと通信可能である。マイクロコントローラ118は、暗号アクセラレータ140と連携して動作可能であり、これによりサーバ105とのセキュア通信セッションを開始できるようにする暗号化オペレーションを実施して、あとでさらに詳しく述べるように、データ伝送中、暗号化データをサーバ105と交換する。1つの実施形態において、暗号アクセラレータ140は、mxcryptoによりプログラミングされたフィールドプログラマブルゲートアレイ(FPGA)デバイスであり、mxcryptoは、暗号化、認証、鍵交換、セキュアソケットオペレーション、トランスポート層セキュリティオペレーション、および他のタイプの暗号化オペレーションのためのPython拡張を含む拡張ツールキットである。他のタイプの暗号化ツールキットも考えられる。
【0023】
1つの実施形態において、表2には、SMC122のAHB-Liteスレーブ156Aと通信するために、マイクロコントローラ118のAHBマスタ148により使用される例示的なAPIが示されている。1つの実施形態において、表3には、暗号アクセラレータ140のAHB-Liteスレーブ156Bと通信するために、マイクロコントローラ118のAHBマスタ148により使用される例示的なAPIが示されている。
【0024】
【表2】
【0025】
【表3】
【0026】
図2Aは、1つの実施形態によるリモートコネクションとIoTノード101内部のSPIバス117とを示す、図1Aのシステム100のブロック図である。実施形態において、サーバ105は、クラウド例えばネットワーク115への一対のリモートコネクションを介して、IoTノード101に通信可能に結合されている。IoTノード101は、SPIバス117により結合されたホストコンピューティングシステム102およびNVMデバイス110を含むことができる。
【0027】
図2Bは、1つの実施形態による、図2Aに示したハードウェアに対応する単純化されたデータフロー図200である。実施形態において、データフロー図200は、サーバ105に格納された平文データと共にスタートするデータフローを示している。サーバ105は、TLS(または他のセキュアインターネットプロトコルまたは関係する暗号化アルゴリズム)により平文データを暗号化して、暗号文データを生成することができる(210)。サーバ105は、TLSパケット内の暗号文データをパッケージングして、TCP/IPパケット内でTLSパケットを送信することもできる(220)。
【0028】
実施形態において、IoTノード101(例えばホストコンピューティングシステム102)は、TCP/IPパケットを受け取る(225)。次いでホストコンピューティングシステム102のブリッジドライバ108は、暗号文データを複数の暗号化データ部分に分割して、各暗号化データ部分から1つのSPIパケットを生成することができる(230)。実施形態において、SPIバス117は、SPIパケットをNVMデバイス110に渡す(240)。各SPIパケットは、暗号化部分を有するTLSパケットを含むことができる(240)。次いでNVMデバイス110は、例えば暗号アクセラレータ140を使用するなどして、暗号化部分を復号し、再び平文データを生成することができる(250)。復号と同時に、または復号と共に、NVMデバイス110はさらに、データが復号されたとき、NVM120へプログラミングされる前に、一度に1行(または1列)ごとにデータを認証することができる。単純化されたこのデータフロー図200の各ステップについては、例示的な実施態様と共に図4を参照しながらさらに詳しく説明する。
【0029】
図3は、1つの実施形態による、セキュア通信セッションを開始し、サーバとセキュアNVMデバイスとの間で暗号化データを交換する方法300のフローチャートである。方法300を処理ロジックによって実施することができ、この処理ロジックは、ハードウェア(例えば回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(処理デバイス上で実行される命令など)、ファームウェア、またはこれらの組み合わせを有することができる。1つの実施形態において、方法300は、NVMデバイス110のさまざまなコンポーネントにより実施される。
【0030】
図3を参照すると、処理ロジックがホストコンピューティングシステム102を介してサーバ105とのコネクションを開始することから、方法300をスタートさせることができる(310)。この試みに応答して方法300をさらに続けることができ、ここで処理ロジックは、サーバに通信可能に結合されたホストコンピューティングシステム102を介して、サーバ105から通信パケットを受け取る(320)。この通信パケットは、セキュア通信の開始要求を含むことができる。方法300をさらに続けることができ、ここで処理ロジックは、セッション鍵(例えば一対のセッション鍵のうちの復号鍵)を生成するセキュアプロトコルを使用し、ホストコンピューティングシステム102を経由した通信を介して、サーバ105とのセキュアハンドシェイクを実施する(330)。実施形態において、このセキュアハンドシェイクは、(SMC122の)SPIスレーブ154と(ホストコンピューティングシステム102の)SPIマスタ152との間におけるSPIパケット内でのデータ伝送を介して実施される。
【0031】
引き続き図3を参照すると、方法300をさらに続けることができ、ここで処理ロジックは、ホストコンピューティングシステム102を介してサーバ105からセキュアプロトコルパケット内で、暗号化データを受け取る(340)。ホストコンピューティングシステム102は、この暗号化データを復号することができない。方法300をさらに続けることができ、ここで処理ロジックは、セッション鍵を使用し、暗号化データを復号して平文データを生成する(350)。方法300をさらに続けることができ、ここで処理ロジックは、平文データをNVMデバイスのNVM記憶素子に格納する(360)。方法300をさらに続けることができ、ここで処理ロジックは、ホストコンピューティングシステム102に対し、NVM記憶素子に格納されている平文データへのアクセスを提供する(370)。
【0032】
図4Aは、1つの実施形態による、図1A図1Bのシステム100の主要コンポーネントのソフトウェアおよびファームウェア(SW/FW)400のブロック図である。SW/FW400は例えば、アプリケーション405(ファームウェアアップデートプロデューサなど)、SSLスタックまたはTLSスタック410、およびTCP/IPスタック415を含むことができ、これらすべてをサーバ105上で実行することができる。SW/FW400はさらに、ホストコンピューティングシステム102上で実行されるTCP/IPスタック420およびSPIドライバ425を含むことができる。SPIドライバ425を、ホストコンピューティングシステム102のブリッジドライバ108と同じものとすることができ、またはその中に統合することができる。SW/FW400はさらに、NVMデバイス110上で実行されるSMCファームウェア430、SSL/TLSスタック435およびアプリケーション440(例えばファームウェアアップデートコンシューマ)を含むことができる。
【0033】
図4Bは、図1A図1Bの上述の主要システムコンポーネントのハードウェアのブロック図であり、1つの実施形態による、ホストコンピューティングシステム102を媒介として使用して、サーバ105とNVMデバイス110との間のセキュアプロトコル通信を行うための方法450を示している。1つの実施形態において、ホストコンピューティングシステムは、Zynq-7000 FPGAであり、NVMデバイスはKintex-7 FPGAである。
【0034】
方法450を、以下のことからスタートさせることができる。すなわちサーバ105は、例えばSSL/TLSセッション内において、暗号化アルゴリズム453を使用し(例えばデータの認証も行うGalois/Counter Mode(GCM)でAdvanced Encryption Standard(AES)を用い)、書き込み初期化ベクトル(IV)および暗号化鍵を入力として取り込んで、平文データ451を暗号文データ454(暗号化データとも呼ばれる)に暗号化する。暗号化鍵を、あとでさらに詳しく説明するように、NVMデバイス110とのハンドシェイクプロセス中に生成されるセッション鍵のうちの1つとすることができる。方法450をさらに続けることができ、ここでサーバ105は暗号文データ454を、TCPヘッダを有するTCPパケット455内にカプセル化する。暗号文データ454のカプセル化は、TLS(または他のセキュアプロトコル)ヘッダを含み、これらを合わせてセキュアプロトコルパケット456と呼ぶことができる。TLSヘッダは、TLSベースの(または他のセキュアプロトコルの)特定のメタデータを含むことができ、これは伝送に使用され、TLSベースの通信セッションに固有のものである。
【0035】
方法450をさらに続けることができ、ここでサーバ105は、TCPパケット455をホストコンピューティングシステム102へ送信する(457)。したがってホストコンピューティングシステム102はサーバ105から、セキュアプロトコルパケット456を含むTCPパケット455を受け取ることができる。既述のように、セキュアプロトコルパケット456は、暗号文データ454(例えば暗号化データ)とTLSヘッダとを含むことができる。ホストコンピューティングシステム102はさらに、TCPパケット455のTCPヘッダを取り除いて、セキュアプロトコルパケット456を露出させることができる。方法450をさらに続けることができ、ここでホストコンピューティングシステム102は、シリアルペリフェラルインタフェース(SPI)暗号書き込み命令(CMD ID)と、セキュアプロトコルオペレーション識別子(例えばTLS OP)とを、セキュアプロトコルパケットに追加することによって、SPIパケット461を生成し、このSPIパケット461をNVMデバイス110へ送信する(465)。暗号読み出し命令を同様に送信することができる一方、そのような場合にはこの暗号読み出し命令には暗号文データは添えられない。
【0036】
方法450をさらに続けることができ、ここでNVMデバイス110は、SPIパケット461をホストコンピューティングシステム102から受け取る。方法450をさらに続けることができ、ここでNVMデバイスは、他にもある中で特に、あとで図5を参照しながら詳しく述べるように、入力として書き込み初期化ベクトルと複合鍵とを用い、復号アルゴリズム(例えば既述のAES GCMアルゴリズム)を使用して、暗号文データ454を復号する(469)。復号鍵を、サーバ105とNVMデバイス110との間のセキュアハンドシェイク中に生成されたセッション鍵とすることができる。復号によって、元々はサーバ105により暗号化された平文データ451を生成することができる。
【0037】
このようにしてホストコンピューティングシステム102は、TCPパケット455をSPIパケット461に変換し、その際にこの変換をそれらのヘッダの特定の部分の入れ換えおよび/または除去により行い、次いでSPIパケット461を、SPIバス117を介してNVMデバイス110へ送信することができ、NVMデバイス110により読み出すことができる。このようにすることで、ホストコンピューティングシステム102は暗号文データ454を読み出さないが、これをNVMデバイス110に回す。たとえ攻撃者がホストコンピューティングシステム102のところで暗号文データ454のアクセスを試みたとしても、復号鍵なしではこのデータは意味をなさないであろう。しかしながら復号鍵はホストコンピューティングシステム102には格納されておらず、NVMデバイス110のSRAM126の暗号バッファ128に格納されているかぎりは、ホストコンピューティングシステム102にはアクセス不可能である。これによりホストコンピューティングシステムにおける攻撃面がなくなり、サーバ105とNVMデバイス110との間のダイレクトなセキュア通信が大いに強化される。
【0038】
図5は、1つの実施形態による、サーバ105により開始されたNVMデバイス110における保護された書き込み命令の実行のために、(IoTデバイス101の)ホストコンピューティングシステム102とNVMデバイス110とにより実施されるステップを示すブロック図である。図4Bを参照しながら述べたように、ホストコンピューティングシステム102は、命令識別子(CMD ID)により識別される暗号書き込み命令と、セキュアプロトコルオペレーション識別子(例えばTLS OP)とを、セキュアプロトコルパケット456に追加することによって、SPIパケット461を生成することができる(図4B)。
【0039】
さまざまな実施形態において、NVMデバイス110のSMC122におけるSPI命令デコーダ125は、SPIパケット内の暗号書き込み命令(CMD ID)を検出することができる。CMD ID(別のケースでは暗号読み出し命令となる場合もある)により識別された暗号化メモリオペレーションの検出に応答して、SMC122は、SPIパケット(CMD IDを除く)を暗号バッファ128にバッファリングすることができる。次いでマイクロコントローラ118はSPIパケットを構文解析して、暗号化データ(例えば暗号文データ)を取り出し、さらにTLSヘッダからセキュアプロトコルオペレーション識別子(TLS OP)およびセキュアプロトコル(またはSPI)メタデータを取り出すことができる。マイクロコントローラ118は、SPIパケットの一部分を暗号バッファからSRAMへ転送することができる。この時点で、マイクロコントローラ118は、セキュアプロトコル(例えばこの実施例ではTLS)の実行を指示して、セキュア書き込みオペレーションを完了することができる。セキュアプロトコルの実行は、セキュアプロトコルメタデータの照合を含めるために、セキュアプロトコルに従い、SRAMからSPIパケットの一部分を取り出して処理することを含むことができる。
【0040】
より具体的には、マイクロコントローラ118は暗号アクセラレータ140に対し、暗号文データを復号し、元々はサーバ105が暗号化したセキュアプロトコルパケット内の平文データ451(図4B)を生成するよう、指示することができる。セキュアプロトコルパケット内のデータは、(例えばソリッドステート記憶デバイスへの書き込みのための)プログラム消去(P/E)命令、または他の特定のタイプの書き込み命令、(例えばNVM120のユーザアレイ内の)ターゲットアドレス、ターゲットデータの長さ、およびターゲットデータ自体を含むことができる(すべて図示されている)。プログラム消去命令またはP/E命令は、NVM記憶素子のユーザアレイ全体の消去を指示することができ(例えばNVM120がEEPROMである場合)、あるいはNVM記憶素子のブロックを選択することができる(例えばNVM120がフラッシュメモリである場合)。いくつかの実施形態において、P/E命令を受け取らず、したがって消去命令は暗黙的であり、NVM120に書き込まれるべきデータを収容するよう、NVM120の十分な部分が消去される。次いでマイクロコントローラ118は、復号されたSPIパケットからターゲットアドレスおよび長さの情報を用いて、ターゲットデータによりユーザアレイまたはユーザアレイの一部分(例えばターゲットアドレスのところにあるNVM記憶素子)をプログラミングすることができる。これがセキュア読み出し命令であったならば、ターゲットデータは存在せず、マイクロコントローラは、特定の長さのデータのターゲットアドレスのところでセキュア読み出しを実施することになる。
【0041】
図6は、1つの実施形態による、サーバとセキュアNVMデバイスとの間でセキュア通信を確立する目的でセキュアプロトコル通信セッションを確立する方法600のフローチャートである。方法600を処理ロジックによって実施することができ、この処理ロジックは、ハードウェア(例えば回路、専用ロジック、プログラマブルロジック、マイクロコードなど)、ソフトウェア(処理デバイス上で実行される命令など)、ファームウェア、またはこれらの組み合わせを含むことができる。1つの実施形態において、方法600は、サーバ105と通信を行うNVMデバイス110のさまざまなコンポーネントにより実施される。
【0042】
図6を参照すると、処理ロジックがNVMデバイス110とサーバ105との間のTCPコネクションを確立することから、方法600をスタートさせることができる(610)。方法600をさらに続けることができ、ここで処理ロジックは、NVMデバイス110がサーバと通信する他の理由が存在する可能性があるけれども、サーバ105からのファームウェアアップデートをチェックする(620)。方法600をさらに続けることができ、ここで処理ロジックは、HTMLコードを用いてSSLセッションまたはTLSセッションを開始するために生じるような、セキュアプロトコルハンドシェイクを実施する(630)。セキュアハンドシェイクは、一連の暗号化オペレーションの先駆けとなる一連の順次連続したオペレーションを含むことができ、これにより1つまたは複数のセッション鍵(例えばNVMデバイスのために少なくとも1つのセッション鍵、さらにサーバのために同じセッション鍵)が生成される。方法600をさらに続けることができ、ここで処理ロジックは、サーバ105とのセキュアデータ伝送(または交換)を実施する(670)。方法600をさらに続けることができ、ここで処理ロジックはTCPコネクションを終了させる(695)。
【0043】
図6Aは、1つの実施形態による、例えば無線を介したファームウェアのアップデート(FOTA)のための、サーバと、クライアントデバイスとも呼ばれるNVMデバイスとの間の、セキュアプロトコルハンドシェイク630のフローチャートである。セキュアプロトコルハンドシェイク630を、複数のフェーズで実施することができ、これにはセキュアプロトコル通信セッションの初期化を実行するための種々の暗号化プロトコルトランザクションおよび/またはセキュアプロトコルトランザクションが含まれる。これらのトランザクションは、プロトコルおよびこのプロトコルの使用されているバージョンに応じて変わる可能性がある。したがって一般的なフレームワークについて述べ、通信メカニズムについて説明する。説明にあたり、表1~表3中に掲載したAPIをもう一度参照し、さらにその他の可能なAPIを提唱し、また、図1Bを参照しながら説明した一般的な通信フローを引き合いに出す。
【0044】
さまざまな実施形態において、フェーズ1は、アップデートが必要であるというサーバ105からの返答に応答することで先に進み、このフェーズには"hello"メッセージをサーバ105へ送信することが含まれる(632)。このclient helloメッセージは、NVMデバイスがどの機能をサポート可能であるのかを、例えば暗号スイートのリストを、サーバに通知するためのものである。暗号スイートは、認証および暗号化/復号に使用可能な暗号プリミティブの組み合わせである。フェーズ1には、マイクロコントローラ118がtls_create_packet("client hello")を生成し、これがSMC122へ送信される、ということを盛り込むことができる。次いでSMC122は、spi_read(“client hello”)メッセージを生成することができ、これはホストコンピューティングシステム102へ送信される。次いでホストコンピューティングシステム102は、spi_read(“client hello”)メッセージをtcp_write(“client hello”)メッセージに変換することができ、これはサーバ105へ送信される。
【0045】
さまざまな実施形態において、フェーズ2は、サーバ105がNVMデバイス110に対し"hello"で応答する処理を進め、サーバ鍵交換および証明書署名照合を実施することができる(634)。このserver helloは、NVMデバイス110から受け取った可能な暗号スイートのリストの中からの1つの選択を含むことができ、この選択がクライアントに伝達される。さらに証明書署名照合のために、サーバ105はその証明書をtcp_write(“certificate”)メッセージ内で、ホストコンピューティングシステム102へ送信することができる。ホストコンピューティングシステム102は、tcp_to_spi()変換を実施してspi_write(“certificate”)を生成することができ、これはSMC122へ送信される。SMC122はsmc_to_sram(“certificate”)を生成することができ、これはマイクロコントローラ118例えば処理デバイスへ送信される。マイクロコントローラ118は、smc_to_sram(“certificate”)をtls_process(“certificate”)メッセージに変換することができ、これによって暗号アクセラレータ140に対し、mxcrypto_verify_signature(“certificate”)がトリガされる。
【0046】
実施形態において、(いま述べたことと)同様の一連のステップを実施して、サーバ鍵交換を実行することができ、これは交換の最後に暗号アクセラレータ140のアクセスがあろうがなかろうが、サーバによって開始される。サーバの鍵交換によって、NVMデバイスとサーバが1つの共通のセッション鍵セットを使用するように、例えばサーバのために少なくとも1つの暗号化鍵および復号鍵を使用し、さらにNVMデバイス110のために暗号化鍵と復号鍵のもう1つのセットを使用するように、セッション鍵の交換を可能にすることができる。同様の一連のステップによって書き込み証明書要求を実施することができ、それらのステップにおいてサーバは、"certificate request"メッセージにおいてNVMデバイスからクライアントの証明書を要求する。フェーズ2を完了するために、サーバ105はtcp_write(“server hello done”)メッセージを送信することができ、これはマイクロコントローラ118に報告されるに至るまで、送信および変換される。server hello doneメッセージによって、先に進むためにサーバがさらに多くの情報を必要としている、ということを表すことができる。
【0047】
さまざまな実施形態において、フェーズ3は、証明書パケットの生成、クライアント鍵の交換、サーバとNVMデバイスとの間で共有される楕円曲線点の処理を進め、暗号化署名(例えばmxcrypto_sign)がハンドシェイクメッセージに適用され、さらに暗号化アルゴリズム(例えばmxcrypto_sha256)がハンドシェイクメッセージに適用される(638)。実施形態において、マイクロコントローラ118によりクライアント鍵交換が開始され、これはサーバにおいて、例えばspi_read(“certificate”)からホストコンピューティングシステム102でのtcp_write(“certificate”)へのクライアント証明書の変換によって完了する。次いでマイクロコントローラ118は、暗号アクセラレータ140によってmxcrypto_sign(“handshake messages”)を開始して、セキュアプロトコル署名をハンドシェイクメッセージに適用することができる。
【0048】
次いでマイクロコントローラ118は、証明書照合プロセスを開始することができ、これはSRAMを通ってSMCへ、ホストコンピューティングシステムへ、さらにはサーバへと進む。証明書照合は、"certificate verify"メッセージを介した先行のメッセージの署名を含むことができる。マイクロコントローラ118はさらに、暗号仕様("spec")変更プロセスを開始することができ、これは同じ一連のコンポーネントを介し、SPIパケットとTCPパケットとの間の同じ変換を伴って、サーバ105へ送信される。このクライアント"change cipher spec"メッセージは、NVMデバイスはサーバが選択した暗号スイートを使用する準備が整っている、ということをサーバに伝えるためのものである。マイクロコントローラ118はさらに、暗号アクセラレータ140によって暗号化アルゴリズム(例えばmxcrypto_sha256(“handshake messages”))の適用を開始して、TLSメッセージをセッション鍵の暗号化鍵によって暗号化することができる。
【0049】
さまざまな実施形態において、フェーズ4は、サーバ105がtcp_write(“change cipher spec”)をホストコンピューティングシステム102へ送信する処理を進め、このtcp_write(“change cipher spec”)は、tcp_to_spi()APIを介してspi_write(“change cipher spec”)に変換されて、SMC122へ送信される。サーバのこの"change cipher spec"メッセージによって、サーバはNVMクライアントデバイスに対し、サーバは選択された暗号スイートを使用する準備が整っている、ということを確認通知することができる。NVMデバイスにおいて、SMCは、暗号仕様変更のための命令を、マイクロコントローラ118を介してSRAMへ送信することができる。次いでサーバ105は、"finished"メッセージを開始することができ、これはホストコンピューティングシステム102およびSMCを介して、NVMデバイスのマイクロコントローラ118へ送信される。この"finished"メッセージまたは命令を、進行中の通信がこの先、NVMデバイスにおいて使用可能な暗号スイートからサーバが選択した暗号スイートによって保護されることになる、ということをNVMデバイスに通知するためのものとすることができる。これによってセキュアプロトコルハンドシェイクが完了する。これらは、かかるセキュアプロトコルハンドシェイクに対するいくつかの考えられるステップであって、セキュアプロトコルハンドシェイクの当業者であれば自明のとおり、さらに追加のステップを実施してもよいし、またはこれよりも数を減らしたステップを実施してもよい。
【0050】
図6Bは、1つの実施形態による、例えばFOTAのための、サーバ105とNVMデバイス110との間のセキュアデータ伝送670のフローチャートである。サーバ105がtcp_write(“start firmware update”)メッセージをホストコンピューティングシステム102へ送信することから、セキュアデータ伝送670をスタートさせることができる(672)。ホストコンピューティングシステム102はtcp_to_spi()APIを使用して、この命令をspi_write(“start firmware update”)メッセージに変換することができ、これはSMC122へ送信される。SMC122は、このメッセージをマイクロコントローラ118へ送信することができる。次いでマイクロコントローラ118は、このメッセージの(例えばTLSヘッダ内の)TLSメタデータが有効であるか否かを判定することができる(674)。有効でなければ、マイクロコントローラ118はいかなるセキュアデータ伝送も中止することができ、メモリの読み出し命令または書き込み命令のリスニングに戻る。TLSメタデータが有効であるならば、サーバ105はNVMデバイス110から確認通知を受け取り、列ごとにNVM120に書き込みをスタートさせることができる。
【0051】
より具体的には、ホストコンピューティングデバイス102は、tcp_write(“row 1”)命令をSPI命令に変換し、これはSMC122によってマイクロコントローラ118へ送信される(676)。次いでマイクロコントローラ118は、暗号アクセラレータ140をトリガして、列1の(例えば構文解析されたデータの)暗号文データを復号し(678)、復号されたデータから生成されたハッシュベースのメッセージ認証コード(HMAC)を照合することができる(680)。HMACの照合は、照合の1つの実施態様であり、他の暗号スイートコードにより採用されているような他の照合も考えられる。HMAC(または他の暗号スイートコード)が照合されなかったならば、マイクロコントローラ118は、(前述のようにTLSメタデータが照合されなかったことに対する応答の場合と同様に)データ伝送プロセスを中止することができる。マイクロコントローラ118が暗号アクセラレータ140から照合の確認通知を受け取ったならば、マイクロコントローラ118は、ファームウェアアップデートのデータの列(例えば列1)を、構文解析されたSPIパケットにおけるターゲットアドレスに書き込むことができる(682)。マイクロコントローラ118はさらに、SMC122およびホストコンピューティングシステム102を介して、データの列(例えば列1)の書き込みに成功した、ということをサーバ105に報告することができる(684)。次いでサーバ105は、データのさらなる列がファームウェアアップデート内に存在しているか否か、を判定することができる(688)。存在しているのであれば、サーバ105は次のセキュア書き込み命令を生成することができ、この命令は(本明細書で述べたように)再びSPIパケットに変換され、これはSMC122へ送信され、場合によってはマイクロコントローラ118へ送信されて、さらなる列があるたびにブロック676~684が繰り返される。このようにして、サーバ105は、NVMデバイス110へのファームウェアアップデートの連続的な書き込みを制御する役割を続け、データの列が各々復号され、別の列が書き込まれる前に認証される。
【0052】
もはや列が存在しなければ、サーバ105は、ファームウェアアップデートを終了させるステップに進むことができる(690)。例えばサーバ105は、tcp_write(“finish firmware update”)命令を送信することができ、この命令がマイクロコントローラ118まで進むと、この命令によりマイクロコントローラ118は暗号アクセラレータ140をトリガして、新たなイメージのダイジェストハッシュ、例えばmxcrypto_sha256(“new image”)を生成させる。このハッシュ結果をマイクロコントローラ118へ送信して戻すことができ、さらにはSMC122およびホストコンピューティングデバイス102を介してサーバへ、送信して戻すことができる。サーバ105は、ハッシュ結果をファームウェアアップデートのイメージの予め格納されたハッシュと比較することができ、これによりファームウェアアップデートのインストールに成功したことを確認することができる。その後、NVMデバイス110によるファームウェアアップデートを促進したホストコンピューティングデバイス102とのTCPコネクションを、終了させることができる(図6のブロック695)。
【0053】
本明細書で述べた方法は、主としてNVMデバイス110におけるファームウェアアップデートの実施に関して説明されるけれども、サーバ105(または他のリモートコンピューティングデバイス)は、付加的な機能を盛り込むことのできる他の理由で、NVMデバイス110とセキュアに通信することもできる。例えば、セキュアハンドシェイクが実施された後、サーバ105がアクセス制御命令を送信できるようにしてもよく、そのためにサーバ105に対し、サーバ105があたかもホストコンピューティングシステム102であるかのように権限が付与される。このアクセス制御命令は例えば、NVM120の一部分をロックまたはロック解除する能力、NVM120の一部分またはNVM120に格納された特定のプログラムまたはファームウェアに対する読み出し制御、実行制御および/または書き込み制御の種々の形態を設定する能力を含むことができる。
【0054】
さらにサーバ105は、NVMデバイス110における診断プログラムをリモートで開始させることができ、またはNVMデバイス110により生成された診断情報を少なくともリモートでセキュアに取り出すことができる。かかる診断データへのアクセスによってサーバ105は、NVMデバイス110が不正にアクセスされたことが、ハードウェアおよび/またはソフトウェアの機能の何らかの見地により表されているか否かを、迅速に突き止めることができるようになり、したがってサーバ105とNVMデバイス110との間に確立されたセキュアネットワークの切断を保証することができる。セキュアネットワークセッションが切断されたならば、図6図6Aおよび図6Bの方法がリスタートさせられて、新たなセキュアセッションが確立される。セキュアネットワークセッションを切断せざるを得ない事態を引き起こしたハードウェアまたはソフトウェアのどのような問題であれ、セキュアデータ伝送(図6B)における機密データの交換前には解決済みである、ということをチェックするために、この方法をアップデートすることができる。
【0055】
図7には、本明細書で述べた方法論のうちのいずれか1つまたは複数を機械に実施させるための命令セットを内部で実行させることのできるコンピューティングシステム700の例示的な形態として、1つの機械の図式表現が示されている。代替実施態様において、LAN、イントラネット、エクストラネットまたはインターネットを介して、この機械を他の機械と接続(例えばネットワーク化)することができる。この機械は、クライアントサーバネットワーク環境におけるサーバまたはクライアントデバイスという役割形態で、またはピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、動作することができる。この機械を、ホストコンピューティングシステムまたはコンピュータ、自動車コンピューティングデバイス、コントローラエリアネットワーク(CAN)またはローカル相互接続ネットワーク(LIN)などの自動車ネットワークのためのサーバ、ネットワークデバイスとすることができ、あるいはこの機械がとるべきアクションを指定する命令セットを(シーケンシャルにまたは他の形態で)実行可能な任意の機械とすることができる。さらに、ただ1つの機械だけしか示されていないけれども、用語「機械」を、本明細書で述べた方法論のうちのいずれか1つまたは複数を実施するための1つの命令セット(または複数の命令セット)を、個別にまたは共働して実行する複数の機械から成る任意の集合体を含むものであるとも解されたい。変換のページおよびセクションの実施態様を、コンピューティングシステム700において実装することができる。
【0056】
コンピューティングシステム700は、処理デバイス702、メインメモリ704(例えばリードオンリーメモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)(シンクロナスDRAM(SDRAM)またはDRAM(RDRAM)など)、スタティックメモリ706(例えばフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびデータ記憶デバイス718を含み、これらはバス730を介して互いに通信し合う。
【0057】
処理デバイス702は、マイクロプロセッサデバイス、中央処理ユニットまたはこれらに類するものなど、1つまたは複数の汎用の処理デバイスを表す。さらに詳しくは処理デバイスを、複合命令セットコンピューティング(CISC)マイクロプロセッサデバイス、縮小命令セットコンピュータ(RISC)マイクロプロセッサデバイス、超長命令語(VLIW)マイクロプロセッサデバイス、または他の命令セットを実行する処理デバイスまたは命令セットの組み合わせを実行する処理デバイスとすることができる。処理デバイス702を、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディジタル信号処理デバイス(DSP)、ネットワーク処理デバイス、またはこれらに類するものなど、1つまたは複数の専用処理デバイスとすることもできる。1つの実施態様において、処理デバイス702は、1つまたは複数の処理デバイスコアを含むことができる。処理デバイス702は、本明細書で述べたオペレーションを実施するための命令726を実行するように構成されている。1つの実施態様において、処理デバイス702を、サーバ105、ホストコンピューティングシステム102、またはNVMデバイス110の一部とすることができる。
【0058】
別の選択肢として、コンピューティングシステム700は、本明細書で述べたような他のコンポーネントを含むことができる。コンピューティングシステム700はさらに、ネットワーク720に通信可能に結合されたネットワークインタフェースデバイス708を含むことができる。コンピューティングシステム700は、ビデオディスプレイユニット710(例えば液晶ディスプレイ(LCD))、英数字入力デバイス712(例えばキーボード)、カーソル制御デバイス714(例えばマウス)、信号発生デバイス716(例えばスピーカ)、または他の周辺デバイスを含むこともできる。さらにコンピューティングシステム700は、グラフィック処理ユニット722、ビデオ処理ユニット728、およびオーディオ処理ユニット732を含むことができる。別の実施態様において、コンピューティングシステム700はチップセット(図示せず)を含むことができ、これは処理デバイス702と共に動作するように設計された一群の集積回路またはチップのことを指し、処理デバイス702と外部デバイスとの間の通信を制御する。例えばチップセットをマザーボード上のチップセットとすることができ、マザーボードは処理デバイス702を、メインメモリ704およびグラフィックコントローラといった超高速デバイスとつなぎ、同様に処理デバイス702を、USB、PCIバスまたはISAバスといった周辺機器の低速ペリフェラルバスとつなぐ。
【0059】
データ記憶デバイス718はコンピュータ可読記憶媒体724を含むことができ、この記憶媒体724に、本明細書で述べた機能の方法論のうちのいずれか1つまたは複数を具現化する命令726が格納される。これらの命令726をすべてまたは少なくとも部分的に、コンピューティングシステム700によるこれらの実行中、命令726としてメインメモリ704内に、かつ/または処理ロジックとして処理デバイス702内に、常駐させることもできる。つまりこの場合、メインメモリ704および処理デバイス702も、コンピュータ可読記憶媒体を構成する。
【0060】
図1A図1Bを参照して説明したように処理デバイス702を使用する命令726を格納するために、かつ/または上述のアプリケーションをコールする方法を含むソフトウェアライブラリを格納するために、コンピュータ可読記憶媒体724を用いることもできる。コンピュータ可読記憶媒体724は、例示的な実施態様において単一な媒体であるように示されているけれども、用語「コンピュータ可読記憶媒体」を、1つまたは複数の命令セットを格納する単一の媒体または複数の媒体(例えば集中型または分散型のデータベースおよび/または関連づけられたキャッシュおよびサーバ)を含むものであると解されたい。用語「コンピュータ可読記憶媒体」を、機械により実行するための命令セットを格納または符号化または搬送することができ、かつ実施態様の方法論のうちのいずれか1つまたは複数を機械に実施させる任意の媒体を含むものであるとも解されたい。したがって用語「コンピュータ可読記憶媒体」を、以下に限定されるものではないが、ソリッドステートメモリ、ならびに光学媒体および磁気媒体を含むものであると解されたい。
【0061】
上述の記載において、数多くの細部について述べられている。しかしながら本開示の利益に与る当業者には自明のとおり、本開示の実施形態をそれらの具体的な細部がなくても実施することができる。いくつかの事例では、説明が不明瞭になるのを避ける目的で、周知の構造およびデバイスについては、詳細図ではなくブロック図の形態で示されている。
【0062】
本明細書で使用されるモジュールは、ハードウェア、ソフトウェアおよび/またはファームウェアの任意の組み合わせのことを指す。一例としてモジュールは、マイクロコントローラなどのハードウェアを含み、これはマイクロコントローラにより実行されるように整合されたコードを格納するために、非一時的媒体と関連づけられている。したがって1つの実施態様において、あるモジュールへの言及は、非一時的媒体上に保持されるべきコードを認識および/または実行するように特に構成されているハードウェアのことを指す。さらに別の実施態様において、あるモジュールの使用は、予め定められたオペレーションを実施するためにマイクロコントローラにより実行されるように特に整合されているコードを含む、非一時的媒体のことを指す。ここで推察できるように、さらに別の実施態様において、(この例における)モジュールという用語は、マイクロコントローラと非一時的媒体との組み合わせのことを指す場合がある。多くの場合、別個のものとして示されている各モジュールの境界は一般には可変であり、場合によってはオーバラップしている。例えば第1のモジュールおよび第2のモジュールは、場合によってはいくつかの独立したハードウェア、ソフトウェアまたはファームウェアをそのまま残しながら、ハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせを共有することができる。1つの実施態様において、ロジックという用語の使用は、トランジスタ、レジスタといったハードウェア、またはプログラマブルロジックデバイスといった他のハードウェアを含む。
【0063】
「するように構成されている」というフレーズの使用は、1つの実施態様において、指定または決定されたタスクを実行するために、装置、ハードウェア、ロジックまたは素子を配置すること、組み立てること、製造すること、販売に供すること、輸入すること、および/または設計することを指す。この例の場合、装置またはこの装置の素子は、それが指定されたタスクを実施するように設計、結合および/または相互接続されているならば、動作中でなくてもやはり、その指定されたタスクを実施するように「構成されている」。単に例示的な一例として、ロジックゲートは動作中、0または1を供給することができる。ただし、イネーブル信号をクロックに供給するように「構成された」ロジックゲートは、1または0を供給可能な考えられるあらゆるロジックゲートを含まない。その代わりにロジックゲートは、動作中に1または0の出力がクロックをイネーブルにすることができるよう、何らかの手法で結合されたものである。ここで再度留意されたいのは、「するように構成されている」という用語を使用するために動作は要求されないが、その代わりに、装置、ハードウェアおよび/または素子の潜在的な状態に重点が置かれ、この場合、潜在的な状態において装置、ハードウェアおよび/または素子は、装置、ハードウェアおよび/または素子が動作中であるときに、特定のタスクを実施するように設計されている、ということである。
【0064】
さらに、「するための」、「することができる」および/または「するように動作可能である」というフレーズの使用は、1つの実施態様の場合には、何らかの装置、ロジック、ハードウェアおよび/または素子の使用を指定された手法で可能にするように設計された装置、ロジック、ハードウェアおよび/または素子のことを指す。上述のようにここで留意されたいのは、「するための」、「することができる」、または「するために動作可能である」の使用は、1つの実施態様の場合には、装置、ロジック、ハードウェアおよび/または素子の潜在的な状態のことを指し、この場合、装置、ロジック、ハードウェアおよび/または素子は動作していないけれども、装置の使用を指定された手法で可能にするように設計されている、ということである。
【0065】
本明細書で使用される値は、数字、状態、論理状態またはバイナリ論理状態の任意の既知の表現を含む。多くの場合、論理レベル、論理値または論理的な値の使用は、「1」および「0」とも呼ばれ、これは単にバイナリロジック状態を表現する。例えば1はハイ論理レベルのことを指し、0はロー論理レベルのことを指す。1つの実施態様において、トランジスタまたはフラッシュセルといった記憶セルを、単一の論理値または複数の論理値を保持可能なものとすることができる。ただしコンピュータシステムでは、これとは別の値の表現が用いられてきた。例えば10進数の数字10を、2進数の値1010および16進数の文字Aとして表現することもできる。したがってある1つの値は、コンピュータシステムに保持することのできる情報の任意の表現を含む。
【0066】
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットにおけるオペレーションのアルゴリズムおよびシンボル表現で呈示されている。アルゴリズムによるそれらの記述および表現は、データ処理の当業者により、自身の仕事の内容を他の当業者に最も有効に伝えるために用いられる手段である。ある1つのアルゴリズムは本明細書では、そして一般的に、所望の結果をもたらす首尾一貫したステップシーケンスであると考えられている。これらのステップは、物理量の物理的操作を要求するステップである。必須ではないけれどもこれらの量は通常、格納、伝送、組み合わせ、比較、およびその他の操作が可能な電気的または磁気的な信号の形態をとる。これらの信号をビット、値、要素、シンボル、キャラクタ、用語、数字、またはこれらに類するものと呼ぶのが、主として一般的な用法ゆえに、時には便利であることが判明した。
【0067】
ただし、これらのすべておよび同様の用語は、適切な物理量と関連づけられるべきであり、それらの量に適用される便利な標号であるにすぎない、ということに留意されたい。特段の記載がないかぎり、これまでの説明から明らかなように、以下のことは自明である。すなわち説明全体を通して、「受け取る」、「調節する」、またはこれらに類するもののような用語を使った説明は、コンピューティングシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスのことを指し、このコンピューティングシステムまたは同様の電子コンピューティングデバイスは、コンピュータシステムのレジスタおよびメモリ内の物理量(例えば電子的な量)として表現されるデータを操作し、コンピュータシステムのメモリまたはレジスタ、あるいは他のかかる情報の記憶デバイス、伝送デバイスまたは表示デバイスの内部の物理量として同様に表される他のデータへ変換する。
【0068】
「例」または「例示的」という言葉は本明細書では、1つの例、事例または例証としての役割を果たすことを意味するために使用される。本明細書において「例」または「例示的」として述べるいずれの態様または設計も、必ずしも他の態様または設計よりも好ましいまたは有利であると捉えるべきではない。むしろ、「例」または「例示的」という言葉の使用は、コンセプトを具体的な手法で呈示することを意図している。本願において使用される用語「または」は、排他的な「または」ではなく包含的な「または」を意味することを意図している。つまり特段の記載がないかぎり、または文脈から明らかでないかぎり、「XはAまたはBを含む」は、自然な包括的順列のいずれも意味することを意図している。つまりXはAを含む、XはBを含む、またはXはAとBの両方を含む、としたならば、「XはAまたはBを含む」は、上述の事例のいずれのもとでも充足される。これに加え、本明細書および添付の特許請求の範囲において用いられている不定冠詞は、特段の記載がないかぎり、または単数形を指示していると文脈から明らかでないかぎり、一般に「1つまたは複数」を意味すると解されたい。さらに用語「ある実施形態」または「1つの実施形態」の使用、あるいは「ある実施形態」または「1つの実施形態」は全体を通して、その旨の説明がないかぎりは、同じ実施形態または実施形態を意味することを意図していない。
【0069】
本明細書で述べた実施形態は、本明細書のオペレーションを実施するための装置にも関係するものとすることができる。この装置を、要求された目的のために特別に構築することができ、またはこの装置は、内部に格納されたファームウェアにより選択的にアクティベートまたはリコンフィギュレーションされる汎用のハードウェアを有することができる。かかるファームウェアを、非一時的なコンピュータ可読記憶媒体に格納することができ、このような記憶媒体は例えば、以下に限定されるものではないが、NVM、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、フラッシュメモリ、または電子的な命令を格納するために適した任意のタイプの媒体などである。用語「コンピュータ可読記憶媒体」を、1つまたは複数の命令セットを格納する単一の媒体または複数の媒体を含むものであると解されたい。用語「コンピュータ可読媒体」を、ハードウェアにより実行するための命令セットを格納、符号化または搬送することができ、かつ本実施形態の方法論のうちのいずれか1つまたは複数をハードウェアに実施させる任意の媒体を含むものであるとも解されたい。したがって用語「コンピュータ可読記憶媒体」を、以下に限定されるものではないが、ソリッドステートメモリ、光学媒体、電磁媒体、ハードウェアにより実行するための命令セットを格納することができ、かつ本実施形態の方法論のいずれか1つまたは複数をハードウェアに実施させる任意の媒体を含むものであると解されたい。
【0070】
本開示のいくつかの実施形態の理解を深めることができるようにする目的で、上述の記載によれば、特定のシステム、コンポーネント、方法などの実施例といった多数の具体的な細部について述べられている。ただし当業者には自明であるとおり、本開示の少なくともいくつかの実施形態を、それらの具体的な細部を伴わずに実施することができる。他の事例において、周知のコンポーネントまたは方法について詳しくは説明されておらず、あるいは本開示が不必要に不明確になるのを避ける目的で、単純なブロック図の形態で呈示されている。よって、上述の具体的な細部は、例示的なものであるにすぎない。固有の実施形態を、これらの例示的な細部から変更してもよく、それでもなお本開示の範囲内にあるものと考えることができる。
【0071】
上述の記載は、例示的なものであり限定的なものではないことを意図している、という点を理解されたい。上述の記載を読み理解することで、当業者には他の多くの実施形態が明らかになるであろう。よって、本開示の範囲は、添付の特許請求の範囲を、かかる特許請求の範囲に権利が与えられた等価物の範囲全体と併せて参酌することで決定されるべきものである。
【0072】
上述の記載において説明の目的で、本開示を完全に理解できるようにするために、数多くの具体的な細部について述べられている。ただし当業者には自明であるとおり、本開示をそれらの具体的な細部を伴わずに実施することができる。他の事例において、本明細書の理解を不必要に曖昧にするのを避ける目的で、周知の回路、構造および技術は、詳細にではなくブロック図で示されている。
【0073】
本明細書で「1つの実施形態」または「ある実施形態」について言及することは、この実施形態に関連して記載される固有の特徴、構造または特性が、本開示の少なくとも1つの実施形態に含まれている、ということを意味する。本明細書のさまざまな個所に記載された「1つの実施形態において」というフレーズは、必ずしも同じ実施形態のことを指すものではない。
図1A
図1B
図2A
図2B
図3
図4
図5
図6
図6A
図6B
図7