(57)【特許請求の範囲】
【請求項１】
データの認証を可能にするために前記データを記憶するための方法であって、
処理回路で、主キー、記憶されるべきデータユニット、前記データユニットに対応するインデックス、および前記インデックスに対応する副キーに基づいて、メッセージ認証コードを取得するステップであって、前記副キーが、前記メッセージ認証コードより短く、かつロールバック攻撃を効果的に低減するには十分長い、ステップと、
前記メッセージ認証コードおよび前記データユニットを、前記処理回路に結合された第1のストレージデバイス内に記憶するステップであって、前記第1のストレージデバイスがオフチップストレージデバイスである、ステップと、
前記データユニットに関する前記副キーを、前記処理回路に結合された第2のストレージデバイス内に記憶するステップであって、前記第2のストレージデバイスがオンチップストレージデバイスである、ステップと、
前記処理回路で、前記第1のストレージデバイス内に記憶されるべき対応するデータユニットの前記第1のストレージデバイスへの各新しいデータ書込み動作時に、新しい副キーを取得するステップと、
前記処理回路で、前記主キー、前記第1のストレージデバイスから取り出された前記データユニット、および前記第2のストレージデバイスから取り出されたその対応する副キーに基づいて、新しいメッセージ認証コードを取得するステップと、
前記処理回路で、前記取り出されたデータユニットに関して前記第1のストレージデバイスから前記対応するメッセージ認証コードを取得し、前記新しいメッセージ認証コードを前記対応するメッセージ認証コードと比較するステップであって、前記新しいメッセージ認証コードと前記対応するメッセージ認証コードとが同一である場合、認証が成功する、ステップと
を含む、方法。
【請求項２】
前記インデックスに基づいて、対応する副キーを前記第2のストレージデバイスから取得するステップと、
前記主キーを取得するステップであって、前記主キーは前記第2のストレージデバイスから取得される、ステップと
によって、前記第1のストレージデバイス内に記憶された前記データユニットを認証するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記副キーが、前記主キーよりも短い、請求項1に記載の方法。
【請求項４】
前記メッセージ認証コード(MAC)が、グローバル主キー(K)、データユニットごとの副キー(Ni)、前記データユニット(Mi)、および対応するデータユニットインデックス(i)に基づいて、前記データユニットインデックス(i)に関して取得されたタグ(Ti)である、請求項1に記載の方法。
【請求項５】
前記タグ(Ti)が、前記グローバル主キー(K)、前記副キー(Ni)、および前記データユニット(Mi)に基づいて、メッセージ認証アルゴリズム(MAA)を前記対応するデータユニットインデックス(i)に適用することによって取得される、請求項4に記載の方法。
【請求項６】
前記メッセージ認証コード(MAC)を取得するために前記MAAが前記グローバル主キー(K)を用いて適用される前に、特定の副キー(Ni)、対応するインデックス(i)、および前記データユニット(Mi)を連結させるステップをさらに含む、請求項5に記載の方法。
【請求項７】
前記副キーがランダム値または疑似ランダム値のうちの1つである、請求項1に記載の方法。
【請求項８】
すべての副キー値が最初にゼロに設定され、すべての後続の副キーが非ゼロ値に設定される、請求項1に記載の方法。
【請求項９】
前記方法が、オフチップストレージデバイスに結合されたシステムオンチップデバイス内で動作可能である、請求項1に記載の方法。
【請求項１０】
前記方法が、オンチップストレージデバイスを有するシステムオンチップデバイス内で動作可能である、請求項1に記載の方法。
【請求項１１】
前記副キーは、初期に、ゼロに設定され、かつ、すべての後続の副キーは、非ゼロ値に設定される、請求項1に記載の方法。
【請求項１２】
データユニットおよびメッセージ認証コードを記憶するための第1のストレージデバイスであって、前記第1のストレージデバイスがオフチップストレージデバイスである、第1のストレージデバイスと、
前記第1のストレージデバイスの前記データユニットを認証するために認証キーを記憶するための第2のストレージデバイスであって、前記第2のストレージデバイスがオンチップストレージデバイスである、第2のストレージデバイスと、
前記第1のストレージデバイスおよび前記第2のストレージデバイスに結合された処理回路と
を含むデバイスであって、前記処理回路が、
主キー、記憶されるべきデータユニット、前記データユニットに対応するインデックス、および前記インデックスに対応する副キーに基づいて、メッセージ認証コードを取得し、前記副キーが、前記メッセージ認証コードより短く、かつロールバック攻撃を効果的に低減するには十分長く、
前記メッセージ認証コードおよび前記データユニットを前記第1のストレージデバイス内に記憶し、
前記データユニットに関する前記副キーを前記第2のストレージデバイス内に記憶し、
前記第1のストレージデバイス内に記憶されるべき対応するデータユニットの前記第1のストレージデバイスへの各新しいデータ書込み動作時に、新しい副キーを取得し、
前記処理回路で、前記主キー、前記第1のストレージデバイスから取り出された前記データユニット、および前記第2のストレージデバイスから取り出されたその対応する副キーに基づいて、新しいメッセージ認証コードを取得し、
前記処理回路で、前記取り出されたデータユニットに関して前記第1のストレージデバイスから前記対応するメッセージ認証コードを取得し、前記新しいメッセージ認証コードを前記対応するメッセージ認証コードと比較し、前記新しいメッセージ認証コードと前記対応するメッセージ認証コードとが同一である場合、認証が成功する
ように構成される、デバイス。
【請求項１３】
前記処理回路が、
前記インデックスに基づいて、対応する副キーを前記第2のストレージデバイスから取得することと、
前記主キーを取得することとであって、前記主キーは前記第2のストレージデバイスから取得される、取得すること
によって、前記第1のストレージデバイス内に記憶された前記データユニットを認証するようにさらに構成される、請求項12に記載のデバイス。
【請求項１４】
前記処理回路が、すべての副キー値を最初にゼロに設定し、すべての後続の副キー値を非ゼロ値に設定するようにさらに構成される、請求項12に記載のデバイス。
【請求項１５】
前記デバイスが、システムオンチップデバイス内で統合される、請求項12に記載のデバイス。
【請求項１６】
前記副キーは、初期に、ゼロに設定され、かつ、すべての後続の副キーは、非ゼロ値に設定される、請求項12に記載のデバイス。
【請求項１７】
主キー、記憶されるべきデータユニット、前記データユニットに対応するインデックス、および前記インデックスに対応する副キーに基づいて、メッセージ認証コードを取得するための手段であって、前記副キーが、前記メッセージ認証コードより短く、かつロールバック攻撃を効果的に低減するには十分長い、手段と、
前記メッセージ認証コードおよび前記データユニットを第1のストレージデバイス内に記憶するための手段であって、前記第1のストレージデバイスがオフチップストレージデバイスである、手段と、
前記データユニットに関する前記副キーを第2のストレージデバイス内に記憶するための手段であって、前記第2のストレージデバイスがオンチップストレージデバイスである、手段と、
記憶されるべき対応するデータユニットの前記第1のストレージデバイスへの各新しいデータ書込み動作時に、新しい副キーを取得するための手段と、
前記主キー、前記第1のストレージデバイスから取り出された前記データユニット、および前記第2のストレージデバイスから取り出されたその対応する副キーに基づいて、新しいメッセージ認証コードを取得するための手段と、
前記取り出されたデータユニットに関して前記第1のストレージデバイスから前記対応するメッセージ認証コードを取得し、前記新しいメッセージ認証コードを前記対応するメッセージ認証コードと比較するための手段であって、前記新しいメッセージ認証コードと前記対応するメッセージ認証コードとが同一である場合、認証が成功する、手段と
を含む、デバイス。
【請求項１８】
前記インデックスに基づいて、対応する副キーを前記第2のストレージデバイスから取得するための手段と、
前記主キーを取得するための手段であって、前記主キーは前記第2のストレージデバイスから取得される、手段と
をさらに含む、請求項17に記載のデバイス。
【請求項１９】
前記メッセージ認証コード(MAC)を取得するための前記手段が、グローバル主キー(K)、データユニットごとの副キー(Ni)、記憶されるべき前記データユニット(Mi)、および対応するデータユニットインデックス(i)に基づいて、前記データユニットインデックス(i)に関するタグ(Ti)としてMACを取得するための手段を含む、請求項17に記載のデバイス。
【請求項２０】
前記メッセージ認証コード(MAC)を取得するための前記手段が、前記グローバル主キー(K)、前記副キー(Ni)、および記憶されるべき前記データユニット(Mi)に基づいて、メッセージ認証アルゴリズム(MAA)を前記対応するデータユニットインデックス(i)に適用するための手段を含む、請求項19に記載のデバイス。
【請求項２１】
新しい副キー値をゼロに設定し、後続の副キー値を非ゼロ値に設定するための手段をさらに含む、請求項17に記載のデバイス。
【請求項２２】
少なくとも1つの処理回路によって実行されると、前記少なくとも1つの処理回路に、
主キー、記憶されるべきデータユニット、前記データユニットに対応するインデックス、および前記インデックスに対応する副キーに基づいて、メッセージ認証コードを取得させ、前記副キーが、前記メッセージ認証コードより短く、かつロールバック攻撃を効果的に低減するには十分長く、
前記メッセージ認証コードおよび前記データユニットを第1のストレージデバイス内に記憶させ、前記第1のストレージデバイスがオフチップストレージデバイスであり、
前記データユニットに関する前記副キーを第2のストレージデバイス内に記憶させ、前記第2のストレージデバイスがオンチップストレージデバイスであり、
記憶されるべき対応するデータユニットの前記第1のストレージデバイスへの各新しいデータ書込み動作時に、新しい副キーを取得させ、
前記主キー、前記第1のストレージデバイスから取り出された前記データユニット、および前記第2のストレージデバイスから取り出されたその対応する副キーに基づいて、新しいメッセージ認証コードを取得させ、
前記取り出されたデータユニットに関して前記第1のストレージデバイスから前記対応するメッセージ認証コードを取得させ、前記新しいメッセージ認証コードを前記対応するメッセージ認証コードと比較させ、前記新しいメッセージ認証コードと前記対応するメッセージ認証コードとが同一である場合、認証が成功する、
1つまたは複数の命令を有する、非一時的機械可読記憶媒体。
【請求項２３】
少なくとも1つの処理回路によって実行されると、前記少なくとも1つの処理回路に、
前記インデックスに基づいて、対応する副キーを前記第2のストレージデバイスから取得させることと、
前記主キーを取得させることであって、前記主キーは前記第2のストレージデバイスから取得される、取得させることと
の1つまたは複数の命令をさらに有する、請求項22に記載の非一時的機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、内容全体が参照により本明細書に組み込まれる、2014年3月11日に米国特許商標庁に出願した、米国非仮特許出願第14/205,226号の優先権および利益を主張するものである。
【０００２】
様々な特徴は、データ認証に関し、詳細には、モバイルコンピューティングデバイス内に記憶されたデータとともに用いるためのメッセージ認証コード(MAC)タグに関する。
【背景技術】
【０００３】
データの完全性/認証は、MACタグなど、データとともにタグまたはハッシュを記憶することによって、データストレージシステム内に提供され得る。たとえば、MACタグは、メッセージ認証アルゴリズム(MAA)を秘密鍵およびデータに適用することによって記憶されるべきデータユニットとともに使用するために生成され得る。データユニットおよびMACタグは、次いで、メモリデバイスなどのストレージデバイス内に記憶される。その後、データユニットがストレージから読み取られるとき、取り出されたデータと元の秘密鍵とに基づいて、新しいMACタグが生成される。新しいMACタグが記憶されたMACタグと異なる場合、データユニットは破損されているとして拒否される。新しいMACタグが記憶されたMACタグと同じ場合、データはそれによって認証され、信頼できると見なされる。しかしながら、データが経時的に正当に更新される場合、攻撃者はストレージデバイス内の有効な(データユニット、タグ)対を古い(データユニット、タグ)対と置換する可能性がある。これがロールバック攻撃の1例である。具体的には、この問題は、たとえば、モバイルワイヤレスデバイス内で使用されるタイプのよりセキュアなシステムオンチップ(SoC)処理回路の外部であるオフチップストレージなど、比較的非セキュアなストレージデバイス内にデータが記憶されるときに発生し得る。そのようなストレージシステムが受けやすい攻撃のもう1つの形態は、攻撃者が、古いロケーションと比較して新しいロケーションに配置されたときに結果として生じる解読データが同じになることを期待して、暗号化データのある部分を別のロケーションからの暗号化データのある部分と置換するカットアンドペースト攻撃である。これらの形態の攻撃の低減は高価な場合があるが、これは、効果的な低減は、オンチップストレージ内など、セキュアなストレージ内に状態データを記憶することを必要とし得るためである。たとえば、極端な場合、オフチップストレージ内のデータのロールバック攻撃を完全に防ぐために、すべてのタグをセキュアなオンチップストレージ内に記憶することができる。そのような実装は、記憶要件および性能要件により、実際的でない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、様々なタイプの攻撃からデータの完全性を保護する必要性が存在する。
【課題を解決するための手段】
【０００５】
データの認証を可能にするためにデータを記憶するための方法は、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、およびデータユニットに関する副キーに基づいてメッセージ認証コードを取得するステップと、メッセージ認証コードおよびデータユニットを第1のストレージデバイス内に記憶するステップと、データユニットに関する副キーを第2のストレージデバイス内に記憶するステップとを含む。
【０００６】
別の態様では、デバイスは、データユニットおよびメッセージ認証コードを記憶するための第1のストレージデバイスと、第1のストレージデバイスのデータユニットを認証するために認証キーを記憶するための第2のストレージデバイスと、第1のストレージユニットおよび第2のストレージユニットに結合された処理回路とを含み、処理回路は、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、およびデータユニットに関する副キーに基づいてMACを取得し、MACおよびデータユニットを第1のストレージデイバス内に記憶し、データユニットに関する副キーを第2のストレージデバイス内に記憶するように構成される。
【０００７】
さらに別の態様では、デバイスは、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、およびデータユニットに関する副キーに基づいてMACを取得するための手段と、MACおよびデータユニットを第1のストレージデバイス内に記憶するための手段と、データユニットに関する副キーを第2のストレージデバイス内に記憶するための手段とを含む。
【０００８】
さらに別の態様では、機械可読記憶媒体は、少なくとも1つの処理回路によって実行されると、少なくとも1つの処理回路に、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、およびデータユニットに関する副キーに基づいてMACを取得させ、MACおよびデータユニットを第1のストレージデバイス内に記憶させ、データユニットに関する副キーを第2のストレージデバイス内に記憶させる1つまたは複数の命令を含む。
【図面の簡単な説明】
【０００９】
【図１】説明のための例によるモバイル通信デバイスのシステムオンチップ(SoC)処理回路を示すブロック図である。
【図２】セキュアなストレージデバイス内に記憶するために副キーを活用するロールバック低減手順の概要を示す図である。
【図３】図2の一般手順とともに使用するための例示的なデータストレージ構成要素を示す図である。
【図４】副キーを活用するオフチップストレージへの書込み動作のために図2の一般手順とともに使用するための例示的な方法を示す図である。
【図５】副キーを活用するオフチップストレージからの読取り動作のために図2の一般手順とともに使用するための例示的な方法を示す図である。
【図６】副キーを活用するオフチップストレージへの書込み動作のために図2の一般手順とともに使用するための例示的なシステムを示す図である。
【図７】副キーを活用するオフチップストレージからの読取り動作のために図2の一般手順とともに使用するための例示的なシステムを示す図である。
【図８】図1〜図7のシステム、方法、および装置を活用することができる処理システムを用いる装置に関するハードウェア実装態様の例を示すブロック図である。
【図９】図8の処理回路の構成要素を示すブロック図である。
【図１０】図8の機械可読媒体の命令構成要素を示すブロック図である。
【図１１】データの認証を可能にするためにデータを記憶するための例示的な方法を要約する図である。
【図１２】記憶されたデータを認証するための例示的な方法を要約する図である。
【発明を実施するための形態】
【００１０】
以下の説明では、本開示の様々な態様を完全に理解することが可能なように具体的な詳細を示す。しかしながら、それらの態様が、これらの具体的な詳細なしに実施できることが、当業者には理解されよう。たとえば、態様を不必要に詳しく説明して曖昧にすることを避けるために、回路がブロック図で示される場合がある。他の例では、本開示の態様を曖昧にしないように、周知の回路、構造、および技術は詳細には示されていない場合がある。
【００１１】
「例示的な」という言葉は、「例、事例、または例示として役立つ」ことを意味するように本明細書で使用される。「例示的」として本明細書で説明する任意の実装態様または態様は、必ずしも本開示の他の態様よりも好ましいまたは有利であると解釈されるべきではない。同様に、「態様」という用語は、本開示のすべての態様が、論じた特徴、利点、または動作のモードを含むことを必要としない。
【００１２】
概説
いくつかの新規の特徴は、取出しの際に、データの認証を可能にするために、メモリデバイスなどのストレージデバイス内にデータを記憶することに関する。これらの新規の特徴は、DDR RAMなど、より大型であるが、よりセキュアでないオフチップストレージデバイスとともに使用するためのSRAMなど、比較的小型であるが、セキュアなオンチップストレージデバイスを有するシステム内で使用され得る。しかしながら、本明細書で説明する特徴は、広範囲なシステムにおいて、および様々な目標を達成するために適用可能である。
【００１３】
一態様では、SoC処理回路のデータ認証構成要素は、オフチップストレージデバイス内に記憶されるべきデータとともに使用するためのMACタグを取得し、MACタグは、主キー、記憶されるべき特定のデータユニットまたはメッセージ、データユニットに関する対応するインデックス(ページインデックスなど)、およびデータユニットに関する副キー(N)に基づく。たとえば、MACは、グローバル主キー(K)、データユニットごとの副キー(Ni)、および記憶されるべきデータユニット(Mi)に基づいて、メッセージ認証アルゴリズム(MAA)を対応するデータユニットインデックス(i)に適用することによって取得されるタグであり得る。MACおよび対応するデータユニットはオフチップストレージデバイス内に記憶される。しかしながら、副キーは、SoCの一部を形成する、よりセキュアなオンチップストレージ内に記憶される。本明細書で説明する様々な例では、各新しいデータ書込み動作時に新しい副キーが取得される。すなわち、データが変更され、新しい値がオフチップストレージに書き込まれるたびに、副キーが新しいランダム値または疑似ランダム値でロードされ、その値がよりセキュアなオンチップストレージデバイス内に記憶される。したがって、副キーは、予測不可能であり、潜在的な攻撃者に知られていない。副キーは暗黙的にセキュアなオンチップストレージデバイス上に記憶されるため、攻撃者が副キーに直接アクセスすることはできない。
【００１４】
この点で、データをデータユニット(または、ページ)内に記憶するシステムを考慮する。メッセージ認証アルゴリズム(MAA)を使用すると、簡単な方法でデータユニットとともに完全性/認証を追加することができる。Miをデータユニットiとして示す。各Miは、たとえば、データユニットMとともに使用するための秘密鍵Kを受け付ける関数F、すなわち、T=F(K,M)として表現されるMAA(または、一般に、任意の疑似ランダム関数(PRF)または鍵導出関数(KDF))を使用して取得される対応するタグTiを有する。たとえば、データがDDR RAM内に記憶される場合、データユニットは、チャンク、セグメント、またはDDR RAMの他の適切な部分を表し得る。しかしながら、Ti=F(K,Mi)の使用は、データのロールバックを防がない。たとえば、Miが、ある時点で、対応するタグ
【００１５】
【数１】
0006320558.tif 000002
【００１６】
を有する
【００１７】
【数２】
0006320558.tif 000003
【００１８】
に、正当に変更される場合、潜在的に敵対的な、または悪意のあるエンティティは、Miで
【００１９】
【数３】
0006320558.tif 000004
【００２０】
を上書きし、Tiで
【００２１】
【数４】
0006320558.tif 000005
【００２２】
を上書きすることができる。その場合、システムは保存されたタグと比較するために取り出されたデータに基づいて新しいタグを生成することになるため、システムはこれらの、前に有効だった値を依然として有効であるとして受け付けることになる。2つのタグは整合することになり、システムは、Mにおけるデータがそのタグとともにロールバックされていることを検出しないことになる。この問題に対する1つの考えられる解決策は、各Tiを内部的に、たとえば、オンチップSRAMまたは暗示的にセキュアな等価物内に記憶することである。しかしながら、この解決策は、ストレージオーバーヘッドおよび性能要件の点であまりにもコストがかかり過ぎる可能性がある。代わりに、本明細書で説明する例示的な手順は、データユニットごとのタグTiがTi=F(K,Ni,i,M)として取得されるように、副キーNおよびそのデータユニットインデックスiに基づいて、追加の入力値をMAAに適用するように動作する。
【００２３】
各副キーがb個のビットを有する例では、ロールバック攻撃に関する成功確率は2-bに過ぎなくなり得る。したがって、1つの攻撃を実行するための時間がおよそ200ミリ秒である例では、かなり高い成功確率でさえも(32ビットなど、bに関して適切な値を想定して)成功裏の攻撃が実装するには14年くらいかかることになる。したがって、副キーはロールバック保護を実現する。(MAAに対する別個の入力としての)インデックスiの値は「カットアンドペースト」攻撃を防ぐのに役立つ。(システムブートと混同されるべきではない)ブートストラッピングに対処するために、すべての副キー値は、最初に、ゼロに設定され、後続の副キーは非ゼロ値(non-zero value)に設定される。このようにして、システムは、値を審査することによって、ページが書き込まれているか否かを検出することができる。したがって、これらの技法は以下を可能にする。すなわち、(a)副キーはタグと比べて小さくできるため、ロールバック保護を実施するための内部ストレージが低減されること、および(b)本質的に追加のオーバーヘッドなしに、時間ゼロにおいてシステムをブートストラッピングすること、である。
【００２４】
例示的なシステムオンチップハードウェア環境
図1に、様々な新規の特徴を活用できる1例による、モバイル通信デバイスのシステムオンチップ(SoC)処理回路100を示す。このSoC処理回路は、Qualcomm社によって製造されたSnapdragon(商標)処理回路とすることができる。SoC処理回路100は、マルチコアCPU112を含むアプリケーション処理回路110を含む。アプリケーション処理回路110は、通常、モバイル通信デバイスのすべての構成要素の動作を制御する。一態様では、アプリケーション処理回路110は、動的に生成された、またはそうでなく取得された副キーを用いてMACベースの認証を実行するように装備されたデータ認証構成要素150を含む。アプリケーション処理回路110は、SoC処理回路100の様々な構成要素のためのブートシーケンス命令を記憶するブートROM 118を含み得る。SoC処理回路100は、アプリケーション処理回路110によって制御される1つまたは複数の周辺サブシステム120をさらに含む。周辺サブシステム120は、ストレージサブシステム(たとえば、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM))、ビデオ/グラフィックスサブシステム(たとえば、デジタル信号処理回路(DSP)、グラフィックス処理回路ユニット(GPU))、オーディオサブシステム(たとえば、DSP、アナログデジタル変換器(ADC)、デジタルアナログ変換器(DAC))、電力管理サブシステム、セキュリティサブシステム(たとえば、暗号化、デジタル著作権管理(DRM))、入出力(I/O)サブシステム(たとえば、キーボード、タッチスクリーン)、ならびに有線およびワイヤレスの接続性サブシステム(たとえば、ユニバーサルシリアルバス(USB:universal serial bus)、全地球測位システム(GPS)、Wi-Fi、グローバルシステムモバイル(GSM(登録商標):Global System Mobile)、符号分割多元接続(CDMA)、4Gロングタームエボリューション(LTE:Long Term Evolution)モデム)を含むことができるが、これに限定されない。モデムサブシステムである例示的な周辺サブシステム120は、DSP 122、様々なハードウェア(HW)およびソフトウェア(SW)構成要素124、ならびに様々な無線周波数(RF)構成要素126を含む。一態様では、各周辺サブシステム120は、関連する周辺サブシステム120のプライマリブートイメージ(図示せず)を記憶するブートROM 128をも含む。
【００２５】
SoC処理回路100は、様々なランタイムデータを記憶するために、アプリケーション処理回路110および様々な周辺サブシステム120によって共有される、内部共有ストレージ132(たとえば、スタティックRAM(SRAM)、ダブルデータレート(DDR)シンクロナスダイナミック(SD)RAM、DRAM、フラッシュメモリ、その他)など、様々な内部共有HWリソース130をさらに含む。一態様では、SoC処理回路100の構成要素110、118、120、128、および130は、シングルチップ基板上に集積される。SoC処理回路100は、異なるチップ基板上に配置され、システムバス(図示せず)を介してSoC処理回路100と通信し得る、様々な外部共有HWリソース140をさらに含む。外部共有HWリソース140は、たとえば、オペレーティングシステム(OS)情報、システムファイル、プログラム、アプリケーション、ユーザデータ、オーディオ/ビデオファイル、その他などの様々なタイプのデータを記憶するためにアプリケーション処理回路110および様々な周辺サブシステム120によって共有される、外部共有ストレージ142(たとえば、DDR RAM、DRAM、またはフラッシュメモリ)および/または永久的データストレージ144(たとえば、セキュアデジタル(SD:Secure Digital)カード、ハードディスクドライブ(HDD)など)を含み得る。SoCを組み込んだモバイル通信デバイスが起動されるときに、セキュアSoC処理回路100は、システムブートアッププロセスを開始する。具体的には、アプリケーション処理回路110は、様々な周辺サブシステム120のためのブートシーケンス命令を含む、SoC処理回路100のためのブート命令を取り出すために、ブートROM 118にアクセスする。周辺サブシステム120は、追加の周辺ブートROM 128を有することもできる。
【００２６】
例示的なデータストレージおよび認証手順
図2は、副キーを活用することによって、ロールバック保護(ならびに、カットアンドペースト保護)を実現するために、図1のSoC処理回路、または他の適切に装備されたデバイス、システム、もしくは処理回路によって用いられ得る例示的な手順200の概要を提供する。ステップ202で、データ書込み動作に関して、処理回路は、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、および好ましくは、非ゼロのランダム値または疑似ランダム値に設定された、データユニットに関する副キーに基づいて、MACを生成する、またはそうでなく取得する。本明細書では、「入手すること」という用語は、たとえば、生成すること、獲得すること、受け取ること、取り出すこと、または何らかの他の適切な対応する行動を実行することを幅広く包含する。ステップ204で、処理回路は、MACおよび対応するデータユニットをオフチップDDR RAMなどの第1のストレージデバイス内に記憶する。ステップ206で、処理回路は、データユニットに関する副キーを、オンチップSRAMまたはフラッシュメモリなど、第1のストレージデバイスとは異なる第2のストレージデバイス内に記憶する。その後、データ読取り動作に関して、ステップ208で、処理回路は、主キー、第1のストレージデバイスから取得されたデータユニット、対応するデータユニットインデックス、および第2のストレージデバイスから取得された対応する副キーに基づいて、新しいMACを生成する、またはそうでなく取得する。ステップ210で、処理回路は、新しいMACを第1のストレージデバイスからのメッセージとともに取得されたMACと比較して、処理回路が、それによって、起こり得る認証問題を検出することができるように、それらの間の差異を検出する。
【００２７】
図3は、それぞれ、例示的なオンチップストレージデバイス300およびオフチップストレージデバイス302を示す。オンチップストレージ300は、主キー(K)303、ならびに、参照番号3041…304nによって個々に示される様々な副キーN1…Nnを記憶し、この場合、各副キーは4バイトに過ぎなくなり得る。述べたように、副キーは、最初に、ゼロに設定され、次いで、オフチップストレージ内の対応するデータユニットが書き込まれるとき、または変更されるときはいつでも設定または再設定される非ゼロのランダム値または疑似ランダム値として動的に生成される。副キーは、参照番号3061…306nによって個々に示される、データに関する対応するページインデックスINDEX1…INDEXnにおいて記憶される。オフチップストレージ302は、参照番号3081…308nによって個々に示される、対応するデータユニットM1…Mnの最新のバージョンを記憶し、この場合、各データユニットは、オフチップストレージのアドレス空間内のデータのページを表し得る。データユニットは、アドレス空間内の対応するページインデックスINDEX1…INDEXnにおいて記憶され、インデックスは参照番号3101…310nによって個々に示される。オフチップストレージ302は、参照番号3121…312nによって個々に示され、グローバルキー(K)ならびに対応する副キー(Ni)、インデックス(INDEXi)、およびデータユニット(Mi)の関数F、すなわち、TAGi=F(K,Ni,i,Mi)であるとして示される、比較的長いMACタグTAG1…TAGnも記憶する。
【００２８】
悪意のあるエンティティが古いデータユニット/タグ対を同じデータユニットインデックスにおいてオフチップストレージ内に挿入することを試みる場合、(ランダムに生成されたが、現在旧式の副キーに部分的に基づいて生成された)古いタグは、オンチップストレージ内に維持された、現在記憶されている副キーに基づいて生成された比較タグと整合しないことになるため、システム内のロールバック攻撃を著しく低減することができる。すなわち、オンチップストレージは、(その特定のインデックスにおけるデータが最後に更新されたときに生成された)更新された副タグを有することになる。したがって、オフチップストレージからデータを取り出す処理回路がMAC認証手順を実行するとき、処理回路は、取り出されたデータ、ページインデックス、グローバルキー、およびオンチップストレージ内に記憶された副キーの最新のバージョンに基づいて、比較タグを生成することになる。比較タグは、(4バイトの副キーの場合、低い確率の事象である、新しい副タグおよび古い副タグの偶然の一致が無い限り)オフチップストレージ内に記憶されたロールバックされたバージョンのタグに整合しないことになり、適切なエラーインジケータが生成されることになる。
【００２９】
インデックスiはオフチップストレージ内に記憶されたMACタグを作成する際にも使用されるため、カットアンドペースト攻撃を著しく低減することができる。上述のように、カットアンドペースト攻撃では、攻撃者または他の悪意のあるエンティティは、古いロケーションと比較して新しいロケーションに配置されたとき、結果として生じる解読データが同一になることを期待して、暗号化データ(たとえば、暗号文およびその対応するMACタグ)のある部分を別のロケーションからの暗号化データ(たとえば、異なるMACタグを有する暗号文)のある部分と置換する。しかしながら、データユニットインデックスiが、オフチップストレージ302内での記憶のためにMACタグを生成する際に使用されるので、異なるインデックスを有する異なるデータユニットからのMACタグは、それによって、ほぼ確実に互いに異なることになる。少なくとも比較的多数の考えられるデータユニットインデックス(たとえば、多数の利用可能なページ)を有する典型的な記憶空間内で、カットアンドペースト攻撃においてタグが偶然同じになり得る可能性は極端に小さくなる。
【００３０】
図4は、図1のSoC処理回路、または他の適切に装備された処理回路によって実行され得る、例示的な書込み動作または手順400を詳細に示す。ステップ402で、処理回路は、システムが初めて使用されるとき、すべての副キー値をゼロまたはその適切な16進数の等価値に設定する。すなわち、ストレージのいずれかの部分が書き込まれる前に、副キー値はすべてゼロに設定される。処理回路がまだ書き込まれていないページを容易に識別することができるように、副キーは最初にゼロ値に設定される。様々な書込み動作がその後発生するにつれて、ゼロ値は新しく生成された非ゼロ副キー値に置換される。たとえば、ステップ404で、インデックスiに対するデータユニット書込み動作に関して、処理回路は新しいランダム非ゼロ副キーまたは疑似ランダム非ゼロ副キー(Ni)を生成し、この場合、Niのサイズはより長いMACタグと比べて小さい(たとえば、4バイト)。したがって、各新しいデータユニット書込みのために、新しい副キーが生成され、再生成され、またはリフレッシュされる。Niのサイズは、多くのオンチップストレージを消費しないように、MACタグと比べて小さいが、ロールバック攻撃および他の攻撃を効果的に低減するには十分長い(たとえば、4バイト)。
【００３１】
ステップ406で、処理回路は、ストレージ内に記憶されるべき特定のデータユニットまたはメッセージ(Mi)(インデックス(i)を有するページなど)を新しく生成されたデータユニットごとの副キー(Ni)と組み合わせ、インデックス(i)と組み合わせる。たとえば、各データユニットは、MAAに適用するために連結された副キー/インデックス/データユニットをもたらすために、Niとそれに続くi、それに続くユニットMiとして連結され得る。すなわち、この例では、副キー、インデックス、およびデータユニットは、
【００３２】
【数５】
0006320558.tif 000006
【００３３】
として連結され、式中、Miは、それによって、インデックスおよび副キーを好都合に組み込むMAAに適用するためのデータユニットの修正バージョンをもたらすために記憶されるべきメッセージである。このようにして、MAAは2つの代わりに4つの入力値を受け付けるために修正されなくてよい。むしろ、他の標準MAAを用いることができる。
【００３４】
ステップ408で、処理回路は、関数Fによって表され得るMAAを、グローバル主キー(K)を用いて、連結された副キー/インデックス/データユニットに適用することによって、MACタグ(Ti)を生成する。したがって、この例では、Tiは
【００３５】
【数６】
0006320558.tif 000007
【００３６】
として生成される。ステップ410で、処理回路は、MACタグ(Ti)および対応するデータユニット(Mi)をDDR RAMなどのオフチップストレージデバイス内に記憶する。ステップ412で、処理回路は、副キー(Ni)および対応するインデックス(i)をSRAMなどの比較的よりセキュアなオンチップストレージデバイス内に記憶する。
【００３７】
図5は、図1のSoC処理回路、または他の適切に装備された処理回路によって実行され得る、例示的な読取り動作または手順500を詳細に示す。ステップ502で、処理回路は、データユニット(Mi)、対応するMACタグ(Ti)、および対応するデータユニットインデックス(i)をオフチップストレージデイバスから取り出す。ステップ504で、処理回路は、データユニットインデックス(i)に対応する副キー(Ni)をオンチップストレージデイバスから取り出す。ステップ506で、処理回路はまた、主キー(K)をオンチップストレージデバイスから取り出す。ステップ508で、処理回路は、主キー(K)、オフチップストレージデバイスから取り出されたデータユニット(Mi)、対応するデータユニットインデックス(i)、およびオンチップストレージデバイスから取り出された対応する副キー(Ni)に基づいて、新しいMACタグ(Ti)を生成する。ステップ510で、処理回路は、新しいMACタグをデータユニットとともにオフチップデバイスから取り出されたMACタグと比較して、それらの間の差異を検出し、新しいMACタグと取り出されたMACタグとの間に差異が検出された場合、エラーインジケータを生成する。
【００３８】
図6は、例示的なSoC600およびオフチップストレージ602の様々な構成要素に関する例示的な書込み動作をさらに示し、ここでは、構成要素は概略的に表される。記憶されるべきデータ604は、1つまたは複数のブロック608内でその中に記憶するためのオフチップバルクデータストレージ構成要素606にルーティングされて、オフチップストレージの認証データ構成要素612内に記憶するための対応するMACタグの生成のためにSoCのMAA構成要素610にもルーティングされる。この例では、614によって示すように、各々16バイトを記憶し、まとめて128バイトのページを提供する、ブロック0x0から0x7のセットが各構成要素606内に示されている。この例では、認証データ構成要素612の個々のタグ0x0 616は、618によって示すように、8バイトを消費する。MACを生成するために、SoCのストレージデバイスのキーデータ構成要素622からグローバル認証キー(K)620が取り出される。この例では、グローバルキーは、624によって示すように、16バイトである。疑似ランダム数生成器(PRNG:pseudorandom number generator)構成要素626は、範囲[1,0xFFFFFFFF]内で、書込み動作のための副キー(K0)を生成する。したがって、(ブートストラッピングに関して上で説明した理由で)ゼロは副キーとして除外される。副キーは、この例では、632によって示すように、キー0x0に対応し、4バイトを消費するキー630としてページキーストレージ構成要素628内に記憶される。副キーはまた、MACタグを生成するためにMAA関数を適用するのに先立って、キーを書込み先のページのアドレス634およびデータ604と連結させるMAA構成要素610にルーティングされる。結果として生じるMACタグは、述べたように、読取り動作の間に、後続の取出しのためにオフチップストレージの認証データ構成要素612内に記憶される。
【００３９】
図7は、SoC600およびオフチップストレージ602に関する例示的な読取り動作をさらに示し、ここでは再度、構成要素が概略的に表される。データ608は、オフチップバルクデータストレージ構成要素606から取り出されて、オフチップストレージの認証データ構成要素612内に記憶されたタグ616と比較するための対応する比較MACタグを生成するためにMAA構成要素610にルーティングされる。取り出されたデータから比較タグを生成するために、グローバル認証キー(K)620がキーデータ構成要素622から再度取り出される。このデータに関する副キー(K0)は、キー630としてページキーストレージ構成要素628から取り出されて、MAA構成要素610内にルーティングされ、MAA構成要素610は、比較MACタグを生成するためにMAA関数を適用するのに先立って、キーを読み取られているページのページアドレス634およびデータ608と連結させる。結果として生じる比較MACタグは、判定ブロック735において、2つのMACタグが同じであるかどうかを決定するために読み取られているページに基づいて、オフチップストレージの認証データ構成要素612から取り出されたMACタグ616と比較される。比較MACタグと取り出されたMACタグとが同じである場合、取り出されたデータは、それによって、有効と見なされ、(この図に示されていない様々な処理構成要素を使用して)SoCによって処理される。比較MACタグと取り出されたMACタグとが同じでない場合、取り出されたデータは無効と見なされ、SoCによって拒否され、(この図に示されていない処理構成要素を使用して)問題に対処するために読取り不良手順が開始される。図7はまた、副ページキーメモリまたはストレージ構成要素628から取り出された副キー(K0)が、取り出された副キーがゼロであるかどうか、つまりそのページがまだ書き込まれていない(したがって、読み取るべき何のデータも含んでいない)かどうかを決定するゼロ比較関数737にも適用されることを示す。ゼロである場合、取り出されたデータは、SoCによって無効であるとして拒否され、(この図に示されていない処理構成要素を使用して)問題に対処するための手順が開始される。
【００４０】
例示的なシステムまたは装置
図8は、図1〜図7の構成要素および方法を実施することができる全体的なシステムまたは装置800を示す。本開示の様々な態様によれば、要素、要素の何らかの部分、または要素の何らかの組合せを、図1のSoC処理回路などの1つまたは複数の処理回路804を含む処理システム814を用いて実施することができる。たとえば、装置800を、モバイル通信システムのユーザ機器(UE)とすることができる。装置800を、無線ネットワーク制御装置(RNC)とともに使用することができる。SoCに加えて、処理回路804の例は、マイクロプロセッシング回路、マイクロコントローラ、デジタル信号処理回路(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、状態機械、ゲーテッドロジック、ディスクリートハードウェア回路、および本開示全体で説明する様々な機能を実行するように構成された他の適切なハードウェアを含む。すなわち、装置800内で利用される処理回路804は、ストレージデバイス805内でデータの認証を実行するためのプロセスなど、上で説明し、図1〜図7に示したプロセス(および、図11および図12に示され、下で論じるプロセス)のうちの任意の1つまたは複数を実施するのに使用され得る。
【００４１】
この例では、処理システム814は、バス802によって概略的に表されるバスアーキテクチャを用いて実施される場合がある。バス802は、処理システム814の特定の用途および全体的な設計制約に応じて、任意の数の相互接続するバスおよびブリッジを含む場合がある。バス802は、1つまたは複数の処理回路を含む様々な回路(概略的に、処理回路804によって表される)、ストレージデバイス805、および機械可読、処理回路可読、またはコンピュータ可読の媒体(概略的に、非一時的機械可読媒体806によって表される)をつなぎ合わせる。バス802はまた、タイミングソース、周辺機器、電圧調整器、および電力管理回路など、様々な他の回路をつなぐこともできるが、これらは当技術分野においてよく知られており、したがって、これ以上説明しない。バスインターフェース808は、バス802とトランシーバ810との間のインターフェースを提供する。トランシーバ810は、送信媒体を通じて様々な他の装置と通信するための手段を提供する。装置の性質に応じて、ユーザインターフェース812(たとえば、キーパッド、ディスプレイ、スピーカー、マイクロフォン、ジョイスティック)も設けられ得る。
【００４２】
処理回路804は、バス802の管理、および機械可読媒体806上に記憶されたソフトウェアの実行を含む全般的な処理との責任を負う。ソフトウェアは、処理回路804によって実行されると、処理システム814に、任意の特定の装置に対する本明細書で説明される様々な機能を実行させる。機械可読媒体806は、ソフトウェアを実行すると、処理回路804によって操作されるデータを記憶するためにも使用され得る。
【００４３】
処理システム内の1つまたは複数の処理回路804は、ソフトウェアを実行することができる。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるにしても、または別の呼ばれ方をするにしても、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行ファイル、実行のスレッド、手順、関数などを意味すると広く解釈されるべきである。処理回路は、必要なタスクを実行することができる。コードセグメントは、手続き、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの何らかの組合せを表すことができる。コードセグメントを、情報、データ、引数、パラメータ、またはメモリ内容もしくはストレージ内容を渡し、および/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合することができる。情報、引数、パラメータ、データなどを、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む任意の適切な手段を介して渡し、転送し、または伝送することができる。
【００４４】
ソフトウェアは、機械可読媒体806上に存在することができる。機械可読媒体806は、非一時的機械可読媒体とすることができる。非一時的な処理回路可読媒体、プロセッサ可読媒体、機械可読媒体、またはコンピュータ可読媒体は、例として、磁気ストレージデバイス(たとえば、ハードディスク、フロッピ(登録商標)ディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、またはキードライブ)、RAM、ROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、リムーバブルディスク、ハードディスク、CD-ROM、ならびにコンピュータによってアクセスされ、読み取られ得るソフトウェアおよび/または命令を記憶するための任意の他の適切な媒体を含む。「機械可読媒体」、「コンピュータ可読媒体」、「処理回路可読媒体」、および/または「プロセッサ可読媒体」という用語は、ポータブルまたは固定式のストレージデバイス、光学ストレージデバイス、ならびに命令および/またはデータを記憶し、含み、または担持することのできる様々な他の媒体などの非一次的媒体を含むことができるが、これに限定されない。したがって、本明細書で説明する様々な方法を、「機械可読媒体」、「コンピュータ可読媒体」、「処理回路可読媒体」、および/または「プロセッサ可読媒体」内に記憶され、1つまたは複数の処理回路、機械、および/またはデバイスによって実行され得る命令および/またはデータによって完全にまたは部分的に実施することができる。機械可読媒体は、例として、搬送波、伝送線、およびコンピュータによってアクセスされ、読み取られ得るソフトウェアおよび/または命令を伝送するための任意の他の適切な媒体をも含むことができる。機械可読媒体806は、処理システム814内に、処理システム814の外部に、または処理システム814を含む複数のエンティティにまたがって分散されて存在し得る。機械可読媒体806を、コンピュータプログラム製品内で具現化することができる。例として、コンピュータプログラム製品は、パッケージング材料内に処理回路可読媒体を含んでもよい。当業者は、具体的な適用例およ
び全体的なシステムに課された設計制約全体に応じて、本開示全体にわたって提示された、説明した機能を最善の形で実施する方法を認識するであろう。
【００４５】
具体的には、機械可読記憶媒体806は、処理回路804によって実行されると、処理回路に、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、およびデータユニットに関する副キーに基づいて、メッセージ認証コードを取得させ、メッセージ認証コードおよびデータユニットを第1のストレージデバイス内に記憶させ、データユニットに関する副キーを第2のストレージデバイス内に記憶させる1つまたは複数の命令を有することができる。
【００４６】
図に示した構成要素、ステップ、特徴、および/または機能のうちの1つまたは複数を、単一の構成要素、ステップ、特徴、もしくは機能に再配置し、および/または組み合わせ、あるいはいくつかの構成要素、ステップ、または機能の中に具現化することができる。また、説明した特徴および態様から逸脱することなしに、さらなる要素、構成要素、ステップ、および機能が追加され得る。図に示した装置、デバイス、および/または構成要素は、図で説明する方法、特徴、またはステップの1つまたは複数を実行するように構成されてもよい。また、本明細書で説明するアルゴリズムは、効率的にソフトウェアに実装され、および/またはハードウェアに組み込まれてもよい。
【００４７】
本明細書で開示する例に関連して説明する様々な例示的な論理ブロック、モジュール、回路、要素、および/または構成要素を、汎用処理回路、デジタル信号処理回路(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、ディスクリートゲートもしくはトランジスタ論理、ディスクリートハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの何らかの組合せを用いて実施または実行することができる。汎用処理回路は、マイクロプロセッシング回路とすることができるが、代替案では、処理回路を、何らかの従来の処理回路、コントローラ、マイクロコントローラ、または状態機械とすることができる。処理回路を、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッシング回路との組合せ、複数のマイクロプロセッシング回路、DSPコアに関連する1つもしくは複数のマイクロプロセッシング回路、または何らかの他のそのような構成として実施することもできる。
【００４８】
したがって、本開示の一態様では、図1および図8に示した処理回路100および/または804を、図2、図3、図5、図6、および/または図7(および/または下で論じる図11および図12)で説明するアルゴリズム、方法、および/またはステップを実行するように特に設計され、および/またはハードワイヤされた特殊化された処理回路(たとえば、ASIC)とすることができる。したがって、そのような特殊化された処理回路(たとえば、ASIC)を、図2、図3、図5、図6、および/または図7(および/または下で論じる図11および図12)で説明するアルゴリズム、方法、および/またはステップを実行するための手段の1例とすることができる。機械可読記憶媒体は、特殊化された処理回路(たとえば、ASIC)によって実行されると、その特殊化された処理回路に本明細書で説明するアルゴリズム、方法、および/またはステップを実行させる命令を記憶することができる。
【００４９】
図9は、処理回路804の選択された例示的な構成要素を示す。具体的には、図9の処理回路804は、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、および対応するデータユニットに関する副キーに基づいて、MACを生成し、獲得し、受け取り、またはそうでなく取得するように動作可能なMAC生成器構成要素900を含む。処理回路804はまた、MACタグおよび対応するデータユニットを第1のストレージデバイス906内に記憶するように動作可能な第1のMACタグ/データユニットストレージコントローラ902、ならびにデータユニットに関する副キーを第2のストレージデバイス908内に記憶するように動作可能な別個の副キーストレージコントローラ904を含む(この場合、第1のストレージデバイスおよび第2のストレージデバイスは一般ストレージ805の別個の構成要素である)。処理回路は、新しいMACを第1のストレージデバイスから取得されたMACと比較して、それらの間の差異を検出するように動作可能なMAC比較器モジュール/回路910など、様々な機能を実行または制御するための追加の構成要素を含み得る。新しいMACと第1のストレージデバイスから取得されたMACとの間に差異が検出された場合、エラーインジケータを生成または作成するように動作可能であるエラーインジケータモジュール/回路912が提供され得る。キーを生成する際に使用するためのランダム数もしくは疑似ランダム数を生成する、またはそうでなく取得するためのPRNGモジュール/回路914が提供され得る。他の構成要素も同様に提供され得、図9の例は決して網羅的ではない。
【００５０】
図10は、機械可読媒体またはコンピュータ可読媒体806の選択された例示的な命令構成要素を示す。具体的には、図10の機械可読媒体806は、図9の処理回路によって実行されると、処理回路に、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、およびデータユニットに関する副キーに基づいて、MACを生成させ、獲得させ、受け取らせ、またはそうでなく取得させるMAC生成器命令1000を含む。機械可読媒体806はまた、MACタグおよび対応するデータユニットを第1のストレージデバイス906内に記憶するための第1のMACタグ/データユニットストレージ命令1002、ならびに対応するデータユニットに関する副キーを第2のストレージデバイス908内に記憶するための副キーストレージ命令1004を含む(この場合、第1のストレージデバイスおよび第2のストレージデバイスはストレージ805の構成要素である)。機械可読媒体806は、新しいMACを第1のストレージデバイスから取得されたMACと比較して、それらの間の差異を検出するためのMAC比較器命令1010など、様々な機能を実行または制御するための追加の命令を含み得る。新しいMACと第1のストレージデバイスから取得されたMACとの間に差異が検出された場合、エラーインジケータを生成または作成するためのエラーインジケータ命令1012が提供され得る。キーを生成する際に使用するためのランダム数もしくは疑似ランダム数を生成する、またはそうでなく取得するためのPRNG命令1014が提供され得る。他の命令も同様に提供され得、図10の例は決して網羅的ではない。
【００５１】
図11は、図8および図9の処理回路804もしくはデータの認証を可能にするためにデータを記憶するための他の適切に装備されたデバイスによって実行され得る方法または手順1100を幅広く示し、要約する。ステップ1102で、処理回路は、主キー、記憶されるべきデータユニット、データユニットに関する対応するインデックス、およびデータユニットに関する副キーに基づいて、メッセージ認証コードを取得する。ステップ1104で、処理回路は、メッセージ認証コードおよびデータユニットを第1のストレージデバイス内に記憶する。ステップ1106で、処理回路は、データユニットに関する副キーを第2のストレージデバイス内に記憶する。
【００５２】
図12は、図8および図9の処理回路804もしくは記憶されたデータを認証するための他の適切に装備されたデバイスによって実行され得る方法または手順1200を幅広く示し、要約する。ステップ1202で、処理回路は、データユニットおよび対応するメッセージ認証コードを対応するデータユニットインデックスにおいて第1のストレージデイバスから取得する。ステップ1204で、処理回路は、データユニットインデックスに基づいて、対応する副キーを第2のストレージデバイスから取得する。ステップ1206で、処理回路は主キーを第2のストレージデバイスから取得する。ステップ1208で、処理回路は、主キー、第1のストレージデバイスから取得されたデータユニット、対応するデータユニットインデックス、および対応する副キーに基づいて、新しいメッセージ認証コードを取得する。ステップ1210で、処理回路は、新しいメッセージ認証コードを第1のストレージデバイスから取得されたメッセージ認証コードと比較して、それらの間の差異を検出する。ステップ1212で、処理回路は、新しいメッセージ認証コードと第1のストレージデバイスから取得されたメッセージ認証コードとの間に差異が検出された場合、エラーインジケータを作成する。
【００５３】
また、本開示の態様は、フローチャート、フロー図、構造図またはブロック図として示されるプロセスとして本明細書で説明される場合があることに留意されたい。フローチャートは動作を逐次プロセスとして説明する場合があるが、動作の多くは、並列に実行するかまたは同時に実行することができる。さらに、動作の順序は入れ替えられてもよい。プロセスは、その動作が完了したとき、終了する。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに相当する場合がある。プロセスが関数に相当する場合、その終了は、その関数が呼出し関数またはメイン関数に戻ることに相当する。
【００５４】
本明細書で開示した態様に関連して説明した種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップを、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実施できることを、当業者であればさらに諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上記では概してそれらの機能に関して説明されてきた。そのような機能性が、ハードウェアまたはソフトウェアのどちらとして実施されるのかは、具体的な適用例およびシステム全体に課せられる設計制約によって決まる。
【００５５】
本明細書で説明した様々な特徴は、様々なシステムで実施され得ることが企図される。本開示の前述の態様は、例に過ぎず、限定するものとして解釈されるべきではないことに留意されたい。本開示の態様の説明は、例示であることを意図しており、特許請求の範囲を限定することを意図していない。したがって、本教示は、他のタイプの装置に容易に適用することが可能であり、多くの代替形態、修正形態、および変更形態が当業者には明らかであろう。
【符号の説明】
【００５６】
100  システムオンチップ(SoC)処理回路
110  アプリケーション処理回路、構成要素
112  マルチコアCPU
118  ブートROM、構成要素
120  周辺サブシステム、構成要素
122  DSP
124  ハードウェア(HW)およびソフトウェア(SW)構成要素
126  無線周波数(RF)構成要素
128  ブートROM、構成要素
130  内部共有HWリソース、構成要素
132  内部共有ストレージ
140  外部共有HWリソース
142  外部共有ストレージ
144  永久的データストレージ
150  データ認証構成要素
200  手順
300  オンチップストレージデバイス
302  オフチップストレージデバイス
303  主キー
3041…304n  副キー
3061…306n  ページインデックス
3081…308n  データユニット
3101…310n  ページインデックス
3121…312n  MACタグ
400  例示的な書込み動作または手順
500  例示的な読取り動作または手順
600  SoC
602  オフチップストレージ
604  データ
606  オフチップバルクデータストレージ構成要素、構成要素
608  ブロック、データ
610  MAA構成要素
612  認証データ構成要素
616  タグ、MACタグ
620  グローバル認証キー(K)
622  キーデータ構成要素
626  疑似ランダム数生成器(PRNG)構成要素
628  ページキーストレージ構成要素、ストレージ構成要素
630  キー
634  アドレス、ページアドレス
735  判定ブロック
737  ゼロ比較関数
800  システム、装置
802  バス
804  処理回路
805  ストレージデバイス、一般ストレージ
806  機械可読媒体
808  バスインターフェース
810  トランシーバ
812  ユーザインターフェース
814  処理システム
900  MAC生成器構成要素
902  第1のMACタグ/データユニットストレージコントローラ
904  副キーストレージコントローラ
906  第1のストレージデバイス
908  第2のストレージデバイス
910  MAC比較器モジュール/回路
912  エラーインジケータモジュール/回路
914  PRNGモジュール/回路
1000  MAC生成器命令
1002  第1のMACタグ/データユニットストレージ命令
1004  副キーストレージ命令
1010  MAC比較器命令
1012  エラーインジケータ命令
1014  PRNG命令
1100  方法または手順
1200  方法または手順
【図１】
0006320558.tif 000008
【図２】
0006320558.tif 000009
【図３】
0006320558.tif 000010
【図４】
0006320558.tif 000011
【図５】
0006320558.tif 000012
【図６】
0006320558.tif 000013
【図７】
0006320558.tif 000014
【図８】
0006320558.tif 000015
【図９】
0006320558.tif 000016
【図１０】
0006320558.tif 000017
【図１１】
0006320558.tif 000018
【図１２】
0006320558.tif 000019