(57)【特許請求の範囲】
【請求項１】
ネットワークにおけるノードであって、
電気、ガス、または、水道を含むリソースの消費を測定するように構成され、および、前記リソースの消費を表している暗号化されたデータを生成し、および、マイクロコントローラユニットの外部に位置するメモリ装置に前記暗号化されたデータを記録するように構成された、メータと、
前記マイクロコントローラユニット内に位置し、および、前記メモリ装置から取得された前記暗号化されたデータのブロックを格納するように構成された、第１のキャッシュと、
前記マイクロコントローラユニット内に位置し、および、前記第１のキャッシュから前記暗号化されたデータの前記ブロックを取得し、および、前記暗号化されたデータの前記ブロックを解読し、その結果、解読されたデータのブロックを作るように構成された、解読エンジンと、
前記マイクロコントローラユニット内に位置し、および、前記解読エンジンから前記解読されたデータのブロックを受信するように構成された、第２のキャッシュと、
前記マイクロコントローラユニット内のプログラムカウンタから入力を受信し、および、前記第２のキャッシュ内の前記解読されたデータのブロックにおける特定のワードへのオフセットポインタを計算するように構成された、アドレスアライメントモジュールと、
前記アドレスアライメントモジュールから入力を受信し、および、前記第１のキャッシュの中に読み込まれるべき前記メモリ装置におけるメモリのブロックを示すように構成された、アドレス生成器と、
前記マイクロコントローラユニット上の動作のために構成されたプログラム命令文を有するアプリケーションであって、前記プログラム命令文は、暗号化された形式で前記メモリ装置上で格納され、および、前記オフセットポインタによって示される順序で解読された形式で実行される、アプリケーションと
を備えたことを特徴とするノード。
【請求項２】
前記アドレスアライメントモジュールは、前記特定のワードへの前記オフセットポインタを、前記マイクロコントローラユニットの外部にある前記メモリ装置におけるアドレスを前記第２のキャッシュにおけるレジスタへマッピングすることに基づいて計算することを特徴とする請求項１に記載のノード。
【請求項３】
ノードであって、
マイクロコントローラと、
前記マイクロコントローラの外部に位置し、および、暗号化されたデータおよび暗号化されたソフトウェアプログラム命令文を備えた、メモリ装置と、
電気、ガス、または、水道を含むリソースの消費を測定するように構成され、および、前記暗号化されたデータを生成するように構成され、前記暗号化されたデータは、前記リソースの消費を表す、メータと
を備え、
前記マイクロコントローラは、
処理装置の外部にある前記メモリ装置から取得された暗号化されたデータのＮワードを格納するように構成された第１のキャッシュと、
前記第１のキャッシュから暗号化されたデータの前記Ｎワードを取得し、および、前記Ｎワードを解読するように構成された解読エンジンと、
前記解読エンジンから解読されたデータの前記Ｎワードを受信するように構成された第２のキャッシュと、
プログラムカウンタから入力を受信し、および、前記第２のキャッシュ内の解読されたデータの前記Ｎワードのうちの特定のワードへのオフセットポインタを計算し、
前記第１のキャッシュの中に読み込まれるべき、前記処理装置の外部にある前記メモリ装置における暗号化されたデータのＮワードを示す
ように構成された、アドレスアライメントおよび生成器モジュールと
を備えたことを特徴とするノード。
【請求項４】
前記アドレスアライメントおよび生成器モジュールは、前記プログラムカウンタからの前記入力を、前記第２のキャッシュにおけるレジスタへのオフセットへ変換し、前記入力は、前記メモリ装置における特定の位置からのワードを示すことを特徴とする請求項３に記載のノード。
【請求項５】
前記アドレスアライメントおよび生成器モジュールは、
前記プログラムカウンタからの入力に応答して前記オフセットポインタをインクリメントし、前記オフセットポインタは、命令レジスタへの送信のためのデータの解読されたワードを指し示す
ようにさらに構成されたことを特徴とする請求項３に記載のノード。
【請求項６】
前記オフセットポインタを計算することは、アドレスを変換して前記第２のキャッシュにおけるレジスタを示すことを含み、前記アドレスは、前記処理装置の外部にある前記メモリ装置における位置をもともとは示し、
前記メモリ装置における暗号化されたデータのＮワードを示すことは、前記プログラムカウンタから取得されたアドレスをマッピングして前記メモリ装置におけるメモリのブロックを示すことを含む
ことを特徴とする請求項３に記載のノード。
【請求項７】
前記アドレスアライメントおよび生成器モジュールは、前記解読エンジンに信号を送って、前記第２のキャッシュを新しく解読されたデータで上書きし、
前記解読エンジンからの解読されたデータが前記第２のキャッシュを上書きするときに、前記オフセットポインタはリセットされる
ことを特徴とする請求項３に記載のノード。
【請求項８】
前記アドレスアライメントおよび生成器モジュールは、
異なる幅のアドレスバスに順応し、
データバスを読み取る時が来た場合に前記第１のキャッシュへ通知する
ようにさらに構成されたことを特徴とする請求項３に記載のノード。
【請求項９】
信号を前記解読エンジンへ送信するように構成された第１のクロックと、
信号を命令レジスタおよび前記プログラムカウンタへ送信するように構成された第２のクロックと
をさらに備えたことを特徴とする請求項３に記載のノード。
【請求項１０】
前記第１のキャッシュは、暗号化されたデータの１つのブロックを含み、
前記解読エンジンは、解読の処理においてデータの１つのブロックを含み、
前記第２のキャッシュは、解読されたデータの１つのブロックを含む
ことを特徴とする請求項３に記載のノード。
【請求項１１】
外部メモリからの暗号化されたコードを実行する、プロセッサにおける方法であって、
電気、ガス、または、水道を含むリソースの消費を表している暗号化されたメータのデータを、メータから受信するステップと、
前記暗号化されたメータのデータを、マイクロコントローラユニットの外部に位置する前記外部メモリに格納するステップと、
前記外部メモリから暗号化されたプログラム命令文の第１のブロックをフェッチするステップと、
前記暗号化されたプログラム命令文のフェッチされたブロックを、第１のキャッシュメモリに格納するステップと、
前記第１のキャッシュメモリから取得された１つまたは複数の暗号化されたプログラム命令文を解読するステップと、
前記解読されたプログラム命令文を、第２のキャッシュメモリに格納するステップと、
プログラムカウンタからアドレスを受信するステップであって、前記アドレスは、マイクロコントローラによって実行されるべき前記格納された解読されたプログラム命令文の中から次の命令文を示している、ステップと、
前記プログラムカウンタによって示される命令文の実行によって前記暗号化されたメータのデータにアクセスするステップと、
前記第２のキャッシュメモリにおける解読されたプログラム命令文へのオフセットを計算するステップであって、前記計算することは、オフセットポインタをインクリメントすることを含む、ステップと、
プログラム命令文の前記第１のブロックのアドレスに少なくとも部分的に基づいて、前記外部メモリにおけるプログラム命令文の第２のブロックのアドレスを計算するステップと、
前記外部メモリから暗号化されたプログラム命令文の前記第２のブロックをフェッチして、前記第２のキャッシュメモリにおける最後の解読されたプログラム命令文の後の実行のために実行可能な命令文を提供するステップと
を含むことを特徴とする方法。
【請求項１２】
前記外部メモリから前記暗号化されたプログラム命令文のブロックをフェッチするステップは、暗号化されたプログラム命令文の先のブロックの解読を完了することに応答していることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記プログラム命令文を解読するステップは、ＡＥＳ解読のためのハードウェアにおいて構成された解読エンジンを使用して前記プログラム命令文を解読することを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記プログラム命令文を解読するステップは、前記プログラムカウンタへ提供されるクロック信号よりも速いクロック信号を、前記解読エンジンで受信することを含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第２のキャッシュメモリにおけるワードへのオフセットを計算するステップをさらに含み、前記オフセットは、前記プログラムカウンタから受信された前記アドレスに基づくことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記プログラムカウンタから受信された前記アドレスに関連付けられた前記外部メモリにおけるアドレスを計算するステップをさらに含み、前記計算することは、直前にフェッチされた前記外部メモリにおけるデータのブロックに続く、前記外部メモリにおけるデータのブロックを決定することを含むことを特徴とする請求項１１に記載の方法。
【請求項１７】
前記暗号化されたプログラム命令文のブロックをフェッチするステップ、および、前記第１のキャッシュメモリから取得された前記プログラム命令文を解読するステップは、同時に実行されることを特徴とする請求項１１に記載の方法。
【請求項１８】
前記オフセットポインタが前記第２のキャッシュメモリにおける各レジスタを指し示した後に、前記外部メモリから暗号化されたプログラム命令文の前記第２のブロックをフェッチすることと、
前記オフセットポインタが最後のレジスタを指し示しているときに、前記オフセットポインタのインクリメントに応答して、第１のレジスタを指し示すように前記オフセットポインタをリセットすることと
を含むことを特徴とする請求項１１に記載の方法。
【請求項１９】
外部メモリからの暗号化されたコードを実行する方法であって、
前記外部メモリから暗号化されたデータのブロックをフェッチするステップと、
前記暗号化されたデータのフェッチされたブロックを、第１のキャッシュメモリに格納するステップと、
前記第１のキャッシュメモリから取得されたデータを解読するステップであって、前記データを解読することは、ＡＥＳ解読のためのハードウェアにおいて構成された解読エンジンを使用して前記データを解読することを含み、および、前記データを解読することは、プログラムカウンタへ提供されるクロック信号よりも速いクロック信号を、前記解読エンジンで受信することを含む、ステップと、
前記解読されたデータを、第２のキャッシュメモリに格納するステップと、
前記プログラムカウンタからアドレスを受信するステップであって、前記アドレスは、マイクロコントローラによって実行されるべき次の命令文を示している、ステップと、
前記第２のキャッシュメモリにおけるワードへのオフセットを計算するステップであって、前記オフセットは、前記プログラムカウンタから受信された前記アドレスに基づく、ステップと、
前記オフセットによって示された前記ワードを命令レジスタへ提供するステップと、
前記プログラムカウンタから受信された前記アドレスに関連付けられた前記外部メモリにおけるアドレスを計算するステップと、
前記外部メモリから暗号化されたデータの第２のブロックをフェッチするステップであって、前記暗号化されたデータの第２のブロックは、前記計算されたアドレスに関連付けられる、ステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、外部メモリ解読のために構成されたマイクロコントローラに関する。
【０００２】
（関連出願の相互参照）
本願は、参照によって本明細書に組み込まれる、２０１２年４月１７日に出願され、名称が「外部メモリ解読のために構成されたマイクロコントローラ」である、ヨーロッパ特許出願番号ＥＰ１２１６４５０１．４の優先権を主張する。
【背景技術】
【０００３】
アドバンストメータリングインフラストラクチャ（ＡＭＩ）ノードは、電気、天然ガス、または水道などの消費可能資源を測定するための装置に関連付けられうる。そのようなノードは、ルートノードおよび／またはルータノードによって率いられうるツリー構造を有する、自立ルーティングエリアとして組織化されうる。各ノード内で、複数のセンサ、メータ、または他の装置は、データを、処理装置、メモリ、および／または特定用途向け集積回路（ＡＳＩＣ）へ提供することができる。ノード上のアプリケーションオペレーティングは、入力として受信されたデータを処理して、それをネットワークへ中継することができる。
【０００４】
そのようなデータ、およびアプリケーションを形成する実行可能なコードは、有益である。例えば、データは、電気、天然ガス、または他のユーティリティの消費量を表し、および、データのインテグリティは、財務上の理由のため重要でありうる。加えて、実行可能なコードは、正当性技術を含むことができる。残念ながら、ＡＲＡ内のノードは、改ざんに対して脆弱であり、データは、不正に見ることまたは複製することに対して脆弱でありうる。加えて、アプリケーションの実行可能なコード（例えば、プログラム命令文）は、個々のノードおよび／または全体のネットワークの動作および機能性に関する情報を明かすことができる、複製、逆コンパイル、およびリバースエンジニアリングに対して脆弱であり得る。
【図面の簡単な説明】
【０００５】
詳細な説明が、添付の図面を参照して説明される。図において、参照番号の左端の数字は、参照番号が最初に現れる図を特定する。同一の番号は、図面全体にわたって使用され、同様の特徴および要素を参照する。さらに、図は、一般的な概念を例示することを意図しており、要求されるおよび／または必要不可欠な要素を示すことを意図していない。
【図１】複数のノード、１つの例示的なノードのいくつかの詳細、インターネットなどのさらなるネットワークへの接続、および中央局を有する例示的なネットワークを示す図である。
【図２】外部メモリ装置内に含まれるデータの解読のために構成される例示的なマイクロコントローラユニットの略図である。
【図３】外部メモリ解読のために構成されるマイクロコントローラが動作されうる例示的な方法を示す流れ図である。
【発明を実施するための形態】
【０００６】
（概略）
アドバンスト暗号化規格（ＡＥＳ）および他の暗号化技術は、データセキュリティにおいて著しい進歩を表している。例えば、１２８ビットのブロックは、対称鍵を使用して暗号化され、その結果、強い暗号化をもたらしうる。そのような暗号化を使用して、データを含むメモリ装置を安全にするおよび制御することが可能ではない環境においてでさえ、データが安全にされうる。
【０００７】
アドバンストメータリングインフラストラクチャ（ＡＭＩ）において、ノードは、電気、天然ガス、水道、および／または他の消費可能資源の消費に関連するデータを含むことができる。ノードは、消費の記録を制御するメモリ装置を含むことができる。顧客は消費された量に基づいて請求書を送られるため、そのような記録は、考慮すべき財務上の値を有する。したがって、暗号化は、改ざんを防ぐのに役立つ。
【０００８】
しかしながら、既存のマイクロコントローラは、コードを実行して、および、暗号化されていないデータを使用するように構成されている。暗号化された実行可能なコードおよび／または暗号化されたデータが使用される場合において、考慮すべきオーバーヘッドが導入され、プログラム実行の速度を落とす。また、解読されたコードおよびデータは、解読されたままである期間中に危険にさらされる。以下の議論は、外部メモリ暗号化のためのマイクロコントローラを構成するための技術を提供する、いくつかの代表的な例を含む。
【０００９】
本明細書で議論される技術のいくつかを示す例は−全部のまたは包括的な議論と見なされることなく−読者を手助けする。ＡＭＩ環境において、メータは、資源の消費を表している暗号化されたデータを生成し、および、マイクロコントローラユニットの外部に位置するメモリ装置内に暗号化されたデータを記録するように構成されうる。メータは、メモリ上で暗号化された形式で格納される実行可能な命令文を含むアプリケーション（例えば、ソフトウェアプログラム）を利用することができる。マイクロコントローラユニット（および／またはマイクロプロセッサ、プロセッサなど）内で、第１のキャッシュは、メモリ装置から取得された暗号化されたデータのブロックを格納するように構成されうる。データは、消費記録または暗号化されたプログラム命令文などの、任意の暗号化された情報を表すことができる。また、マイクロコントローラユニット内で、解読エンジンは、第１のキャッシュから暗号化されたデータのブロックを取得および解読するように構成されうる。マイクロコントローラユニット内に位置する第２のキャッシュは、解読エンジンから解読されたデータのブロックを受信するように構成されうる。アドレスアライメントモジュールは、プログラムカウンタから入力を受信し、および、オフセットポインタを計算するように構成されうる。オフセットポインタは、アプリケーションプログラムによる使用のための命令レジスタへの送信のために第２のキャッシュ内の解読されたデータのブロック内の特定のワードを示すことができる。アドレス発生器は、アドレスアライメントモジュールから入力を受信し、および、第１のキャッシュ内に読み込まれるメモリ装置内のメモリのブロックを示し、それによって、解読エンジンへ送信される暗号化されたデータを置き換えるように構成されうる。
【００１０】
本明細書での議論は、いくつかの節を含む。議論、図面、および各節は、技術および／または構造の例であることを意図しており、使用および／または実行されなければならない要素を示すことを意図していない。より具体的には、この全体の説明は、外部メモリ解読のために構成されたマイクロコントローラで利用されうる要素および技術を示すことを意図しており、必ず要求される要素または技術を示すことを意図していない。議論は、本明細書で説明される技術を実装できる１つの環境を説明する「例示的ネットワーク」という題名の節で始まる。この節は、マイクロコントローラおよび／またはプロセッサの外部にあるメモリ装置上の暗号化されたデータとともに使用するための技術を含むことができる、ＡＲＡの例を描写および説明する。次に、「例示的マイクロコントローラユニット」という題名の節が、マイクロコントローラユニットの例を例示および説明し、および、外部メモリ装置との関係も示す。この節は、外部メモリ装置から取得されたデータを解読することを含む、代表的な機能性を実行する例示的な構造を提供する。第３の節、「例示的方法」という題名の節は、プロセッサ、メモリ装置、特定用途向け集積回路（ＡＳＩＣ）などを含む装置で操作可能である方法の態様を議論する。特に、例示的方法は、本明細書で議論される技術のいずれかに適用されうる。次に、「外部メモリ解読の例示的方法」という題名の節は、マイクロコントローラの外部にあるメモリ装置上の暗号化されたデータを読み取り、解読、および管理するために使用されうる態様を例示および説明する。最後に、議論は、短い結論で終了する。
【００１１】
節の題名および対応する要約を含むこの短い序文は、読者の利便のために提供され、および、本開示の請求項または任意の節の範囲を説明および／または限定することを意図していない。
【００１２】
（例示的ネットワーク）
図１は、ＡＲＡまたは他のネットワークでありうる、例示的ネットワーク１００を示す図である。図１は、インターネットなどのネットワーク１０６によって中央局１０４へ接続されうる、ルートまたはルータノード１０２Ａを含む、複数のノード１０２を示している。ネットワーク内で、ノードは、無線ＲＦリンク１０８、電力線通信（すなわち、電気出力送電系統で流れる電流上で重ねられた信号）、または他の媒体によって通信することができる。例示的ネットワーク１００は、特定の場合として提供され、ネットワーク環境での暗号化されたデータの使用および管理のより一般的な概念を示し、要求されるおよび／または必要不可欠な要素を示さない。特に、例示的ネットワーク１００は、マイクロコントローラおよび外部メモリ装置を利用するノードの例を示すために使用されるであろう。特に、マイクロコントローラは、暗号化されたデータおよび／または暗号化されたプログラム命令文を利用することができるノード上で動作するアプリケーションに関連付けられたソフトウェアコードを実行することができる。
【００１３】
ネットワークアーキテクチャ１００は、無線通信能力を有する複数のユーティリティメータを含むＡＭＩネットワークなどのスマートグリッドとして構成されうる。ユーティリティメータは、電気、天然ガス、水道、または他の消費可能資源の消費を測定することができる。中央局１０４は、サーバ、パーソナルコンピュータ、ラップトップコンピュータなどの１つまたは複数のコンピューティング装置によって実装されうる。１つまたは複数のコンピューティング装置は、メモリと通信で連結された１つまたは複数のプロセッサを備えうる。いくつかの例において、中央局１０４は、１つまたは複数のノード１０２から受信されたデータの処理、分析、記憶、および／または管理を実行する、集中型のメータデータ管理システムを含む。例えば、中央局１０４は、スマートユーティリティメータ、センサ、制御装置、ルータ、調整器、サーバ、中継器、切替器、バルブ、および／または他のノードから取得されたデータを処理、分析、格納、および／または管理することができる。図１の例は、単一の位置で中央局１０４を示しているけれども、いくつかの例において、中央局は、複数の位置間で分散されてよく、および／または、完全に除去されてよい（例えば、非常に非集中型の分散されたコンピューティングプラットフォームの場合）。
【００１４】
ネットワーク１０６は、無線または有線ネットワーク、またはインターネットなどのそれらの組み合わせを含むことができる。ネットワーク１０６は、単一の巨大ネットワークとして機能することができる、個別のネットワークおよび／または相互接続されたネットワークの集合とすることができる。
【００１５】
ネットワークアーキテクチャ１００は、直接通信ＲＦ信号、電力線通信（ＰＬＣ）リンク、または他の種類の送信を介して互いに通信で連結される、複数のノード１０２Ａ、１０２Ｂ、１０２Ｃ、１０２Ｄ、・・・１０２Ｎ（まとめてノード１０２と呼ばれる）を含むことができる。いくつかのノードは、ユーティリティメータに関連付けられうる。この例において、Ｎは、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、近隣エリアネットワーク（ＮＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、上記の組み合わせなどとして構成されうる、ＡＲＡ内のノードの例示的な数を表す。
【００１６】
ノード１０２Ａは、「ルート」、「ルートノード」、「フィールドエリアルータ」、または同様のものであるとみなされ、および、ネットワーク１０６などのバックホールネットワークによって中央局１０４内のサーバとＡＲＡを接続するように構成されうる。ノード１０２は、信号１０８によって通信し、データ、情報、報告、クエリ、およびパケットなどのアップストリームおよびダウンストリーム伝達の両方を容易にすることができる。
【００１７】
ノード１０２Ｂの詳細は、無線機１１０を含み、無線機１１０は、ＲＦ信号１０８による通信のために構成される。無線機１１０は、複数のチャネル／周波数のうちの１つまたは複数を介してＲＦ信号を送信および／または受信するように構成されたＲＦ送受信機を備えることができる。無線実装の１つの例において、ノード１０２は、各通信リンク１０８上の制御チャネルおよび複数のデータチャネルなどの複数の異なるチャネル上のデータを送信および受信するように構成された単一の無線機１１０を含むことができる。無線機１１０は、また、複数の異なる変調技術、データレート、プロトコル、信号強度、および／または電力レベルを実装するように構成されうる。加えて、無線機は、「周波数ホッピング」方式において、短い期間ごとに、複数の異なる周波数を連続して整調するように構成されうる。他の実施形態において、ノードの各々は、有線通信のために構成されうる。例としてであり、限定しないが、有線通信は、電力線通信（ＰＬＣ）またはイーサネット（登録商標）などの他の有線通信ネットワーク技術を含むことができる。ノード１０２は、異なる種類のノード（例えば、スマートメータ、セルラ中継器、センサなど）、ノードの異なる世代またはモデル、および／またはさもなければ異なるチャネル上で送信することおよび異なる変調技術、データレート、プロトコル、信号強度、および／または電力レベルを使用することができるノードを含むことができるという点において、ネットワーク１００のアーキテクチャは、ノードのヘテロジニアスネットワークを表す。
【００１８】
メータ１１２は、電気メータ、天然ガスメータ、水道メータ、または他のメータとすることができる。メータ１１２は、１つまたは複数のアプリケーションと協働して動作することができ、および、暗号化または非暗号化された状態でデータを作ることができる。１つの例において、処理装置またはマイクロコントローラは、制御およびメータ１１２とのデータ交換インターフェースを提供することができる。メータは、暗号化されたデータをアプリケーションへ提供することができ、または、アプリケーションはメータから受信したデータを暗号化することができる。暗号化されたデータは、外部メモリに格納されうる（すなわち、ソフトウェアアプリケーションが動作するマイクロコントローラの一部ではなく、「外部」にあるメモリ）。
【００１９】
処理装置１１４は、メモリ１１８と通信で連結される１つまたは複数のプロセッサ１１６を含むことができる。プロセッサ１１６は実行し、および、メモリ１１８は、様々なソフトウェア命令文、ソフトウェアモジュール、手順、管理、アルゴリズムなどを含むことができる。そのような機能ブロックは、ソフトウェアおよび／またはファームウェアで構成され、プロセッサ１１６によって実行可能でありうる。代替の実施形態において、プロセッサ１１６、メモリ１１８、および／またはプロセッサおよびメモリ上で操作可能であるソフトウェアのいくつかまたは全部は、ハードウェアによって全体または一部で実装されうる。ハードウェアの例は、特定用途向け集積回路（ＡＳＩＣ）または説明される機能を実行するように構成される他の装置などの、マイクロコントローラまたは他のデジタル装置を含む。
【００２０】
１つの例において、プロセッサ１１６の１つ、いくつか、または全部は、外部メモリ解読のために構成されたマイクロコントローラユニット（ＭＣＵ）１２０とすることができる。ＭＣＵ１２０は、暗号化されたデータ１２２または１つまたは複数の暗号化されたアプリケーション１２４の暗号化されたソフトウェアプログラム命令文を読み取るように構成されうる。例において、ＭＣＵ１２０は、リアルタイムおよび／または「オンザフライ」でデータ１２２および／またはアプリケーション１２４のプログラム命令文を解読する。ゆえに、ＭＣＵ１２０は、解読されたプログラム命令文を実行することができ、および／または解読されたデータを利用することができる。１つの例において、プログラム命令文は、メータ１１２とインターフェースすることができるソフトウェアアプリケーションに関連付けられうる。そのような例において、プログラム命令文の暗号化されたバージョンを表すデータのブロックが解読され、および、解読された命令文が、外部メモリ解読のために構成されたＭＣＵ１２０によって実行される。
【００２１】
メモリ１１８は、モノリシックのエンティティとして示されているが、読み取り専用メモリ、書き込み可能メモリ、永続的または非永続的メモリなどの、複数の同様におよび／または異なるように構成された装置としても構成されうる。メモリ１１８は、１つまたは複数のソフトウェアおよび／またはファームウェアモジュールを格納するように構成されうる。ソフトウェアおよび／またはファームウェアモジュールは、プロセッサ１１６によって実行可能であり、様々な機能を実装する。メモリ１１８は、コンピュータ可読媒体を含むことができ、および、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリおよび／または読み取り専用メモリ（ＲＯＭ）またはフラッシュＲＡＭなどの非揮発性メモリの形をとることができる。コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはコンピューティング装置の１つまたは複数のプロセッサによる実行のための他のデータなどの情報の記憶のための技術または技法に従って実装される、揮発性および非揮発性、取り外し可能および取り出し不可能媒体を含む。コンピュータ可読媒体の例は、限定しないが、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他の種類のランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、または他のメモリ技術、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、または他の光学式記憶、磁気カセット、磁気テープ、磁気ディスク記憶、または他の磁気記憶装置、またはコンピューティング装置によるアクセスのための情報を格納するために使用されうる任意の他の非送信媒体を含む。
【００２２】
本明細書において、コンピュータ可読媒体は、特定用途向け集積回路（ＡＳＩＣ）または他のハードウェア装置の全部または一部を含むことができる。そのようなハードウェア装置は、ＡＭＩ内の帯域幅管理で実行される機能を含む、他の機能性を含むように構成されうる。したがって、そのような集積回路内で、１つまたは複数のプロセッサは、論理、トランジスタまたは他の要素、または基板に取り付けられたメモリによって定義されうる実行可能な命令とともに構成されうる。
【００２３】
示した例において、メモリ１１８は、プロセッサ１１６および／またはＭＣＵ１２０の動作によって実行可能であるプロセッサ実行可能命令によって定義されうる、暗号化されたデータ１２２および１つまたは複数のアプリケーション１２４を含む。したがって、アプリケーション１２４は、ソフトウェア、サブルーチン、プログラムなどとみなされうる。あるいは、プロセッサ１１６および／またはＭＣＵ１２０、メモリ１１８および／またはアプリケーション１２４は、ＡＳＩＣなどの１つまたは複数のハードウェア装置の動作によって定義されうる。
【００２４】
（例示的マイクロコントローラユニット）
図２は、マイクロコントローラユニット（ＭＣＵ）１２０および外部メモリ装置１１８の配置の例２００の略図である。ＭＣＵ１２０は、外部メモリ装置１１８に含まれるデータの解読のために構成されうる。データは、情報、ソフトウェアアプリケーションプログラム命令文などを含むことができる。
【００２５】
メモリ装置１１８は、ＭＣＵ１２０の外部にあり、それゆえ、メモリ装置がＭＣＵ１２０内に完全に含まれた場合よりも、そのデータを盗む者による攻撃に本質的により脆弱である。しかしながら、外部メモリ構成は、メモリ装置１１８が、はるかに安いことを可能にし、また、より容易にアップグレードされるおよび／または置き換えられることを可能にする。攻撃から保護するために、データ１２２およびアプリケーション１２４のソフトウェアプログラム命令文（例えば、ソフトウェアコマンド）の１つまたは両方は、暗号化されうる。したがって、メモリ装置１１８は、ＭＣＵ１２０の外部にあるが、装置内に含まれるデータおよびアプリケーションは、暗号化によって保護されうる。
【００２６】
外部メモリインターフェース２０２は、アドレスバス２０４およびデータバス２０６と接続し、それによって、外部メモリ装置１１８とインターフェースするように構成される。第２の例において、外部メモリは、並列バスとは対照的に、シリアルリンクによってマイクロコントローラユニット１２０に接続されることが可能である。どちらの構成も、同一の解読機構の使用を可能にできる。外部メモリインターフェース２０２は、アドレス出力２０４を制御する、アドレス入力２０８を受信する。データバス２１０は、外部メモリ装置１１８から取得されたデータをキャッシュメモリ２１２へ転送する。
【００２７】
キャッシュメモリ２１２は、外部メモリ２０２から読み取られた暗号化されたデータのブロックを保つように構成されうる。データのブロックは、データバス２１０上で読み取られうる。データバスは、入力２１４によって示される時間に読み取られうる。入力２１４は、アドレス生成器によって制御されうる。１つの例において、キャッシュ２１２の中へ読み取られたデータは、メモリ位置またはレジスタ２１６に格納される。集合的に、メモリ位置２１６は、データの１つのブロックを含むように構成されうる。データのブロックは、１２８ビット、２５６ビット、または他の量とすることができる。１つの例において、ＡＥＳ暗号化によって使用されるデータの１２８ビットブロックに一致する、１２８ビットブロックが使用される。そのような例において、レジスタ２１６は、３２ビットの長さの４ワードなどの、Ｎワードとして、１２８ビットブロックを組織化することができる。そのような例は、電子コードブック（ＥＣＢ）を利用することができ、メッセージは、ブロックに分けられ、各ブロックは別々に暗号化されうる。あるいは、非ＥＣＢ暗号化技術が使用され、より安全を提供することができる。
【００２８】
キャッシュメモリ装置２１２は、データのブロックを解読エンジン２１８へ提供するように構成されうる。解読エンジン２１８は、解読ソフトウェアを操作するように構成された、特殊用途ハードウェア装置または汎用装置とすることができる。より高いスループットを取得するために、ＡＥＳ暗号化データを解読するように構成された専用ハードウェア装置が使用される。対称鍵は、装置２１８に組み込まれ、または、さもなければそれに対して提供されうる。図２の例において、外部クロック２２０は、解読エンジン２１８の時間を測定するために使用されうるが、内部クロックが代わりに使用されうる。
【００２９】
解読エンジンからの出力は、第２のキャッシュ２２２へ転送されうる。第２のキャッシュ２２２は、複数のレジスタ２２４内のＮワードとして組織化された解読されたデータのブロックを含むように構成されうる。１つの例において、レジスタ２２４は、３２ビットの長さの４ワードとしてデータの解読されたブロックを組織化する。
【００３０】
プログラムカウンタ２２８は、次のまたは適切なアドレスへインクリメントする。次のまたは適切なアドレスの内容は、命令レジスタ２２６の中へ読み取られうる命令を示す。プログラムカウンタ２２８は、オペレーティングシステムまたは他の装置によって制御されうる。プログラムカウンタ２２８からの信号２３０は、アドレスアライメントモジュール２３２によって受信されうる。アドレスアライメントモジュール２３２は、オフセットポインタ２３４を計算することができ、オフセットポインタは、命令レジスタ２２６へ送信されるべき解読されたデータを有する第２のキャッシュ２２２のレジスタ２２４はどれかを示す。
【００３１】
１つの例において、プログラムカウンタ２２８は、望ましいプログラム命令を有する外部メモリ１１８のアドレスを含む。しかしながら、データは、すでに外部メモリ１１８から読み取られ、第１のキャッシュ２１２に格納され、解読エンジン２１８によって解読され、次に、解読された形式で第２のキャッシュ２２２に格納された。したがって、プログラムカウンタ２２８によって示されるプログラム命令の解読された形式は、第２のキャッシュメモリ２２２のレジスタ２２４の１つに含まれる。アドレスアライメントモジュール２３２は、オフセットポインタ２３４を使用して、適切なレジスタを示す。
【００３２】
アドレス生成器２３８は、アドレスアライメントモジュール２３２から入力２３６を受信することができる。入力は、第１のキャッシュ２１２内の記憶装置のために外部メモリ１１８からフェッチするための、データのブロックのアドレスにアドレス生成器２３８が変換する、アドレスを示すことができる。アドレス生成器２３８は、アドレスバス２０８／２０４上にアドレスを置いて、外部メモリ１１８からの望ましいデータを選択することができる。１つの例において、アドレス生成器２３８は、可変メモリ装置サイズに適応するために十分なアドレススペースを有することによってなど、異なる幅のアドレスバスに順応するように構成される。アドレスがバス上であるとき、出力２１４は、アドレス生成器２３８が、データバス２１０／２０６を読み取るための時間を第１のキャッシュへ通知することを可能にする。
【００３３】
任意で、アドレスアライメントモジュール２３２およびアドレス生成器２３８の機能性は、組み合わせられうる。そのような構成において、統合されたアドレスアライメントおよび生成モジュールは、オフセットポインタ２３４を第２のキャッシュメモリ２２２へ提供し、外部メモリからフェッチされるべきメモリのブロックのアドレスを示す出力２０８を生成し、およびデータバス２１０上でデータを受信するために信号２１４を第１のキャッシュ２１２へ提供するように構成されうる。
【００３４】
クロック２４０は、クロック信号を、命令レジスタ２２６、プログラムカウンタ２２８、および他のマイクロコントローラ機能性２４２へ提供するために使用されうる。マイクロコントローラ機能性２４２は、既知のマイクロコントローラに存在する、および、本明細書で説明されていない、複数の機能を含むことができる。１つの例において、解読エンジン２１８を操縦するクロック２２０は、クロック２４０より高い周波数のものとすることができるが、正確な設計パラメータは、実装に応じて変化しうる。
【００３５】
（例示的方法）
図３の例示的方法は、図１および２の構成によって少なくとも一部分において実装されうる。しかしながら、図３は、一般的な適用性を含み、他の図面の図および／または前の議論によって限定されない。本明細書で説明される各方法は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装されうる一連の動作を表す、論理流れ図における行動、ブロック、または動作の収集として示される。ソフトウェアの状況において、動作は、１つまたは複数のプロセッサによって実行されるときに、記載された動作を実行する、１つまたは複数のコンピュータ可読記憶媒体上に格納されたコンピュータ実行可能命令を表す。そのような記憶媒体、プロセッサ、およびコンピュータ可読命令は、望ましい設計または実装に従って、ＭＣＵ（例えば、図１および２のＭＣＵ１２０）内に置かれうる。図１および２に見られる記憶媒体は、一般的に取り外し可能と取り外し不可能との両方であり、および任意の技術の記憶媒体の代表である。ゆえに、記載される動作は、図３で説明されるものなどの行動を表し、および、示された行動を実行するための実行可能命令と共に構成される１つまたは複数のプロセッサの制御のもとで行なわれる。一般的に、コンピュータ可読命令は、特定の機能を実行または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図しておらず、説明される動作は、方法を実装するために、異なる順序および／または並列で組み合わせられうる。上記の議論は、本明細書で説明される他の方法に適用することができる。
【００３６】
（外部メモリ解読の例示的方法）
図３は、マイクロコントローラユニット（ＭＣＵ）が外部メモリに含まれるデータの解読を提供するために動作することができる、例示的方法３００を示す流れ図である。動作３０２において、その内容がフェッチされるべきであるメモリ内の第１のアドレスが、生成される。図２の例において、プログラムカウンタ２２８は、アドレス２３０をアドレスアライメントモジュール２３２へ与えることができる。アドレスアライメントモジュール２３２は、アドレス２３６を生成することができ、アドレス２３６はアドレス生成器２３８へ送信される。
【００３７】
動作３０４において、暗号化されたデータのブロックは、外部メモリ装置からフェッチされる。フェッチすることは、データの解読の完了、オフセットポインタを第２のキャッシュ内の最後のワードへインクリメントすること、または他のタイミングイベントに応答して実行されうる。図２の例の状況において、１２８ビットブロックは、ＡＥＳ暗号化と互換性がある大きさであり、外部メモリ装置１１８からフェッチされる。データのブロックは、暗号化されたコンピュータソフトウェアプログラム命令文またはデータ情報を備えることができる。ブロックは、外部メモリインターフェース２０２の動作を通じてフェッチされうる。外部メモリインターフェースは、アドレスバス２０４およびデータバス２０６へアタッチされうる。アドレスはアドレスバスに置かれ、対応するデータがデータバスから読み取られる。
【００３８】
動作３０６において、暗号化されたデータのフェッチされたブロックは、第１のキャッシュメモリに格納される。図２の例の状況において、暗号化されたデータのブロックのＮワードは、第１のキャッシュ２１２内のＮレジスタ２１６に格納されうる。１つの例において、１２８ビットブロックは、各々が３２ビットの長さである、４レジスタに格納される。
【００３９】
動作３０８において、第１のキャッシュメモリから取得されたデータは、解読される。図２の例の状況において、第１のキャッシュ２１２からのデータは、解読エンジン２１８へ転送される。解読エンジン２１８は、エンジンに組み込まれた鍵（例えば、対称鍵）を使用して、暗号化されたデータの１２８ビットブロックを解読するように構成されうる。解読エンジン２１８は、ＭＣＵで利用可能である最速のクロック２２０を使用することができる、動作の速いハードウェア装置として構成されうる。クロック２２０は、プログラムカウンタまたはマイクロコントローラユニットの他の領域に提供されるクロック信号より速いクロック信号を解読エンジンへ提供することができる。
【００４０】
動作３１０において、解読されたデータは、第２のキャッシュメモリ内に格納される。図２の例の状況において、解読されたデータは、第２のキャッシュメモリ２２２内の記憶装置のための解読エンジン２１８からの出力である。アドレスアライメントモジュール、アドレス生成器、および／または、他の装置は、解読エンジンに信号を送って、新たに解読されたデータで第２のキャッシュを上書きする。第２のキャッシュの上書きは、オフセットポインタ２３４をリセットする。示される例において、データの解読された１２８ビットブロックは、レジスタ２２４内で３２ビットの長さの４ワードとして格納される。しかしながら、他のデータブロックおよびワードの長さのサイズは、使用される暗号化技術および解読エンジンの設計に応じて、可能である。
【００４１】
動作３１２において、プログラムカウンタからのアドレスが受信される。アドレスは、マイクロコントローラによって実行される、および／または、マイクロコントローラのためにフェッチされる次の命令文を示す。図２の例の状況において、プログラムカウンタ２２８は、オペレーティングシステム、他の装置のアプリケーション、および／またはオブジェクトによってインクリメントされうる。プログラムカウンタ２２８の出力２３０は、アドレスアライメントモジュール２３２へ転送される。
【００４２】
動作３１４において、第２のキャッシュにおけるワード（例えば、データ要素）へのオフセットが計算される。ワードは、プログラムカウンタによって提供されたアドレスによって示される命令またはデータを表す。計算することは、オフセットポインタをインクリメントして、第２のキャッシュ内に含まれるワードを示すことを含むことができる。インクリメントすることは、プログラムカウンタによる行動に基づいている。図２の例の状況において、アドレスアライメントモジュール２３２は、プログラムカウンタ２２８から受信されたアドレスを処理する。特に、アドレスアライメントモジュール２３２は、外部メモリ１１８内の位置からの受信されたアドレスを、第２のキャッシュ２２２内のレジスタ２２４へマッピングする。したがって、第２のキャッシュ２２２に位置するレジスタ２２４は、外部メモリ１１８内のアドレスの解読されたバージョンを含み、それゆえ、ＭＣＵによって使用可能である。特定のレジスタ２２４は、オフセットまたはオフセットポインタ２３４によって示されうる。ゆえに、オフセットポインタ２３４によって示されるレジスタ内のデータは、外部メモリ１１８にもともと存在する、プログラムカウンタ２２８によって示されるデータの解読されたバージョンである。すなわち、プログラムカウンタ２２８の出力２３０は、解読されおよびオフセットポインタ２３４によって指し示された第２のキャッシュ２２２内のレジスタ２２４へ移動されてきた、外部メモリ１１８内の位置へのアドレスである。
【００４３】
動作３１６において、オフセットによって示されたデータワードは、命令レジスタへ提供される。したがって、プログラムカウンタによって提供されたアドレスによって示されるデータは、第２のキャッシュで見られる解読された形式で、プログラムカウンタへ提供される。図２の例の状況において、第２のキャッシュ２２２内の適切なレジスタ２２４は、命令レジスタ２２６へ複製される。
【００４４】
動作３１８において、外部メモリ内のアドレスは、データの追加ブロックをフェッチするときに使用するために計算される。図２の例の状況において、アドレスアライメントモジュール２３２は、出力２３６内でアドレスをアドレス生成器２３８へ提供する。アドレス生成器２３８は、受信したアドレスに基づいて、フェッチされるべき次のデータのブロックへのアドレスを計算する。ゆえに、プログラムカウンタ２２８から受信されたアドレスに関連付けられうる外部メモリ１１８内のアドレスの計算は、直前にフェッチされた外部メモリ内のデータのブロックに続く外部メモリ内のデータのブロックを決定することを含むことができる。
【００４５】
動作３２０において、暗号化されたデータの第２のブロックは、外部メモリからフェッチされる。メモリの第２のブロックは、動作３１８において計算されたアドレスと関連付けられる。図２の例の状況において、アドレス生成器２３８は、適切なアドレスを、外部メモリインターフェース２０２へ提供し、信号２１４を第１のキャッシュメモリ２１２へ提供して外部メモリ装置１１８からデータを受信することができる。１つの例において、第２のブロックは、オフセットポインタ２３４が第２のキャッシュ２２２内の最後のワードまたはレジスタ２２４を指し示したときなど、あるタイミングイベントの後にフェッチされうる。さらなる例において、第２のブロックは、オフセットポインタが第２のキャッシュ内の各レジスタを指し示した後にフェッチされうる。オフセットポインタは、次に、オフセットポインタが最後のレジスタを指し示しているときのオフセットポインタのインクリメントに応答するなど、第１のレジスタで指し示すためにリセットされうる。
【００４６】
複数の動作は、並列で実行されうることに留意すべきである。例示のみの目的のために１つの例として、暗号化されたデータのブロックをフェッチすること（動作３０２、３１８）、第１のキャッシュメモリから取得されたデータを解読すること（動作３０６）、およびオフセットによって示されるワードを提供すること（動作３１４）は、すべて同時に実行されうる。
【００４７】
（結論）
発明特定事項は、構造上の特徴および／または方法論の動作にとって特有の専門用語で説明されてきたが、添付された請求項で定義される発明特定事項は必ずしも説明される特定の特徴または動作を限定しないことが理解されるべきである。むしろ、特定の特徴および動作は、請求項を実装する例示的な形式として開示される。
【図１】
0005990635.tif 000002
【図２】
0005990635.tif 000003
【図３】
0005990635.tif 000004