(57)【要約】  一態様では、ソフトウェアを保護するための方法は、命令またはデータのうちの少なくとも1つを含むペイロードを取得するステップと、メモリデバイス内にレルムを確立するステップと、レルムに関連付けられたエフェメラル暗号化鍵(EEK)に基づいてペイロードを暗号化するステップと、暗号化されたペイロードをメモリデバイスのレルムに記憶するステップとを含む。別の態様では、ソフトウェアを保護するための方法は、メモリデバイスに関連付けられたメモリトランザクションを受信するステップであって、メモリトランザクションは、少なくともレルム識別子(RID)およびレルムインジケータビットを含む、ステップと、RIDがレルムを示すとき、かつレルムインジケータビットが有効化されているとき、RIDに関連付けられたEEKを取得するステップと、メモリトランザクションが読取りトランザクションであるとき、EEKに基づいて、レルムから取り出された命令および/またはデータを復号するステップと、メモリトランザクションが書込みトランザクションであるとき、EEKに基づいて、レルムに記憶するための第2のデータを暗号化するステップとを含む。
2018520594.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアを保護するための方法であって、
命令またはデータのうちの少なくとも1つを含むペイロードを取得するステップと、
メモリデバイス内にレルムを確立するステップであって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、ステップと、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化するステップと、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶するステップと
を備える方法。
【請求項２】
前記レルムを確立する前記ステップが、
前記レルム用のレルム識別子および前記エフェメラル暗号化鍵を生成するステップであって、前記レルム識別子が、前記エフェメラル暗号化鍵に関連付けられる、ステップ
を備える、請求項1に記載の方法。
【請求項３】
前記レルム識別子および前記エフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶するステップ
をさらに備える、請求項2に記載の方法。
【請求項４】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項1に記載の方法。
【請求項５】
前記ペイロードが、セキュア通信において取得されるか、またはセキュアストレージから取得される、請求項1に記載の方法。
【請求項６】
前記エフェメラル暗号化鍵に基づいて前記ペイロードを暗号化する前記ステップの前に、前記ペイロードに適用された暗号保護を解除するステップ
をさらに備える、請求項1に記載の方法。
【請求項７】
前記暗号保護を解除する前記ステップが、前記ペイロードを検証するステップまたは永続的な暗号鍵を使用して前記ペイロードを復号するステップのうちの少なくとも1つを含む、請求項6に記載の方法。
【請求項８】
第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得するステップと、
前記メモリデバイス内に第2のレルムを確立するステップであって、前記第2のレルムが、前記確立されたレルムに含まれる前記1つまたは複数の選択された領域とは異なる、前記メモリデバイス内の1つまたは複数の選択された領域を含む、ステップと、
前記第2のレルムに関連付けられた第2のエフェメラル暗号化鍵に基づいて前記第2のペイロードを暗号化するステップと、
前記第2の暗号化されたペイロードを前記メモリデバイスの前記第2のレルムに記憶するステップと
をさらに備える、請求項2に記載の方法。
【請求項９】
前記第2のレルムを確立する前記ステップが、
前記メモリデバイス内の前記第2のレルム用の第2のレルム識別子および前記第2のエフェメラル暗号化鍵を生成するステップであって、前記第2のレルム識別子が、前記第2のエフェメラル暗号化鍵に関連付けられる、ステップ
を備える、請求項8に記載の方法。
【請求項１０】
前記第2のレルム識別子および前記第2のエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶するステップ
をさらに備える、請求項9に記載の方法。
【請求項１１】
命令またはデータのうちの前記少なくとも1つがコアデバイスによって処理されるべきである、請求項1に記載の方法。
【請求項１２】
メモリデバイスと、
前記メモリデバイスに結合された処理回路であって、
命令またはデータのうちの少なくとも1つを含むペイロードを取得することと、
メモリデバイス内にレルムを確立することであって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化することと、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶することと
を行うように構成された処理回路と
を備える装置。
【請求項１３】
前記レルムを確立するように構成された前記処理回路が、
前記レルム用のレルム識別子および前記エフェメラル暗号化鍵を生成することであって、前記レルム識別子が、前記エフェメラル暗号化鍵に関連付けられる、生成すること
を行うようにさらに構成される、請求項12に記載の装置。
【請求項１４】
前記処理回路が、
前記レルム識別子および前記エフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶する
ようにさらに構成される、請求項13に記載の装置。
【請求項１５】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項12に記載の装置。
【請求項１６】
前記ペイロードが、セキュア通信において取得されるか、またはセキュアストレージから取得される、請求項12に記載の装置。
【請求項１７】
前記処理回路が、
前記エフェメラル暗号化鍵に基づいた前記ペイロードの前記暗号化の前に、前記ペイロードに適用された暗号保護を解除する
ようにさらに構成される、請求項12に記載の装置。
【請求項１８】
前記暗号保護を解除するように構成された前記処理回路が、
前記ペイロードを検証するか、または永続的な暗号鍵を使用して前記ペイロードを復号する
ようにさらに構成される、請求項17に記載の装置。
【請求項１９】
前記処理回路が、
第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得することと、
前記メモリデバイス内に第2のレルムを確立することであって、前記第2のレルムが、前記確立されたレルムに含まれる前記1つまたは複数の選択された領域とは異なる、前記メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、
前記第2のレルムに関連付けられた第2のエフェメラル暗号化鍵に基づいて前記第2のペイロードを暗号化することと、
前記第2の暗号化されたペイロードを前記メモリデバイスの前記第2のレルムに記憶することと
を行うようにさらに構成される、請求項13に記載の装置。
【請求項２０】
前記第2のレルムを確立するように構成された前記処理回路が、
前記メモリデバイス内の前記第2のレルム用の第2のレルム識別子および前記第2のエフェメラル暗号化鍵を生成することであって、前記第2のレルム識別子が、前記第2のエフェメラル暗号化鍵に関連付けられる、生成すること
を行うようにさらに構成される、請求項19に記載の装置。
【請求項２１】
前記処理回路が、
前記第2のレルム識別子および前記第2のエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶する
ようにさらに構成される、請求項20に記載の装置。
【請求項２２】
命令またはデータのうちの前記少なくとも1つがコアデバイスによって処理されるべきである、請求項12に記載の装置。
【請求項２３】
命令またはデータのうちの少なくとも1つを含むペイロードを取得するための手段と、
メモリデバイス内にレルムを確立するための手段であって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、手段と、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化するための手段と、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶するための手段と
を備える装置。
【請求項２４】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
命令またはデータのうちの少なくとも1つを含むペイロードを取得することと、
メモリデバイス内にレルムを確立することであって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化することと、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶することと
を行わせる命令を記憶した非一時的プロセッサ可読記憶媒体。
【請求項２５】
メモリデバイス内のソフトウェアを保護するための方法であって、
前記メモリデバイスに関連付けられたメモリトランザクションを受信するステップであって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、ステップと、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得するステップと、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号するステップと、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化するステップと
を備える方法。
【請求項２６】
前記レルム識別子および前記エフェメラル暗号化鍵が、任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶される、請求項25に記載の方法。
【請求項２７】
前記レルム識別子がゼロまたは特殊値であるとき、前記メモリトランザクションを変更することを控えるステップ
をさらに備える、請求項25に記載の方法。
【請求項２８】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項25に記載の方法。
【請求項２９】
前記メモリトランザクションが、前記レルムの外部の前記メモリデバイスの領域へのアクセスを制御する制御ビットをさらに含み、前記方法が、
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、前記メモリトランザクションを変更することを控えるステップ
をさらに備える、請求項25に記載の方法。
【請求項３０】
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションが命令フェッチトランザクションであるとき、前記メモリトランザクションの失敗を検出するステップ
をさらに備える、請求項29に記載の方法。
【請求項３１】
前記レルム識別子がゼロまたは特殊値ではないとき、かつ前記レルムインジケータビットおよび前記制御ビットが無効化されているとき、前記メモリトランザクションの失敗を検出するステップ
をさらに備える、請求項29に記載の方法。
【請求項３２】
メモリデバイスと、
前記メモリデバイスに結合された処理回路であって、
前記メモリデバイスに関連付けられたメモリトランザクションを受信することであって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、受信することと、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得することと、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号することと、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化することと
を行うように構成された処理回路と
を備える装置。
【請求項３３】
前記レルム識別子および前記エフェメラル暗号化鍵が、任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶される、請求項32に記載の装置。
【請求項３４】
前記処理回路が、
前記レルム識別子がゼロまたは特殊値であるとき、前記メモリトランザクションを変更することを控える
ようにさらに構成される、請求項32に記載の装置。
【請求項３５】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項32に記載の装置。
【請求項３６】
前記メモリトランザクションが、前記レルムの外部の前記メモリデバイスの領域へのアクセスを制御する制御ビットをさらに含み、前記処理回路が、
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、前記メモリトランザクションを変更することを控える
ようにさらに構成される、請求項32に記載の装置。
【請求項３７】
前記処理回路が、
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションが命令フェッチトランザクションであるとき、前記メモリトランザクションの失敗を検出する
ようにさらに構成される、請求項36に記載の装置。
【請求項３８】
前記処理回路が、
前記レルム識別子がゼロまたは特殊値ではないとき、かつ前記レルムインジケータビットおよび前記制御ビットが無効化されているとき、前記メモリトランザクションの失敗を検出する
ようにさらに構成される、請求項36に記載の装置。
【請求項３９】
メモリデバイスに関連付けられたメモリトランザクションを受信するための手段であって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、手段と、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得するための手段と、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号するための手段と、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化するための手段と
を備える装置。
【請求項４０】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
メモリデバイスに関連付けられたメモリトランザクションを受信することであって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、受信することと、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得することと、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号することと、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化することと
を行わせる命令を記憶した非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2015年7月7日に米国特許商標庁に出願された仮出願第62/189,733号、および2016年2月25日に米国特許商標庁に出願された非仮出願第15/053,892号の優先権および利益を主張するものであり、それらの内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示の態様は、一般にセキュアなメモリ管理に関し、より詳細には、限定はしないが、制御された暗号化鍵管理によるソフトウェアモジュールの分離に関する。
【背景技術】
【０００３】
ソフトウェア開発者は、一般に、コード(たとえば、ドライバ、アプリケーション、ゲーム)を生成し、顧客および他の認可されたユーザがそのコードを様々な製品にインストールし、使用することを可能にする。たとえば、コードは、モバイルフォンまたはラップトップコンピュータなどの電子デバイスのメモリデバイスにインストールされ、記憶され得る。しかしながら、そのようなコードは、無認可のユーザ(たとえば、ハッカー)によってアクセスされ、リバースエンジニアリングされる場合があり、貴重な知的財産の損失をもたらす。したがって、無認可のユーザによるコードのアクセスを阻止するために、電子製品内のコードを保護する必要がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
以下では、本開示のいくつかの態様の基本的理解を与えるために、そのような態様の簡略化された概要を提示する。この概要は、本開示のすべての企図された特徴の包括的な概観ではなく、本開示のすべての態様の主要または重要な要素を識別するものでもなく、本開示のいずれかまたはすべての態様の範囲を定めるものでもない。その唯一の目的は、後で提示されるより詳細な説明の前置きとして、本開示のいくつかの態様の様々な概念を簡略化された形態で提示することである。
【０００５】
一態様によれば、ソフトウェア(たとえば、ターゲットソフトウェア)を保護するために、ソフトウェア保護デバイス上で動作可能な方法が提供される。たとえば、保護されるべきターゲットソフトウェアは、コアデバイスによって処理され得る命令および/またはデータを含み得る。ソフトウェア保護デバイスは、命令またはデータのうちの少なくとも1つを含むペイロードを取得することと、メモリデバイス内にレルムを確立することであって、レルムは、メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、レルムに関連付けられたエフェメラル暗号化鍵に基づいてペイロードを暗号化することと、暗号化されたペイロードをメモリデバイスのレルムに記憶することとを行う。本明細書で使用する「レルム」という用語は、メモリデバイスの1つまたは複数の選択された、あらかじめ定義された、または動的に定義されたメモリ領域、ドメイン、セグメント、および/またはブロックとして定義され得る。一態様では、ソフトウェア保護デバイスは、レルム用のレルム識別子およびエフェメラル暗号化鍵を生成することによってレルムを確立し得、レルム識別子は、エフェメラル暗号化鍵に関連付けられる。一態様では、ソフトウェア保護デバイスは、レルム識別子およびエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶する。一態様では、エフェメラル暗号化鍵は、レルムがメモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である。たとえば、ソフトウェア保護デバイスは、セキュア通信において、またはセキュアストレージからペイロードを取得し得る。一態様では、ソフトウェア保護デバイスは、エフェメラル暗号化鍵に基づいてペイロードを暗号化することの前に、ペイロードに適用された暗号保護を解除する。たとえば、ソフトウェア保護デバイスは、ペイロードを検証するか、または永続的な暗号鍵を使用してペイロードを復号することによって、暗号保護を解除し得る。一態様では、ソフトウェア保護デバイスはさらに、第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得することと、メモリデバイス内に第2のレルムを確立することであって、第2のレルムは、確立されたレルムに含まれる1つまたは複数の選択された領域とは異なる、メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、第2のレルムに関連付けられた第2のエフェメラル暗号化鍵に基づいて第2のペイロードを暗号化することと、第2の暗号化されたペイロードをメモリデバイスの第2のレルムに記憶することとを行う。一態様では、ソフトウェア保護デバイスは、メモリデバイス内の第2のレルム用の第2のレルム識別子および第2のエフェメラル暗号化鍵を生成することによってレルムを確立し、第2のレルム識別子は、第2のエフェメラル暗号化鍵に関連付けられる。一態様では、ソフトウェア保護デバイスは、第2のレルム識別子および第2のエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶する。
【０００６】
一態様によれば、ソフトウェア保護デバイスは、命令またはデータのうちの少なくとも1つを含むペイロードを取得するための手段と、メモリデバイス内にレルムを確立するための手段であって、レルムは、メモリデバイス内の1つまたは複数の選択された領域を含む、手段と、レルムに関連付けられたエフェメラル暗号化鍵に基づいてペイロードを暗号化するための手段と、暗号化されたペイロードをメモリデバイスのレルムに記憶するための手段とを含む。一態様では、レルムを確立するための手段は、レルム用のレルム識別子およびエフェメラル暗号化鍵を生成するように構成され、レルム識別子は、エフェメラル暗号化鍵に関連付けられる。一態様では、ソフトウェア保護デバイスは、レルム識別子およびエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶するための手段をさらに含む。一態様では、ソフトウェア保護デバイスは、エフェメラル暗号化鍵に基づいてペイロードを暗号化することの前に、ペイロードに適用された暗号保護を解除するための手段をさらに含む。一態様では、暗号保護を解除するための手段は、ペイロードを検証するか、または永続的な暗号鍵を使用してペイロードを復号するように構成される。一態様では、ソフトウェア保護デバイスは、第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得するための手段と、メモリデバイス内に第2のレルムを確立するための手段であって、第2のレルムは、確立されたレルムに含まれる1つまたは複数の選択された領域とは異なる、メモリデバイス内の1つまたは複数の選択された領域を含む、手段と、第2のレルムに関連付けられた第2のエフェメラル暗号化鍵に基づいて第2のペイロードを暗号化するための手段と、第2の暗号化されたペイロードをメモリデバイスの第2のレルムに記憶するための手段とをさらに含む。一態様では、第2のレルムを確立するための手段は、メモリデバイス内の第2のレルム用の第2のレルム識別子および第2のエフェメラル暗号化鍵を生成するように構成され、第2のレルム識別子は、第2のエフェメラル暗号化鍵に関連付けられる。一態様では、ソフトウェア保護デバイスは、第2のレルム識別子および第2のエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶するための手段をさらに含む。
【０００７】
別の態様によれば、ソフトウェア(たとえば、ターゲットソフトウェア)を保護するために、ソフトウェア保護デバイス上で動作可能な方法が提供される。ソフトウェア保護デバイスは、メモリデバイスに関連付けられたメモリトランザクションを受信することであって、メモリトランザクションは、少なくともレルム識別子およびレルムインジケータビットを含み、レルム識別子は、メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、受信することと、レルム識別子がレルムを示すとき、かつレルムインジケータビットが有効化されているとき、レルム識別子に関連付けられたエフェメラル暗号化鍵を取得することと、メモリトランザクションが読取りトランザクションであるとき、エフェメラル暗号化鍵に基づいて、レルムから受信された命令またはデータのうちの少なくとも1つを復号することと、メモリトランザクションが書込みトランザクションであるとき、エフェメラル暗号化鍵に基づいて、レルムに記憶されるべき第2のデータを暗号化することとを行う。一態様では、ソフトウェア保護デバイスは、レルム識別子およびエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶する。一態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値であるとき、メモリトランザクションを変更することを控える。たとえば、エフェメラル暗号化鍵は、レルムがメモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵であり得る。一態様では、メモリトランザクションは、レルムの外部のメモリデバイスの領域へのアクセスを制御する制御ビットをさらに含む。そのような態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、メモリトランザクションを変更することを控え得る。一態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションが命令フェッチトランザクションであるとき、メモリトランザクションの失敗を検出する。一態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値ではないとき、かつレルムインジケータビットおよび制御ビットが無効化されているとき、メモリトランザクションの失敗を検出する。
【０００８】
別の態様によれば、ソフトウェア保護デバイスは、メモリデバイスに関連付けられたメモリトランザクションを受信するための手段であって、メモリトランザクションは、少なくともレルム識別子およびレルムインジケータビットを含み、レルム識別子は、メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、手段と、レルム識別子がレルムを示すとき、かつレルムインジケータビットが有効化されているとき、レルム識別子に関連付けられたエフェメラル暗号化鍵を取得するための手段と、メモリトランザクションが読取りトランザクションであるとき、エフェメラル暗号化鍵に基づいて、レルムから受信された命令またはデータのうちの少なくとも1つを復号するための手段と、メモリトランザクションが書込みトランザクションであるとき、エフェメラル暗号化鍵に基づいて、レルムに記憶されるべき第2のデータを暗号化するための手段とを含む。一態様では、ソフトウェア保護デバイスは、レルム識別子およびエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶するための手段をさらに含む。一態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値であるとき、メモリトランザクションを変更することを控えるための手段をさらに含む。一態様では、メモリトランザクションは、レルムの外部のメモリデバイスの領域へのアクセスを制御する制御ビットをさらに含む。そのような態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、メモリトランザクションを変更することを控えるための手段をさらに含む。一態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションが命令フェッチトランザクションであるとき、メモリトランザクションの失敗を検出するための手段をさらに含む。一態様では、ソフトウェア保護デバイスは、レルム識別子がゼロまたは特殊値ではないとき、かつレルムインジケータビットおよび制御ビットが無効化されているとき、メモリトランザクションの失敗を検出するための手段をさらに含む。
【０００９】
本開示のこれらの態様および他の態様は、以下の詳細な説明を検討すれば、より十分に理解されよう。本開示の他の態様、特徴、および実装形態は、添付の図とともに本開示の特定の実装形態の以下の説明を検討すれば、当業者に明らかになろう。本開示の特徴が以下のいくつかの実装形態および図に対して説明され得るが、本開示のすべての実装形態は、本明細書で説明する有利な特徴のうちの1つまたは複数を含むことができる。言い換えれば、1つまたは複数の実装形態について、いくつかの有利な特徴を有するものとして説明する場合があるが、そのような特徴のうちの1つまたは複数は、本明細書で説明する本開示の様々な実装形態に従って使用される場合もある。同様に、いくつかの実装形態について、デバイス実装形態、システム実装形態、または方法実装形態として以下で説明する場合があるが、そのような実装形態は、様々なデバイス、システム、および方法において実装され得ることを理解されたい。
【図面の簡単な説明】
【００１０】
【図１】本開示の様々な態様による、メモリデバイス内のレルム確立を示す例示的な流れ図である。
【図２】本開示の様々な態様による、メモリデバイス内のレルムの実行を示す例示的な流れ図である。
【図３】本開示の様々な態様による例示的なアーキテクチャのブロック図である。
【図４】本開示の様々な態様による例示的なアーキテクチャのブロック図である。
【図５Ａ】本開示の様々な態様によるソフトウェア保護デバイスのための方法を示す図である。
【図５Ｂ】本開示の様々な態様によるソフトウェア保護デバイスのための方法を示す図である。
【図６】本開示の様々な態様による例示的なアーキテクチャのブロック図である。
【図７】本開示の様々な態様による、メモリデバイス内のレルムの例示的な構成を示す図である。
【図８】本開示の1つまたは複数の態様による、メモリデバイス内のソフトウェアを保護することに関する動作をサポートするように構成された装置の図である。
【図９Ａ】本開示の様々な態様による、メモリデバイス内のソフトウェアを保護するための装置において動作可能な方法を示す図である。
【図９Ｂ】本開示の様々な態様による、メモリデバイス内のソフトウェアを保護するための装置において動作可能な方法を示す図である。
【図１０】本開示の様々な態様による、メモリデバイス内のソフトウェアを保護するための装置において動作可能な方法を示す図である。
【発明を実施するための形態】
【００１１】
添付の図面に関して以下に記載する詳細な説明は、様々な構成の説明として意図されており、本明細書で説明する概念が実践される場合がある唯一の構成を表すことは意図されていない。詳細な説明は、様々な概念の完全な理解を与えるための具体的な詳細を含む。しかしながら、これらの概念がこれらの具体的な詳細なしに実践される場合があることは当業者には明らかであろう。場合によっては、そのような概念を不明瞭にすることを避けるために、よく知られている構造および構成要素は、ブロック図の形態で示される。
【００１２】
概説
本開示の一態様は、ペイロードを取得することと、メモリデバイス内にレルムを確立することであって、レルムは、メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、レルムに関連付けられたエフェメラル暗号化鍵(EEK)に基づいてペイロードを暗号化することと、暗号化されたペイロードをメモリデバイスのレルムに記憶することとを行う、装置、方法、および命令またはデータのうちの少なくとも1つを含むコンピュータ可読媒体を指す。
【００１３】
本開示の別の態様は、メモリデバイスに関連付けられたメモリトランザクションを受信することであって、メモリトランザクションは、少なくともレルム識別子(RID)およびレルムインジケータビット(RB)を含み、RIDは、メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、受信することと、RIDがレルムを示すとき、かつレルムインジケータビットが有効化されているとき、RIDに関連付けられたエフェメラル暗号化鍵(EEK)を取得することと、メモリトランザクションが読取りトランザクションであるとき、EEKに基づいて、レルムから取り出された第1の命令または第1のデータのうちの少なくとも1つを復号することと、メモリトランザクションが書込みトランザクションであるとき、EEKに基づいて、レルムに記憶されるべき第2のデータを暗号化することとを行うための装置、方法、および命令を含むコンピュータ可読媒体を指す。
【００１４】
本明細書で開示する態様では、ソフトウェア保護デバイスは、コアデバイス(コア回路またはコア処理回路とも呼ばれる)によってアクセスおよび/または実行されるべきソフトウェア(ターゲットソフトウェアとも呼ばれる)を保護するように構成され得る。たとえば、コアデバイスは、中央処理装置(CPU)内のプロセッサとして働き得る。ソフトウェア保護デバイスは、コアデバイス用のメインメモリとして働くメモリデバイス内にレルムを確立することによって、かつターゲットソフトウェアを保護された形態でレルムに記憶することによって、ターゲットソフトウェアを保護し得る。本明細書で使用する「レルム」という用語は、メモリデバイスの1つまたは複数の選択された、あらかじめ定義された、または動的に定義されたメモリ領域、ドメイン、セグメント、および/またはブロックとして定義され得る。たとえば、レルムに含まれるメモリデバイス内のメモリ領域は、メモリデバイスに関連付けられたメモリページのセットとして示されるか、または参照され得る。一例では、メモリデバイスは、揮発性メモリデバイス(たとえば、ランダムアクセスメモリ(RAM)デバイス)であり得る。
【００１５】
図1は、本開示の様々な態様による、メモリデバイス内のレルム確立を示す例示的な流れ図100である。図1に示すように、例示的な流れ図100は、ストレージ102と、ソフトウェア保護デバイス104と、メモリデバイス106とを含む。以下で詳細に説明するように、ソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス104)は、ハードウェアアーキテクチャとして実装され得る。図1に示すように、ソフトウェア保護デバイス104は、レルム確立コマンドを受信し得る(108)。レルム確立コマンドに応答して、ソフトウェア保護デバイス104は、ストレージ102からターゲットソフトウェア(たとえば、ターゲットソフトウェアの命令および/またはデータ)を含むペイロード110を取得し得る。ソフトウェア保護デバイス104は、メモリデバイス106内にレルムを確立する(112)ことに進み得る。たとえば、ソフトウェア保護デバイス104は、レルム用のレルム識別子(RID)および一意のエフェメラル暗号化鍵(EEK)を生成することによって、メモリデバイス106内にレルムを確立し得る。たとえば、エフェメラル暗号化鍵は、レルムがメモリデバイス106内に維持されている間に存在する、一時的または過渡的な暗号化鍵であり得る。暗号保護がペイロードに適用されている(たとえば、ストレージ102内のターゲットソフトウェアが暗号化されている)場合、ソフトウェア保護デバイス104は、そのような暗号保護を解除する(114)ことに進み得る。一例では、ソフトウェア保護デバイス104は、永続的な暗号鍵に基づいてペイロードを復号することによって、暗号保護を解除し得る。ソフトウェア保護デバイス104は、レルムに関連付けられたEEKに基づいてペイロードを暗号化し得(116)、暗号化されたペイロード118をメモリデバイス106に記憶し得る。
【００１６】
図2は、本開示の様々な態様による、メモリデバイス内の以前に確立されたレルムの実行を示す例示的な流れ図200である。図2に示すように、例示的な流れ図200は、コアデバイス202と、ソフトウェア保護デバイス204と、メモリデバイス206とを含む。図2に示すように、コアデバイス202は、メモリデバイス206からのデータおよび/または命令を要求するメモリトランザクション208を開始し得る。一例では、メモリトランザクション208は、レルム識別子(RID)と、レルムインジケータビット(RB)と、任意選択の制御ビットとを含み得る。ソフトウェア保護デバイス204は、メモリトランザクション208を受信し得、メモリトランザクション(たとえば、メモリトランザクション210)をメモリデバイス206に転送し得る。ソフトウェア保護デバイス204は、要求されたデータまたは命令212をメモリデバイス206から受信し得、RIDがレルムを示すとき(たとえば、RIDが非ゼロ値であるかまたは特殊値ではないとき)、かつレルムインジケータビットが有効化されているとき、RIDに関連付けられたエフェメラル暗号化鍵(EEK)を取得し得る。ソフトウェア保護デバイス204は、メモリトランザクションが読取りトランザクションであるとき、EEKに基づいて受信されたデータを復号し得るか、または、メモリトランザクションが命令フェッチトランザクションであるとき、EEKに基づいて受信された命令を復号し得る。
【００１７】
図3は、本開示の様々な態様による例示的なアーキテクチャ300のブロック図である。たとえば、アーキテクチャ300は、パーソナルコンピュータ、携帯電話(ユーザ機器(UE)とも呼ばれる)、またはハンドヘルドゲームデバイスなどのコンピューティングデバイスにおいて実装され得る。図3に示すように、アーキテクチャ300は、ソフトウェア保護デバイス302と、メモリデバイス304と、ストレージ306とを含む。図3にさらに示すように、ソフトウェア保護デバイス302は、レルムマネージャ308と、鍵ストア310と、メモリ暗号化モジュール312とを含み得る。本開示の一態様では、レルムマネージャ308は、セキュアプロセッサ内のアプリケーションとして、別個のコアデバイスとして、またはハードウェアブロックとして実装され得る。たとえば、レルムマネージャ308は、大量のタスクをオフロードするために暗号コプロセッサを使用し得る。本開示の一態様では、メモリデバイス304は、(説明しやすいように図3には示されていない)中央処理装置(CPU)が実行するための命令をロードおよび記憶するように構成されたメインメモリとして働き得る。たとえば、メモリデバイス304は、ランダムアクセスメモリ(RAM)、キャッシュメモリデバイス、または任意の他の適切なタイプのメモリデバイスなどの揮発性メモリデバイスであり得る。
【００１８】
本開示の一態様では、ストレージ306は、ターゲットソフトウェア318などの、貴重なまたは慎重な扱いを要するソフトウェアを記憶するように構成され得る。本開示の一態様では、ターゲットソフトウェア318は、命令および/またはデータを含むプロプライエタリソフトウェアであり得る。たとえば、命令および/またはデータは、スタック、ヒープ、および/またはメタデータを含み得る。一態様では、ターゲットソフトウェア318は、ソフトウェアモジュールであり得る。本開示の一態様では、ストレージ306は、任意の適切なストレージデバイスであり得る。一例では、ストレージ306は、ローカルメモリ(たとえば、別のCPUのメモリ)であり得る。別の例では、ストレージ306は、フラッシュメモリ、組込み型マルチメディアカード(eMMC)、セキュアデジタル(SD)カード、USBドライブ、光ディスク、または磁気ディスクなどの、ローカルの不揮発性ストレージデバイスであり得る。別の例では、ストレージ306は、ネットワークを介してアクセス可能なリモートストレージであり得る。
【００１９】
本開示の一態様では、ソフトウェア保護デバイス302は、ターゲットソフトウェア318(たとえば、ターゲットソフトウェア318に関連付けられた命令および/またはデータ)などのソフトウェアを保護するように構成されたハードウェアアーキテクチャである。たとえば、ソフトウェア保護デバイス302は、デバイス内の様々なハードウェアおよび/またはソフトウェアを制御し得る様々な攻撃者(たとえば、ハッカー)からターゲットソフトウェア318を保護し得る。本開示の一態様では、ソフトウェア保護デバイス302の様々な特徴は、サードパーティの開発者が自分のソフトウェアを保護することを可能にするために、ソフトウェア開発キット(SDK)に組み込まれ得る。ソフトウェア保護デバイス302は、ツールおよびホスト環境に実質的な影響を及ぼすことなしに実装され得る。
【００２０】
本開示の一態様では、本明細書で開示するソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス302)の構成は、相手先商標製造会社(OEM)によって制御できない場合がある。そのような態様では、ソフトウェア保護デバイスは、OEMまたは他のパーティ(たとえば、サードパーティのソフトウェア開発者)が任意のソフトウェアをメモリデバイス304にインストールする能力を制限しない場合がある。ソフトウェア保護デバイスは、OEMまたはサードパーティによる特定の実行を必要としない場合がある。一態様では、ソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス302)はスケーラブル(任意の数のコアデバイス)であり得、様々なタイプのコアデバイスとともに使用され得る。一態様では、アーキテクチャ300(または図4を参照して以下で説明するアーキテクチャ400)は、メモリ(たとえば、メモリデバイス304)のアクセス制御に基づくのではなく、ターゲットソフトウェア318のメモリ暗号化に基づいて、ターゲットソフトウェア318(たとえば、ターゲットソフトウェア318の命令および/またはデータ)を保護し得る。
【００２１】
メモリデバイス内のレルムの確立
図3に示すように、ソフトウェア保護デバイス302のレルムマネージャ308は、メモリデバイス304内に1つまたは複数のレルム(たとえば、レルム316)を生成し得る。一例では、レルムマネージャ308は、レルム確立コマンド332などのトリガに応答して、メモリデバイス304内にレルム316を生成し得る。一例では、レルム確立コマンド332は、CPU(説明しやすいように図3には示されていない)からのリモートプロシージャ呼出し(RPC:remote procedure call)として実装され得る。別の例では、レルム確立コマンド332は、レルムマネージャ308の起動シーケンスのコマンドであり得る。レルム確立コマンド332は、様々な項目の情報を含み得る。本開示の一態様では、レルム確立コマンド332は、ストレージ306内のターゲットソフトウェア318のロケーション(たとえば、メモリアドレス)、メモリデバイス304内のレルム316のロケーション(たとえば、メモリアドレス)、ならびに/あるいは、ターゲットソフトウェア318の命令および/またはデータに適用された任意の暗号保護を検証および/または解除するために使用され得る1つまたは複数の鍵のロケーションを含み得る。
【００２２】
レルム確立コマンド332を受信したことに応答して、レルムマネージャ308は、レルム316用のレルム識別子(RID)およびレルム316用のエフェメラル暗号化鍵(EEK)を生成し得る。本開示の一態様では、RIDおよびEEKは、レルム316に固有のものであってもよく、メモリデバイス304内に確立され得る任意の他のレルムに関連付けられなくてもよい。本開示の一態様では、レルムマネージャ308は、(たとえば、RID/EEKペア314として図3に示す)RIDおよび対応するEEKを専用インターフェース324を介して鍵ストア310に記憶し得る。本開示の一態様では、RIDはソフトウェア保護デバイス302の外部のエンティティに開示される場合があるが、EEKはソフトウェア保護デバイス302の外部の任意のエンティティに知られていない場合がある。本開示の一態様では、RID、EEK、およびそれらの関連付けは、ソフトウェア保護デバイス302内で変更される場合があり、ソフトウェア保護デバイス302の外部の任意のエンティティによって変更されない場合がある。
【００２３】
図3に示すように、レルムマネージャ308は、ストレージ306から送信320を介してターゲットソフトウェア318の命令および/またはデータのすべてまたは少なくともいくつかを取得し得る。本開示の一態様では、レルムマネージャ308は、ストレージ306内のターゲットソフトウェア318のロケーション(たとえば、メモリアドレス)を読み取ることによって、ターゲットソフトウェア318の命令および/またはデータのすべてまたは少なくともいくつかを取得し得、その場合、送信320は、読取り動作に応答してレルムマネージャ308によって受信され得る。本開示の一態様では、ストレージ306に記憶されたターゲットソフトウェア318は保護され得る。一例では、ターゲットソフトウェア318は、平文形式であって物理的に保護されてもよく、その場合、ストレージ306は、セキュアストレージ(たとえば、オンチップストレージ、インパッケージストレージなど)として構成され得る。別の例では、ターゲットソフトウェア318は、暗号で保護される(たとえば、暗号化されるおよび/または認証される)場合がある。そのような例では、レルムマネージャ308は、セキュアストレージ306からターゲットソフトウェア318を含むファイルを取得し得、暗号保護をターゲットソフトウェア318に適用するために使用される1つまたは複数の鍵(たとえば、1つまたは複数の永続的な鍵)にアクセスし得る。レルムマネージャ308は、1つまたは複数の鍵を使用して暗号保護を検証および/または解除(たとえば、復号)することに進み得る。暗号保護が解除された後、レルムマネージャ308は次いで、RID/EEKペア314のEEKを使用してターゲットソフトウェア318の命令および/またはデータを暗号化し得、ターゲットソフトウェア318の暗号化された命令および/またはデータをメモリデバイス304のレルム316に記憶し得る。
【００２４】
一例では、レルムマネージャ308は、レルムマネージャ308内に暗号化関数を実装し、レルムマネージャ308とメモリデバイス304との間にダイレクトインターフェース322を実装することによって、ターゲットソフトウェア318の命令および/またはデータの暗号化を達成し得る。別の例では、レルムマネージャ308は、インターフェース330を介してソフトウェア保護デバイス302のメモリ暗号化モジュール312を実装することによって、ターゲットソフトウェア318の命令および/またはデータの暗号化を達成し得る。そのような例では、レルムマネージャ308は、レルム316に関連付けられたRIDをメモリ暗号化モジュール312に提供し得る。メモリ暗号化モジュール312は、RIDに関連付けられたEEKを専用インターフェース326を介して鍵ストア310から取り出し得る。メモリ暗号化モジュール312は、ターゲットソフトウェア318の命令および/またはデータを暗号化することに進み得、メモリデバイス304のレルム316に記憶するために、暗号化された命令および/またはデータ328を送信し得る。レルム316におけるターゲットソフトウェア318の暗号化形式(たとえば、ターゲットソフトウェア318の命令および/またはデータの暗号化形式)は、コアデバイス(図3には示されていない)がターゲットソフトウェア318を実行することができないようにすることを理解されたい。
【００２５】
本開示の一態様では、EEKに基づいてターゲットソフトウェア318を暗号化するために使用される暗号化方式は、物理アドレスに依存し得る。そのような態様では、レルム316が後でメモリデバイス304内で第1の物理アドレスから第2の物理アドレスに再配置される場合、レルムマネージャ308は、RID/EEKペア314のEEKおよび第1の物理アドレスを使用してレルム316のコンテンツの復号を開始し得る。次いで、レルムマネージャ308は、RID/EEKペア314のEEKおよび第2の物理アドレスを使用してレルム316のコンテンツの再暗号化を開始し得る。本開示の一態様では、EEKを用いて保護されるレルム(たとえば、レルム316)のメモリページ内の命令がコアデバイス(たとえば、以下で説明するコアデバイス444)によって実行されている期間の間、RID/EEKペア314のEEKは有効である場合がある(たとえば、存在する)が、レルムのメモリページ内の命令が実行された後、EEKはもはや有効ではない(たとえば、削除される)場合がある。
【００２６】
メモリデバイス内のレルムの実行
図4は、本開示の様々な態様による例示的なアーキテクチャ400のブロック図である。たとえば、アーキテクチャ400は、パーソナルコンピュータ、携帯電話(UEとも呼ばれる)、またはハンドヘルドゲームデバイスなどのコンピューティングデバイスにおいて実装され得る。図4に示すように、アーキテクチャ400は、ソフトウェア保護デバイス402と、メモリデバイス404と、中央処理装置(CPU)440と、メモリ管理ユニット(MMU)442とを含む。図4にさらに示すように、CPU440は、コアデバイス444を含み得、ソフトウェア保護デバイス402は、レルムマネージャ408と、鍵ストア410と、メモリ暗号化モジュール412とを含み得る。他の態様では、MMU442は、CPU440に含まれ得る。本開示の一態様では、図4のソフトウェア保護デバイス402、メモリデバイス404、レルムマネージャ408、鍵ストア410、およびメモリ暗号化モジュール412は、それぞれ、図3のソフトウェア保護デバイス302、メモリデバイス304、レルムマネージャ308、鍵ストア310、およびメモリ暗号化モジュール312に対応し得る。
【００２７】
レルム実行のためのコアデバイス動作
本開示の一態様では、コアデバイス444は、メモリコマンドを経路446を介してMMU442に送信することによって、メモリデバイス404に対してメモリトランザクションを開始し得る。したがって、一例では、メモリコマンドは、メモリデバイス404からデータを読み取るためのデータ読取りトランザクションを実行するように構成され得るか、またはメモリデバイス404にデータを書き込むためのデータ書込みトランザクションを実行するように構成され得る。別の例では、メモリコマンドは、メモリデバイス404から命令をフェッチするための命令フェッチトランザクション(命令読取りトランザクションとも呼ばれる)を実行するように構成され得る。
【００２８】
本開示の一態様では、前に説明した方法でレルム416が確立され、ターゲットソフトウェア318の暗号化された命令および/またはデータがレルム416に記憶された後、コアデバイス444は、レルム416からデータを読み取るか、レルム416にデータを書き込むか、またはレルム416から命令をフェッチするために、レルム416に入り得る。したがって、そのような態様では、コアデバイス444は、レルム416に対応するRIDを参照することによって、レルム416に入るための命令をサポートし得る。コアデバイス444はさらに、レルム416を出るための命令をサポートし得る。本開示の一態様では、コアデバイス444は、RIDを記憶するように構成されたRIDレジスタ452を含み得る。RIDレジスタ452は、いかなるソフトウェアにも見えない場合がある。一例では、RIDレジスタ452は、ゼロ値または他の特殊値がRIDレジスタ452に記憶されているとき、レルムが参照または識別されていないことを示し得る。たとえば、レルム416に入るための命令は、RIDレジスタ452においてレルム416に対応するRID値を設定し得、レルム416の先頭へのジャンプを可能にし得る。本開示の一態様では、レルムを出るための命令は、メモリデバイス404における(たとえば、レルム416に入る前の)以前の状態を復元し得る。そのような例では、コアデバイス444は、RIDレジスタ452におけるレルム416に対応するRID値をクリアし得る。
【００２９】
本開示の一態様では、コアデバイス444とメモリデバイス404との間の各メモリトランザクションは、RIDレジスタ452に現在記憶されているRIDと、メモリトランザクションのタイプ(たとえば、データまたは命令)と、任意選択の制御ビット450とを含むようにタグ付けされ得る。本開示の一態様では、RIDレジスタ452に現在記憶されているRIDおよび任意選択の制御ビット450は、信頼できないソフトウェアによる変更から保護される。1つのシナリオでは、たとえば、コアデバイス444がレルム416に入るための命令を実行し、RIDレジスタ452がレルム416に対応するRIDを含むとき、コアデバイス444とメモリデバイス404との間のメモリトランザクション(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクション)は、RIDレジスタ452内のRIDと任意選択の制御ビット450とを含むようにタグ付けされ得る。制御ビット450は、メモリトランザクションがレルム416の外部にあるメモリデバイス404の領域(メモリデバイス404の非レルム領域とも呼ばれる)からデータを読み取ることまたはその領域にデータを書き込むことを可能にするか、または阻止することができる。たとえば、コアデバイス444は、メモリデバイス404の非レルム領域への限定されたアクセスを可能にするか、または阻止するように制御ビット450を構成し得る。一態様では、そのような限定されたアクセスは、メモリデバイス404の非レルム領域からの命令のフェッチを可能にしないが、その領域からのデータの読取りまたは書込みを可能にし得る。制御ビット450は、本明細書では「data outside realm allowed」(DORA)ビット450とも呼ばれる。本開示の一態様では、DORAビット450は、いかなるソフトウェアにも見えない場合がある。たとえば、コアデバイス444は、DORAビット450を一時的に有効化する(たとえば、DORAビット450を「1」に設定する)ことによって、メモリデバイス404の非レルム領域から読み取るためのメモリトランザクションを可能にし得る。別の例では、コアデバイス444は、DORAビット450を一時的に無効化する(たとえば、DORAビット450を「0」に設定する)ことによって、メモリデバイス404の非レルム領域から読み取るためのメモリトランザクションを阻止し得る。本開示の一態様では、メモリデバイス404の非レルム領域(非レルムページとも呼ばれる)からデータを読み取るかまたは非レルム領域にデータを書き込むためのメモリトランザクションを可能にするためにDORAビット450が有効化される(たとえば、「1」に設定される)と、メモリデバイス404の非レルム領域からの命令の読取りが許可されないことがある。メモリトランザクションを開始するために、コアデバイス444は、RIDレジスタ452内のRIDと、メモリトランザクションのタイプ(たとえば、データまたは命令)と、(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクションを開始するための)メモリコマンド内の任意選択のDORAビット450とを含み得、メモリコマンドをMMU442に送信し得る。
【００３０】
レルム実行のためのメモリ管理ユニット(MMU)動作
MMU442は、メモリページテーブル(たとえば、仮想アドレスと物理アドレスとの間のマッピング)を維持し得、レルムに属するメモリページにおいてレルムインジケータビット(RB)454を含み得る。たとえば、メモリデバイス404内のレルムに対応する各メモリページは、RB454を使用して「レルムページ」としてマークされ得る。したがって、RB454は、メモリページがレルム416に属するかどうかをMMU442が識別することを可能にし得る。たとえば、RB454は、(たとえば、2つ以上の変換段が実装されるとき)任意のMMU変換段において構成され得、RB454が有効化される(たとえば、RB454が「1」に設定される)任意のメモリページは、レルム416に属するメモリページであると見なされ得る。
【００３１】
本開示の一態様では、MMU442は、メモリトランザクション(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクションを開始するためのメモリコマンド)をコアデバイス444から受信し得る。メモリトランザクションは、メモリデバイス404に関連付けられたメモリトランザクションアドレス(たとえば、データもしくは命令が読み取られるべきまたはデータが書き込まれるべきメモリアドレス)を含み得る。MMU442は、メモリトランザクションアドレスに対応するメモリページを決定し得、そのメモリページのためのRB454の値(たとえば、「0」または「1」)を決定し得る。MMU442は、コアデバイス444から受信されたメモリトランザクション内にRB454の値を含み得、RID452(たとえば、RIDレジスタ452に現在記憶されている値)と、任意選択のDORAビット450と、RB454の値とを含むメモリトランザクションを経路448を介してメモリ暗号化モジュール412に転送し得る。一態様では、MMU442は、RIDを変換または変更することなしに、メモリトランザクションの間にRIDを受信および/または送信し得る。
【００３２】
一態様では、メモリページのためのRB454が有効化されていない(たとえば、RB454が「0」に設定されている)とき、MMU442は、メモリトランザクションに含まれるRIDがレルムを示すかどうかを確認し得る。たとえば、MMU442は、RIDがゼロまたは所定の特殊値ではないとき、メモリトランザクションに含まれるRIDがレルムを示すと決定し得る。この態様では、メモリページのためのRB454が有効化されておらず、メモリトランザクションに含まれるRIDがレルムを示す場合、MMU442は、コアデバイス444をフォールトする(fault)かまたはレルム416から追い出す(たとえば、レルム416を離れることをコアデバイス444に強要する)ことがある。本開示の一態様では、レルム416は、1つまたは複数の追加のメモリページのためのRB454を設定することによって拡張され得る。一態様では、RB454が操作される場合(たとえば、信用できないエンティティまたはソフトウェアによってメモリページのためのRB454の値が変えられる場合)、レルム416から読み取られる任意のデータおよび/または命令は、コアデバイス444による処理を阻止する形態に(たとえば、暗号化された形態に)なる。
【００３３】
レルム実行のためのソフトウェア保護デバイス動作
次に、図4と(図5Aおよび図5Bを含む)図5に示す方法とを参照しながら、ソフトウェア保護デバイス402の動作について説明する。一態様では、図5に参照して説明する動作は、ソフトウェア保護デバイス402のメモリ暗号化モジュール412(メモリ暗号化エンジンとも呼ばれる)によって実行され得る。図5Aに示すように、ソフトウェア保護デバイス402は、コアデバイス444とメモリデバイス404との間のメモリトランザクションを受信し得る(502)。本開示の一態様では、ソフトウェア保護デバイス402は、メモリトランザクションがデータ読取りトランザクションに関連付けられているか、データ書込みトランザクションに関連付けられているか、命令フェッチトランザクションに関連付けられているかを決定し得る。ソフトウェア保護デバイス402は、メモリトランザクションに関連付けられた、RID452(たとえば、RIDレジスタ452に現在記憶されている値)と、レルムインジケータビット(RB)454と、任意選択のDORAビット450とを決定し得る(504)。一例では、前に説明したように、各メモリトランザクションは、RIDと、RBと、任意選択のDORAビットとを含むようにタグ付けされ得る。
【００３４】
ソフトウェア保護デバイス402は、メモリトランザクション内のRID452がレルムを示さないゼロまたは特殊値であるかどうかを決定し得る(506)。RID452がゼロまたは特殊値である場合、ソフトウェア保護デバイス402は、変更なしでメモリトランザクションを適切なエンティティに転送し得る(508)。一例では、メモリトランザクションが、メモリデバイス404からデータを読み取るというコアデバイス444からの要求である場合、ソフトウェア保護デバイス402は、変更なしで要求をメモリデバイス404に転送し得る。別の例では、メモリトランザクションが、データを読み取るという要求に応答してメモリデバイス404からコアデバイス444に返されているデータ(たとえば、ペイロード)である場合、ソフトウェア保護デバイス402は、変更なしで(たとえば、返されるデータを復号することなしに)返されるデータをコアデバイス444に転送し得る。また別の例では、メモリトランザクションが、メモリデバイス404にデータを書き込むというコアデバイス444からの要求である場合、ソフトウェア保護デバイス402は、変更なしで(たとえば、メモリデバイス404に書き込まれるべきデータを暗号化することなしに)書き込まれるべきデータをメモリデバイス404に転送し得る。
【００３５】
ソフトウェア保護デバイス402が、メモリトランザクション内のRID452がゼロまたは特殊値ではないと決定する(506)場合、ソフトウェア保護デバイス402は、RB454が有効化されているかどうか(たとえば、RB454が「1」に設定されているかどうか)を決定し得る(510)。RB454が有効化されている場合、ソフトウェア保護デバイス402は、RID452に対応するEEKを取得し得る。一態様では、RID452に対応するEEKは、メモリトランザクションのRID452を鍵ストア410に記憶されたRID/EEKペア414のRIDと照合することによって、鍵ストア410から取得され得る。次いで、RID/EEKペア414のEEKは、専用インターフェース426を介してメモリ暗号化モジュール412に送信され得る。次いで、ソフトウェア保護デバイス402は、メモリトランザクションがデータをメモリデバイス404に書き込むためのものか、データ/命令をメモリデバイス404から読み取るためのものかを決定し得る(514)。メモリトランザクションがデータをメモリデバイス404に書き込むためのものである場合、ソフトウェア保護デバイス402は、EEKに基づいて、メモリデバイス404に(たとえば、メモリデバイス404のレルム416に)記憶されるべきメモリトランザクションのデータを暗号化し得(516)、暗号化されたデータを含むメモリトランザクションをメモリデバイス404に転送し得る(518)。メモリトランザクションがデータをメモリデバイス404に書き込むためのものではない(たとえば、メモリトランザクションがデータをメモリデバイス404から読み取るかまたは命令をメモリデバイス404からフェッチするためのものである)場合、ソフトウェア保護デバイス402は、EEKに基づいて、メモリデバイス404のレルム416から返されたデータおよび/または命令(たとえば、ペイロード)を復号し得(520)、復号されたデータまたは命令を有するメモリトランザクションをコアデバイス444に転送し得る(522)。
【００３６】
ソフトウェア保護デバイス402が、RB454が有効化されていないと決定する(510)場合、ソフトウェア保護デバイス402は、任意選択のDORAビット450が有効化されているかどうか(たとえば、任意選択のDORAビット450が「1」に設定されているかどうか)を決定する(512)ことに進み得る。ソフトウェア保護デバイス402は、任意選択のDORAビット450が有効化されていないとき、メモリトランザクションの失敗を検出し得る(526)。しかしながら、任意選択のDORAビットが有効化されている場合、ソフトウェア保護デバイス402は、トランザクションがデータを読み取るためのものか、データを書き込むためのものかを決定し得る(528)。メモリトランザクションが、データをメモリデバイス404から読み取ることまたはデータをメモリデバイス404に書き込むことを伴う場合、ソフトウェア保護デバイス402は、変更なしでメモリトランザクションを意図された宛先に転送し得る(530)。たとえば、メモリトランザクションが、データを読み取るという要求に応答してメモリデバイス404からコアデバイス444に返されているデータ(たとえば、ペイロード)である場合、ソフトウェア保護デバイス402は、変更なしで(たとえば、返されるデータを復号することなしに)返されるデータをコアデバイス444に転送し得る。別の例では、メモリトランザクションが、メモリデバイス404にデータを書き込むというコアデバイス444からの要求である場合、ソフトウェア保護デバイス402は、変更なしで(たとえば、メモリデバイス404に書き込まれるべきデータを暗号化することなしに)書き込まれるべきデータをメモリデバイス404に転送し得る。メモリトランザクションが、データをメモリデバイス404から読み取ることまたはデータをメモリデバイス404に書き込むことを伴わない(たとえば、メモリトランザクションが、命令をメモリデバイス404からフェッチすることを伴う)場合、ソフトウェア保護デバイス402は、メモリトランザクションの失敗を検出し得る(526)。
【００３７】
本開示の一態様では、コアデバイス444がレルム416に入ったとき、命令をメモリデバイス404の非レルムページからフェッチするためのメモリトランザクションは、RIDレジスタ452に記憶されたRIDを消去し得る。そのような態様では、コアデバイス444は、レルム416を離れる(たとえば、出る)と言われることがある。
【００３８】
本明細書で説明する態様は、CPU440の(コアデバイス444に加えて)他のコアデバイスの動作に影響を及ぼすことなしに実装され得ることが諒解され得る。一態様では、ソフトウェア保護デバイス402は、オフチップメモリを用いて自動的に機能し得る。いくつかの態様では、レルムメモリページがメモリデバイス404の内外でスワップされ得る。いくつかの態様では、スレッド型の実行が可能であり得る。一態様では、コアデバイス444によってサポートされる、前に説明したコマンド、機能、および/または命令のうちのいずれかは、マイクロコードまたは信頼できるファームウェアとして実装され得る。一態様では、コアデバイス444は、例外ベクトルのオーバーライディングをサポートし得る。
【００３９】
したがって、レルム416内の命令および/または他の資産が暗号化される(たとえば、RID/EEKペア414のEEKを用いて暗号化される)ので、そのような命令および/または他の資産は、レルム416の外部の任意のエンティティ(たとえば、コアデバイス444、MMU442、および/またはメモリデバイス404において実装され得る他のレルム)に対してトランスペアレントではないことがある。一態様では、外部エンティティは、レルム416の制御を外部エンティティに移行することによって、レルム416の保護されたコンテンツに有意義にアクセスすることが可能にされ得る。一態様では、レルム416の制御は、外部エンティティがレルム416に「ジャンプする」ことを可能にすることによって、外部エンティティに移行され得る。たとえば、そのような外部エンティティは、レルム416にジャンプし、レルム416に関連付けられた暗号化鍵(たとえば、RID452に関連付けられたEEK)を設定するために、原子動作(たとえば、外部エンティティが同じバス動作において同時にロケーションを読み取り、ロケーションを書き込む動作)を実行することによって、レルム416にジャンプし得る。そのような原子動作は、RID値に対応するレルムにジャンプすることなしに(たとえば、RIDレジスタ452に)RID値を設定することを阻止し得る。特定のレルムに対する暗号化鍵の一意性は、特定のレルムのコンテンツが他のレルムおよび/または他のエンティティに対して不透明である(たとえば、トランスペアレントではない)ことを保証し得る。一態様では、アーキテクチャ400は、コアデバイス444を制御する命令(たとえば、ターゲットソフトウェア318の命令)の実行を可能にする。一態様では、レルム(たとえば、レルム416)内のデータは、エンティティがすでにレルムにジャンプしている場合、そのエンティティによってアクセスされ得る。
【００４０】
メモリデバイス内の複数のレルムの実行
図6は、本開示の様々な態様による例示的なアーキテクチャ600のブロック図である。たとえば、アーキテクチャ600は、パーソナルコンピュータ、携帯電話(UEとも呼ばれる)、またはハンドヘルドゲームデバイスなどのコンピューティングデバイスにおいて実装され得る。図6に示すように、アーキテクチャ600は、ソフトウェア保護デバイス602と、メモリデバイス604と、中央処理装置(CPU)640と、メモリ管理ユニット(MMU)642とを含む。図6にさらに示すように、CPU640は、コアデバイス644を含み得、ソフトウェア保護デバイス602は、レルムマネージャ608と、鍵ストア610と、メモリ暗号化モジュール612とを含み得る。他の態様では、MMU642は、CPU640に含まれ得る。本開示の一態様では、図6のソフトウェア保護デバイス602、メモリデバイス604、レルムマネージャ608、鍵ストア610、およびメモリ暗号化モジュール612は、それぞれ、図4のソフトウェア保護デバイス402、メモリデバイス404、レルムマネージャ408、鍵ストア410、およびメモリ暗号化モジュール412に対応し得る。さらに、経路646、648、および628は、それぞれ、図4の経路446、448、および428に対応し得る。
【００４１】
図6の例示的な構成に示すように、realm_1 662、realm_2 664、およびrealm_N 668などの複数の共存するレルムは、メモリデバイス604内に確立され得る。本開示の一態様では、realm_1 662、realm_2 664、およびrealm_N 668は、図3に関して前に説明したレルム316の確立と同様の方法で、レルムマネージャ608によって確立され得る。たとえば、メモリデバイス604内の各レルムは、異なるターゲットソフトウェアを保護するために使用され得、各ターゲットソフトウェアは、命令および/またはデータを含む。たとえば、realm_1 662は、第1のターゲットソフトウェアを保護するために確立され得、realm_2 664は、第2のターゲットソフトウェアを保護するために確立され得、realm_N 668は、第Nのターゲットソフトウェアを保護するために確立され得る。したがって、realm_1 662は、第1のレルム識別子(たとえば、RID_1)および第1のエフェメラル暗号化鍵(EEK_1)に関連付けられ得、realm_2 664は、第2のレルム識別子(たとえば、RID_2)および第2のエフェメラル暗号化鍵(EEK_2)に関連付けられ得、realm_N 668は、第Nのレルム識別子(たとえば、RID_N)および第Nのエフェメラル暗号化鍵(EEK_N)に関連付けられ得る。本開示の一態様では、EEK_1、EEK_2、およびEEK_Nは、互いに異なり得る。図6に示すように、RIDおよび対応するEEKは、RID_1/EEK_1ペア656、RID_2/EEK_2ペア658、およびRID_N/EEK_Nペア660として鍵ストア610に記憶される。したがって、一例では、realm_1 662に記憶された第1のターゲットソフトウェア(たとえば、第1のターゲットソフトウェアのデータおよび/または命令)はEEK_1を用いて暗号化され、realm_2 664内の第2のターゲットソフトウェア(たとえば、第2のターゲットソフトウェアのデータおよび/または命令)はEEK_2を用いて暗号化され、realm_N 668内の第Nのターゲットソフトウェア(たとえば、第Nのターゲットソフトウェアのデータおよび/または命令)はEEK_Nを用いて暗号化される。一例では、コアデバイス64
4は、第1、第2、および第Nのターゲットソフトウェアを並行して実行するように構成され得る。メモリデバイス604内のレルムの各々(たとえば、realm_1 662、realm_2 664、およびrealm_N 668)は、一意の暗号化鍵を用いて暗号化された異なるターゲットソフトウェアを含んでいるので、メモリデバイス604内のレルムは、互いと対話する(たとえば、通信する)ことができない場合があり、それによって、各ターゲットソフトウェアをメモリデバイス604に常駐する他のターゲットソフトウェアからの攻撃または操作から保護することに留意されたい。
【００４２】
本開示の一態様では、ソフトウェア保護デバイス602は、コアデバイス644とメモリデバイス604との間のメモリトランザクションを受信し得る。次いで、ソフトウェア保護デバイス602は、メモリトランザクション内のRID、RB、および任意選択のDORAビットを決定し得る。メモリトランザクション内のRIDがゼロまたは特殊値ではない場合、ソフトウェア保護デバイス602は、RB(たとえば、RB654)が有効化されているかどうか(たとえば、RBが「1」に設定されているかどうか)を決定し得る。RBが有効化されている場合、ソフトウェア保護デバイス602は、RIDに対応するEEKを取得し得る。一態様では、RIDに対応するEEKは、メモリトランザクションのRIDを鍵ストア610に記憶されたRIDと照合することによって、鍵ストア610から取得され得る。
【００４３】
たとえば、メモリトランザクション内のRIDが「RID_2」(たとえば、realm_2 664のRID)である場合、ソフトウェア保護デバイス602は、メモリトランザクションのRID_2をRID_2/EEK_2ペア658と照合し得る。次いで、RID_2/EEK_2ペア658のEEK_2は、専用インターフェース626を介してメモリ暗号化モジュール612に送信され得る。次いで、ソフトウェア保護デバイス602は、メモリトランザクションがデータをメモリデバイス604に書き込むためのものか、データ/命令をメモリデバイス604から読み取るためのものかを決定し得る。メモリトランザクションがデータをメモリデバイス604に書き込むためのものである場合、ソフトウェア保護デバイス602は、EEK_2に基づいて、メモリデバイス604に(たとえば、メモリデバイス604のrealm_2 664に)記憶されるべきメモリトランザクションのデータを暗号化し得、暗号化されたデータを含むメモリトランザクションをメモリデバイス604に転送し得る。メモリトランザクションがデータをメモリデバイス604に書き込むためのものではない(たとえば、メモリトランザクションがデータをメモリデバイス604から読み取るかまたは命令をメモリデバイス604からフェッチするためのものである)場合、ソフトウェア保護デバイス602は、EEK_2に基づいて、メモリデバイス604のrealm_2 664から返されたデータおよび/または命令(たとえば、ペイロード)を復号し得、復号されたデータまたは命令を有するメモリトランザクションをコアデバイス644に転送し得る。
【００４４】
したがって、メモリデバイス(たとえば、メモリデバイス604)内の各レルムは、RIDおよび対応する一意の暗号化鍵(たとえば、EEK)に基づいて他のレルムと区別され得るので、別のレルムからコンテンツ(たとえば、命令および/またはデータ)を読み取ることを試みるレルムは、正しい暗号化鍵にアクセスできない。したがって、異なるレルムから読み取られる任意の情報は無意味であり得る。一態様では、レルムは、命令およびデータアクセスに対して異なる暗号化鍵を使用するように構成され得るか、またはデータに対して暗号化を使用しないように構成され得る。暗号化がない場合、追加のデータアクセスレイテンシがない場合があることに留意されたい。
【００４５】
レルムに記憶するためにターゲットソフトウェアをパッケージ化するための例示的な動作
一態様では、開発者(たとえば、ソフトウェアまたはアプリケーション開発者)は、コアデバイスまたは他の処理デバイスによって実行されるべき命令および関連するデータを含み得るコード(たとえば、図3のターゲットソフトウェア318)を生成し得る。次いで、開発者は、コードおよび/またはデータをセキュアな方法でレルムマネージャ308に配信し得る。これは、レルムマネージャ308と共有される鍵(たとえば、永続的な暗号鍵)を使用してパッケージを暗号化し、認証することを伴い得る。
【００４６】
メモリデバイス内のレルムの例示的な構成
図7は、本開示の様々な態様による、メモリデバイス700内のレルムの例示的な構成である。図7に示すように、メモリデバイス700は、第1のシステム(たとえば、system_1)のための保護ドメイン(PD)702と、第2のシステム(たとえば、system_2)のためのPD704とを含む。他の態様では、メモリデバイス700は、異なる数のシステムおよび/または異なるタイプのシステム用に構成され得ることを理解されたい。たとえば、system_1はモデムデバイスに関連付けられ得、system_2はオペレーティングシステムに関連付けられ得る。そのような例では、PD702は、モデムデバイス用のファームウェア706を含み得、レルム708を含み得る。一態様では、レルム708は、モデム用の保護された(たとえば、暗号化された)ソフトウェアおよび/または保護されたデータを含むメモリデバイス700の部分を表し得る。図7に示すように、PD704は、カーネル710と、レルム712と、アプリケーションPD714とを含み得る。アプリケーションPD714は、system_2用のアプリケーションに関連付けられ得、アプリケーション命令/データ716を含み得、レルム718を含み得る。一態様では、レルム718は、保護された(たとえば、暗号化された)ソフトウェアおよび/または保護されたデータを含むメモリの部分を表す。
【００４７】
例示的な電子デバイスおよびその上の方法
図8は、本開示の1つまたは複数の態様(たとえば、以下で説明する図9および図10の方法に関する態様)による、メモリデバイス内のソフトウェアを保護することに関する動作をサポートするように構成された装置800の図である。装置800は、通信インターフェース(たとえば、少なくとも1つのトランシーバ)802と、コアデバイス804と、ユーザインターフェース806と、ストレージ808と、メモリデバイス810と、MMU回路812と、ソフトウェア保護デバイス814とを含む。
【００４８】
これらの構成要素は、図8の接続線によって概略的に表される、シグナリングバスまたは他の適切な構成要素を介して、互いに結合され、かつ/または互いと電気通信するように配置され得る。シグナリングバスは、コアデバイス804の特定の適用例および全体的な設計制約に応じて、任意の数の相互接続バスおよびブリッジを含み得る。シグナリングバスは、通信インターフェース802、コアデバイス804、ユーザインターフェース806、およびMMU回路812を互いにリンクさせる。シグナリングバスはまた、タイミングソース、周辺装置、電圧調整器、および電力管理回路などの様々な他の回路(図示せず)をリンクさせ得るが、これらの回路は当技術分野でよく知られており、したがって、これ以上は説明しない。
【００４９】
通信インターフェース802は、装置800のワイヤレス通信を容易にするように適合され得る。たとえば、通信インターフェース802は、ネットワーク内の1つまたは複数の通信デバイスに対して双方向に情報の通信を容易にするように適合された回路構成および/またはコード(たとえば、命令)を含み得る。通信インターフェース802は、ワイヤレス通信システム内のワイヤレス通信のための1つまたは複数のアンテナ816に結合され得る。通信インターフェース802は、1つまたは複数のスタンドアロン受信機および/または送信機、ならびに1つまたは複数のトランシーバを用いて構成され得る。図示の例では、通信インターフェース802は、受信機822および送信機824を含む。
【００５０】
コアデバイス804は、RIDレジスタ452または任意選択の制御ビット(たとえば、DORAビット450)を設定するためのレジスタなど、外部エンティティへの書込みアクセスが可能ではない1つまたは複数のレジスタ826を含み得る。たとえば、コアデバイス804は、図4のコアデバイス444または図6のコアデバイス644に対応し得る。
【００５１】
メモリデバイス810は、1つまたは複数のメモリデバイスを表し得る。たとえば、メモリデバイス810は、図3のメモリデバイス304または図4のメモリデバイス404に対応し得る。メモリデバイス810は、装置800のコアデバイス804用のメインメモリとして働き得る。いくつかの実装形態では、メモリデバイス810、ストレージ808、および記憶媒体820は、共通メモリ構成要素として実装される。メモリデバイス810はまた、コアデバイス804または装置800の何らかの他の構成要素によって操作されるデータを記憶するために使用され得る。
【００５２】
記憶媒体820は、プロセッサ実行可能コードもしくは命令(たとえば、ソフトウェア、ファームウェア)などのコード、電子データ、データベース、または他のデジタル情報を記憶するための1つまたは複数のコンピュータ可読、機械可読、および/またはプロセッサ可読デバイスを表し得る。記憶媒体820はまた、コードを実行するときにソフトウェア保護デバイス814の処理回路818によって操作されるデータを記憶するために使用され得る。記憶媒体820は、ポータブルまたは固定のストレージデバイスと、光ストレージデバイスと、コードを記憶する、含むまたは搬送することが可能な様々な他の媒体とを含む、汎用または専用プロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。
【００５３】
限定ではなく例として、記憶媒体820は、磁気ストレージデバイス(たとえば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、またはキードライブ)、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、リムーバブルディスク、およびコンピュータによってアクセスされ、読み取られ得るコードを記憶するための任意の他の適切な媒体を含み得る。記憶媒体820は、製造品(たとえば、コンピュータプログラム製品)において具現化され得る。例として、コンピュータプログラム製品は、パッケージング材料の中のコンピュータ可読媒体を含み得る。上記に鑑みて、いくつかの実装形態では、記憶媒体820は、非一時的(たとえば、有形)記憶媒体であり得る。記憶媒体820は、処理回路818が記憶媒体820から情報を読み取り、記憶媒体820に情報を書き込むことができるように、ソフトウェア保護デバイス814の処理回路818に結合され得る。
【００５４】
記憶媒体820によって記憶されているコードおよび/または命令は、ソフトウェア保護デバイス814の処理回路818によって実行されると、処理回路818に、本明細書で説明する様々な機能および/またはプロセス動作のうちの1つまたは複数を実行させる。たとえば、記憶媒体820は、処理回路818の1つまたは複数のハードウェアブロックにおける動作を調整するように構成された動作を含み得る。
【００５５】
ソフトウェア保護デバイス814の処理回路818は、一般に、記憶媒体820上に記憶されたそのようなコード/命令の実行を含む処理のために適合される。本明細書で使用する「コード」または「命令」という用語は、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語と呼ばれるか、または他の名称で呼ばれるかにかかわらず、限定はしないが、プログラミング、命令、命令セット、データ、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行ファイル、実行スレッド、プロシージャ、関数などを含むように広く解釈されるべきである。
【００５６】
ソフトウェア保護デバイス814の処理回路818は、データを取得し、処理し、かつ/または送り、データのアクセスおよび記憶を制御し、コマンドを発行し、他の所望の動作を制御するように構成される。処理回路818は、少なくとも1つの例では、適切な媒体によって与えられる所望のコードを実装するように構成された回路構成を含み得る。たとえば、処理回路818は、1つもしくは複数のプロセッサ、1つもしくは複数のコントローラ、および/または実行可能コードを実行するように構成された他の構造として実装され得る。処理回路818の例は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを含み得る。汎用プロセッサは、マイクロプロセッサ、ならびに任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械を含み得る。処理回路818はまた、DSPとマイクロプロセッサの組合せ、いくつかのマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、ASICおよびマイクロプロセッサ、または任意の他の数の様々な構成などのコンピューティング構成要素の組合せとして実装され得る。処理回路818のこれらの例は説明のためのものであり、本開示の範囲内の他の適切な構成も企図される。
【００５７】
本開示の1つまたは複数の態様によれば、処理回路818は、本明細書で説明する装置のいずれかまたはすべてのための特徴、プロセス、機能、動作および/またはルーチンのいずれかまたはすべてを実行するように適合され得る。処理回路818に関して本明細書で使用する「適合される」という用語は、本明細書で説明する様々な特徴による特定のプロセス、機能、動作および/またはルーチンを実行するように構成されること、用いられること、実装されること、および/またはプログラムされることのうちの1つまたは複数が行われる処理回路818を指し得る。
【００５８】
装置800の少なくとも1つの例によれば、処理回路818は、本明細書で説明する特徴、プロセス、機能、動作および/またはルーチン(たとえば、図9および図10に関して説明する特徴、プロセス、機能、動作および/またはルーチン)のいずれかまたはすべてを実行するように適合された、受信する回路/モジュール832、レルムを確立する回路/モジュール834、RIDおよびEEKを記憶する回路/モジュール836、暗号化および復号する回路/モジュール838、暗号化されたペイロードを記憶する回路/モジュール840、暗号保護を解除する回路/モジュール842、トランザクション失敗を検出する回路/モジュール844、変更を控える回路/モジュール846のうちの1つまたは複数を含み得る。
【００５９】
受信する回路/モジュール832は、たとえば、命令もしくはデータのうちの少なくとも1つを含むペイロードを受信すること、第2の命令もしくは第2のデータのうちの少なくとも1つを含む第2のペイロードを受信すること、および/またはメモリデバイスに関連付けられたメモリトランザクションを受信することであって、メモリトランザクションは少なくともレルム識別子(RID)およびレルムインジケータビットを含み、RIDはメモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を可能にする、受信することに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、受信する命令848)を含み得る。
【００６０】
レルムを確立する回路/モジュール834は、たとえば、命令またはデータのうちの少なくとも1つを含むペイロードを取得すること、メモリデバイス内にレルムを確立することであって、レルムはメモリデバイス内の1つまたは複数の選択された領域を含む、確立すること、第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得すること、およびメモリデバイス内に第2のレルムを確立することであって、第2のレルムは、以前に確立されたレルムに含まれる1つまたは複数の選択された領域とは異なる、メモリデバイス内の1つまたは複数の選択された領域を含む、確立することに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、レルムを確立する命令850)を含み得る。
【００６１】
RIDおよびEEKを記憶する回路/モジュール836は、たとえば、RIDおよびEEKを任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶すること、および/または第2のRIDおよび第2のEEKを任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶することに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、RIDおよびEEKを記憶する命令852)を含み得る。
【００６２】
暗号化および復号する回路/モジュール838は、たとえば、RIDがレルムを示すとき、かつレルムインジケータビットが有効化されているとき、RIDに関連付けられたエフェメラル暗号化鍵(EEK)を取得すること、レルムに関連付けられたEEKに基づいてペイロードを暗号化すること、第2のレルムに関連付けられた第2のEEKに基づいて第2のペイロードを暗号化すること、メモリトランザクションが読取りトランザクションであるとき、EEKに基づいて、レルムから取り出された命令もしくはデータのうちの少なくとも1つを復号すること、および/またはメモリトランザクションが書込みトランザクションであるとき、EEKに基づいて、レルムに記憶されるべき第2のデータを暗号化することに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、暗号化および復号する命令854)を含み得る。
【００６３】
暗号化されたペイロードを記憶する回路/モジュール840は、たとえば、暗号化されたペイロードをメモリデバイスのレルムに記憶すること、および/または第2の暗号化されたペイロードをメモリデバイスの第2のレルムに記憶することに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、暗号化されたペイロードを記憶する命令856)を含み得る。
【００６４】
暗号保護を解除する回路/モジュール842は、たとえば、EEKに基づいてペイロードを暗号化することの前に、ペイロードに適用された暗号保護を解除することに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、暗号保護を解除する命令858)を含み得る。
【００６５】
トランザクション失敗を検出する回路/モジュール844は、たとえば、RIDがゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションが命令フェッチトランザクションであるとき、メモリトランザクションの失敗を検出することに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、トランザクション失敗を検出する命令860)を含み得る。別の例として、トランザクション失敗を検出する回路/モジュール844は、RIDがゼロまたは特殊値ではないとき、かつレルムインジケータビットおよび制御ビットが無効化されているとき、メモリトランザクションの失敗を検出し得る。
【００６６】
変更を控える回路/モジュール846は、たとえば、RIDがゼロまたは特殊値であるとき、メモリトランザクションを変更することを控えること、および/あるいはRIDがゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、メモリトランザクションを変更することを控えることに関するいくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体820上に記憶された、変更を控える命令862)を含み得る。
【００６７】
上述のように、記憶媒体820によって記憶されている命令は、ソフトウェア保護デバイス814の処理回路818によって実行されると、処理回路818に、本明細書で説明する様々な機能ならびに/またはプロセス動作のうちの1つまたは複数を実行させる。たとえば、記憶媒体820は、受信する命令848、レルムを確立する命令850、RIDおよびEEKを記憶する命令852、暗号化および復号する命令854、暗号化されたペイロードを記憶する命令856、暗号保護を解除する命令858、トランザクション失敗を検出する命令860、ならびに変更を控える命令862のうちの1つまたは複数を含み得る。
【００６８】
第1の例示的な方法
(図9Aおよび図9Bを含む)図9は、本開示の様々な態様による、メモリデバイス(たとえば、メモリデバイス304またはメモリデバイス810)内のソフトウェアを保護するための装置において動作可能な方法を示す。本開示の一態様では、装置は、ソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス302またはソフトウェア保護デバイス814)であり得る。図9の点線によって示される動作は任意選択であることを理解されたい。
【００６９】
装置は、命令またはデータのうちの少なくとも1つを含むペイロードを取得し得る(902)。本開示の一態様では、ペイロードは、セキュア通信において取得されるか、またはセキュアストレージから取得され得る。装置は、メモリデバイス内にレルムを確立し得、レルムは、メモリデバイス内の1つまたは複数の選択された領域を含む(904)。一態様では、装置は、レルム用のレルム識別子(RID)およびEEKを生成することによってレルムを確立し得、RIDは、EEKに関連付けられる。装置は、RIDおよびEEKを任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶し得る(906)。装置は、EEKに基づいてペイロードを暗号化することの前に、ペイロードに適用された暗号保護を解除し得る(908)。本開示の一態様では、装置は、ペイロードを検証するおよび/または永続的な暗号鍵を使用してペイロードを復号することによって、暗号保護を解除し得る。装置は、レルムに関連付けられたエフェメラル暗号化鍵(EEK)に基づいてペイロードを暗号化し得る(910)。装置は、暗号化されたペイロードをメモリデバイスのレルムに記憶し得る(912)。
【００７０】
装置は、第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得し得る(914)。装置は、メモリデバイス内に第2のレルムを確立し得、第2のレルムは、確立されたレルムに含まれる1つまたは複数の選択された領域とは異なる、メモリデバイス内の1つまたは複数の選択された領域を含む(916)。本開示の一態様では、装置は、メモリデバイス内の第2のレルム用の第2のレルム識別子(RID)および第2のEEKを生成することによって第2のレルムを確立し得、第2のRIDは、第2のEEKに関連付けられる。装置は、第2のRIDおよび第2のEEKを任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶し得る(918)。装置は、第2のレルムに関連付けられた第2のエフェメラル暗号化鍵(EEK)に基づいて第2のペイロードを暗号化し得る(920)。装置は、第2の暗号化されたペイロードをメモリデバイスの第2のレルムに記憶し得る(922)。
【００７１】
第2の例示的な方法
図10は、本開示の様々な態様による、メモリデバイス(たとえば、メモリデバイス404またはメモリデバイス810)内のソフトウェアを保護するための装置において動作可能な方法を示す。本開示の一態様では、装置は、ソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス402またはソフトウェア保護デバイス814)であり得る。図10の点線によって示される動作は任意選択であることを理解されたい。
【００７２】
装置は、メモリデバイスに関連付けられたメモリトランザクションを受信し得、メモリトランザクションは、少なくともレルム識別子(RID)およびレルムインジケータビットを含み、RIDは、メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する(1002)。本開示の一態様では、メモリトランザクションは、レルムの外部のメモリデバイスの領域へのアクセスを制御する任意選択の制御ビット(たとえば、DORAビット450)をさらに含み得る。装置は、RIDがゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションが命令フェッチトランザクションであるとき、メモリトランザクションの失敗を検出し得る(1004)。装置は、RIDがゼロまたは特殊値ではないとき、かつレルムインジケータビットおよび制御ビットが無効化されているとき、メモリトランザクションの失敗を検出し得る(1006)。装置は、RIDがゼロまたは特殊値であるとき、メモリトランザクションを変更することを控え得る(1008)。たとえば、装置は、変更なしでメモリトランザクションを意図された宛先に転送し得る。装置は、RIDがゼロまたは特殊値ではなく、レルムインジケータビットが無効化され、制御ビットが有効化されているとき、かつトランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、メモリトランザクションを変更することを控え得る(1010)。装置は、RIDがレルムを示すとき、かつレルムインジケータビットが有効化されているとき、RIDに関連付けられたエフェメラル暗号化鍵(EEK)を取得し得る(1012)。本開示の一態様では、RIDおよびEEKは、任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶される。装置は、メモリトランザクションが読取りトランザクションであるとき、EEKに基づいて、レルムから取り出された命令またはデータのうちの少なくとも1つを復号し得る(1014)。装置は、メモリトランザクションが書込みトランザクションであるとき、EEKに基づいて、レルムに記憶されるべき第2のデータを暗号化し得る(1016)。
【００７３】
さらに、本明細書で開示する実装形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せとして実装され得ることが当業者には諒解されよう。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約によって決まる。
【００７４】
本開示内では、「例示的」という語は、「例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書で説明する任意の実装形態または態様は、必ずしも本開示の他の態様よりも好ましいかまたは有利であると解釈されるべきではない。同様に、「態様」という用語は、本開示のすべての態様が、論じられる特徴、利点、または動作モードを含むことを必要としない。「結合された」という用語は、本明細書では、2つの物体間の直接または間接的な結合を指すために使用される。たとえば、物体Aが物体Bに物理的に接触し、物体Bが物体Cに接触する場合、物体AおよびCは、それらが互いに物理的に直接接触しない場合であっても、依然として互いに結合されていると見なされ得る。たとえば、第1のダイは、第1のダイがパッケージ内の第2のダイに物理的に直接接触していなくても、第2のダイに結合され得る。「回路」および「回路構成」という用語は広く使用され、電子回路のタイプに関して限定せずに、接続され構成されると、本開示で説明する機能の実行を可能にする電気デバイスおよび導体のハードウェア実装形態、ならびに、プロセッサによって実行されると、本開示で説明する機能の実行を可能にする情報および命令のソフトウェア実装形態の両方を含むものとする。
【００７５】
本明細書で使用する「決定すること」という用語は、多種多様なアクションを包含する。たとえば、「決定すること」は、算出すること、計算すること、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、データベースまたは別のデータ構造においてルックアップすること)、確認することなどを含み得る。また、「決定すること」は、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリ内のデータにアクセスすること)などを含み得る。また、「決定すること」は、解決すること、選択すること、選ぶこと、確立することなどを含み得る。
【００７６】
前述の説明は、いかなる当業者も本明細書で説明する様々な態様を実践することを可能にするために提供される。これらの態様に対する様々な変更は当業者に容易に明らかになり、本明細書で定義した一般原理は他の態様に適用され得る。したがって、特許請求の範囲は、本明細書に示す態様に限定されるものではなく、特許請求の範囲の文言と一致するすべての範囲を与えられるべきであり、単数形の要素への言及は、そのように明記されていない限り、「唯一無二の」ではなく、「1つまたは複数の」を意味するものである。別段に明記されていない限り、「いくつかの」という用語は、1つまたは複数を指す。項目のリスト「のうちの少なくとも1つ」に言及する句は、単一のメンバーを含むそれらの項目の任意の組合せを指す。一例として、「a、b、またはcのうちの少なくとも1つ」は、a;b;c;aおよびb;aおよびc;bおよびc;ならびにa、bおよびcを包含するものとする。当業者に知られているか、または後で当業者に知られることになる、本開示全体にわたって説明する様々な態様の要素に対するすべての構造的および機能的等価物は、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されるものとする。さらに、本明細書で開示したものは、そのような開示が特許請求の範囲において明示的に列挙されているかどうかにかかわらず、公に供されるものではない。いかなるクレーム要素も、「のための手段」という句を使用して要素が明確に列挙されていない限り、または方法クレームの場合、「のためのステップ」という句を使用して要素が列挙されていない限り、米国特許法第112条第6項の規定の下で解釈されるべきではない。
【００７７】
したがって、本明細書で説明し、添付の図面に示す例に関連付けられた様々な特徴は、本開示の範囲から逸脱することなく、異なる例および実装形態において実装され得る。したがって、いくつかの特定の構成および配置について説明し、添付の図面に示したが、説明した実装形態への様々な他の追加および変更、ならびに説明した実装形態からの削除が当業者には明らかであるので、そのような実装形態は例示にすぎず、本開示の範囲を限定するものではない。したがって、本開示の範囲は、以下の特許請求の範囲の文言、および法的均等物によってのみ決定される。
【符号の説明】
【００７８】
100  流れ図
102  ストレージ
104  ソフトウェア保護デバイス
106  メモリデバイス
110  ペイロード
118  暗号化されたペイロード
200  流れ図
202  コアデバイス
204  ソフトウェア保護デバイス
206  メモリデバイス
208  メモリトランザクション
210  メモリトランザクション
212  要求されたデータまたは命令
300  アーキテクチャ
302  ソフトウェア保護デバイス
304  メモリデバイス
306  ストレージ
308  レルムマネージャ
310  鍵ストア
312  メモリ暗号化モジュール
314  RID/EEKペア
316  レルム
318  ターゲットソフトウェア
320  送信
322  ダイレクトインターフェース
324  専用インターフェース
326  専用インターフェース
328  暗号化された命令および/またはデータ
330  インターフェース
332  レルム確立コマンド
400  アーキテクチャ
402  ソフトウェア保護デバイス
404  メモリデバイス
408  レルムマネージャ
410  鍵ストア
412  メモリ暗号化モジュール
414  RID/EEKペア
416  レルム
426  専用インターフェース
428  経路
440  中央処理装置(CPU)、CPU
442  メモリ管理ユニット(MMU)、MMU
444  コアデバイス
446  経路
448  経路
450  制御ビット、「data outside realm allowed」(DORA)ビット、DORAビット
452  RIDレジスタ、RID
454  レルムインジケータビット(RB)、RB
600  アーキテクチャ
602  ソフトウェア保護デバイス
604  メモリデバイス
608  レルムマネージャ
610  鍵ストア
612  メモリ暗号化モジュール
626  専用インターフェース
628  経路
640  中央処理装置(CPU)、CPU
642  メモリ管理ユニット(MMU)、MMU
644  コアデバイス
646  経路
648  経路
654  RB
656  RID_1/EEK_1ペア
658  RID_2/EEK_2ペア
660  RID_N/EEK_Nペア
662  realm_1
664  realm_2
668  realm_N
700  メモリデバイス
702  保護ドメイン(PD)、PD
704  PD
706  ファームウェア
708  レルム
710  カーネル
712  レルム
714  アプリケーションPD
716  アプリケーション命令/データ
718  レルム
800  装置
802  通信インターフェース
804  コアデバイス
806  ユーザインターフェース
808  ストレージ
810  メモリデバイス
812  MMU回路
814  ソフトウェア保護デバイス
816  アンテナ
818  処理回路
820  記憶媒体
822  受信機
824  送信機
826  レジスタ
832  受信する回路/モジュール
834  レルムを確立する回路/モジュール
836  RIDおよびEEKを記憶する回路/モジュール
838  暗号化および復号する回路/モジュール
840  暗号化されたペイロードを記憶する回路/モジュール
842  暗号保護を解除する回路/モジュール
844  トランザクション失敗を検出する回路/モジュール
846  変更を控える回路/モジュール
848  受信する命令
850  レルムを確立する命令
852  RIDおよびEEKを記憶する命令
854  暗号化および復号する命令
856  暗号化されたペイロードを記憶する命令
858  暗号保護を解除する命令
860  トランザクション失敗を検出する命令
862  変更を控える命令
【図１】
2018520594.tif 000003
【図２】
2018520594.tif 000004
【図３】
2018520594.tif 000005
【図４】
2018520594.tif 000006
【図５Ａ】
2018520594.tif 000007
【図５Ｂ】
2018520594.tif 000008
【図６】
2018520594.tif 000009
【図７】
2018520594.tif 000010
【図８】
2018520594.tif 000011
【図９Ａ】
2018520594.tif 000012
【図９Ｂ】
2018520594.tif 000013
【図１０】
2018520594.tif 000014
【手続補正書】
【提出日】平成30年1月10日(2018.1.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアを保護するための方法であって、
命令またはデータのうちの少なくとも1つを含むペイロードを取得するステップであって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきである、ステップと、
メモリデバイス内にレルムを確立するステップであって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、ステップと、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化するステップであって、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、ステップと、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶するステップと
を備える方法。
【請求項２】
前記レルムを確立する前記ステップが、
前記レルム用のレルム識別子および前記エフェメラル暗号化鍵を生成するステップであって、前記レルム識別子が、前記エフェメラル暗号化鍵に関連付けられる、ステップ
を備える、請求項1に記載の方法。
【請求項３】
前記レルム識別子および前記エフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶するステップ
をさらに備える、請求項2に記載の方法。
【請求項４】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項1に記載の方法。
【請求項５】
前記ペイロードが、セキュア通信において取得されるか、またはセキュアストレージから取得される、請求項1に記載の方法。
【請求項６】
前記エフェメラル暗号化鍵に基づいて前記ペイロードを暗号化する前記ステップの前に、前記ペイロードに適用された暗号保護を解除するステップ
をさらに備える、請求項1に記載の方法。
【請求項７】
前記暗号保護を解除する前記ステップが、前記ペイロードを検証するステップまたは永続的な暗号鍵を使用して前記ペイロードを復号するステップのうちの少なくとも1つを含む、請求項6に記載の方法。
【請求項８】
第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得するステップと、
前記メモリデバイス内に第2のレルムを確立するステップであって、前記第2のレルムが、前記確立されたレルムに含まれる前記1つまたは複数の選択された領域とは異なる、前記メモリデバイス内の1つまたは複数の選択された領域を含む、ステップと、
前記第2のレルムに関連付けられた第2のエフェメラル暗号化鍵に基づいて前記第2のペイロードを暗号化するステップと、
前記第2の暗号化されたペイロードを前記メモリデバイスの前記第2のレルムに記憶するステップと
をさらに備える、請求項2に記載の方法。
【請求項９】
前記第2のレルムを確立する前記ステップが、
前記メモリデバイス内の前記第2のレルム用の第2のレルム識別子および前記第2のエフェメラル暗号化鍵を生成するステップであって、前記第2のレルム識別子が、前記第2のエフェメラル暗号化鍵に関連付けられる、ステップ
を備える、請求項8に記載の方法。
【請求項１０】
前記第2のレルム識別子および前記第2のエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶するステップ
をさらに備える、請求項9に記載の方法。
【請求項１１】
メモリデバイスと、
前記メモリデバイスに結合された処理回路であって、
命令またはデータのうちの少なくとも1つを含むペイロードを取得することであって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきである、取得することと、
メモリデバイス内にレルムを確立することであって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化することであって、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、暗号化することと、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶することと
を行うように構成された処理回路と
を備える装置。
【請求項１２】
前記レルムを確立するように構成された前記処理回路が、
前記レルム用のレルム識別子および前記エフェメラル暗号化鍵を生成することであって、前記レルム識別子が、前記エフェメラル暗号化鍵に関連付けられる、生成すること
を行うようにさらに構成される、請求項11に記載の装置。
【請求項１３】
前記処理回路が、
前記レルム識別子および前記エフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶する
ようにさらに構成される、請求項12に記載の装置。
【請求項１４】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項11に記載の装置。
【請求項１５】
前記ペイロードが、セキュア通信において取得されるか、またはセキュアストレージから取得される、請求項11に記載の装置。
【請求項１６】
前記処理回路が、
前記エフェメラル暗号化鍵に基づいた前記ペイロードの前記暗号化の前に前記ペイロードに適用された暗号保護を解除する
ようにさらに構成される、請求項11に記載の装置。
【請求項１７】
前記暗号保護を解除するように構成された前記処理回路が、
前記ペイロードを検証するか、または永続的な暗号鍵を使用して前記ペイロードを復号する
ようにさらに構成される、請求項16に記載の装置。
【請求項１８】
前記処理回路が、
第2の命令または第2のデータのうちの少なくとも1つを含む第2のペイロードを取得することと、
前記メモリデバイス内に第2のレルムを確立することであって、前記第2のレルムが、前記確立されたレルムに含まれる前記1つまたは複数の選択された領域とは異なる、前記メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、
前記第2のレルムに関連付けられた第2のエフェメラル暗号化鍵に基づいて前記第2のペイロードを暗号化することと、
前記第2の暗号化されたペイロードを前記メモリデバイスの前記第2のレルムに記憶することと
を行うようにさらに構成される、請求項12に記載の装置。
【請求項１９】
前記第2のレルムを確立するように構成された前記処理回路が、
前記メモリデバイス内の前記第2のレルム用の第2のレルム識別子および前記第2のエフェメラル暗号化鍵を生成することであって、前記第2のレルム識別子が、前記第2のエフェメラル暗号化鍵に関連付けられる、生成すること
を行うようにさらに構成される、請求項18に記載の装置。
【請求項２０】
前記処理回路が、
前記第2のレルム識別子および前記第2のエフェメラル暗号化鍵を任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶する
ようにさらに構成される、請求項19に記載の装置。
【請求項２１】
命令またはデータのうちの少なくとも1つを含むペイロードを取得するための手段であって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきである、手段と、
メモリデバイス内にレルムを確立するための手段であって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、手段と、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化するための手段であって、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、手段と、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶するための手段と
を備える装置。
【請求項２２】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
命令またはデータのうちの少なくとも1つを含むペイロードを取得することであって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきである、取得することと、
メモリデバイス内にレルムを確立することであって、前記レルムが、前記メモリデバイス内の1つまたは複数の選択された領域を含む、確立することと、
前記レルムに関連付けられたエフェメラル暗号化鍵に基づいて前記ペイロードを暗号化することであって、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、暗号化することと、
前記暗号化されたペイロードを前記メモリデバイスの前記レルムに記憶することと
を行わせる命令を記憶した非一時的プロセッサ可読記憶媒体。
【請求項２３】
メモリデバイス内のソフトウェアを保護するための方法であって、
前記メモリデバイスに関連付けられたメモリトランザクションを受信するステップであって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、ステップと、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得するステップと、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号するステップであって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきであり、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、ステップと、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化するステップと
を備える方法。
【請求項２４】
前記レルム識別子および前記エフェメラル暗号化鍵が、任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶される、請求項23に記載の方法。
【請求項２５】
前記レルム識別子がゼロまたは特殊値であるとき、前記メモリトランザクションを変更することを控えるステップ
をさらに備える、請求項23に記載の方法。
【請求項２６】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項23に記載の方法。
【請求項２７】
前記メモリトランザクションが、前記レルムの外部の前記メモリデバイスの領域へのアクセスを制御する制御ビットをさらに含み、前記方法が、
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、前記メモリトランザクションを変更することを控えるステップ
をさらに備える、請求項23に記載の方法。
【請求項２８】
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションが命令フェッチトランザクションであるとき、前記メモリトランザクションの失敗を検出するステップ
をさらに備える、請求項27に記載の方法。
【請求項２９】
前記レルム識別子がゼロまたは特殊値ではないとき、かつ前記レルムインジケータビットおよび前記制御ビットが無効化されているとき、前記メモリトランザクションの失敗を検出するステップ
をさらに備える、請求項27に記載の方法。
【請求項３０】
メモリデバイスと、
前記メモリデバイスに結合された処理回路であって、
前記メモリデバイスに関連付けられたメモリトランザクションを受信することであって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、受信することと、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得することと、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号することであって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきであり、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、復号することと、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化することと
を行うように構成された処理回路と
を備える装置。
【請求項３１】
前記レルム識別子および前記エフェメラル暗号化鍵が、任意の外部エンティティがアクセス可能ではない第2のメモリデバイスに記憶される、請求項30に記載の装置。
【請求項３２】
前記処理回路が、
前記レルム識別子がゼロまたは特殊値であるとき、前記メモリトランザクションを変更することを控える
ようにさらに構成される、請求項30に記載の装置。
【請求項３３】
前記エフェメラル暗号化鍵が、前記レルムが前記メモリデバイス内に維持されている間に存在する、一時的または過渡的な暗号化鍵である、請求項30に記載の装置。
【請求項３４】
前記メモリトランザクションが、前記レルムの外部の前記メモリデバイスの領域へのアクセスを制御する制御ビットをさらに含み、前記処理回路が、
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるとき、前記メモリトランザクションを変更することを控える
ようにさらに構成される、請求項30に記載の装置。
【請求項３５】
前記処理回路が、
前記レルム識別子がゼロまたは特殊値ではなく、前記レルムインジケータビットが無効化され、前記制御ビットが有効化されているとき、かつ前記トランザクションが命令フェッチトランザクションであるとき、前記メモリトランザクションの失敗を検出する
ようにさらに構成される、請求項34に記載の装置。
【請求項３６】
前記処理回路が、
前記レルム識別子がゼロまたは特殊値ではないとき、かつ前記レルムインジケータビットおよび前記制御ビットが無効化されているとき、前記メモリトランザクションの失敗を検出する
ようにさらに構成される、請求項34に記載の装置。
【請求項３７】
メモリデバイスに関連付けられたメモリトランザクションを受信するための手段であって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、手段と、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得するための手段と、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号するための手段であって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきであり、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、手段と、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化するための手段と
を備える装置。
【請求項３８】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、
メモリデバイスに関連付けられたメモリトランザクションを受信することであって、前記メモリトランザクションが、少なくともレルム識別子およびレルムインジケータビットを含み、前記レルム識別子が、前記メモリデバイス内の1つまたは複数の選択された領域を含むレルムの識別を有効化する、受信することと、
前記レルム識別子が前記レルムを示すとき、かつ前記レルムインジケータビットが有効化されているとき、前記レルム識別子に関連付けられたエフェメラル暗号化鍵を取得することと、
前記メモリトランザクションが読取りトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムから受信された命令またはデータのうちの少なくとも1つを復号することであって、前記命令または前記データのうちの前記少なくとも1つがコアデバイスによって処理されるべきであり、前記エフェメラル暗号化鍵が前記コアデバイスに知られていない、復号することと、
前記メモリトランザクションが書込みトランザクションであるとき、前記エフェメラル暗号化鍵に基づいて、前記レルムに記憶されるべき第2のデータを暗号化することと
を行わせる命令を記憶した非一時的プロセッサ可読記憶媒体。
【国際調査報告】
2018520594.tif 000015
2018520594.tif 000016