(57)【要約】  データタギングに基づいてコンピューティングデバイスと関連付けられたメモリ内のデータを選択的にスクランブルするための方法。コンピューティングデバイスは、保護されるセキュリティドメインを規定する。アプリケーションによって生成されたデータは、アプリケーションおよび/またはデータを記述するタギング情報を有するデータバストランザクションとしてパッケージングされる。データバストランザクションは、内部メモリなどのメモリにコンピューティングデバイスのバスを介して送信され、コンピューティングデバイスは、タギング情報を、セキュリティドメインを記述する記憶された情報と比較する。タギング情報に基づいて、データが保護されるべきと判断されるとき、コンピューティングデバイスは、データに対してスクランブリング動作を実行する。
2015528596.tif 000002
【特許請求の範囲】
【請求項１】
データをパターンマッチング攻撃から効果的に保護するために、コンピューティングデバイス内で選択的メモリスクランブリングを行うための方法であって、
メモリに記憶されるべきデータが保護コンテンツを含むかどうかを判断するステップと、
前記データが保護コンテンツを含むときに、前記データを前記メモリに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップと、
前記データが保護コンテンツを含まないときに、前記スクランブリングルーチンを前記データに適用することなく前記データを前記メモリに記憶するステップとを含む、方法。
【請求項２】
保護コンテンツが、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データのグループから選択される、請求項1に記載の方法。
【請求項３】
前記メモリが、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージのグループから選択される、請求項1に記載の方法。
【請求項４】
メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを判断するステップが、
前記データのソースまたはコンテンツを識別する前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
前記タギング情報に基づいてトランザクションの前記ソースまたはコンテンツを決定するステップとを含み、
前記データが保護コンテンツを含むときに、前記データを前記メモリに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップが、前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルし、前記メモリに記憶するステップを含む、請求項1に記載の方法。
【請求項５】
前記コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記タギング情報に基づいて前記トランザクションの前記ソースまたはコンテンツを決定するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含む、請求項4に記載の方法。
【請求項６】
前記データに付加された前記タギング情報が、仮想マシン識別(VMID)である、請求項4に記載の方法。
【請求項７】
前記データに付加された前記タギング情報が、バスマスター識別である、請求項4に記載の方法。
【請求項８】
前記データに付加された前記タギング情報が、宛先メモリアドレスであり、
前記メモリが、保護コンテンツデータに対して特定のメモリアドレスを使用する、請求項4に記載の方法。
【請求項９】
前記データに付加された前記タギング情報が、コンテンツ保護(CP)ビットである、請求項4に記載の方法。
【請求項１０】
前記コンピューティングデバイス内の第1のプロセッサ、前記コンピューティングデバイス内のコプロセッサ、および前記コンピューティングデバイス内のピアプロセッサのうちの少なくとも1つにおいて実行される、請求項1に記載の方法。
【請求項１１】
少なくとも、データがスクランブルされるセキュアドメインと非セキュアドメインとで構成されるメモリと、
前記メモリに結合されたプロセッサとを備え、前記プロセッサが、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを判断するステップと、
前記データが保護コンテンツを含むときに、前記データを前記メモリ内の前記セキュアドメインに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップと、
前記データが保護コンテンツを含まないときに、前記スクランブリングルーチンを前記データに適用することなく前記データを前記非セキュアドメインに記憶するステップとを含む動作を実行するためのプロセッサ実行可能命令をともなって構成される、コンピューティングデバイス。
【請求項１２】
保護コンテンツが、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データのグループから選択される、請求項11に記載のコンピューティングデバイス。
【請求項１３】
前記メモリが、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージのグループから選択される、請求項11に記載のコンピューティングデバイス。
【請求項１４】
メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを判断するステップが、
前記データのソースまたはコンテンツを識別する前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
前記タギング情報に基づいてトランザクションの前記ソースまたはコンテンツを決定するステップとを含むような動作を実行するように、前記プロセッサがプロセッサ実行可能命令で構成され、
前記データが保護コンテンツを含むときに、前記データを前記メモリに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップが、前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルし、前記メモリに記憶するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項11に記載のコンピューティングデバイス。
【請求項１５】
前記コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記タギング情報に基づいて前記トランザクションの前記ソースまたはコンテンツを決定するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項14に記載のコンピューティングデバイス。
【請求項１６】
前記データに付加された前記タギング情報が、仮想マシン識別(VMID)である、請求項14に記載のコンピューティングデバイス。
【請求項１７】
前記データに付加された前記タギング情報が、バスマスター識別である、請求項14に記載のコンピューティングデバイス。
【請求項１８】
前記データに付加された前記タギング情報が、宛先ストレージアドレスであり、
前記メモリが、保護コンテンツデータに対して特定のストレージアドレスを使用する、請求項14に記載のコンピューティングデバイス。
【請求項１９】
前記データに付加された前記タギング情報が、コンテンツ保護(CP)ビットである、請求項14に記載のコンピューティングデバイス。
【請求項２０】
前記プロセッサが、前記コンピューティングデバイス内の複数のプロセッサのうちの第1のプロセッサ、前記コンピューティングデバイス内のコプロセッサ、および前記コンピューティングデバイス内のピアプロセッサのうちの1つである、請求項14に記載のコンピューティングデバイス。
【請求項２１】
少なくとも、データがスクランブルされるセキュアドメインと非セキュアドメインとで構成されるメモリと、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを判断するための手段と、
前記データが保護コンテンツを含むときに、前記データを前記メモリに記憶することの一部としてスクランブリングルーチンを前記データに適用するための手段と、
前記データが保護コンテンツを含まないときに、前記スクランブリングルーチンを前記データに適用することなく前記データを前記ストレージに記憶するための手段とを含む、コンピューティングデバイス。
【請求項２２】
保護コンテンツが、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データのグループから選択される、請求項21に記載のコンピューティングデバイス。
【請求項２３】
前記メモリが、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージのグループから選択される、請求項21に記載のコンピューティングデバイス。
【請求項２４】
メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを判断するための手段が、
前記データのソースまたはコンテンツを識別する前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するための手段と、
前記タギング情報に基づいてトランザクションの前記ソースまたはコンテンツを決定するための手段とを含み、
前記データが保護コンテンツを含むときに、前記データを前記メモリに記憶することの一部としてスクランブリングルーチンを前記データに適用するための手段が、前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルし、前記メモリに記憶するための手段を含む、請求項21に記載のコンピューティングデバイス。
【請求項２５】
前記コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするための手段が、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するための手段を含み、
前記タギング情報に基づいて前記トランザクションの前記ソースまたはコンテンツを決定するための手段が、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するための手段を含む、請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記データに付加された前記タギング情報が、仮想マシン識別(VMID)である、請求項24に記載のコンピューティングデバイス。
【請求項２７】
前記データに付加された前記タギング情報が、バスマスター識別である、請求項24に記載のコンピューティングデバイス。
【請求項２８】
前記データに付加された前記タギング情報が、宛先ストレージアドレスであり、
前記メモリが、保護コンテンツデータに対して特定のストレージアドレスを使用する、請求項24に記載のコンピューティングデバイス。
【請求項２９】
前記データに付加された前記タギング情報が、コンテンツ保護(CP)ビットである、請求項24に記載のコンピューティングデバイス。
【請求項３０】
前記コンピューティングデバイス内の複数のプロセッサのうちの第1のプロセッサ、前記コンピューティングデバイス内のコプロセッサ、および前記コンピューティングデバイス内のピアプロセッサのうちの少なくとも1つを備えるアプリケーションを実行するための手段をさらに含む、請求項24に記載のコンピューティングデバイス。
【請求項３１】
プロセッサ実行可能命令を記憶した非一時的プロセッサ可読記録媒体であって、前記プロセッサ実行可能命令が、
メモリに記憶されるべきデータが保護コンテンツを含むかどうかを判断するステップと、
前記データが保護コンテンツを含むときに、前記データを前記メモリ内のセキュアドメインに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップと、
前記データが保護コンテンツを含まないときに、前記スクランブリングルーチンを前記データに適用することなく前記データを非セキュアドメインに記憶するステップとを含む動作をプロセッサに実行させるように構成される、非一時的プロセッサ可読記録媒体。
【請求項３２】
保護コンテンツが、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データのグループから選択されるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項31に記載の非一時的プロセッサ可読記録媒体。
【請求項３３】
前記メモリが、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージのグループから選択されるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項31に記載の非一時的プロセッサ可読記録媒体。
【請求項３４】
メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを判断するステップが、
前記データのソースまたはコンテンツを識別する前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
前記タギング情報に基づいてトランザクションの前記ソースまたはコンテンツを決定するステップとを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成され、
前記データが保護コンテンツを含むときに、前記データを前記メモリに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップが、前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルし、前記メモリに記憶するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項31に記載の非一時的プロセッサ可読記録媒体。
【請求項３５】
前記コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記タギング情報に基づいて前記トランザクションの前記ソースまたはコンテンツを決定するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項34に記載の非一時的プロセッサ可読記録媒体。
【請求項３６】
前記データに付加された前記タギング情報が、仮想マシン識別(VMID)であるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項34に記載の非一時的プロセッサ可読記録媒体。
【請求項３７】
前記データに付加された前記タギング情報が、バスマスター識別であるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項34に記載の非一時的プロセッサ可読記録媒体。
【請求項３８】
前記データに付加された前記タギング情報が、宛先ストレージアドレスであり、
前記メモリが、保護コンテンツデータに対して特定のストレージアドレスを使用するような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項34に記載の非一時的プロセッサ可読記録媒体。
【請求項３９】
前記データに付加された前記タギング情報が、コンテンツ保護(CP)ビットであるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項34に記載の非一時的プロセッサ可読記録媒体。
【請求項４０】
前記記憶されたプロセッサ実行可能命令が、複数のプロセッサのうちの1つ、コプロセッサ、およびピアプロセッサのグループから選択されたプロセッサによって実行されるように構成される、請求項34に記載の非一時的プロセッサ可読記録媒体。
【請求項４１】
少なくとも、データがスクランブルされるセキュアドメインと非セキュアドメインとで構成されるメモリと、
前記メモリに結合されたメモリコントローラと、
前記メモリおよび前記メモリコントローラに結合されており、動作を実行するようにプロセッサ実行可能命令で構成されたプロセッサとを備え、前記動作が、
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記タギング情報に基づいて判断するステップ、
前記データが保護コンテンツを含むときに、前記データを前記メモリ内の前記セキュアドメインに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップ、および
前記データが保護コンテンツを含まないときに、前記スクランブリングルーチンを前記データに適用することなく前記データを前記非セキュアドメインに記憶するステップを含む
動作を実施するように前記メモリコントローラをプログラムするステップとを含む、コンピューティングデバイス。
【請求項４２】
保護コンテンツが、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データのグループから選択される、請求項41に記載のコンピューティングデバイス。
【請求項４３】
前記メモリが、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージのグループから選択される、請求項41に記載のコンピューティングデバイス。
【請求項４４】
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記タギング情報に基づいて判断するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項41に記載のコンピューティングデバイス。
【請求項４５】
前記データに付加された前記タギング情報が、仮想マシン識別(VMID)、バスマスター識別、宛先ストレージアドレス、前記データのソースまたはコンテンツの識別子、およびコンテンツ保護(CP)ビットのうちの1つである、請求項41に記載のコンピューティングデバイス。
【請求項４６】
少なくとも、データがスクランブルされるセキュアドメインと非セキュアドメインとで構成されるメモリと、
前記メモリに結合されたメモリコントローラと、
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するための手段と、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記タギング情報に基づいて判断するステップ、
前記データが保護コンテンツを含むときに、前記データを前記メモリ内の前記セキュアドメインに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップ、および
前記データが保護コンテンツを含まないときに、前記スクランブリングルーチンを前記データに適用することなく前記データを前記非セキュアドメインに記憶するステップ
を含む動作を実行するように前記メモリコントローラをプログラムするための手段とを含む、コンピューティングデバイス。
【請求項４７】
保護コンテンツが、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データのグループから選択される、請求項46に記載のコンピューティングデバイス。
【請求項４８】
前記メモリが、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージのグループから選択される、請求項46に記載のコンピューティングデバイス。
【請求項４９】
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するための手段が、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するための手段を含み、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記タギング情報に基づいて判断するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含む、請求項46に記載のコンピューティングデバイス。
【請求項５０】
前記データに付加された前記タギング情報が、仮想マシン識別(VMID)、バスマスター識別、宛先ストレージアドレス、前記データのソースもしくはコンテンツの識別子、およびコンテンツ保護(CP)ビットのうちの1つである、請求項46に記載のコンピューティングデバイス。
【請求項５１】
プロセッサ実行可能命令を記憶した非一時的プロセッサ可読記録媒体であって、前記プロセッサ実行可能命令が、
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記タギング情報に基づいて判断するステップ、
前記データが保護コンテンツを含むときに、前記データを前記メモリ内のセキュアドメインに記憶することの一部としてスクランブリングルーチンを前記データに適用するステップ、および
前記データが保護コンテンツを含まないときに、前記スクランブリングルーチンを前記データに適用することなく前記データを非セキュアドメインに記憶するステップ
を含む動作を実行するようにメモリコントローラをプログラムするステップとを含む動作をプロセッサに実行させるように構成される、非一時的プロセッサ可読記録媒体。
【請求項５２】
保護コンテンツが、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データのグループから選択されるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項51に記載の非一時的プロセッサ可読記録媒体。
【請求項５３】
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記タギング情報に基づいて判断するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項51に記載の非一時的プロセッサ可読記録媒体。
【請求項５４】
前記データに付加された前記タギング情報が、仮想マシン識別(VMID)、バスマスター識別、宛先ストレージアドレス、前記データのソースもしくはコンテンツの識別子、およびコンテンツ保護(CP)ビットのうちの1つであるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項51に記載の非一時的プロセッサ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
選択的ＲＡＭスクランブリングのための方法およびデバイスに関する。
【背景技術】
【０００２】
デジタル著作権管理(DRM)コンテンツ(たとえば、映画、音楽、およびゲーム)など、保護データのプロバイダが、貴重なコンテンツのセキュリティを確保するための追加の対策を求める要求はますます高まっている。そのような保護データのプロバイダは、ランダムアクセスメモリ(RAM)など、コンピューティングデバイスの揮発性メモリ内で暗号化またはスクランブリング保護方策を利用するために、コンテンツにアクセスするコンピューティングデバイス(たとえば、パーソナルコンピュータ、モバイルデバイス、およびセットトップディスプレイユニット)をしばしば必要とする。これは、RAMスクランブリングとして知られている。プロバイダは、最近、メモリコントローラが内部メモリに、データを送信する前/データを記憶する前にデータをスクランブルする、RAM(またはメモリ)スクランブリングアルゴリズムの実行を必要とする。コンテンツを平文で記憶するのではなく、RAM内に記憶される保護データを不明瞭化することで、内部メモリのコンテンツにアクセスする攻撃からコンテンツが保護される。
【０００３】
RAMスクランブリングアルゴリズムは、パフォーマンス上の理由でより簡単な暗号化技法を使用するので、RAMスクランブリングは、一般に、不揮発性ストレージおよび送信で使用されるより複雑な暗号化技法に比べてセキュアではない。AES暗号化など、より複雑な暗号化技法は、保護コンテンツにアクセスする多くのコンピューティングデバイスにおけるRAMスクランブリングに対して実行可能でないことがある。というのは、これらの技法は符号化/復号するためにより多くの時間を必要とし、リソース集約的であるからである。RAMスクランブリングは、メモリパフォーマンスへの影響を最小にするために、より簡単なアルゴリズム構造およびより小さい鍵を使用する。しかしながら、スクランブリング技法の複雑さがより小さいことで、攻撃者が、保護コンテンツを記憶する内部メモリに既知データを繰り返し挿入することによってブルートフォース攻撃を実行して、メモリのどのアドレスが挿入された既知データと関連付けられているかを判断することを許容する可能性がある。そのようなパターンマッチング攻撃によって、スクランブルされた結果を突き止めることによって、不正アプリケーションは、RAMスクランブリング遂行の鍵およびアルゴリズムを逆行分析して、DRMコンテンツなどの保護データへの自由アクセスを獲得することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な実施形態は、保護コンテンツを含むデータに対する改良されたセキュリティをもたらす、電子デバイスのメモリ内の記憶のために、データを選択的にスクランブルする方法およびデバイスを提供する。パターンマッチング攻撃からデータを効果的に保護するために、コンピューティングデバイス内で選択的メモリスクランブリングを行うための実施方法は、メモリに記憶されるべきデータが保護コンテンツを含むかどうかを判断するステップと、データが保護コンテンツを含むときにデータをメモリに記憶することの一部としてスクランブリングルーチンをデータに適用するステップと、データが保護コンテンツを含まないときにスクランブリングルーチンをデータに適用することなくデータをメモリに記憶するステップとを含む。保護コンテンツは、デジタル著作権管理(DRM)下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データであってよい。メモリは、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージであってよい。一実施形態では、メモリに記憶されるべきデータが保護コンテンツを含むかどうかを判断するステップは、データのソースまたはコンテンツを識別するコンピューティングデバイスのバスを介して送信されたデータにタギング情報を付加するステップと、タギング情報に基づいてトランザクションのソースまたはコンテンツを決定するステップとを含み得、データが保護コンテンツを含むときにデータをメモリに記憶することの一部としてスクランブリングルーチンをデータに適用するステップは、決定されたソースまたはコンテンツに基づいてデータをスクランブルしてメモリに記憶するステップを含み得る。一実施形態では、データのソースまたはコンテンツを識別する情報を有するコンピューティングデバイスのバスを介して送信されたデータをタグ付けするステップは、データが記憶され得るセキュリティドメインに相関するデータに情報を付加するステップを含み得、タギング情報に基づいてトランザクションのソースまたはコンテンツを決定するステップは、タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含み得る。様々な実施形態では、データに付加されたタギング情報は、仮想マシン識別(VMID)、バスマスター識別、宛先ストレージアドレス、データのソースまたはコンテンツの識別子、および/またはコンテンツ保護(CP)ビットであってよい。
【０００５】
他の実施形態は、少なくとも、データがスクランブルされる1つのセキュアドメインおよび1つの非セキュアドメインで構成されたメモリと、メモリに結合されたプロセッサとを有するコンピューティングデバイスを含み、プロセッサは、上記で説明した方法の動作を実行するためのプロセッサ実行可能命令をともなって、構成される。一実施形態では、プロセッサは、1つまたは複数のスタンドアロンプロセッサ、コンピューティングデバイス内の複数のプロセッサのうちの1つ、コンピューティングデバイス内のコプロセッサ、およびコンピューティングデバイス内のピアプロセッサであってよい。
【０００６】
他の実施形態は、上記で説明した方法の機能を実行するための手段を有するコンピューティングデバイスを含む。
【０００７】
他の実施形態は、上記で説明した方法の動作をプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記録媒体を含む。一実施形態では、非一時的プロセッサ可読記録媒体に記憶されたプロセッサ実行可能命令は、複数のプロセッサのうちの1つ、コプロセッサ、およびピアプロセッサのグループから選択されたプロセッサによって実行されるように構成される。
【０００８】
他の実施形態は、少なくとも、データがスクランブルされた1つのセキュアドメインおよび1つの非セキュアドメインで構成されたメモリと、メモリに結合されたメモリコントローラと、メモリおよびメモリコントローラに結合されたプロセッサとを含むコンピューティングデバイスを含み、プロセッサは、コンピューティングデバイスのバスを介して送信されたデータにタギング情報を付加するステップと、メモリに記憶されるべきデータが保護コンテンツを含むかどうかをタギング情報に基づいて判断するステップ、データが保護コンテンツを含むときにメモリ内のセキュアドメインにデータを記憶することの一部としてスクランブリングルーチンをデータに適用するステップ、およびデータが保護コンテンツを含まないときにスクランブリングルーチンをデータに適用することなく非セキュアドメインにデータを記憶するステップを含む動作を実行するようにメモリコントローラをプログラムするステップとを含む動作を実行するためのプロセッサ実行可能命令をともなって、構成される。保護コンテンツは、デジタル著作権管理(DRM)の下のデータ、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、保護コンテンツアプリケーション情報、および医療データであってよい。メモリは、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、およびオフチップストレージであってよい。一実施形態では、プロセッサは、コンピューティングデバイスのバスを介して送信されたデータにタギング情報を付加するステップが、データが記憶され得るセキュリティドメインに相関するデータに情報を付加するステップを含み得、かつメモリに記憶されるべきデータが保護コンテンツを含むかどうかをタギング情報に基づいて判断するステップが、タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含み得るような動作を実行するように、プロセッサ実行可能命令で構成され得る。データに付加されたタギング情報は、仮想マシン識別(VMID)、バスマスター識別、宛先ストレージアドレス、データのソースもしくはコンテンツの識別子、および/またはコンテンツ保護(CP)ビットであってよい。他の実施形態は、前述の動作をそのようなコンピューティングデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶した非一時的記録媒体を含む。
【０００９】
他の実施形態は、コンピューティングデバイスのバスを介して送信されたデータにタギング情報を付加するための手段と、メモリに記憶されるべきデータが保護コンテンツを含むかどうかをタギング情報に基づいて判断するステップ、データが保護コンテンツを含むときにメモリ内のセキュアドメインにデータを記憶することの一部としてスクランブリングルーチンをデータに適用するステップ、およびデータが保護コンテンツを含まないときにスクランブリングルーチンをデータに適用することなく非セキュアドメインにデータを記憶するステップを含む動作を実行するようにメモリコントローラをプログラムするための手段とを含むコンピューティングデバイスを含む。一実施形態では、コンピューティングデバイスのバスを介して送信されたデータにタギング情報を付加するための手段が、データが記憶され得るセキュリティドメインに相関するデータに情報を付加するための手段を含み得、かつメモリに記憶されるべきデータが保護コンテンツを含むかどうかをタギング情報に基づいて判断するステップが、タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含み得る。
【００１０】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な態様を示し、上記の全般的な説明および下記の発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１１】
【図１Ａ】様々な態様とともに使用するのに適した保護データを配信する様々なコンピューティングデバイスのコンポーネントの通信システムブロック図である。
【図１Ｂ】セキュリティドメインを記述し、ハイパーバイザオペレーティングシステムルーチンによってアクセス可能な例示的なデータテーブルのコンポーネントブロック図である。
【図２】仮想マシン識別情報に基づいてメモリ内の保護コンテンツをスクランブルするための態様方法を示すプロセスフロー図である。
【図３】宛先メモリアドレスに基づいてメモリ内の保護コンテンツをスクランブルするための態様方法を示すプロセスフロー図である。
【図４】コンテンツ保護ビット情報に基づいてメモリ内の保護コンテンツをスクランブルするための態様方法を示すプロセスフロー図である。
【図５】様々な態様とともに使用するのに適した例示的なワイヤレスモバイルコンピューティングデバイスのコンポーネントブロック図である。
【図６】様々な態様とともに使用するのに適した例示的なラップトップコンピューティングデバイスのコンポーネントブロック図である。
【発明を実施するための形態】
【００１２】
様々な態様について添付の図面を参照して詳細に説明する。可能な場合はいつでも、同じ参照番号は、図面全体を通して同じまたは同様の部分を指すために使用される。特定の例および実装形態に行われる参照は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【００１３】
「例示的な」という言葉は、例、事例、または例示として機能することを意味するように本明細書で使用される。本明細書に「例示的な」と記載されるいかなる実装形態も、必ずしも他の実装形態よりも好ましいか、または有利であると解釈されるべきではない。
【００１４】
「コンピューティングデバイス」という用語は、本明細書では、携帯電話と、スマートフォンと、パーソナルまたはモバイルのマルチメディアプレーヤと、携帯情報端末(PDA)と、ラップトップコンピュータと、デスクトップコンピュータと、タブレットコンピュータと、スマートブックと、パームトップコンピュータと、ワイヤレス電子メール受信機と、マルチメディアインターネット対応携帯電話と、テレビジョンと、スマートTVと、スマートTVセットトップバディボックスと、一体化スマートTVと、ストリーミングメディアプレーヤと、スマートケーブルボックスと、セットトップボックスと、デジタルビデオレコーダ(DVR)と、デジタルメディアプレーヤと、プログラマブルプロセッサ、メモリ、ならびに少なくともワイヤレスおよび/またはワイヤードデータ送信を送信することおよび/または受信すること、ローカルまたはリモートデータベース構造にアクセスすること、および様々な計算を実行することが可能な回路を含む同様のパーソナル電子デバイスとのうちのいずれか1つもしくは全部を指すために使用される。
【００１５】
様々な態様は、トランザクションタギングに基づくスクランブリングを用いる保護データの差動(または選択的)スクランブリングを利用することによって、より小さい複雑さのランダムアクセスメモリ(RAM)スクランブリング技法の引き下げられたセキュリティの問題を解決する。一般に、アプリケーションは、コンピューティングデバイス上で実行されるオペレーティングシステム内にロードされ、登録され得る。オペレーティングシステムまたはメモリコントローラは、セキュリティドメインを確立し、既知のアプリケーションを特定のドメインと関連付けることができる。オペレーティングシステム、メモリコントローラ、またはメモリへのアクセスを制御する他のユニットは、コンピューティングデバイス内のデータにアプリケーションがいかにアクセス(たとえば、記憶)し得るかを規定するパーミッションセットを利用し得る。たとえば、アプリケーションは、ダブルデータレート(DDR)メモリなど、ローカルメモリ内の特定のエリアに対応する特定のセキュリティドメインにアクセスすることを許されない。一態様では、コンピューティングデバイスは、オペレーティングシステム内のトップレベルルーチン、すなわちコンピューティングデバイス内でセキュリティドメインを管理する「ハイパーバイザ」を実行し得る。登録されたアプリケーションの規定されたパーミッションに基づいて、ハイパーバイザは、他のデータに対してではなく保護データに対してRAMスクランブリングをもたらすために、様々なアプリケーションに関連するデータを処理/記憶するように、メモリコントローラを指示または構成することができる。ハイパーバイザは、この決定を行うことの一部として全セキュリティドメインに対するコンテンツ、パーミッション、および登録されたアプリケーションを記述する情報にアクセスし得る。たとえば、ハイパーバイザは、様々なアプリケーションに対する識別情報または識別コードを特定のセキュリティドメインと関連付けるデータテーブルにアクセスし得る。
【００１６】
代替態様では、セキュリティドメインは、他のルーチンまたはハイパーバイザとは別個のクライアントソフトウェアによって管理され得る。たとえば、オペレーティングシステムのハイパーバイザから切り離されたファイアウォールマネージャルーチンが、セキュリティドメインを管理し得る。そのような場合、ハイパーバイザは、セキュリティドメインハードウェアへのアクセスを排除され、信頼されるコードとして認定されない。加えて、セキュリティドメイン管理は、メモリコントローラまたは別の記憶ユニットコントローラなどのハードウェアによって実行され得る。
【００１７】
コンピューティングデバイスのプロセッサによる実行の間、アプリケーションは、データバスを介して情報トランザクションを実行し得る。様々な態様では、バスは、コンピューティングデバイスの様々なコンポーネント間で物理的接続を生成する、内部バス(たとえば、システム、データなど)および/または外部バス(たとえば、シリアルバス)を含み得る。バスコントローラ(またはバスマスター)は、バスを介して進む情報トランザクションを管理し得る。様々な態様を説明するために、データバスを介して実行されるそのような情報トランザクションは、「データバストランザクション」と呼ばれる。バスマスターは、データバストランザクションに、ソースアプリケーションのインジケータ(すなわち、タグまたはタギング情報)および/または送信された情報の特性を与え得る。一態様では、バスマスターは、通信リンクまたは不揮発性ストレージからDRMコンテンツを受信するアプリケーションによるデータバストランザクションなど、保護コンテンツを含むデータバストランザクションにタグ付けすることができる。バスコントローラは、アプリケーションを実行し、バスを介して伝達されるデータを生成するために使用される仮想マシンID(VMID)を示すタギング情報を付与することができる。代替的に、タギング情報は、コンピューティングデバイスがアプリケーション間の動作区画を区別することを可能にするデータバストランザクションまたは他の識別コードにタギング情報を付与したバスマスター(すなわち、バスID)を識別し得る。一態様では、VMIDは、バスマスターIDのセットを表し得る。一態様では、バスコントローラはまた、DRMコンテンツデータを処理するために認可されたアプリケーションからのDRMコンテンツを含むデータバストランザクションに特定のタグを付与し得る。たとえば、バスコントローラは、保護コンテンツの存在を示すデータビットを設定することによって、DRMメディア読出しアプリケーションからのデータバストランザクションにタグ付けすることができる。
【００１８】
タグ付けされたデータバストランザクションは、コンピューティングデバイス内のまたはコンピューティングデバイスと関連付けられた様々な宛先コンポーネントに導かれ得る。第1に、データバストランザクションは、RAMなどの内部メモリユニットに送信され、そこで受信され得る。しかしながら、様々な態様では、データバストランザクションは、内部メモリユニット、および/またはPCI Express、PCI Express mobile、もしくは任意の他のワイヤプロトコルを介してコンピューティングデバイスに接続されたリモートのストレージまたはメモリユニットを含む任意のオフチップメモリに送信され得、それらの中でスクランブルされ得る。
【００１９】
タグ付けされたデータバストランザクションが、内部メモリなどの宛先コンポーネントに到達すると、ハイパーバイザソフトウェアは、データバストランザクションのタギング情報を使用して、データバストランザクションを開始するアプリケーションに対して、関連付けられたセキュリティドメインを決定することができる。たとえば、特定のセキュリティドメインと関連付けられたアプリケーションによって生成されたトランザクションは、特定のVMIDでタグ付けされ得る。決定されたセキュリティドメインの関連付けに基づいて、ハイパーバイザは、RAMユニットに対するコントローラなど、様々なコンポーネントコントローラに対して、コンポーネントコントローラによって受信されたデータがどのように処理され得るかを指示し得る。特に、ハイパーバイザは、アプリケーションによって生成されたデータを暗号化するために、メモリコントローラがRAMスクランブリングアルゴリズムを実行すべきかどうかを、メモリコントローラに教示し得る。たとえば、ハイパーバイザは、そのタグ付けされたVMIDに基づいて、受信されたデータをスクランブルして記憶するように、DDRメモリコントローラに指示し得る。一態様では、セキュリティドメインは、複数のVMID、バスID、および/またはメモリアドレスレンジのセットと関連付けられ得る。
【００２０】
データは、保護された(たとえば、保護コンテンツセキュリティドメインと関連付けられたVMIDによって生成された)セキュリティドメインと関連するときだけ、メモリコントローラによってスクランブルされるので、コンピューティングデバイスは、データ保護を必要としないアプリケーションからRAMに送信されたデータを含む、メモリユニットに記憶されたすべてのデータをスクランブルすることを回避するためにタギング情報を使用することができる。これによって、コンピューティングデバイスは、パターンマッチング攻撃を無力化すること、RAMスクランブリングのためにあまり複雑でない暗号化方式を使用すること、および暗号化動作を保護コンテンツデータにだけ適用することが可能になる。
【００２１】
一態様では、コンピューティングデバイスは、宛先メモリアドレスに基づいて選択的メモリスクランブリングを実行し得る。アプリケーションによって生成されたデータバストランザクションは、メモリアドレス(たとえば、メモリユニット内のいくつかの物理アドレス)の特定の範囲内のストレージに対して指示され得る。コンピューティングデバイスが、データバストランザクションの宛先メモリアドレスをメモリの所定の「保護」エリアに関連するものと認識する場合、コンピューティングデバイスは、ストレージプロセスの一部としてデータをスクランブルするようにメモリコントローラに指示し得る。
【００２２】
一態様では、コンピューティングデバイスは、メモリコントローラを介して、データバストランザクション内に含まれるかまたはデータバストランザクションと関連付けられたカスタムビットの値に基づいて、バストランザクションデータをスクランブルすることができる。たとえば、特定のデバイスに対するバスマスターは、データバストランザクションがRAMスクランブリングを受けるかどうかを制御する目的でデータバストランザクションの品質、性質またはコンテンツを規定するために、送信されたデータバストランザクションの各々における1つまたは複数のビットを利用し得る。データバストランザクションが保護コンテンツを含むことを、カスタムビットまたはコンテンツ保護(CP)ビットが示す場合、コンピューティングデバイス(たとえば、メモリコントローラ)は、データ記憶プロセスの一部としてデータをスクランブルすることができる。
【００２３】
一態様では、メモリコントローラは、セキュリティドメインを規定するデータを記憶し、そのデータに直接アクセスすることができる。たとえば、DDRコントローラは、受信されたデータバストランザクション内のタギング情報を、DDRコントローラによって維持される(またはDDRコントローラ内にプログラムされる)データテーブルと比較し得る。したがって、メモリコントローラは、ハイパーバイザルーチンまたはコンピューティングデバイスのオペレーティングシステムと関連付けられた同様のソフトウェアからの指示または入力なしに、データバストランザクションが保護データを含むかどうかを判断し得る。
【００２４】
様々な態様では、コンピューティングデバイスは、データバストランザクション特性(たとえば、トランザクションアイデンティティ、保護区分など)を規定するため、関連付けられたセキュリティドメインを識別するため、および/またはデータバストランザクションを生成するアプリケーションを識別するために、データテーブル、データベース要素、ハードコード化された定義、オペレーティングシステムコール、ならびに情報を参照するための他のメカニズムを互換的に利用し得る。データを分類するためにコンピューティングデバイスがデータテーブルを使用することの記述は、コンピューティングデバイスプロセッサまたはバスコントローラが、選択的RAMスクランブリングのためにデータをいかにして分類、識別、または参照し得るかの非限定的な例として提供されている。たとえば、データバストランザクション内のデータの性質を識別するために、コンピューティングデバイスは、ハイパーバイザを介して、オペレーティングシステムコールまたはデータバストランザクションをメモリに送信するために使用されるコンピューティングデバイス要素に基づいて、データバストランザクションの性質を決定し得る。
【００２５】
様々な態様では、スクランブリング動作を実行するためにハードウェアを構成し、ポリシーを設定する(たとえば、様々なセキュリティドメインと関連付けられたアプリケーションなどを規定する)ソフトウェアまたはコンポーネントは、メモリ内のデータをスクランブルしない。たとえば、コンピューティングデバイスと関連付けられたハイパーバイザ、ファイアウォールマネージャ、または他のソフトウェアは、データバストランザクションと関連付けられたタギング情報を評価し得るが、メモリ内の関連付けられたデータをスクランブルしない。加えて、バスコントローラは、メモリ内のデータをスクランブルせず、メモリコントローラなど、コンピューティングデバイス内の様々なコンポーネントにタギング情報を付与し、そうでなければデータバストランザクションをそれらのコンポーネントに導くことができるだけである。一般に、スクランブリングの動作およびアルゴリズムは、もっぱら、メモリコントローラのみによって実行され得る。
【００２６】
様々な態様では、コンピューティングデバイスは、暗号化(またはスクランブリング)鍵を回転することによってRAMスクランブリングのセキュリティをさらに増強し得る。コンピューティングデバイスによって実行されるメモリスクランブリングアルゴリズムは、コンピューティングデバイスの保護要素または信頼される要素にだけ知られている暗号化鍵、秘密の鍵または符号化キーを利用し得る。たとえば、メモリコントローラユニットおよびハイパーバイザは、メモリ内に記憶され、メモリから検索されるコンテンツをスクランブルおよび逆スクランブルするために使用される秘密の暗号化鍵を共有し得る。本明細書で説明するRAMスクランブリング方法(たとえば、仮想マシン識別、宛先メモリアドレス、および/またはコンテンツ保護ビット情報に基づく方法)に加えて、コンピューティングデバイスは、所定のスケジュールまたは周波数で暗号化鍵を回転(または修正)し得る。秘密の暗号化鍵を定期的に回転させることによって、コンピューティングデバイスは、スプーフィングされた証明書を使用してコンピューティングデバイス内に記憶されているデータへの不適切なアクセスを得ようとする不正なアプリケーションをさらに防ぐことができる。
【００２７】
一態様では、保護コンテンツはまた、保護コンテンツデータ(すなわち、保護コンテンツアプリケーション情報)にアクセスするか、それを変更するか、またはそうでなければ処理するアプリケーションのための動作命令またはプログラム命令を含み得る。たとえば、アプリケーションのコードまたは命令を含むDRMコンテンツレンダリングアプリケーションに関する情報は、保護コンテンツとしてメモリ内に記憶され得る。
【００２８】
図1Aは、コンピューティングデバイス100内のデータバストランザクションのフローを示す。コンピューティングデバイスのプロセッサまたは中央プロセッサユニット(CPU)101は、多数のソフトウェアアプリケーションを実行し、アプリケーションメモリまたはキャッシュストレージにアプリケーションデータを記憶することができる。たとえば、CPU 101は、インストールされたアプリケーションApp Z 106、App B 104、App A 102ならびにハイパーバイザ115ルーチンを含むオペレーティングシステムソフトウェアを同時に実行し得る。アプリケーション102、104および106は、インターネットブラウジングをイネーブルすること、リモートデータサーバと通信すること、およびハードドライブ上にローカルに記憶されているオーディオデータを表現する(render)ことなど、様々な機能をコンピューティングデバイス100内で実行し得る。CPU 101上で実行する間、アプリケーション102、104および106は、データバストランザクション111、112、114を生成し得る。たとえば、App Aは、内部メモリ120に一時的に記憶されるべきコンフィギュレーションデータ(たとえば、クッキー情報)を生成するインターネットブラウザアプリケーションであってよい。CPU 101は、バス126を横切るデータバストランザクション111、112、114を内部メモリ120に導くことができる。一態様では、データバストランザクション111、112、114は、代替的に、ワイヤプロトコル(たとえば、PCI Express、PCI Express Mobile)を介するリモートDDRなど、様々なオフチップメモリユニットに送信され得る。
【００２９】
バスコントローラ128は、データバストランザクション111、112、114の各々に識別情報をタグ付けすることができる。上記で説明したように、そのようなタギング情報は、データバストランザクションを作成するアプリケーションを記述するインジケータ(たとえば、VMID)、情報を識別するバスコントローラ128、データバストランザクション内のコンテンツの特性、および宛先メモリアドレスに関連する情報を含み得る。データバストランザクション111、112、114は、バス126を横切って進み、メモリコントローラユニット110によって処理され得る。たとえば、メモリコントローラユニット110は、データバストランザクション114内のデータをスクランブルすることができる。
【００３０】
メモリコントローラ110は、データバストランザクションのタギング情報をハイパーバイザ115ルーチンに伝達し、応答命令をハイパーバイザ115ルーチンから受信することができる。データバストランザクションのタギング情報を受信すると、ハイパーバイザ115は、データバストランザクション111、112、114の各々のタギング情報(たとえば、VMID)を評価し得る。一態様では、ハイパーバイザルーチン115は、図1Bを参照して以下で説明するように、データバストランザクションのタグの各々をセキュリティドメインのデータテーブルと比較し、テーブルから得られた各タグに対する適切な規則に従って記憶するためにデータバストランザクション111、112、114を処理するように、メモリコントローラ110に指示することができる。たとえば、タギング情報に基づいて、ハイパーバイザ115は、非保護コンテンツアプリケーション102、104からのデータバストランザクション111、112をスクランブルされないメモリ122の一部に導くように、メモリコントローラ110に教示し得る。しかしながら、App Z 106を識別するタギング情報と関連付けられたセキュリティドメインに基づいて、関連するデータバストランザクション114は、内部メモリ124のスクランブルされた部分に導かれ得る。言い換えれば、データバストランザクション114は、保護コンテンツアプリケーション106から来たものとして認識され、したがってスクランブルされ、RAM 124のセキュアな部分にセーブされ得る。一態様では、RAMスクランブリング(またはスクランブルされたデータ)は、メモリの特定のセグメントまたは区画に限定され得る。したがって、タギング情報に基づいてデータをメモリに導くプロセスは、非保護コンテンツアプリケーションデータをスクランブルされないセグメント/区画に送ることができる。このようにして、非保護コンテンツアプリケーションまたは保護コンテンツを記憶することを認可されないアプリケーション(たとえば、マルウェア)は、RAMスクランブリングを受けず、保護されないメモリの部分にのみアクセスすることができる。
【００３１】
図1Bは、コンピューティングデバイス100内で実行するハイパーバイザ115ルーチンによって利用される、簡略化された態様のセキュリティドメインのデータテーブル150を示す。上記で説明したように、ハイパーバイザ115は、データバストランザクションと関連付けられタギング情報を、セキュリティドメインのデータテーブル150との比較に基づいて処理し得る。セキュリティドメインのデータテーブル150は、各セキュリティドメインに対する記録152、154を含めて、コンピューティングデバイスによってサポートされる様々なセキュリティドメインを記述し得る。記録152、154は、様々なドメインと関連付けられたアプリケーションに対するアプリケーション識別情報を記憶し得る。たとえば、特定のセキュリティドメインに対する記録154は、特定のVMIDを有するアプリケーションがそのドメインと関連付けられていることを示す情報を含み得る。一態様では、セキュリティドメインのデータテーブル150は、メモリユニット内のアドレス、バスコントローラ識別、および/または様々なセキュリティドメインのアプリケーションと関連付けられた特別なビット値(たとえば、CPビット)を示す記録を含み得る。別の態様では、ハイパーバイザ115は、図1Aを参照して上記で説明したようなメモリコントローラを構成し得、かつ/またはメモリコントローラがハードウェア(HW)ルックアップ動作を使用してセキュリティドメインのデータテーブル150を利用し得るようにセキュリティドメインのデータテーブル150を記憶し得る。
【００３２】
図2は、仮想マシンID情報に基づいてデータバストランザクション内の保護データを処理してスクランブリングするための態様方法200を示す。仮想マシンは、当技術分野でよく知られており、一般に、仮想マシンが他のアプリケーションを実行し得るいくつかの実行環境(たとえば、エミュレートされたシステム)を確立するように構成されたソフトウェアとして定義され得る。コンピューティングデバイスは、そのオペレーティングシステムおよび/またはハイパーバイザルーチンを介して、コンピューティングデバイス上で実行する仮想マシンに一意の識別コードまたはVMIDを割り当て得る。VMIDは、上記で説明したように、システムデータの中に記憶され得、セキュリティドメインと関連付けられ得る。一態様では、コンピューティングデバイスは、コンピューティングデバイス内の単一のプロセッサ上で、コンピューティングデバイス内のコプロセッサ(またはピアプロセッサ)上で、またはコンピューティングデバイス内の様々なプロセッサの組合せの上で実行する仮想マシンに対するVMIDを記憶し、使用することができる。
【００３３】
ブロック202で、コンピューティングデバイス上で実行する仮想マシンは、1つのアプリケーションを実行し得る。たとえば、仮想マシンは、特定のハードウェア構成をエミュレートし、自動データ編集アプリケーションを実行することができる。別の例として、仮想マシンは、コンピューティングデバイスからのリソースを保存し、保存したリソースを使用してアプリケーションを実行することができる。仮想マシンは、共通の動作パラメータまたは機能特性を有する複数の個別のアプリケーションを実行し得る。たとえば、仮想マシンは、コンピューティングデバイスと似ていないハードウェア上で実行するために設計されたいくつかのアプリケーション(たとえば、ネイティブでないコンピュータアーキテクチャ上で実行するために移植されたアプリケーション)を実行し得る。一態様では、コンピューティングデバイスは、複数の仮想マシンを同時に実行し得る。
【００３４】
ブロック204で、仮想マシンは、アプリケーションの実行に基づいてデータを生成し得る。たとえば、仮想マシンによって実行されるアプリケーションは、システムデータ構造内に記憶される値を計算し得る。別の例として、ビデオプレーヤアプリケーションは、DRMビデオデータを生成し得る。仮想マシンは、生成されたデータを処理し、バスを横切って宛先メモリに送信されるようにデータを導くことができる。ブロック206で、バスマスター(またはコントローラ)は、生成されたデータを受信し、トランザクションが仮想マシンのVMIDを示すタギング情報を含むようなデータバストランザクションとしてパッケージングすることができる。たとえば、バスマスターは、ビデオプレーヤアプリケーションを実行する仮想マシンを表すコードで、(情報をデータに付加することなどによって)データバストランザクションをタグ付けし得る。別の態様では、バスマスターは、バスマスター識別(ID)、タイムスタンプ、アプリケーションメモリ情報、ユーザ情報、または任意の他の記述データなど、付加された情報でデータバストランザクションをタグ付けすることができる。
【００３５】
ブロック208で、仮想マシンによって与えられた宛先情報に基づいて、バスマスターは、バスを介して宛先メモリと関連付けられたコントローラユニットにデータバストランザクションを送信し得る。たとえば、データバストランザクションは、ローカルDDRメモリユニットに対するコントローラに導かれ得る。
【００３６】
ブロック210で、コンピューティングデバイスは、データバストランザクションのタギング情報内のVMIDに基づいて、データバストランザクションのデータの性質または保護区分を決定し得る。一態様では、保護区分は、バストランザクションデータを「保護された」または「保護されない」のいずれかとして定義し得る。たとえば、「保護された」保護区分を有するデータは、著作権付きメディア、セキュア情報(たとえば、バンキング情報)、個人情報、セキュリティ情報、バンキング情報、パスワード、認証情報、および医療データなどのDRMコンテンツ、ならびに制限された使用契約と関連付けられた他のデータを含み得る。一態様では、メモリコントローラは、送信されたデータバストランザクションの保護区分を決定するために、タギング情報をハイパーバイザルーチンに伝達し得る。代替態様では、ハイパーバイザは、データバストランザクションからタギング情報を直接抽出し得る。
【００３７】
一態様では、ハイパーバイザは、上記で説明したように、タギング情報内の仮想マシンのVMIDを識別し、VMIDを、セキュリティドメインを記述するデータテーブルと比較することができる。言い換えれば、データテーブルは、コンピューティングデバイス上で実行されるアプリケーションまたは仮想マシンへの参照を一緒に含み得る、複数のセキュリティドメインエントリを含み得る。ハイパーバイザは、VMIDと関連付けられるデータテーブル内のセキュリティドメインエントリ(たとえば、エントリはVMIDへの参照を含む)を発見し、セキュリティドメインエントリ内のデータ保護情報に基づいてデータバストランザクションの保護区分を決定することができる。たとえば、ハイパーバイザは、「保護されない」セキュリティドメインエントリ内で参照されたVMIDを発見するとき、「保護されない」保護区分を決定し得る。別の例として、ビデオアプリケーションストリーミングDRMコンテンツと関連付けられたセキュリティドメインの保護区分は、「保護される」であり得る。
【００３８】
代替態様では、ハイパーバイザは、上記で説明したように、タギング情報内の仮想マシンのVMIDを識別し、VMIDを、セキュリティドメインを記述するデータテーブルと比較するようにメモリコントローラ110をプログラムすることができる。言い換えれば、データテーブルは、コンピューティングデバイス上で実行されるアプリケーションまたは仮想マシンへの参照を一緒に含み得る、複数のセキュリティドメインエントリを含み得る。メモリコントローラ110は、VMIDと関連付けられるデータテーブル内のセキュリティドメインエントリ(たとえば、エントリはVMIDへの参照を含む)を発見し、そのセキュリティドメインエントリ内のデータ保護情報に基づいてデータバストランザクションの保護区分を決定することができる。たとえば、メモリコントローラ110は、「保護されない」セキュリティドメインエントリ内で参照されたVMIDを発見するとき、「保護されない」保護区分を決定し得る。別の例として、ビデオアプリケーションストリーミングDRMコンテンツと関連付けられたセキュリティドメインの保護区分は、「保護される」であり得る。
【００３９】
一態様では、VMIDがデータテーブル(またはコンピューティングデバイスにアクセスする他の参照知識ベース)内にない場合、ハイパーバイザは、データバストランザクションの保護区分を非保護コンテンツとして決定し得る。一態様では、データテーブルは、コンピューティングデバイスのオペレーティングシステムの一要素としてハードコード化され、コンテンツプロバイダによって供給され、かつ/またはコンピューティングデバイス上で様々なアプリケーションを実行中に更新される情報を含み得る。たとえば、データテーブルは、アプリケーションと関連付けられたコンテンツが、特定のコンテンツプロバイダからのDRM、または保護データと何らかの形で関連付けられたDRMであるとコンピューティングデバイスが判断するときに修正される、アプリケーションに対するデフォルトのデータ保護情報を含み得る。
【００４０】
代替態様では、VMIDがデータテーブル(またはコンピューティングデバイスにアクセスする他の参照知識ベース)内にない場合、メモリコントローラ110は、データバストランザクションの保護区分を非保護コンテンツとして決定し得る。一態様では、データテーブルは、コンピューティングデバイスのオペレーティングシステムの一要素としてハードコード化され、コンテンツプロバイダによって供給され、かつ/またはコンピューティングデバイス上で様々なアプリケーションを実行中に更新される情報を含み得る。たとえば、データテーブルは、アプリケーションと関連付けられたコンテンツが、特定のコンテンツプロバイダからのDRM、または保護データと何らかの形で関連付けられたDRMであるとコンピューティングデバイスが判断するときに修正される、アプリケーションに対するデフォルトのデータ保護情報を含み得る。
【００４１】
判断ブロック212で、コンピューティングデバイスは、バストランザクションデータが、決定された保護区分に基づいて保護されるかどうかを判断し得る。データが保護される場合(すなわち、判断ブロック212=「Yes」)、ブロック214で、メモリコントローラは、データバストランザクション内で送信されたデータを、メモリスクランブリングのルーチンまたはアルゴリズムを実行することによってスクランブルすることができる。様々な態様において使用され得る様々なメモリまたはRAMのスクランブリングアルゴリズムは、当技術分野でよく知られている。一方、データが保護されない場合(すなわち、判断ブロック212=「No」)、ブロック216で、メモリコントローラは、メモリ内で保護されないバストランザクションデータをスクランブルされないデータとして記憶し得る(すなわち、データを記憶することの一部としてメモリスクランブリングアルゴリズムを実行することはない)。
【００４２】
一態様では、データバストランザクション内のデータに付加されたタギング情報は、VMIDと、ハイパーバイザがRAMスクランブリングアルゴリズムを命令するために使用し得る追加のコード(たとえば、アプリケーションIDまたはコード)とを含み得る。たとえば、ハイパーバイザは、VMIDが、概して保護データに関するセキュリティドメインと関連付けられていると判断することがある。しかしながら、アプリケーションIDは、アプリケーションが、スクランブルされるべきデータを必要としないことを示し得る。アプリケーションIDに基づいて、ハイパーバイザは、バストランザクションデータをスクランブルしないようにメモリコントローラに指示し得る。一態様では、セキュリティドメインを規定するデータテーブルは、各仮想マシン(またはVMID)に対する一般的保護区分と、各仮想マシンによって実行されるアプリケーションに対する例外的保護区分とを含み得る。
【００４３】
図3は、宛先メモリアドレスに基づいてデータバストランザクション内の保護データを処理してスクランブルするための態様方法300を示す。メモリのいくつかのメモリアドレスは保護され得、認可されたアプリケーションによってのみアクセス可能である。たとえば、コンピューティングデバイスによって認可された(たとえば、保護コンテンツのセキュリティドメインエントリ内で参照された)アプリケーションは、保護メモリアドレスレンジ内にデータを書き込むことができる。別の例として、コンピューティングデバイスは、不正なまたは未確認のアプリケーションが、書き込まれるべきデータを保護メモリロケーション内に導くことを防止し得る。メモリアドレスの保護レンジ内に記憶されるデータは、メモリと関連付けられたメモリコントローラによってスクランブルされ得る。様々な態様では、宛先メモリアドレスは、メモリの特定のエリアであり得、物理メモリアドレスまたは仮想メモリアドレスによって規定され得る。一態様では、コンピューティングデバイスは、メモリまたはストレージユニットを区画化し、一定の区画、ブロック、または領域が保護データストレージのために使用されるべきであることを示すことができる。
【００４４】
一態様では、コンピューティングデバイスは、アプリケーションが保護メモリアドレスまたはロケーション内のデータにアクセスすることおよび/またはそのデータを記憶することを認可されているかどうかを、各アプリケーションがアクセスすることを認可されるセキュリティドメインを規定するデータテーブル内に記憶された情報に基づいて判断し得る。そのようなデータテーブルは、コンピューティングデバイス上にインストールされたアプリケーションに関連する情報、データタグ、およびアプリケーションがデータにアクセスすることおよびデータを記憶することを認可されているセキュリティドメインを含み得る。アプリケーション、データ識別子、およびセキュリティドメインに関連するそのようなデータテーブルは、データ(すなわち、データタグ)内の情報をテーブルルックアップルーチン内のルックアップ値として使用して、データタグに対応するソースまたはコンテンツを識別することによって、データのソースまたはコンテンツを決定することを容易にし得る。同様にして、アプリケーションによって生成されたデータのソースまたはコンテンツを識別するためのデータタグは、アプリケーションの名前または識別子をテーブルルックアップルーチン内のルックアップ値として使用して、対応するデータタグを識別することによって決定され得る。同じく、コンピューティングデバイスは、データ(すなわち、データタグ)内の情報をテーブルルックアップルーチン内のルックアップ値として使用して、データタグに対応するセキュリティドメインを識別することによって、データを記憶するために認可されたセキュリティドメインを識別し得る。
【００４５】
アプリケーションは、保護データに関連しないセキュリティドメインと関連付けられることがあり、したがって保護メモリロケーションにアクセスすることを認可されないことがある。認可されていないアプリケーションが保護メモリロケーション内にデータを記憶することを要求しているとコンピューティングデバイスが判断する場合、コンピューティングデバイスは、非保護メモリ内にデータを記憶し得る。代替として、コンピューティングデバイスは、識別情報を通知することまたはデータバストランザクションを再送信することをアプリケーションに促すことによって、アプリケーションアイデンティティ確認動作を実行し得る。一態様では、コンピューティングデバイスは、認可なしに保護メモリを要求するデータバストランザクションを無視し得る。
【００４６】
ブロック302で、コンピューティングデバイスは、DRMコンテンツレンダリングプログラムなどのアプリケーションを実行し得る。アプリケーションは、仮想マシンによって実行されてよく、実行されなくてもよい。ブロック304で、アプリケーションは、システムバスを介して配信するためのデータを生成し得る。アプリケーションは、生成されたデータがメモリ内の特定の宛先ストレージアドレス内に記憶されるべきであることを、バスコントローラに示し得る。たとえば、アプリケーションは、生成されたデータがメモリの特定の物理アドレスレンジに導かれるべきであることを、バスコントローラに示し得る。ブロック306で、バスコントローラは、少なくとも宛先メモリアドレスを示すタギング情報を含むデータバストランザクションとして、データをパッケージングすることができる。ブロック208で、バスコントローラは、トランザクションがメモリコントローラによって受信されるメモリに、データバストランザクションを送信し得る。
【００４７】
ブロック310で、ブロック210の動作を参照して上記で説明したものと同様に、コンピューティングデバイスは、宛先メモリアドレスに基づいてデータバストランザクション内の情報の保護区分を決定し得る。メモリコントローラは、データバストランザクション情報内の宛先メモリアドレスを識別し、アドレスを分析して、データバストランザクションが保護コンテンツに関連するかどうかを判断することができる。一態様では、DDRコントローラなどのメモリコントローラは、メモリの保護アドレスを用いてプログラムされ得る。別の態様では、メモリコントローラは、保護データおよび非保護データに関連するメモリアドレスを規定するデータテーブルにアクセスし得る。たとえば、データテーブルは、保護データ区分に対応するすべてのメモリアドレスを示すエントリを含み得る。代替として、データテーブルは、システムのすべてのセキュリティドメインに対するエントリを含み得、コンピューティングデバイスは、様々なセキュリティドメインエントリ内でデータバストランザクションの宛先メモリアドレスを探し出すことができる。宛先メモリアドレスと関連付けられたセキュリティドメインの特性に基づいて、コンピューティングデバイスは、データバストランザクションの保護区分を決定し得る。
【００４８】
判断ブロック212で、コンピューティングデバイスは、データバストランザクションの保護区分が、データがスクランブルされるべきであることを示しているかどうかを判断し得る。バストランザクションデータが保護されている場合(すなわち、判断ブロック212=「Yes」)、ブロック214で、コンピューティングデバイスは、メモリコントローラを介して、データをスクランブルし、それを、保護されたロケーションとしてあらかじめ決定されている宛先メモリアドレス内に記憶することができる。しかしながら、バストランザクションデータが保護されない場合(すなわち、判断ブロック212=「No」)、ブロック216で、コンピューティングデバイスは、スクランブリング動作を実行することなく、宛先メモリアドレス内にバストランザクションデータを記憶し得る。言い換えれば、データバストランザクションが保護されない宛先メモリアドレス内に記憶するためのデータを含むとき、データは、平文で記憶され得る。
【００４９】
図4は、コンテンツ保護(またはPC)ビット値に基づいてメモリ内の保護データをスクランブルするための態様方法400を示す。方法400は、方法400を使用するコンピューティングデバイスが、保護されたVMIDまたは宛先メモリアドレスを示す代わりに、CPビット値を設定することによってデータバストランザクション内のデータがスクランブルされることをもたらすことができること以外は、上記で説明した方法と同じである。一態様では、コンピューティングデバイスは、プロセッサ、モデムなど、様々なコンポーネントに対する保護インジケータを可能にするために、バス上に専用のピンまたは接続を含み得る。たとえば、モデムコンポーネントは、モデムからのデータバストランザクションが保護されたCPビットを含むことを可能にする専用ピンを含み得る。別の態様では、専用のピンを有するコンポーネントは、メモリスクランブリングのためにCPビット値を選択的に設定するように構成され得る。たとえば、保護されたCPビット値を設定するための専用のピンを有するコンポーネントは、メモリコントローラがトランザクションデータをスクランブルしないようなデータバストランザクションを送信し得る。
【００５０】
ブロック304で、コンピューティングデバイスは、ストレージユニットまたはメモリユニット内に記憶するためのデータを生成し得る。データは、ボイスオーバーインターネットプロトコルプログラムなど、プロセッサ上で実行するアプリケーションによって生成され得る。一態様では、データは、グラフィックスプロセッサ、周辺機器、またはモデムなど、コンピューティングデバイスを有するコンポーネントによって生成され得る。ブロック402で、コンピューティングデバイスプロセッサは、バス(たとえば、システムバス、シリアルバスなど)を介して送信するために、タギング情報を有するデータをパッケージングすることができる。データは、データが保護されているかどうかを示すCPビットを有するデータにCPビット値を付加することによって、データバストランザクションとしてパッケージングされ得る。ブロック208で、コンピューティングデバイスは、DDRコントローラなどのメモリコントローラにデータバストランザクションを送信し得る。ブロック404で、メモリコントローラは、データバストランザクションを評価(たとえば、データの保護区分を識別)し得、判断ブロック212で、データがCPビット値のタギング情報に基づいて保護されているかどうかを判断し得る。たとえば、コンピューティングデバイスは、CPビットが「1」の値を有する場合にデータが保護されるべきと判断し得、逆もまた同様に成立する。データが保護されている場合(すなわち、判断ブロック212=「Yes」)、コンピューティングデバイスは、メモリコントローラを介して、メモリ内のデータをスクランブルすることができる。代替として、データがCPビット値によって示されるように保護されない場合(すなわち、判断ブロック212=「No」)、コンピューティングデバイスは、スクランブルせず、代わりに、データバストランザクションのデータを平文で記憶し得る。
【００５１】
様々な態様は、種々のモバイルコンピューティングデバイス(たとえば、スマートフォン、フィーチャーフォンなど)のいずれにも実装することができ、その一例が図5に示される。たとえば、モバイルコンピューティングデバイス180は、内部メモリ502に結合されたプロセッサ501を含むことができる。内部メモリ502は、揮発性メモリまたは不揮発性メモリであり得、また、セキュアメモリおよび/もしくは暗号化メモリ、または非セキュアメモリおよび/もしくは非暗号化メモリ、またはそれらの任意の組合せであり得る。また、プロセッサ501は、抵抗性感知タッチスクリーン、静電容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンディスプレイ506に結合することができる。しかしながら、モバイルコンピューティングデバイス180のディスプレイは、タッチスクリーン機能を有する必要はない。モバイルコンピューティングデバイス180は、1つまたは複数の短距離無線信号トランシーバ518(たとえば、Peanut、Bluetooth(登録商標)、Zigbee(登録商標)、RF無線)と、本明細書で説明するワイヤレス信号を送信および受信するためのアンテナ508とを有し得る。トランシーバ518およびアンテナ508は、様々なワイヤレス送信プロトコルスタック/インターフェースを実装するために、上記の回路とともに使用され得る。モバイルコンピューティングデバイス180は、セルラーネットワークを介する通信を可能にするセルラーネットワークワイヤレスモデムチップ520を含み得る。モバイルコンピューティングデバイス180はまた、ユーザ入力を受信するための物理ボタン512aおよび512bを含み得る。
【００５２】
パーソナルコンピュータおよびラップトップコンピュータを含む、コンピューティングデバイスの他の形態は、様々な態様を実装するために使用され得る。そのようなコンピューティングデバイスは、通常、例示的なラップトップコンピュータデバイス110を示す図6に示されたコンポーネントを含む。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面614を含み、したがって、タッチスクリーンディスプレイを備える上述のモバイルコンピューティングデバイスに実装されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受信することができる。そのようなラップトップコンピュータ110は、一般に、揮発性内部メモリ602、およびディスクドライブ606などの大容量不揮発性メモリに結合されたプロセッサ601を含む。ラップトップコンピュータ110はまた、プロセッサ601に結合されたコンパクトディスク(CD)および/またはDVDドライブ608を含む場合がある。ラップトップコンピュータ110はまた、プロセッサ601をネットワークに結合するためのネットワーク接続回路などの、データ接続を確立し外部メモリデバイスを受け入れるための、プロセッサ601に結合されたいくつかのコネクタポート610を含む場合がある。ラップトップコンピュータデバイス110は、1つまたは複数の短距離無線信号トランシーバ618(たとえば、Peanut(登録商標)、Bluetooth(登録商標)、Zigbee(登録商標)、RF無線)と、本明細書で説明するワイヤレス信号を送信および受信するためのアンテナ620とを有し得る。トランシーバ618およびアンテナ620は、様々なワイヤレス送信プロトコルスタック/インターフェースを実装するために、上記の回路とともに使用され得る。ラップトップまたはノートブック構成では、コンピュータのハウジングはタッチパッド614、キーボード612、およびディスプレイ616を含み、すべてはプロセッサ601に結合される。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでよく、それらはまた、様々な態様とともに使用され得る。
【００５３】
プロセッサ501および601は、上で説明された様々な態様の機能を含む、種々の機能を実行するためのソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。様々なデバイスでは、1つのプロセッサをワイヤレス通信機能専用とし、1つのプロセッサを他のアプリケーションの実行専用とするなど、複数のプロセッサが設けられてもよい。一般的には、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ501および601にロードされる前に、内部メモリ502および602内に記憶され得る。プロセッサ501および601は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。多くのデバイスでは、内部メモリは、揮発性メモリ、もしくはフラッシュメモリなどの不揮発性メモリ、または両方の混合であり得る。本明細書では、メモリへの一般的な言及は、様々なデバイスに差し込まれる内部メモリまたはリムーバブルメモリと、プロセッサ501および601の中のメモリとを含む、プロセッサ501および601によってアクセス可能なメモリを指す。
【００５４】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供したものであり、様々な態様のステップを提示された順序で実施しなければならないことを要求または暗示するものではない。当業者が諒解するように、上記の態様におけるステップの順序は、どのような順序で実施されてもよい。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、方法の説明において読者を案内するために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形での請求要素への任意の言及は、その要素を単数に限定するものとして解釈されるべきではない。
【００５５】
本明細書で開示された態様に関して記載された、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装することができる。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、上記では概してそれらの機能に関して記載された。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００５６】
本明細書で開示された態様に関して記載された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別のハードウェアコンポーネント、または、本明細書に記載された機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、そのプロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。代替的に、いくつかのステップまたは方法が、所与の機能に固有の回路によって実行され得る。
【００５７】
1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読記録媒体上に記憶され、または、コンピュータ可読記録媒体を介して送信され得る。本明細書で開示された方法またはアルゴリズムのステップは、有形の非一時的コンピュータ可読記録媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。有形の非一時的コンピュータ可読記録媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読記録媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せも非一時的コンピュータ可読記録媒体の範囲内に含めるべきである。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、有形の非一時的機械可読記録媒体および/またはコンピュータ可読記録媒体上のコードおよび/または命令の1つまたは任意の組合せ、もしくはそのセットとして常駐し得る。
【００５８】
開示された態様の上記の説明は、任意の当業者が本発明を製作または使用できるようになされている。これらの態様への様々な修正が当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本発明の趣旨または範囲を逸脱することなく、他の態様に適用することができる。したがって、本発明は、本明細書で示された態様に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示された原理および新規の特徴に合致する、最も広い範囲を与えられるべきである。
【符号の説明】
【００５９】
100  コンピューティングデバイス
101  中央プロセッサユニット(CPU)
102  アプリケーションApp A
104  アプリケーションApp B
106  アプリケーションApp Z
110  メモリコントローラユニット、ラップトップコンピュータデバイス
111  データバストランザクション
112  データバストランザクション
114  データバストランザクション
115  ハイパーバイザ
120  内部メモリ
122  メモリ
124  内部メモリ、RAM
126  バス
128  バスコントローラ
150  セキュリティドメインのデータテーブル
152  記録
154  記録
180  モバイルコンピューティングデバイス
501  プロセッサ
502  内部メモリ
506  タッチスクリーンディスプレイ
508  アンテナ
512a、512b  物理ボタン
518  トランシーバ
520  セルラーネットワークワイヤレスモデムチップ
601  プロセッサ
602  揮発性内部メモリ
606  ディスクドライブ、大容量不揮発性メモリ
608  DVDドライブ
610  コネクタポート
612  キーボード
614  タッチパッド
616  ディスプレイ
618  短距離無線信号トランシーバ
620  アンテナ
【図１Ａ】
2015528596.tif 000003
【図１Ｂ】
2015528596.tif 000004
【図２】
2015528596.tif 000005
【図３】
2015528596.tif 000006
【図４】
2015528596.tif 000007
【図５】
2015528596.tif 000008
【図６】
2015528596.tif 000009
【手続補正書】
【提出日】平成25年10月24日(2013.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データをパターンマッチング攻撃から効果的に保護するために、コンピューティングデバイス内で選択的メモリスクランブリングを行うための方法であって、
データバストランザクションにインジケータを付加するステップと、
メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するステップと、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリに記憶するときにスクランブリングルーチンを前記データに適用するステップと、
前記データが保護コンテンツを含まないものと判断することに応答して、前記スクランブリングルーチンを前記データに適用することなく前記データを前記メモリに記憶するステップとを含む、方法。
【請求項２】
前記メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するステップが、
デジタル著作権管理(DRM)下のデータ、
個人情報、
セキュリティ情報、
バンキング情報、
パスワード、
認証情報、
保護コンテンツアプリケーション情報、および
医療データのうちの1つを含むものとして、前記インジケータが前記データを識別するかどうかを判断するステップを含む、請求項1に記載の方法。
【請求項３】
前記データバストランザクションに前記インジケータを付加するステップおよび前記メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するステップが、
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
前記タギング情報に基づいて前記送信されたデータのソースまたはコンテンツを決定するステップとを含み、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリに記憶するときにスクランブリングルーチンを前記データに適用するステップが、前記送信されたデータの前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルするステップを含む、請求項1に記載の方法。
【請求項４】
前記コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記タギング情報に基づいて前記送信されたデータの前記ソースまたはコンテンツを決定するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含む、請求項3に記載の方法。
【請求項５】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データに仮想マシン識別(VMID)を付加するステップを含む、請求項3に記載の方法。
【請求項６】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データにバスマスター識別を付加するステップを含む、請求項3に記載の方法。
【請求項７】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データに宛先メモリアドレスを付加するステップを含み、
前記メモリが、保護コンテンツデータに対して特定のメモリアドレスを使用する、請求項3に記載の方法。
【請求項８】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データにコンテンツ保護(CP)ビットを付加するステップを含む、請求項3に記載の方法。
【請求項９】
前記コンピューティングデバイス内の第1のプロセッサ、前記コンピューティングデバイス内のコプロセッサ、および前記コンピューティングデバイス内のピアプロセッサのうちの少なくとも1つにおいて実行される、請求項1に記載の方法。
【請求項１０】
少なくとも、データがスクランブルされるセキュアドメインと非セキュアドメインとで構成されるメモリと、
前記メモリに結合されたプロセッサとを備え、前記プロセッサが、
データバストランザクションにインジケータを付加するステップと、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するステップと、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリ内の前記セキュアドメインに記憶するときにスクランブリングルーチンを前記データに適用するステップと、
前記データが保護コンテンツを含まないものと判断することに応答して、前記スクランブリングルーチンを前記データに適用することなく前記データを前記非セキュアドメインに記憶するステップとを含む動作を実行するためのプロセッサ実行可能命令をともなって構成される、コンピューティングデバイス。
【請求項１１】
前記メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するステップが、
デジタル著作権管理(DRM)下のデータ、
個人情報、
セキュリティ情報、
バンキング情報、
パスワード、
認証情報、
保護コンテンツアプリケーション情報、および
医療データのうちの1つを含むものとして、前記インジケータが前記データを識別するかどうかを判断するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記データバストランザクションに前記インジケータを付加するステップおよび前記メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを判断するステップが、
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
前記タギング情報に基づいて前記送信されたデータのソースまたはコンテンツを決定するステップとを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成され、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリに記憶するときにスクランブリングルーチンを前記データに適用するステップが、前記送信されたデータの前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルするステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項10に記載のコンピューティングデバイス。
【請求項１３】
前記コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記タギング情報に基づいて前記送信されたデータの前記ソースまたはコンテンツを決定するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項12に記載のコンピューティングデバイス。
【請求項１４】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データに仮想マシン識別(VMID)を付加するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項12に記載のコンピューティングデバイス。
【請求項１５】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データにバスマスター識別を付加するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項12に記載のコンピューティングデバイス。
【請求項１６】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データに宛先ストレージアドレスを付加するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成され、
前記メモリが、保護コンテンツデータに対して特定のストレージアドレスを使用する、請求項12に記載のコンピューティングデバイス。
【請求項１７】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データにコンテンツ保護(CP)ビットを付加するステップを含むような動作を実行するためのプロセッサ実行可能命令をともなって、前記プロセッサが構成される、請求項12に記載のコンピューティングデバイス。
【請求項１８】
前記プロセッサが、前記コンピューティングデバイス内の複数のプロセッサのうちの第1のプロセッサ、前記コンピューティングデバイス内のコプロセッサ、および前記コンピューティングデバイス内のピアプロセッサのうちの1つである、請求項12に記載のコンピューティングデバイス。
【請求項１９】
少なくとも、データがスクランブルされるセキュアドメインと非セキュアドメインとで構成されるメモリと、
データバストランザクションにインジケータを付加するための手段と、
前記メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するための手段と、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリに記憶するときにスクランブリングルーチンを前記データに適用するための手段と、
前記データが保護コンテンツを含まないものと判断することに応答して、前記スクランブリングルーチンを前記データに適用することなく前記データをストレージに記憶するための手段とを含む、コンピューティングデバイス。
【請求項２０】
前記メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するための手段が、
デジタル著作権管理(DRM)下のデータ、
個人情報、
セキュリティ情報、
バンキング情報、
パスワード、
認証情報、
保護コンテンツアプリケーション情報、および
医療データのうちの1つを含むものとして、前記インジケータが前記データを識別するかどうかを判断するための手段を含む、請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記データバストランザクションに前記インジケータを付加するための手段およびメモリに記憶されるべき前記データが保護コンテンツを含むかどうかを判断するための手段が、
前記コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するための手段と、
前記タギング情報に基づいて前記送信されたデータのソースまたはコンテンツを決定するための手段とを含み、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリに記憶するときにスクランブリングルーチンを前記データに適用するための手段が、前記送信されたデータの前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルするための手段を含む、請求項19に記載のコンピューティングデバイス。
【請求項２２】
前記コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするための手段が、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するための手段を含み、
前記タギング情報に基づいて前記送信されたデータの前記ソースまたはコンテンツを決定するための手段が、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するための手段を含む、請求項21に記載のコンピューティングデバイス。
【請求項２３】
前記バスを介して送信されたデータにタギング情報を付加するための手段が、前記バスを介して送信された前記データに仮想マシン識別(VMID)を付加するための手段を含む、請求項21に記載のコンピューティングデバイス。
【請求項２４】
前記バスを介して送信されたデータにタギング情報を付加するための手段が、前記バスを介して送信された前記データにバスマスター識別を付加するための手段を含む、請求項21に記載のコンピューティングデバイス。
【請求項２５】
前記バスを介して送信されたデータにタギング情報を付加するための手段が、前記バスを介して送信された前記データに宛先ストレージアドレスを付加するための手段を含み、
前記メモリが、保護コンテンツデータに対して特定のストレージアドレスを使用する、請求項21に記載のコンピューティングデバイス。
【請求項２６】
前記バスを介して送信されたデータにタギング情報を付加するための手段が、前記バスを介して送信された前記データにコンテンツ保護(CP)ビットを付加するための手段を含む、請求項21に記載のコンピューティングデバイス。
【請求項２７】
前記コンピューティングデバイス内の複数のプロセッサのうちの第1のプロセッサ、前記コンピューティングデバイス内のコプロセッサ、および前記コンピューティングデバイス内のピアプロセッサのうちの少なくとも1つを備えるアプリケーションを実行するための手段をさらに含む、請求項21に記載のコンピューティングデバイス。
【請求項２８】
プロセッサ実行可能命令を記憶した非一時的プロセッサ可読記録媒体であって、前記プロセッサ実行可能命令が、
データバストランザクションにインジケータを付加するステップと、
メモリに記憶されるべきデータが保護コンテンツを含むかどうかを前記インジケータに基づいて判断するステップと、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリ内のセキュアドメインに記憶するときにスクランブリングルーチンを前記データに適用するステップと、
前記データが保護コンテンツを含まないものと判断することに応答して、前記スクランブリングルーチンを前記データに適用することなく前記データを非セキュアドメインに記憶するステップとを含む動作をプロセッサに実行させるように構成される、非一時的プロセッサ可読記録媒体。
【請求項２９】
前記メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを前記データバストランザクションに付加された前記インジケータに基づいて判断するステップが、
デジタル著作権管理(DRM)下のデータ、
個人情報、
セキュリティ情報、
バンキング情報、
パスワード、
認証情報、
保護コンテンツアプリケーション情報、および
医療データのうちの1つを含むものとして、前記インジケータが前記データを識別するかどうかを判断するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項28に記載の非一時的プロセッサ可読記録媒体。
【請求項３０】
前記データバストランザクションに前記インジケータを付加するステップおよび前記メモリに記憶されるべき前記データが保護コンテンツを含むかどうかを判断するステップが、
コンピューティングデバイスのバスを介して送信されるデータにタギング情報を付加するステップと、
前記タギング情報に基づいて前記送信されたデータのソースまたはコンテンツを決定するステップとを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成され、
前記データが保護コンテンツを含むものと判断することに応答して、前記データを前記メモリに記憶するときにスクランブリングルーチンを前記データに適用するステップが、前記送信されたデータの前記決定されたソースまたはコンテンツに基づいて前記データをスクランブルするステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項28に記載の非一時的プロセッサ可読記録媒体。
【請求項３１】
コンピューティングデバイスのバスを介して送信されたデータを、前記データのソースまたはコンテンツを識別する情報でタグ付けするステップが、前記データが記憶され得るセキュリティドメインに相関する前記データに情報を付加するステップを含み、
前記タギング情報に基づいて前記送信されたデータの前記ソースまたはコンテンツを決定するステップが、前記タギング情報を、認可されたセキュリティドメインに相関する記憶された識別子と比較するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項30に記載の非一時的プロセッサ可読記録媒体。
【請求項３２】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データに仮想マシン識別(VMID)を付加するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項30に記載の非一時的プロセッサ可読記録媒体。
【請求項３３】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データにバスマスター識別を付加するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項30に記載の非一時的プロセッサ可読記録媒体。
【請求項３４】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データに宛先ストレージアドレスを付加するステップを含み、
前記メモリが、保護コンテンツデータに対して特定のストレージアドレスを使用するような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項30に記載の非一時的プロセッサ可読記録媒体。
【請求項３５】
前記バスを介して送信されたデータにタギング情報を付加するステップが、前記バスを介して送信された前記データにコンテンツ保護(CP)ビットを付加するステップを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項30に記載の非一時的プロセッサ可読記録媒体。
【請求項３６】
前記記憶されたプロセッサ実行可能命令が、複数のプロセッサのうちの1つ、コプロセッサ、およびピアプロセッサのグループから選択されたプロセッサによって実行されるように構成される、請求項30に記載の非一時的プロセッサ可読記録媒体。
【国際調査報告】
2015528596.tif 000010
2015528596.tif 000011