(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5990635
(24)【登録日】2016年8月19日
(45)【発行日】2016年9月14日
(54)【発明の名称】外部メモリ解読のために構成されたマイクロコントローラ
(51)【国際特許分類】
G06F 21/75 20130101AFI20160901BHJP
G06F 21/62 20130101ALI20160901BHJP
【FI】
G06F21/75
G06F21/62
【請求項の数】19
【全頁数】16
(21)【出願番号】特願2015-506947(P2015-506947)
(86)(22)【出願日】2012年5月10日
(65)【公表番号】特表2015-517160(P2015-517160A)
(43)【公表日】2015年6月18日
(86)【国際出願番号】US2012037309
(87)【国際公開番号】WO2013158129
(87)【国際公開日】20131024
【審査請求日】2015年4月28日
(31)【優先権主張番号】12164501.4
(32)【優先日】2012年4月17日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】501034128
【氏名又は名称】アイトロン インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】エリック プレインカサーニュ
(72)【発明者】
【氏名】ギョーム デカン
【審査官】
打出 義尚
(56)【参考文献】
【文献】
特開2002−140236(JP,A)
【文献】
特開2004−287754(JP,A)
【文献】
特開2011−188620(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/75
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
ネットワークにおけるノードであって、
電気、ガス、または、水道を含むリソースの消費を測定するように構成され、および、前記リソースの消費を表している暗号化されたデータを生成し、および、マイクロコントローラユニットの外部に位置するメモリ装置に前記暗号化されたデータを記録するように構成された、メータと、
前記マイクロコントローラユニット内に位置し、および、前記メモリ装置から取得された前記暗号化されたデータのブロックを格納するように構成された、第1のキャッシュと、
前記マイクロコントローラユニット内に位置し、および、前記第1のキャッシュから前記暗号化されたデータの前記ブロックを取得し、および、前記暗号化されたデータの前記ブロックを解読し、その結果、解読されたデータのブロックを作るように構成された、解読エンジンと、
前記マイクロコントローラユニット内に位置し、および、前記解読エンジンから前記解読されたデータのブロックを受信するように構成された、第2のキャッシュと、
前記マイクロコントローラユニット内のプログラムカウンタから入力を受信し、および、前記第2のキャッシュ内の前記解読されたデータのブロックにおける特定のワードへのオフセットポインタを計算するように構成された、アドレスアライメントモジュールと、
前記アドレスアライメントモジュールから入力を受信し、および、前記第1のキャッシュの中に読み込まれるべき前記メモリ装置におけるメモリのブロックを示すように構成された、アドレス生成器と、
前記マイクロコントローラユニット上の動作のために構成されたプログラム命令文を有するアプリケーションであって、前記プログラム命令文は、暗号化された形式で前記メモリ装置上で格納され、および、前記オフセットポインタによって示される順序で解読された形式で実行される、アプリケーションと
を備えたことを特徴とするノード。
【請求項2】
前記アドレスアライメントモジュールは、前記特定のワードへの前記オフセットポインタを、前記マイクロコントローラユニットの外部にある前記メモリ装置におけるアドレスを前記第2のキャッシュにおけるレジスタへマッピングすることに基づいて計算することを特徴とする請求項1に記載のノード。
【請求項3】
ノードであって、
マイクロコントローラと、
前記マイクロコントローラの外部に位置し、および、暗号化されたデータおよび暗号化されたソフトウェアプログラム命令文を備えた、メモリ装置と、
電気、ガス、または、水道を含むリソースの消費を測定するように構成され、および、前記暗号化されたデータを生成するように構成され、前記暗号化されたデータは、前記リソースの消費を表す、メータと
を備え、
前記マイクロコントローラは、
処理装置の外部にある前記メモリ装置から取得された暗号化されたデータのNワードを格納するように構成された第1のキャッシュと、
前記第1のキャッシュから暗号化されたデータの前記Nワードを取得し、および、前記Nワードを解読するように構成された解読エンジンと、
前記解読エンジンから解読されたデータの前記Nワードを受信するように構成された第2のキャッシュと、
プログラムカウンタから入力を受信し、および、前記第2のキャッシュ内の解読されたデータの前記Nワードのうちの特定のワードへのオフセットポインタを計算し、
前記第1のキャッシュの中に読み込まれるべき、前記処理装置の外部にある前記メモリ装置における暗号化されたデータのNワードを示す
ように構成された、アドレスアライメントおよび生成器モジュールと
を備えたことを特徴とするノード。
【請求項4】
前記アドレスアライメントおよび生成器モジュールは、前記プログラムカウンタからの前記入力を、前記第2のキャッシュにおけるレジスタへのオフセットへ変換し、前記入力は、前記メモリ装置における特定の位置からのワードを示すことを特徴とする請求項3に記載のノード。
【請求項5】
前記アドレスアライメントおよび生成器モジュールは、
前記プログラムカウンタからの入力に応答して前記オフセットポインタをインクリメントし、前記オフセットポインタは、命令レジスタへの送信のためのデータの解読されたワードを指し示す
ようにさらに構成されたことを特徴とする請求項3に記載のノード。
【請求項6】
前記オフセットポインタを計算することは、アドレスを変換して前記第2のキャッシュにおけるレジスタを示すことを含み、前記アドレスは、前記処理装置の外部にある前記メモリ装置における位置をもともとは示し、
前記メモリ装置における暗号化されたデータのNワードを示すことは、前記プログラムカウンタから取得されたアドレスをマッピングして前記メモリ装置におけるメモリのブロックを示すことを含む
ことを特徴とする請求項3に記載のノード。
【請求項7】
前記アドレスアライメントおよび生成器モジュールは、前記解読エンジンに信号を送って、前記第2のキャッシュを新しく解読されたデータで上書きし、
前記解読エンジンからの解読されたデータが前記第2のキャッシュを上書きするときに、前記オフセットポインタはリセットされる
ことを特徴とする請求項3に記載のノード。
【請求項8】
前記アドレスアライメントおよび生成器モジュールは、
異なる幅のアドレスバスに順応し、
データバスを読み取る時が来た場合に前記第1のキャッシュへ通知する
ようにさらに構成されたことを特徴とする請求項3に記載のノード。
【請求項9】
信号を前記解読エンジンへ送信するように構成された第1のクロックと、
信号を命令レジスタおよび前記プログラムカウンタへ送信するように構成された第2のクロックと
をさらに備えたことを特徴とする請求項3に記載のノード。
【請求項10】
前記第1のキャッシュは、暗号化されたデータの1つのブロックを含み、
前記解読エンジンは、解読の処理においてデータの1つのブロックを含み、
前記第2のキャッシュは、解読されたデータの1つのブロックを含む
ことを特徴とする請求項3に記載のノード。
【請求項11】
外部メモリからの暗号化されたコードを実行する、プロセッサにおける方法であって、
電気、ガス、または、水道を含むリソースの消費を表している暗号化されたメータのデータを、メータから受信するステップと、
前記暗号化されたメータのデータを、マイクロコントローラユニットの外部に位置する前記外部メモリに格納するステップと、
前記外部メモリから暗号化されたプログラム命令文の第1のブロックをフェッチするステップと、
前記暗号化されたプログラム命令文のフェッチされたブロックを、第1のキャッシュメモリに格納するステップと、
前記第1のキャッシュメモリから取得された1つまたは複数の暗号化されたプログラム命令文を解読するステップと、
前記解読されたプログラム命令文を、第2のキャッシュメモリに格納するステップと、
プログラムカウンタからアドレスを受信するステップであって、前記アドレスは、マイクロコントローラによって実行されるべき前記格納された解読されたプログラム命令文の中から次の命令文を示している、ステップと、
前記プログラムカウンタによって示される命令文の実行によって前記暗号化されたメータのデータにアクセスするステップと、
前記第2のキャッシュメモリにおける解読されたプログラム命令文へのオフセットを計算するステップであって、前記計算することは、オフセットポインタをインクリメントすることを含む、ステップと、
プログラム命令文の前記第1のブロックのアドレスに少なくとも部分的に基づいて、前記外部メモリにおけるプログラム命令文の第2のブロックのアドレスを計算するステップと、
前記外部メモリから暗号化されたプログラム命令文の前記第2のブロックをフェッチして、前記第2のキャッシュメモリにおける最後の解読されたプログラム命令文の後の実行のために実行可能な命令文を提供するステップと
を含むことを特徴とする方法。
【請求項12】
前記外部メモリから前記暗号化されたプログラム命令文のブロックをフェッチするステップは、暗号化されたプログラム命令文の先のブロックの解読を完了することに応答していることを特徴とする請求項11に記載の方法。
【請求項13】
前記プログラム命令文を解読するステップは、AES解読のためのハードウェアにおいて構成された解読エンジンを使用して前記プログラム命令文を解読することを含むことを特徴とする請求項11に記載の方法。
【請求項14】
前記プログラム命令文を解読するステップは、前記プログラムカウンタへ提供されるクロック信号よりも速いクロック信号を、前記解読エンジンで受信することを含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記第2のキャッシュメモリにおけるワードへのオフセットを計算するステップをさらに含み、前記オフセットは、前記プログラムカウンタから受信された前記アドレスに基づくことを特徴とする請求項11に記載の方法。
【請求項16】
前記プログラムカウンタから受信された前記アドレスに関連付けられた前記外部メモリにおけるアドレスを計算するステップをさらに含み、前記計算することは、直前にフェッチされた前記外部メモリにおけるデータのブロックに続く、前記外部メモリにおけるデータのブロックを決定することを含むことを特徴とする請求項11に記載の方法。
【請求項17】
前記暗号化されたプログラム命令文のブロックをフェッチするステップ、および、前記第1のキャッシュメモリから取得された前記プログラム命令文を解読するステップは、同時に実行されることを特徴とする請求項11に記載の方法。
【請求項18】
前記オフセットポインタが前記第2のキャッシュメモリにおける各レジスタを指し示した後に、前記外部メモリから暗号化されたプログラム命令文の前記第2のブロックをフェッチすることと、
前記オフセットポインタが最後のレジスタを指し示しているときに、前記オフセットポインタのインクリメントに応答して、第1のレジスタを指し示すように前記オフセットポインタをリセットすることと
を含むことを特徴とする請求項11に記載の方法。
【請求項19】
外部メモリからの暗号化されたコードを実行する方法であって、
前記外部メモリから暗号化されたデータのブロックをフェッチするステップと、
前記暗号化されたデータのフェッチされたブロックを、第1のキャッシュメモリに格納するステップと、
前記第1のキャッシュメモリから取得されたデータを解読するステップであって、前記データを解読することは、AES解読のためのハードウェアにおいて構成された解読エンジンを使用して前記データを解読することを含み、および、前記データを解読することは、プログラムカウンタへ提供されるクロック信号よりも速いクロック信号を、前記解読エンジンで受信することを含む、ステップと、
前記解読されたデータを、第2のキャッシュメモリに格納するステップと、
前記プログラムカウンタからアドレスを受信するステップであって、前記アドレスは、マイクロコントローラによって実行されるべき次の命令文を示している、ステップと、
前記第2のキャッシュメモリにおけるワードへのオフセットを計算するステップであって、前記オフセットは、前記プログラムカウンタから受信された前記アドレスに基づく、ステップと、
前記オフセットによって示された前記ワードを命令レジスタへ提供するステップと、
前記プログラムカウンタから受信された前記アドレスに関連付けられた前記外部メモリにおけるアドレスを計算するステップと、
前記外部メモリから暗号化されたデータの第2のブロックをフェッチするステップであって、前記暗号化されたデータの第2のブロックは、前記計算されたアドレスに関連付けられる、ステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、外部メモリ解読のために構成されたマイクロコントローラに関する。
【0002】
(関連出願の相互参照)
本願は、参照によって本明細書に組み込まれる、2012年4月17日に出願され、名称が「外部メモリ解読のために構成されたマイクロコントローラ」である、ヨーロッパ特許出願番号EP12164501.4の優先権を主張する。
【背景技術】
【0003】
アドバンストメータリングインフラストラクチャ(AMI)ノードは、電気、天然ガス、または水道などの消費可能資源を測定するための装置に関連付けられうる。そのようなノードは、ルートノードおよび/またはルータノードによって率いられうるツリー構造を有する、自立ルーティングエリアとして組織化されうる。各ノード内で、複数のセンサ、メータ、または他の装置は、データを、処理装置、メモリ、および/または特定用途向け集積回路(ASIC)へ提供することができる。ノード上のアプリケーションオペレーティングは、入力として受信されたデータを処理して、それをネットワークへ中継することができる。
【0004】
そのようなデータ、およびアプリケーションを形成する実行可能なコードは、有益である。例えば、データは、電気、天然ガス、または他のユーティリティの消費量を表し、および、データのインテグリティは、財務上の理由のため重要でありうる。加えて、実行可能なコードは、正当性技術を含むことができる。残念ながら、ARA内のノードは、改ざんに対して脆弱であり、データは、不正に見ることまたは複製することに対して脆弱でありうる。加えて、アプリケーションの実行可能なコード(例えば、プログラム命令文)は、個々のノードおよび/または全体のネットワークの動作および機能性に関する情報を明かすことができる、複製、逆コンパイル、およびリバースエンジニアリングに対して脆弱であり得る。
【図面の簡単な説明】
【0005】
詳細な説明が、添付の図面を参照して説明される。図において、参照番号の左端の数字は、参照番号が最初に現れる図を特定する。同一の番号は、図面全体にわたって使用され、同様の特徴および要素を参照する。さらに、図は、一般的な概念を例示することを意図しており、要求されるおよび/または必要不可欠な要素を示すことを意図していない。
【
図1】複数のノード、1つの例示的なノードのいくつかの詳細、インターネットなどのさらなるネットワークへの接続、および中央局を有する例示的なネットワークを示す図である。
【
図2】外部メモリ装置内に含まれるデータの解読のために構成される例示的なマイクロコントローラユニットの略図である。
【
図3】外部メモリ解読のために構成されるマイクロコントローラが動作されうる例示的な方法を示す流れ図である。
【発明を実施するための形態】
【0006】
(概略)
アドバンスト暗号化規格(AES)および他の暗号化技術は、データセキュリティにおいて著しい進歩を表している。例えば、128ビットのブロックは、対称鍵を使用して暗号化され、その結果、強い暗号化をもたらしうる。そのような暗号化を使用して、データを含むメモリ装置を安全にするおよび制御することが可能ではない環境においてでさえ、データが安全にされうる。
【0007】
アドバンストメータリングインフラストラクチャ(AMI)において、ノードは、電気、天然ガス、水道、および/または他の消費可能資源の消費に関連するデータを含むことができる。ノードは、消費の記録を制御するメモリ装置を含むことができる。顧客は消費された量に基づいて請求書を送られるため、そのような記録は、考慮すべき財務上の値を有する。したがって、暗号化は、改ざんを防ぐのに役立つ。
【0008】
しかしながら、既存のマイクロコントローラは、コードを実行して、および、暗号化されていないデータを使用するように構成されている。暗号化された実行可能なコードおよび/または暗号化されたデータが使用される場合において、考慮すべきオーバーヘッドが導入され、プログラム実行の速度を落とす。また、解読されたコードおよびデータは、解読されたままである期間中に危険にさらされる。以下の議論は、外部メモリ暗号化のためのマイクロコントローラを構成するための技術を提供する、いくつかの代表的な例を含む。
【0009】
本明細書で議論される技術のいくつかを示す例は−全部のまたは包括的な議論と見なされることなく−読者を手助けする。AMI環境において、メータは、資源の消費を表している暗号化されたデータを生成し、および、マイクロコントローラユニットの外部に位置するメモリ装置内に暗号化されたデータを記録するように構成されうる。メータは、メモリ上で暗号化された形式で格納される実行可能な命令文を含むアプリケーション(例えば、ソフトウェアプログラム)を利用することができる。マイクロコントローラユニット(および/またはマイクロプロセッサ、プロセッサなど)内で、第1のキャッシュは、メモリ装置から取得された暗号化されたデータのブロックを格納するように構成されうる。データは、消費記録または暗号化されたプログラム命令文などの、任意の暗号化された情報を表すことができる。また、マイクロコントローラユニット内で、解読エンジンは、第1のキャッシュから暗号化されたデータのブロックを取得および解読するように構成されうる。マイクロコントローラユニット内に位置する第2のキャッシュは、解読エンジンから解読されたデータのブロックを受信するように構成されうる。アドレスアライメントモジュールは、プログラムカウンタから入力を受信し、および、オフセットポインタを計算するように構成されうる。オフセットポインタは、アプリケーションプログラムによる使用のための命令レジスタへの送信のために第2のキャッシュ内の解読されたデータのブロック内の特定のワードを示すことができる。アドレス発生器は、アドレスアライメントモジュールから入力を受信し、および、第1のキャッシュ内に読み込まれるメモリ装置内のメモリのブロックを示し、それによって、解読エンジンへ送信される暗号化されたデータを置き換えるように構成されうる。
【0010】
本明細書での議論は、いくつかの節を含む。議論、図面、および各節は、技術および/または構造の例であることを意図しており、使用および/または実行されなければならない要素を示すことを意図していない。より具体的には、この全体の説明は、外部メモリ解読のために構成されたマイクロコントローラで利用されうる要素および技術を示すことを意図しており、必ず要求される要素または技術を示すことを意図していない。議論は、本明細書で説明される技術を実装できる1つの環境を説明する「例示的ネットワーク」という題名の節で始まる。この節は、マイクロコントローラおよび/またはプロセッサの外部にあるメモリ装置上の暗号化されたデータとともに使用するための技術を含むことができる、ARAの例を描写および説明する。次に、「例示的マイクロコントローラユニット」という題名の節が、マイクロコントローラユニットの例を例示および説明し、および、外部メモリ装置との関係も示す。この節は、外部メモリ装置から取得されたデータを解読することを含む、代表的な機能性を実行する例示的な構造を提供する。第3の節、「例示的方法」という題名の節は、プロセッサ、メモリ装置、特定用途向け集積回路(ASIC)などを含む装置で操作可能である方法の態様を議論する。特に、例示的方法は、本明細書で議論される技術のいずれかに適用されうる。次に、「外部メモリ解読の例示的方法」という題名の節は、マイクロコントローラの外部にあるメモリ装置上の暗号化されたデータを読み取り、解読、および管理するために使用されうる態様を例示および説明する。最後に、議論は、短い結論で終了する。
【0011】
節の題名および対応する要約を含むこの短い序文は、読者の利便のために提供され、および、本開示の請求項または任意の節の範囲を説明および/または限定することを意図していない。
【0012】
(例示的ネットワーク)
図1は、ARAまたは他のネットワークでありうる、例示的ネットワーク100を示す図である。
図1は、インターネットなどのネットワーク106によって中央局104へ接続されうる、ルートまたはルータノード102Aを含む、複数のノード102を示している。ネットワーク内で、ノードは、無線RFリンク108、電力線通信(すなわち、電気出力送電系統で流れる電流上で重ねられた信号)、または他の媒体によって通信することができる。例示的ネットワーク100は、特定の場合として提供され、ネットワーク環境での暗号化されたデータの使用および管理のより一般的な概念を示し、要求されるおよび/または必要不可欠な要素を示さない。特に、例示的ネットワーク100は、マイクロコントローラおよび外部メモリ装置を利用するノードの例を示すために使用されるであろう。特に、マイクロコントローラは、暗号化されたデータおよび/または暗号化されたプログラム命令文を利用することができるノード上で動作するアプリケーションに関連付けられたソフトウェアコードを実行することができる。
【0013】
ネットワークアーキテクチャ100は、無線通信能力を有する複数のユーティリティメータを含むAMIネットワークなどのスマートグリッドとして構成されうる。ユーティリティメータは、電気、天然ガス、水道、または他の消費可能資源の消費を測定することができる。中央局104は、サーバ、パーソナルコンピュータ、ラップトップコンピュータなどの1つまたは複数のコンピューティング装置によって実装されうる。1つまたは複数のコンピューティング装置は、メモリと通信で連結された1つまたは複数のプロセッサを備えうる。いくつかの例において、中央局104は、1つまたは複数のノード102から受信されたデータの処理、分析、記憶、および/または管理を実行する、集中型のメータデータ管理システムを含む。例えば、中央局104は、スマートユーティリティメータ、センサ、制御装置、ルータ、調整器、サーバ、中継器、切替器、バルブ、および/または他のノードから取得されたデータを処理、分析、格納、および/または管理することができる。
図1の例は、単一の位置で中央局104を示しているけれども、いくつかの例において、中央局は、複数の位置間で分散されてよく、および/または、完全に除去されてよい(例えば、非常に非集中型の分散されたコンピューティングプラットフォームの場合)。
【0014】
ネットワーク106は、無線または有線ネットワーク、またはインターネットなどのそれらの組み合わせを含むことができる。ネットワーク106は、単一の巨大ネットワークとして機能することができる、個別のネットワークおよび/または相互接続されたネットワークの集合とすることができる。
【0015】
ネットワークアーキテクチャ100は、直接通信RF信号、電力線通信(PLC)リンク、または他の種類の送信を介して互いに通信で連結される、複数のノード102A、102B、102C、102D、・・・102N(まとめてノード102と呼ばれる)を含むことができる。いくつかのノードは、ユーティリティメータに関連付けられうる。この例において、Nは、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、ローカルエリアネットワーク(LAN)、近隣エリアネットワーク(NAN)、パーソナルエリアネットワーク(PAN)、上記の組み合わせなどとして構成されうる、ARA内のノードの例示的な数を表す。
【0016】
ノード102Aは、「ルート」、「ルートノード」、「フィールドエリアルータ」、または同様のものであるとみなされ、および、ネットワーク106などのバックホールネットワークによって中央局104内のサーバとARAを接続するように構成されうる。ノード102は、信号108によって通信し、データ、情報、報告、クエリ、およびパケットなどのアップストリームおよびダウンストリーム伝達の両方を容易にすることができる。
【0017】
ノード102Bの詳細は、無線機110を含み、無線機110は、RF信号108による通信のために構成される。無線機110は、複数のチャネル/周波数のうちの1つまたは複数を介してRF信号を送信および/または受信するように構成されたRF送受信機を備えることができる。無線実装の1つの例において、ノード102は、各通信リンク108上の制御チャネルおよび複数のデータチャネルなどの複数の異なるチャネル上のデータを送信および受信するように構成された単一の無線機110を含むことができる。無線機110は、また、複数の異なる変調技術、データレート、プロトコル、信号強度、および/または電力レベルを実装するように構成されうる。加えて、無線機は、「周波数ホッピング」方式において、短い期間ごとに、複数の異なる周波数を連続して整調するように構成されうる。他の実施形態において、ノードの各々は、有線通信のために構成されうる。例としてであり、限定しないが、有線通信は、電力線通信(PLC)またはイーサネット(登録商標)などの他の有線通信ネットワーク技術を含むことができる。ノード102は、異なる種類のノード(例えば、スマートメータ、セルラ中継器、センサなど)、ノードの異なる世代またはモデル、および/またはさもなければ異なるチャネル上で送信することおよび異なる変調技術、データレート、プロトコル、信号強度、および/または電力レベルを使用することができるノードを含むことができるという点において、ネットワーク100のアーキテクチャは、ノードのヘテロジニアスネットワークを表す。
【0018】
メータ112は、電気メータ、天然ガスメータ、水道メータ、または他のメータとすることができる。メータ112は、1つまたは複数のアプリケーションと協働して動作することができ、および、暗号化または非暗号化された状態でデータを作ることができる。1つの例において、処理装置またはマイクロコントローラは、制御およびメータ112とのデータ交換インターフェースを提供することができる。メータは、暗号化されたデータをアプリケーションへ提供することができ、または、アプリケーションはメータから受信したデータを暗号化することができる。暗号化されたデータは、外部メモリに格納されうる(すなわち、ソフトウェアアプリケーションが動作するマイクロコントローラの一部ではなく、「外部」にあるメモリ)。
【0019】
処理装置114は、メモリ118と通信で連結される1つまたは複数のプロセッサ116を含むことができる。プロセッサ116は実行し、および、メモリ118は、様々なソフトウェア命令文、ソフトウェアモジュール、手順、管理、アルゴリズムなどを含むことができる。そのような機能ブロックは、ソフトウェアおよび/またはファームウェアで構成され、プロセッサ116によって実行可能でありうる。代替の実施形態において、プロセッサ116、メモリ118、および/またはプロセッサおよびメモリ上で操作可能であるソフトウェアのいくつかまたは全部は、ハードウェアによって全体または一部で実装されうる。ハードウェアの例は、特定用途向け集積回路(ASIC)または説明される機能を実行するように構成される他の装置などの、マイクロコントローラまたは他のデジタル装置を含む。
【0020】
1つの例において、プロセッサ116の1つ、いくつか、または全部は、外部メモリ解読のために構成されたマイクロコントローラユニット(MCU)120とすることができる。MCU120は、暗号化されたデータ122または1つまたは複数の暗号化されたアプリケーション124の暗号化されたソフトウェアプログラム命令文を読み取るように構成されうる。例において、MCU120は、リアルタイムおよび/または「オンザフライ」でデータ122および/またはアプリケーション124のプログラム命令文を解読する。ゆえに、MCU120は、解読されたプログラム命令文を実行することができ、および/または解読されたデータを利用することができる。1つの例において、プログラム命令文は、メータ112とインターフェースすることができるソフトウェアアプリケーションに関連付けられうる。そのような例において、プログラム命令文の暗号化されたバージョンを表すデータのブロックが解読され、および、解読された命令文が、外部メモリ解読のために構成されたMCU120によって実行される。
【0021】
メモリ118は、モノリシックのエンティティとして示されているが、読み取り専用メモリ、書き込み可能メモリ、永続的または非永続的メモリなどの、複数の同様におよび/または異なるように構成された装置としても構成されうる。メモリ118は、1つまたは複数のソフトウェアおよび/またはファームウェアモジュールを格納するように構成されうる。ソフトウェアおよび/またはファームウェアモジュールは、プロセッサ116によって実行可能であり、様々な機能を実装する。メモリ118は、コンピュータ可読媒体を含むことができ、および、ランダムアクセスメモリ(RAM)などの揮発性メモリおよび/または読み取り専用メモリ(ROM)またはフラッシュRAMなどの非揮発性メモリの形をとることができる。コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはコンピューティング装置の1つまたは複数のプロセッサによる実行のための他のデータなどの情報の記憶のための技術または技法に従って実装される、揮発性および非揮発性、取り外し可能および取り出し不可能媒体を含む。コンピュータ可読媒体の例は、限定しないが、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他の種類のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、フラッシュメモリ、または他のメモリ技術、コンパクトディスク読み取り専用メモリ(CD−ROM)、デジタルバーサタイルディスク(DVD)、または他の光学式記憶、磁気カセット、磁気テープ、磁気ディスク記憶、または他の磁気記憶装置、またはコンピューティング装置によるアクセスのための情報を格納するために使用されうる任意の他の非送信媒体を含む。
【0022】
本明細書において、コンピュータ可読媒体は、特定用途向け集積回路(ASIC)または他のハードウェア装置の全部または一部を含むことができる。そのようなハードウェア装置は、AMI内の帯域幅管理で実行される機能を含む、他の機能性を含むように構成されうる。したがって、そのような集積回路内で、1つまたは複数のプロセッサは、論理、トランジスタまたは他の要素、または基板に取り付けられたメモリによって定義されうる実行可能な命令とともに構成されうる。
【0023】
示した例において、メモリ118は、プロセッサ116および/またはMCU120の動作によって実行可能であるプロセッサ実行可能命令によって定義されうる、暗号化されたデータ122および1つまたは複数のアプリケーション124を含む。したがって、アプリケーション124は、ソフトウェア、サブルーチン、プログラムなどとみなされうる。あるいは、プロセッサ116および/またはMCU120、メモリ118および/またはアプリケーション124は、ASICなどの1つまたは複数のハードウェア装置の動作によって定義されうる。
【0024】
(例示的マイクロコントローラユニット)
図2は、マイクロコントローラユニット(MCU)120および外部メモリ装置118の配置の例200の略図である。MCU120は、外部メモリ装置118に含まれるデータの解読のために構成されうる。データは、情報、ソフトウェアアプリケーションプログラム命令文などを含むことができる。
【0025】
メモリ装置118は、MCU120の外部にあり、それゆえ、メモリ装置がMCU120内に完全に含まれた場合よりも、そのデータを盗む者による攻撃に本質的により脆弱である。しかしながら、外部メモリ構成は、メモリ装置118が、はるかに安いことを可能にし、また、より容易にアップグレードされるおよび/または置き換えられることを可能にする。攻撃から保護するために、データ122およびアプリケーション124のソフトウェアプログラム命令文(例えば、ソフトウェアコマンド)の1つまたは両方は、暗号化されうる。したがって、メモリ装置118は、MCU120の外部にあるが、装置内に含まれるデータおよびアプリケーションは、暗号化によって保護されうる。
【0026】
外部メモリインターフェース202は、アドレスバス204およびデータバス206と接続し、それによって、外部メモリ装置118とインターフェースするように構成される。第2の例において、外部メモリは、並列バスとは対照的に、シリアルリンクによってマイクロコントローラユニット120に接続されることが可能である。どちらの構成も、同一の解読機構の使用を可能にできる。外部メモリインターフェース202は、アドレス出力204を制御する、アドレス入力208を受信する。データバス210は、外部メモリ装置118から取得されたデータをキャッシュメモリ212へ転送する。
【0027】
キャッシュメモリ212は、外部メモリ202から読み取られた暗号化されたデータのブロックを保つように構成されうる。データのブロックは、データバス210上で読み取られうる。データバスは、入力214によって示される時間に読み取られうる。入力214は、アドレス生成器によって制御されうる。1つの例において、キャッシュ212の中へ読み取られたデータは、メモリ位置またはレジスタ216に格納される。集合的に、メモリ位置216は、データの1つのブロックを含むように構成されうる。データのブロックは、128ビット、256ビット、または他の量とすることができる。1つの例において、AES暗号化によって使用されるデータの128ビットブロックに一致する、128ビットブロックが使用される。そのような例において、レジスタ216は、32ビットの長さの4ワードなどの、Nワードとして、128ビットブロックを組織化することができる。そのような例は、電子コードブック(ECB)を利用することができ、メッセージは、ブロックに分けられ、各ブロックは別々に暗号化されうる。あるいは、非ECB暗号化技術が使用され、より安全を提供することができる。
【0028】
キャッシュメモリ装置212は、データのブロックを解読エンジン218へ提供するように構成されうる。解読エンジン218は、解読ソフトウェアを操作するように構成された、特殊用途ハードウェア装置または汎用装置とすることができる。より高いスループットを取得するために、AES暗号化データを解読するように構成された専用ハードウェア装置が使用される。対称鍵は、装置218に組み込まれ、または、さもなければそれに対して提供されうる。
図2の例において、外部クロック220は、解読エンジン218の時間を測定するために使用されうるが、内部クロックが代わりに使用されうる。
【0029】
解読エンジンからの出力は、第2のキャッシュ222へ転送されうる。第2のキャッシュ222は、複数のレジスタ224内のNワードとして組織化された解読されたデータのブロックを含むように構成されうる。1つの例において、レジスタ224は、32ビットの長さの4ワードとしてデータの解読されたブロックを組織化する。
【0030】
プログラムカウンタ228は、次のまたは適切なアドレスへインクリメントする。次のまたは適切なアドレスの内容は、命令レジスタ226の中へ読み取られうる命令を示す。プログラムカウンタ228は、オペレーティングシステムまたは他の装置によって制御されうる。プログラムカウンタ228からの信号230は、アドレスアライメントモジュール232によって受信されうる。アドレスアライメントモジュール232は、オフセットポインタ234を計算することができ、オフセットポインタは、命令レジスタ226へ送信されるべき解読されたデータを有する第2のキャッシュ222のレジスタ224はどれかを示す。
【0031】
1つの例において、プログラムカウンタ228は、望ましいプログラム命令を有する外部メモリ118のアドレスを含む。しかしながら、データは、すでに外部メモリ118から読み取られ、第1のキャッシュ212に格納され、解読エンジン218によって解読され、次に、解読された形式で第2のキャッシュ222に格納された。したがって、プログラムカウンタ228によって示されるプログラム命令の解読された形式は、第2のキャッシュメモリ222のレジスタ224の1つに含まれる。アドレスアライメントモジュール232は、オフセットポインタ234を使用して、適切なレジスタを示す。
【0032】
アドレス生成器238は、アドレスアライメントモジュール232から入力236を受信することができる。入力は、第1のキャッシュ212内の記憶装置のために外部メモリ118からフェッチするための、データのブロックのアドレスにアドレス生成器238が変換する、アドレスを示すことができる。アドレス生成器238は、アドレスバス208/204上にアドレスを置いて、外部メモリ118からの望ましいデータを選択することができる。1つの例において、アドレス生成器238は、可変メモリ装置サイズに適応するために十分なアドレススペースを有することによってなど、異なる幅のアドレスバスに順応するように構成される。アドレスがバス上であるとき、出力214は、アドレス生成器238が、データバス210/206を読み取るための時間を第1のキャッシュへ通知することを可能にする。
【0033】
任意で、アドレスアライメントモジュール232およびアドレス生成器238の機能性は、組み合わせられうる。そのような構成において、統合されたアドレスアライメントおよび生成モジュールは、オフセットポインタ234を第2のキャッシュメモリ222へ提供し、外部メモリからフェッチされるべきメモリのブロックのアドレスを示す出力208を生成し、およびデータバス210上でデータを受信するために信号214を第1のキャッシュ212へ提供するように構成されうる。
【0034】
クロック240は、クロック信号を、命令レジスタ226、プログラムカウンタ228、および他のマイクロコントローラ機能性242へ提供するために使用されうる。マイクロコントローラ機能性242は、既知のマイクロコントローラに存在する、および、本明細書で説明されていない、複数の機能を含むことができる。1つの例において、解読エンジン218を操縦するクロック220は、クロック240より高い周波数のものとすることができるが、正確な設計パラメータは、実装に応じて変化しうる。
【0035】
(例示的方法)
図3の例示的方法は、
図1および2の構成によって少なくとも一部分において実装されうる。しかしながら、
図3は、一般的な適用性を含み、他の図面の図および/または前の議論によって限定されない。本明細書で説明される各方法は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装されうる一連の動作を表す、論理流れ図における行動、ブロック、または動作の収集として示される。ソフトウェアの状況において、動作は、1つまたは複数のプロセッサによって実行されるときに、記載された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体上に格納されたコンピュータ実行可能命令を表す。そのような記憶媒体、プロセッサ、およびコンピュータ可読命令は、望ましい設計または実装に従って、MCU(例えば、
図1および2のMCU120)内に置かれうる。
図1および2に見られる記憶媒体は、一般的に取り外し可能と取り外し不可能との両方であり、および任意の技術の記憶媒体の代表である。ゆえに、記載される動作は、
図3で説明されるものなどの行動を表し、および、示された行動を実行するための実行可能命令と共に構成される1つまたは複数のプロセッサの制御のもとで行なわれる。一般的に、コンピュータ可読命令は、特定の機能を実行または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図しておらず、説明される動作は、方法を実装するために、異なる順序および/または並列で組み合わせられうる。上記の議論は、本明細書で説明される他の方法に適用することができる。
【0036】
(外部メモリ解読の例示的方法)
図3は、マイクロコントローラユニット(MCU)が外部メモリに含まれるデータの解読を提供するために動作することができる、例示的方法300を示す流れ図である。動作302において、その内容がフェッチされるべきであるメモリ内の第1のアドレスが、生成される。
図2の例において、プログラムカウンタ228は、アドレス230をアドレスアライメントモジュール232へ与えることができる。アドレスアライメントモジュール232は、アドレス236を生成することができ、アドレス236はアドレス生成器238へ送信される。
【0037】
動作304において、暗号化されたデータのブロックは、外部メモリ装置からフェッチされる。フェッチすることは、データの解読の完了、オフセットポインタを第2のキャッシュ内の最後のワードへインクリメントすること、または他のタイミングイベントに応答して実行されうる。
図2の例の状況において、128ビットブロックは、AES暗号化と互換性がある大きさであり、外部メモリ装置118からフェッチされる。データのブロックは、暗号化されたコンピュータソフトウェアプログラム命令文またはデータ情報を備えることができる。ブロックは、外部メモリインターフェース202の動作を通じてフェッチされうる。外部メモリインターフェースは、アドレスバス204およびデータバス206へアタッチされうる。アドレスはアドレスバスに置かれ、対応するデータがデータバスから読み取られる。
【0038】
動作306において、暗号化されたデータのフェッチされたブロックは、第1のキャッシュメモリに格納される。
図2の例の状況において、暗号化されたデータのブロックのNワードは、第1のキャッシュ212内のNレジスタ216に格納されうる。1つの例において、128ビットブロックは、各々が32ビットの長さである、4レジスタに格納される。
【0039】
動作308において、第1のキャッシュメモリから取得されたデータは、解読される。
図2の例の状況において、第1のキャッシュ212からのデータは、解読エンジン218へ転送される。解読エンジン218は、エンジンに組み込まれた鍵(例えば、対称鍵)を使用して、暗号化されたデータの128ビットブロックを解読するように構成されうる。解読エンジン218は、MCUで利用可能である最速のクロック220を使用することができる、動作の速いハードウェア装置として構成されうる。クロック220は、プログラムカウンタまたはマイクロコントローラユニットの他の領域に提供されるクロック信号より速いクロック信号を解読エンジンへ提供することができる。
【0040】
動作310において、解読されたデータは、第2のキャッシュメモリ内に格納される。
図2の例の状況において、解読されたデータは、第2のキャッシュメモリ222内の記憶装置のための解読エンジン218からの出力である。アドレスアライメントモジュール、アドレス生成器、および/または、他の装置は、解読エンジンに信号を送って、新たに解読されたデータで第2のキャッシュを上書きする。第2のキャッシュの上書きは、オフセットポインタ234をリセットする。示される例において、データの解読された128ビットブロックは、レジスタ224内で32ビットの長さの4ワードとして格納される。しかしながら、他のデータブロックおよびワードの長さのサイズは、使用される暗号化技術および解読エンジンの設計に応じて、可能である。
【0041】
動作312において、プログラムカウンタからのアドレスが受信される。アドレスは、マイクロコントローラによって実行される、および/または、マイクロコントローラのためにフェッチされる次の命令文を示す。
図2の例の状況において、プログラムカウンタ228は、オペレーティングシステム、他の装置のアプリケーション、および/またはオブジェクトによってインクリメントされうる。プログラムカウンタ228の出力230は、アドレスアライメントモジュール232へ転送される。
【0042】
動作314において、第2のキャッシュにおけるワード(例えば、データ要素)へのオフセットが計算される。ワードは、プログラムカウンタによって提供されたアドレスによって示される命令またはデータを表す。計算することは、オフセットポインタをインクリメントして、第2のキャッシュ内に含まれるワードを示すことを含むことができる。インクリメントすることは、プログラムカウンタによる行動に基づいている。
図2の例の状況において、アドレスアライメントモジュール232は、プログラムカウンタ228から受信されたアドレスを処理する。特に、アドレスアライメントモジュール232は、外部メモリ118内の位置からの受信されたアドレスを、第2のキャッシュ222内のレジスタ224へマッピングする。したがって、第2のキャッシュ222に位置するレジスタ224は、外部メモリ118内のアドレスの解読されたバージョンを含み、それゆえ、MCUによって使用可能である。特定のレジスタ224は、オフセットまたはオフセットポインタ234によって示されうる。ゆえに、オフセットポインタ234によって示されるレジスタ内のデータは、外部メモリ118にもともと存在する、プログラムカウンタ228によって示されるデータの解読されたバージョンである。すなわち、プログラムカウンタ228の出力230は、解読されおよびオフセットポインタ234によって指し示された第2のキャッシュ222内のレジスタ224へ移動されてきた、外部メモリ118内の位置へのアドレスである。
【0043】
動作316において、オフセットによって示されたデータワードは、命令レジスタへ提供される。したがって、プログラムカウンタによって提供されたアドレスによって示されるデータは、第2のキャッシュで見られる解読された形式で、プログラムカウンタへ提供される。
図2の例の状況において、第2のキャッシュ222内の適切なレジスタ224は、命令レジスタ226へ複製される。
【0044】
動作318において、外部メモリ内のアドレスは、データの追加ブロックをフェッチするときに使用するために計算される。
図2の例の状況において、アドレスアライメントモジュール232は、出力236内でアドレスをアドレス生成器238へ提供する。アドレス生成器238は、受信したアドレスに基づいて、フェッチされるべき次のデータのブロックへのアドレスを計算する。ゆえに、プログラムカウンタ228から受信されたアドレスに関連付けられうる外部メモリ118内のアドレスの計算は、直前にフェッチされた外部メモリ内のデータのブロックに続く外部メモリ内のデータのブロックを決定することを含むことができる。
【0045】
動作320において、暗号化されたデータの第2のブロックは、外部メモリからフェッチされる。メモリの第2のブロックは、動作318において計算されたアドレスと関連付けられる。
図2の例の状況において、アドレス生成器238は、適切なアドレスを、外部メモリインターフェース202へ提供し、信号214を第1のキャッシュメモリ212へ提供して外部メモリ装置118からデータを受信することができる。1つの例において、第2のブロックは、オフセットポインタ234が第2のキャッシュ222内の最後のワードまたはレジスタ224を指し示したときなど、あるタイミングイベントの後にフェッチされうる。さらなる例において、第2のブロックは、オフセットポインタが第2のキャッシュ内の各レジスタを指し示した後にフェッチされうる。オフセットポインタは、次に、オフセットポインタが最後のレジスタを指し示しているときのオフセットポインタのインクリメントに応答するなど、第1のレジスタで指し示すためにリセットされうる。
【0046】
複数の動作は、並列で実行されうることに留意すべきである。例示のみの目的のために1つの例として、暗号化されたデータのブロックをフェッチすること(動作302、318)、第1のキャッシュメモリから取得されたデータを解読すること(動作306)、およびオフセットによって示されるワードを提供すること(動作314)は、すべて同時に実行されうる。
【0047】
(結論)
発明特定事項は、構造上の特徴および/または方法論の動作にとって特有の専門用語で説明されてきたが、添付された請求項で定義される発明特定事項は必ずしも説明される特定の特徴または動作を限定しないことが理解されるべきである。むしろ、特定の特徴および動作は、請求項を実装する例示的な形式として開示される。