(57)【要約】  コンピューティングデバイス中のソフトウェアを保護するための技法が提供される。これらの技法による方法は、暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るステップと、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するステップと、命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するステップと、セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すステップとを含む。
2018532183.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイス中のソフトウェアを保護するための方法であって、
暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るステップと、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するステップと、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するステップと、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すステップと
を含む方法。
【請求項２】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定するステップが、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスするステップと、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号するステップと、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止するステップと、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施するステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するステップが、
前記セキュアなソフトウェアモジュールのインスタンスを初期化するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化するステップが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスするステップを含む、請求項4に記載の方法。
【請求項６】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すステップが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するステップと、
前記セキュアなソフトウェアモジュールの命令の復号を停止するステップと
をさらに含む、請求項4に記載の方法。
【請求項７】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すステップが、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドするステップと、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するステップと、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止するステップと
をさらに含む、請求項4に記載の方法。
【請求項８】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するステップが、
前記1つまたは複数の命令を実行する直前に、実行されている前記セキュアなソフトウェアモジュールのインスタンスに関連付けられた前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令の各々を復号するステップをさらに含む、請求項1に記載の方法。
【請求項９】
前記1つまたは複数の命令を実行する直前に、実行されている前記セキュアなソフトウェアモジュールの前記インスタンスに関連付けられた前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令の各々を復号するステップが、
前記セキュアなソフトウェアモジュールに関連付けられた暗号化鍵を使用して前記1つまたは複数の命令の各々を復号するステップをさらに含む、請求項8に記載の方法。
【請求項１０】
暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るための手段と、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するための手段と、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するための手段と、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すための手段と
を備える装置。
【請求項１１】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定するための前記手段が、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスするための手段と、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号するための手段と、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定するための手段と
をさらに含む、請求項10に記載の装置。
【請求項１２】
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止するための手段と、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施するための手段と
をさらに備える、請求項11に記載の装置。
【請求項１３】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するための前記手段が、
前記セキュアなソフトウェアモジュールのインスタンスを初期化するための手段をさらに含む、請求項10に記載の装置。
【請求項１４】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化するための前記手段が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスするための手段を含む、請求項13に記載の装置。
【請求項１５】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すための前記手段が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するための手段と、
前記セキュアなソフトウェアモジュールの命令の復号を停止するための手段と
をさらに含む、請求項13に記載の装置。
【請求項１６】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すための前記手段が、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドするための手段と、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するための手段と、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止するための手段と
をさらに含む、請求項13に記載の装置。
【請求項１７】
メモリと、
前記メモリに結合されたプロセッサとを備える装置であって、前記プロセッサが、
暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取ることと、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定することと、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行することと、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことと
を行うように構成された、装置。
【請求項１８】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定することを行うように構成された前記プロセッサが、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスすることと、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号することと、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定することと
を行うようにさらに構成された、請求項17に記載の装置。
【請求項１９】
前記プロセッサが、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止することと、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施することと
を行うようにさらに構成された、請求項18に記載の装置。
【請求項２０】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールのインスタンスを初期化するようにさらに構成された、請求項17に記載の装置。
【請求項２１】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化するように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスすることを行うようにさらに構成された、請求項20に記載の装置。
【請求項２２】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを行うように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、前記メモリのセキュアな部分に記憶することと、
前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を行うようにさらに構成された、請求項20に記載の装置。
【請求項２３】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを行うように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドすることと、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、前記メモリのセキュアな部分に記憶することと、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を行うようにさらに構成された、請求項20に記載の装置。
【請求項２４】
コンピューティングデバイス中のソフトウェアを保護するためのコンピュータ可読命令が記憶された非一時的コンピュータ可読媒体であって、
暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取ることと、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定することと、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行することと、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことと
を前記コンピューティングデバイスに行わせるように構成された命令を含む、非一時的コンピュータ可読媒体。
【請求項２５】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定することを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスすることと、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号することと、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２６】
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止することと、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項25に記載の非一時的コンピュータ可読媒体。
【請求項２７】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行することを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールのインスタンスを初期化することを前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２８】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化することを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスすることを前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項27に記載の非一時的コンピュータ可読媒体。
【請求項２９】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶することと、
前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項27に記載の非一時的コンピュータ可読媒体。
【請求項３０】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドすることと、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶することと、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項27に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御される暗号化鍵管理によって保護されるソフトウェアモジュールに対するセキュアな入退出に関する。
【背景技術】
【０００２】
ソフトウェアは、ハッカーまたは競合相手がソフトウェアから抽出して自身の目的に利用したいと望み得る価値のある知的所有権を含むことがある。トラステッド実行環境など、いくつかの従来ソリューションは、コンピューティングデバイス上のデータに対する保護を提供することができる。しかし、これらのソリューションは、ソフトウェアコード自体に対する保護を提供しない。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示による、コンピューティングデバイス中のソフトウェアを保護するための例示的な方法は、暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るステップと、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するステップと、命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するステップと、セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すステップとを含む。
【０００４】
そのような方法の実装形態は、次の特徴のうちの1つまたは複数を含むことができる。命令は呼出し命令であり、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するステップは、セキュアでないソフトウェアモジュールによって実行された呼出し命令中で指定されるアドレスにおいて、セキュアなソフトウェアモジュールの命令にアクセスするステップと、セキュアなソフトウェアモジュールに固有の復号鍵を使用して、呼出し命令中で指定されるアドレスにおいて見つかった命令を復号するステップと、呼出し命令中で指定されるアドレスにおいて見つかった命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントを表すセキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定するステップとを含む。方法はまた、呼出し命令中で指定されるアドレスにおいて見つかった命令が構成命令でないことに応答して、セキュアなソフトウェアモジュールへのアクセスを禁止するステップと、呼出し命令中で指定されるアドレスが構成命令でないことに応答して、アクションを実施するステップとを含む。命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するステップは、セキュアなソフトウェアモジュールのインスタンスを初期化するステップを含む。セキュアなソフトウェアモジュールのインスタンスを初期化するステップは、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報にアクセスするステップを含む。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すステップは、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するステップと、セキュアなソフトウェアモジュールの命令の復号を停止するステップとを含む。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すステップは、セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドするステップと、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するステップと、例外の発生に応答して、セキュアなソフトウェアモジュールの命令の復号を停止するステップとを含む。命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するステップは、1つまたは複数の命令を実行する直前に、実行されているセキュアなソフトウェアモジュールのインスタンスに関連付けられたセキュアなソフトウェアモジュールの1つまたは複数の命令の各々を復号するステップを含む。1つまたは複数の命令を実行する直前に、実行されているセキュアなソフトウェアモジュールのインスタンスに関連付けられたセキュアなソフトウェアモジュールの1つまたは複数の命令の各々を復号するステップは、セキュアなソフトウェアモジュールに関連付けられた暗号化鍵を使用して1つまたは複数の命令の各々を復号するステップを含む。
【０００５】
本開示による例示的な装置は、暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るための手段と、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するための手段と、命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するための手段と、セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すための手段とを備える。
【０００６】
そのような装置の実装形態は、次の特徴のうちの1つまたは複数を含むことができる。命令は呼出し命令であり、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するための手段は、セキュアでないソフトウェアモジュールによって実行された呼出し命令中で指定されるアドレスにおいて、セキュアなソフトウェアモジュールの命令にアクセスするための手段と、セキュアなソフトウェアモジュールに固有の復号鍵を使用して、呼出し命令中で指定されるアドレスにおいて見つかった命令を復号するための手段と、呼出し命令中で指定されるアドレスにおいて見つかった命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントを表すセキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定するための手段とを含む。装置はまた、呼出し命令中で指定されるアドレスにおいて見つかった命令が構成命令でないことに応答して、セキュアなソフトウェアモジュールへのアクセスを禁止するための手段と、呼出し命令中で指定されるアドレスが構成命令でないことに応答して、アクションを実施するための手段とを備える。命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するための手段は、セキュアなソフトウェアモジュールのインスタンスを初期化するための手段を含む。セキュアなソフトウェアモジュールのインスタンスを初期化するための手段は、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報にアクセスするための手段を含む。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すための手段は、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するための手段と、セキュアなソフトウェアモジュールの命令の復号を停止するための手段とを含む。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すための手段は、セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドするための手段と、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するための手段と、例外の発生に応答して、セキュアなソフトウェアモジュールの命令の復号を停止するための手段とを含む。
【０００７】
本開示による例示的な装置は、メモリと、メモリに結合されたプロセッサとを備える。プロセッサは、暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取ることと、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定することと、命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行することと、セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すこととを行うように構成される。
【０００８】
そのような装置の実装形態は、次の特徴のうちの1つまたは複数を含むことができる。命令は呼出し命令であり、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定することを行うように構成されたプロセッサは、セキュアでないソフトウェアモジュールによって実行された呼出し命令中で指定されるアドレスにおいて、セキュアなソフトウェアモジュールの命令にアクセスすることと、セキュアなソフトウェアモジュールに固有の復号鍵を使用して、呼出し命令中で指定されるアドレスにおいて見つかった命令を復号することと、呼出し命令中で指定されるアドレスにおいて見つかった命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントを表すセキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定することとを行うようにさらに構成される。プロセッサは、呼出し命令中で指定されるアドレスにおいて見つかった命令が構成命令でないことに応答して、セキュアなソフトウェアモジュールへのアクセスを禁止することと、呼出し命令中で指定されるアドレスが構成命令でないことに応答して、アクションを実施することとを行うようにさらに構成される。命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するように構成されたプロセッサは、セキュアなソフトウェアモジュールのインスタンスを初期化することを行うようにさらに構成される。セキュアなソフトウェアモジュールのインスタンスを初期化するように構成されたプロセッサは、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報にアクセスすることを行うようにさらに構成される。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すことを行うように構成されたプロセッサは、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、メモリのセキュアな部分に記憶することと、セキュアなソフトウェアモジュールの命令の復号を停止することとを行うようにさらに構成される。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すことを行うように構成されたプロセッサは、セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドすることと、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、メモリのセキュアな部分に記憶することと、例外の発生に応答して、セキュアなソフトウェアモジュールの命令の復号を停止することとを行うようにさらに構成される。
【０００９】
本開示による、コンピューティングデバイス中のソフトウェアを保護するためのコンピュータ可読命令が記憶された例示的な非一時的コンピュータ可読媒体は、暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取ることと、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定することと、命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行することと、セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すこととをコンピューティングデバイスに行わせるように構成された命令を含む。
【００１０】
そのような非一時的コンピュータ可読媒体の実装形態は、次の特徴のうちの1つまたは複数を含むことができる。命令は呼出し命令を含み、命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するステップをコンピューティングデバイスに行わせるように構成された命令は、セキュアでないソフトウェアモジュールによって実行された呼出し命令中で指定されるアドレスにおいて、セキュアなソフトウェアモジュールの命令にアクセスすることと、セキュアなソフトウェアモジュールに固有の復号鍵を使用して、呼出し命令中で指定されるアドレスにおいて見つかった命令を復号することと、呼出し命令中で指定されるアドレスにおいて見つかった命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントを表すセキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定することとをコンピューティングデバイスに行わせるように構成された命令を含む。非一時的コンピュータ可読媒体はまた、呼出し命令中で指定されるアドレスにおいて見つかった命令が構成命令でないことに応答して、セキュアなソフトウェアモジュールへのアクセスを禁止することと、呼出し命令中で指定されるアドレスが構成命令でないことに応答して、アクションを実施することとをコンピューティングデバイスに行わせるように構成された命令を含む。命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行することをコンピューティングデバイスに行わせるように構成された命令は、セキュアなソフトウェアモジュールのインスタンスを初期化することをコンピューティングデバイスに行わせるように構成された命令を含む。セキュアなソフトウェアモジュールのインスタンスを初期化することをコンピューティングデバイスに行わせるように構成された命令は、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報にアクセスすることをコンピューティングデバイスに行わせるように構成された命令を含む。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すことをコンピューティングデバイスに行わせるように構成された命令は、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶することと、セキュアなソフトウェアモジュールの命令の復号を停止することとをコンピューティングデバイスに行わせるように構成された命令を含む。セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すことをコンピューティングデバイスに行わせるように構成された命令は、セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドすることと、セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶することと、例外���発生に応答して、セキュアなソフトウェアモジュールの命令の復号を停止することとをコンピューティングデバイスに行わせるように構成された命令を含む。
【図面の簡単な説明】
【００１１】
【図１】いくつかの例示的な実装形態による、例示的なコンピューティングデバイスの概略図である。
【図２】いくつかの例示的な実装形態による、別のコンピューティングデバイスの概略図である。
【図３】本明細書で開示される技法による、コンピューティングデバイス中のソフトウェアを保護するための例示的なプロセスの流れ図である。
【図４】本明細書で開示される技法による、命令がセキュアなソフトウェアモジュールへの制御されるエントリポイントであるかどうかを決定するための例示的なプロセスの流れ図である。
【図５】本明細書で開示される技法による、コンピューティングデバイス中のソフトウェアを保護するための例示的なプロセスの流れ図である。
【図６】本明細書で開示される技法による、セキュアなソフトウェアモジュールからの退出を制御するための例示的なプロセスの流れ図である。
【図７】本明細書で開示される技法による、セキュアなソフトウェアモジュールを初期化するための例示的なプロセスの流れ図である。
【図８】本明細書で開示される技法による、セキュアなソフトウェアモジュールの命令を実行するための例示的なプロセスの流れ図である。
【図９】いくつかの例示的な実装形態による、図1および図2に示されるコンピューティングデバイスを実装するのに使用できる例示的なワイヤレスデバイスの概略図である。
【発明を実施するための形態】
【００１２】
いくつかの例示的な実装形態によれば、様々な図面中の同じ参照符号は、同じ要素を示す。
【００１３】
本明細書では、セキュアなソフトウェアモジュールを保護するための方法、システム、デバイス、コンピュータ可読媒体、および他の実装形態について説明する。本明細書で説明される技法は、制御される暗号化鍵管理によって保護されるセキュアなソフトウェアモジュールに対する制御される入退出を実現する。セキュアなソフトウェアモジュールのプログラムコードは、暗号化された形で記憶され、コンピューティングデバイスのプロセッサによるソフトウェアコードの実行の直前に復号される。添付の図面および以下の説明では、これらのアプローチの各々について、より詳細に論じる。
【００１４】
例示的な実施形態は、たとえば、以下のうちの1つまたは複数を含む方法を含む。
・  ソフトウェアモジュールを保護するための方法、システム、デバイス、コンピュータ可読媒体、および他の実装形態。これらの技法による例示的な方法は、
-  暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るステップと、
-  命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するステップと、
-  命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するステップと、
-  セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すステップと
を含む。
そのような例示的なシステムおよび方法の実装形態を、添付の図に示し、後続の例示的な実装形態において詳細に論じる。
【００１５】
図1は、本明細書で開示される技法を実装するのに使用できる例示的なコンピューティングデバイス100の概略図である。コンピューティングデバイス100は、コンピュータサーバを構成することができ、クラウドコンピューティング環境の一部であってよい。コンピューティングデバイス100はまた、ラップトップコンピュータ、タブレットコンピュータ、モバイルデバイス、またはウェアラブルコンピューティングデバイスなど、他のタイプのコンピューティングデバイスであってもよい。コンピューティングデバイス100は、プロセッサ105およびメモリ125を備える。メモリ125は、プロセッサ105に通信可能に結合され、データの記憶、および/またはプロセッサ105によって実行できる実行可能プログラムコードの記憶に使用することができる。プロセッサ105は、セキュアでないソフトウェアモジュール130とセキュアなソフトウェアモジュール140の両方を実行するように構成されてよい。セキュアでないソフトウェアモジュール130は、1つまたは複数の機能を実施するためにプロセッサ105によって実行できる実行可能プログラム命令を含む。この保護されないソフトウェアコードは、暗号化されない形でメモリ125に記憶され、コンピューティングデバイス100上で実行されている他のプロセスに潜在的にアクセス可能であることがある。保護されないソフトウェアコードは、コンピューティングデバイス100によって実行される1つもしくは複数のアプリケーション、および/または、コンピューティングデバイス100によって実行されるハイレベルオペレーティングシステム(HLOS)のコンポーネント、を構成する場合がある。保護されるソフトウェアコードは、暗号化された形でコンピューティングデバイス100のメモリ125に記憶された機密プログラムコードを含む1つまたは複数のセキュアなソフトウェアモジュール140を構成する。機密プログラムコードは、コードの開発者が保護したいと望む、価値のある知的所有権を含むことがあり、または、攻撃者がプログラムコードを攻撃することによって入手もしくは修正したいと望む場合がある財務データ、医療データ、もしくは他のそのようなデータなどの秘密データにアクセスする、もしくは修正を行う場合があるトランザクションを実施するためのコードを含むことがある。保護されるソフトウェアコードは、実行の直前まで、暗号化された形で記憶することができる。実行の直前に、当該プログラムコードは、復号されて、実行に向けてプロセッサ105に提供されてよい。
【００１６】
コンピューティングデバイス100は、セキュアなソフトウェアモジュールを実行するように構成されてよい。セキュアな各ソフトウェアモジュール140は、メモリ125の一部分に記憶されてよく、この部分は、本明細書では、セキュアなソフトウェアモジュール140の「レルム」または「ソフトウェアレルム」とも呼ばれる。セキュアなソフトウェアモジュール140は、暗号化されたプログラムコード155を含む。セキュアなソフトウェアモジュール140はまた、レルムエントリコンテキスト150およびレルム構成命令145を含むこともできる。レルム構成命令145は、セキュアなソフトウェアモジュール140のプログラムコードへの初期エントリポイントとしての働きをする。プロセッサ105は、レルム呼出し命令135を介してセキュアなソフトウェアモジュール140のプログラムコードへの指定されたエントリポイント以外のメモリ場所へのコードにジャンプするのを防止することによって、セキュアなソフトウェアモジュール140のプログラムコードに入ることを制御することができる。レルム構成命令145以外の他のアドレスにおいてセキュアなソフトウェアモジュール140のプログラムコードに入るための呼出しは、プロセッサ105によって拒否されることがあり、これにより、攻撃者がセキュアなソフトウェアモジュール140のプログラムコード内の任意のアドレスにジャンプしようと試みるのを防止することができる。セキュアなソフトウェアモジュール140の暗号化されたプログラムコード155は、暗号化された形に保たれ、暗号化されたプログラムコード155の命令をプロセッサ105が実行しようとしつつあるときに必要に応じて復号されるだけである。
【００１７】
コンピューティングデバイス100はまた、セキュアでないソフトウェアモジュール130がセキュアなソフトウェアモジュール140を呼び出すのを可能にするように構成されてよい。プロセッサ105は、1つまたは複数のレルム固有のCPU命令110を実装することができる。これらの命令は、レルム呼出し命令135、レルム構成命令145、およびレルムリターン命令160を含むことができる。他のレルム固有命令がプロセッサ105によって実装されてもよい。プロセッサ105は、レルム呼出し命令135を実装するように構成されてよく、レルム呼出し命令135は、保護されないプログラムコードがセキュアなソフトウェアモジュール140のプログラムコードを呼び出すためのインターフェースを提供する。レルム呼出し命令135は、レルム構成命令145のアドレスをパラメータとして受け入れるように構成されてよい。レルム呼出し命令135は、セキュアでないソフトウェアモジュール130にアクセス可能な、暗号化されない命令を含むことができる。プロセッサ105は、レルム呼出し命令135中で指定されるアドレスにアクセスし、指定されるアドレスに位置する命令を復号し、レルム呼出し命令135によって指定されるアドレスにおける命令がレルム構成命令145であるかどうかの決定を行うように構成されてよい。保護されるソフトウェアは、複数のセキュアなソフトウェアモジュール140またはレルムを含むことができ、各レルムは、それ自体のレルム固有またはセキュアなソフトウェアモジュール固有の暗号化鍵に関連付けることができる。暗号化鍵は、いくつかの実装形態では、コンピューティングデバイス100のトラステッド実行環境の鍵管理サブシステムによって管理されてよい。プロセッサ105は、レルム呼出し命令135によって指定されるアドレスに位置する復号された内容がレルム構成命令145にマッピングしないことに応答して、レルム呼出し命令135をアボートするように構成されてよい。プロセッサ105は、レルム呼出し命令中で指定されるアドレスがレルム構成命令145の正しいアドレスにマッチすることに応答して、レルム構成命令145を実行するように構成されてよい。セキュアな各ソフトウェアモジュール140は、それ自体のレルム構成命令145に関連付けることができ、セキュアでないソフトウェアモジュール130は、このセキュアなソフトウェアモジュール140に関連付けられたレルム構成命令145のアドレスへのレルム呼出し命令135を実行することによって、特定のレルム中でソフトウェアを実行することができ、このレルム構成命令145は、この特定のセキュアなソフトウェアモジュール140についてのエントリポイントである。
【００１８】
レルム構成命令145は、セキュアなソフトウェアモジュール140を実行に向けて準備するためにプロセッサ105によって実行される。レルム構成命令145は、セキュアなソフトウェアモジュール140に関連付けられたレルムエントリコンテキスト150にアクセスする。レルムエントリコンテキスト150は、セキュアなソフトウェアモジュール140に記憶されている。レルムエントリコンテキスト150は、セキュアなソフトウェアモジュール140についての状態情報を記憶する。セキュアなソフトウェアモジュール140は、いくつかの状態のうちの1つである場合がある。すなわち、(1)フリー状態、(2)実行中状態、または(3)一時停止状態である。レルムがフリー状態にあるときは、レルムの実行中インスタンスも一時停止中インスタンスもなく、セキュアでないソフトウェアモジュール130からレルムへの呼出しが行われることが可能である。図1に示される実装形態では、各レルムのインスタンスが、一度につき1つだけ実行中であるかまたは一時停止されてよい。レルムがすでに実行中であるかまたは一時停止されており、後続のレルム呼出し命令が実行された場合は、プロセッサ105は、レルムがフリー状態に戻るまで、レルム構成命令145に対してブロックするように構成されてよい。レルムがフリー状態にあった場合は、プロセッサ105は、レルム構成命令145を実行してレルムについてのレルムエントリコンテキスト150にアクセスするように構成されてよく、レルムエントリコンテキスト150は、レルムの状態を初期化するのに使用できるデータを含む。レルムエントリコンテキスト150は、プロセッサ105の1つまたは複数のレジスタにロードされ得る値を含むことができる。レルムエントリコンテキスト150は、暗号化された形で、セキュアなソフトウェアモジュール140に記憶されている。プロセッサ105は、レルムに関連付けられた暗号化鍵にアクセスし、レルムエントリコンテキスト150を復号するように構成されてよい。暗号化鍵は、コンピューティングデバイス100のトラステッド実行環境の鍵管理サブシステムによって管理されてよい。プロセッサ105は、レルムエントリコンテキスト150を復号時に認証して、レルムエントリコンテキスト150がセキュアなソフトウェアモジュール140に記憶されていた間に破損または改ざんされなかったことを保証するように構成されてよい。レルムエントリコンテキスト150の情報は、必要に応じてプロセッサ105によって復号され、セキュアでないソフトウェアモジュール130からはアクセス可能でない。レルムエントリコンテキスト150のアドレスは、プロセッサ105のレルムエントリコンテキスト(REC)レジスタ120に記憶することができる。レルムエントリコンテキスト150がロードされると、プロセッサ105は、レルムエントリコンテキスト150を更新して、レルムが実行中状態にあることを示すことができる。実行中状態にある間、プロセッサ105は、セキュアなソフトウェアモジュール140を構成するプログラムコードの1つまたは複数の命令を実行するように構成されてよい。セキュアなソフトウェアモジュール140のプログラムコード155の1つまたは複数の命令がプロセッサ105によって実行されるのに伴って、プロセッサ105は、プロセッサ105の1つまたは複数のレジスタに記憶された情報、および/またはレルムエントリコンテキスト150を更新する��うに構成されてよい。
【００１９】
プロセッサ105は、プログラムコードが保護されたままであることを保証するために、実行に必要とされるときにのみ、セキュアなソフトウェアモジュール140のプログラムコード155の各命令にアクセスしてこの命令を復号するように構成される。プロセッサ105は、レルム構成命令145がうまく実行されて、セキュアなソフトウェアモジュール140のプログラムコード155のアドレスがプロセッサ105に提供された場合にのみ、セキュアなソフトウェアモジュール140のプログラムコード155の命令にアクセスしてこれらの命令を復号するように構成されてよい。
【００２０】
プロセッサ105はまた、外部呼出しに応答して、レルムを一時停止状態にするように構成されてよい。たとえば、セキュアなソフトウェアモジュール140のプログラムコード155は、セキュアでないソフトウェアモジュール130のライブラリまたはソフトウェアモジュールへの呼出しを行うように構成されてよい。プロセッサはまた、割込みやコンテキスト切替えなどの例外により、レルムを一時停止状態にするように構成されてよい。プロセッサ105の例外オーバライド処理ロジック115は、RECレジスタ120中で指定されるアドレスに記憶されたレルムエントリコンテキスト150に、レルムの現在状態を記憶するように構成されてよい。記憶されたレルムエントリコンテキスト150は、セキュアなソフトウェアモジュール140のプログラムコード155から呼び出されたセキュアでないソフトウェアモジュール130のライブラリまたはモジュールの実行の完了時に、レルムの実行を再開するのに使用することができる。
【００２１】
図2は、本明細書で開示される技法を実装するのに使用できる例示的なコンピューティングデバイス100の概略図である。図2に示される例は、レルム構成命令の機能がレルム呼出し命令135に統合されておりしたがってレルム構成命令が必要とされない、コンピューティングデバイス100の代替例を示す。
【００２２】
レルム呼出し命令の機能とレルム構成命令の機能とが、レルム呼出し命令にマージされてよく、したがって、レルム呼出し命令は、レルムエントリコンテキスト150にアクセスすること、およびレルムエントリコンテキストを使用してセキュアなソフトウェアモジュール140を初期化することを担う。別法として、レルム呼出し命令は、レルム構成命令を呼び出して、レルムエントリコンテキスト150のアドレスをレルム構成命令に渡すことができ、レルム構成命令は、レルム呼出し命令から提供されたアドレスによって参照されるレルムエントリコンテキスト150を使用して、セキュアなソフトウェアモジュール140を初期化することに進むことができる。
【００２３】
レルム呼出し命令は、レルムエントリコンテキスト150のアドレスと、スレッドまたはプロセスの識別子とを、パラメータとして受け入れるように構成されてよい。プロセッサ105は、提供されたアドレスにおいてメモリにアクセスし、このメモリ場所にレルムエントリコンテキスト150が存在するかどうかを決定することができる。このメモリアドレスに記憶されたデータがレルムエントリコンテキストでない場合は、プロセッサ105は、例外を投げて、セキュアなソフトウェアモジュール140の実行を中止するように構成されてよい。
【００２４】
図2に示される例を使用して、セキュアなソフトウェアモジュール140のマルチスレッド化実行をサポートすることができる。各スレッドまたはプロセスは、このスレッドまたはプロセスに関連付けられたレルムエントリコンテキスト150のアドレスを記憶することを担うことができる。スレッドまたはプロセスが、別のスレッドまたはプロセスに関連付けられたコンテキスト情報にアクセスしようと試みなかったことを保証するために、レルムエントリコンテキスト150は、オーナ認証タグを含むことができる。オーナ認証タグは、本物の呼出し命令を行っているスレッドまたはプロセスを一意に識別する、スレッドまたはプロセスの識別子を使用して生成される認証タグとすることができる。認証タグは、様々な技法を使用し、セキュアなソフトウェアモジュール140に関連付けられた暗号化鍵を使用して、生成されてよい。レルム呼出し命令は、レルムエントリコンテキスト150のアドレスと、スレッドまたはプロセスの識別子とを、パラメータとして受け入れるように構成されてよい。プロセッサ105は、提供されたアドレスにおいてメモリにアクセスし、このメモリ場所にレルムエントリコンテキスト150が存在するかどうかを決定することができる。このメモリアドレスに記憶されたデータがレルムエントリコンテキストでない場合は、プロセッサ105は、例外を投げて、セキュアなソフトウェアモジュール140の実行を中止するように構成されてよい。指定されたアドレスにレルムエントリコンテキスト150が存在する場合は、プロセッサ105は、レルムエントリコンテキスト150からオーナ認証タグを抽出するように構成されてよい。プロセッサ105はまた、スレッドまたはプロセスの識別子に基づいてオーナ認証タグを決定し、これを、レルムエントリコンテキスト150から抽出されたオーナ認証タグと比較することができる。決定されたオーナ認証タグが、レルムエントリコンテキスト150から抽出されたオーナ認証タグとマッチしない場合は、プロセッサは、例外を投げて、セキュアなソフトウェアモジュール140の実行を中止するように構成されてよい。
【００２５】
図3は、本明細書で開示される技法による、コンピューティングデバイス中のソフトウェアを保護するための例示的なプロセスの流れ図である。図3に示されるプロセスは、図1および図2に示されるコンピューティングデバイス100のプロセッサ105によって実装することができる。
【００２６】
暗号化されたプログラムコードを含むセキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取ることができる(段階305)。セキュアでないソフトウェアモジュールは、コンピューティングデバイスにインストールされたアプリケーション、コンピューティングデバイスのHLOSのコンポーネント、および/または、セキュアなソフトウェアモジュール140を構成しないコンピューティングデバイス上の他のソフトウェア、を構成することができる。セキュアなソフトウェアモジュール140は、ソフトウェアの開発者が、他者がソフトウェアから抽出するのを防止したいと望む知的所有権価値を有するプログラムコードを含むことができる。セキュアでないソフトウェアは、この保護されないソフトウェアとは別個の信用されるメモリ部分にセキュアなソフトウェアモジュールを記憶することによって、セキュアなソフトウェアモジュール140から隔離することができる。セキュアなソフトウェアモジュール140のプログラムコードはまた、ソースコードが入手された場合に攻撃者がソースコードを利用するのを防止するために、セキュアなソフトウェアモジュール140に関連付けられた暗号化鍵を使用して暗号化することができる。セキュアでないソフトウェアは、1つまたは複数のセキュアなソフトウェアモジュール140を使用して、データを処理し、かつ/または他のタスクを実施するように構成されてよい。セキュアでないソフトウェアモジュールは、セキュアなソフトウェアモジュールの命令を参照する命令を含むように構成されてよい。コンピューティングデバイスのプロセッサは、セキュアなソフトウェアモジュールの命令のアドレスを参照するこの命令を実行するように構成されてよい。
【００２７】
命令が、セキュアなソフトウェアモジュールの外部でアクセス可能なセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかの決定を行うことができる(段階310)。本明細書で論じられるコンピューティングデバイス100は、セキュアなソフトウェアモジュールに対する入退出を制御して、攻撃者がセキュアなソフトウェアモジュールへの制御されるエントリポイント以外の命令においてセキュアなソフトウェアモジュールにジャンプするのを防止するように構成される。コンピューティングデバイスは、セキュアなソフトウェアモジュールの実行が、セキュアなソフトウェアモジュールへの制御されるエントリポイントを含む命令への呼出しを伴って始まる場合にのみ、セキュアなソフトウェアモジュールのソフトウェア命令の復号、および/またはセキュアなソフトウェアモジュールに関連付けられたデータの復号を開始できるように、構成されてよい。たとえば、制御されるエントリポイントは、上記で論じられたレルム呼出し命令135など、レルム呼出し命令を含むことができる。レルム呼出し命令135は、セキュアでないソフトウェアモジュールによって呼び出せる、暗号化されない命令とすることができる。コンピューティングデバイス100のプロセッサ105は、レルム呼出し命令135中で指定されるアドレスにアクセスし、指定されるアドレスに位置する命令を復号し、レルム呼出し命令135によって指定されるアドレスにおける命令がレルム構成命令145であるかどうかの決定を行うように構成されてよい。レルム呼出し命令135中で指定されるアドレスが、有効なレルム構成命令145を指す場合は、コンピューティングデバイス100のプロセッサ105は、セキュアなソフトウェアモジュールを初期化し、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するように構成されてよい。
【００２８】
命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むことに応答して、セキュアなソフトウェアモジュールの1つまたは複数の命令を実行できる(段階315)。コンピューティングデバイスのプロセッサは、セキュアでないソフトウェアモジュールがセキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を実行したことに応答して、セキュアなソフトウェアモジュールに関連付けられた1つまたは複数のプログラム命令を実行するように構成されてよい。上記で論じられたように、セキュアなソフトウェアモジュール140のプログラムコード155(本明細書ではレルムコードとも呼ばれる)は暗号化されてよく、プロセッサは、プログラムコードの命令が常に保護されたままであることを保証するために、各命令をその実行する直前に復号するように構成されてよい。コンピューティングデバイスのプロセッサは、制御されるエントリポイントに命令が関連付けられていないことに応答して、セキュアなソフトウェアモジュールの実行を防止するための1つまたは複数のステップを行うように構成されてよい。図5に示される例示的なプロセスを使用して、上記で論じられた制御されるエントリポイント以外の命令においてセキュアなソフトウェアモジュールに入るのを防止することができる。セキュアなソフトウェアモジュール140は、1つまたは複数の命令が実行される前に開始されてよい。図7に例示的な初期化プロセスを示すが、本明細書で開示される技法は、図7に示される特定の実装形態に限定されない。
【００２９】
セキュアなソフトウェアモジュールからの退出を制御して、セキュアでないソフトウェアモジュールに実行を戻すことができる(段階320)。コンピューティングデバイス100はまた、セキュアなソフトウェアモジュールを構成するソフトウェア命令のセキュリティ、および/またはセキュアなソフトウェアモジュールによって利用されるデータのセキュリティを損なうことなく、セキュアなソフトウェアモジュールからの退出を制御するように構成される。攻撃者は、セキュアなソフトウェアモジュールに関連付けられたソフトウェア命令および/またはデータに対する保護を迂回しようと試みる場合があるが、これは、例外を引き起こすことによって、または他のアクションを通して行われ、これらのアクションは、セキュアなソフトウェアモジュールによって使用されるデータをクリーンアップするためのステップ、および/またはセキュアなソフトウェアモジュールの暗号化された命令の復号を停止するためのステップをセキュアなソフトウェアモジュールが行えるようになる前に、コンピューティングデバイス100のプロセッサ105に、セキュアなソフトウェア命令から退出させることができるものである。コンピューティングデバイス100のプロセッサ105は、セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドするためのロジックを備えるように構成されてよい。プロセッサ105がセキュアなソフトウェアモジュールの命令を実行している間に例外が発生した場合、プロセッサは、例外を捕え、セキュアなソフトウェアモジュール(または、マルチスレッド化環境では、セキュアなソフトウェアモジュールを実行するスレッド)の現在状態を表すコンテキスト情報をクリーンアップするためのステップと、コンテキスト情報の暗号化されたコピーをセキュアなメモリ場所に記憶するためのステップと、セキュアなソフトウェアモジュールの命令および/またはデータの復号を停止するためのステップとを行うように構成されてよい。後で詳細に論じる図6に、そのようなプロセスの例を示す。
【００３０】
図4は、本明細書で開示される技法による、命令がセキュアなソフトウェアモジュールへの制御されるエントリポイントであるかどうかを決定するための例示的なプロセスの流れ図である。図4に示されるプロセスは、図1および図2に示されるコンピューティングデバイス100のプロセッサ105によって実装することができる。図4に示されるプロセスを使用して、図3に示されるプロセスの段階310を少なくとも部分的に実装することができる。
【００３１】
セキュアでないソフトウェアモジュールによって実行された呼出し命令中で指定されるアドレスにおいて、セキュアなソフトウェアモジュールの命令またはレルムエントリコンテキストにアクセスすることができる(段階405)。上記で論じられたように、セキュアでないソフトウェアモジュールは、上記で論じられたレルム呼出し命令135などのレルム呼出し命令を実行するように構成されてよい。レルム呼出し命令135は、セキュアなソフトウェアモジュールの命令のアドレスを指すように構成されてよい。コンピューティングデバイスのプロセッサは、上記で示されたセキュアなソフトウェアモジュール140のプログラムコード155などのレルムコード中のメモリアドレスにアクセスするように構成されてよい。図1に示される例示的な実装形態によれば、レルム呼出し命令135中で指定されるアドレスは、セキュアなソフトウェアモジュールについての制御されるエントリポイントを指すことができ、この制御されるエントリポイントは、レルム構成命令145を構成する。図2に示される例示的な実装形態によれば、レルム呼出し命令中で指定されるアドレスは、セキュアなソフトウェアモジュールについての制御されるエントリポイントを指すことができ、この制御されるエントリポイントは、レルムエントリコンテキスト150を構成する。図1に示される例示的な実装形態は、一度につきセキュアなソフトウェアモジュールの単一のインスタンスを実行できるシングルスレッド化実装形態に使用することができ、図2に示される例示的な実装形態は、同時に2つ以上のスレッドがセキュアなソフトウェアモジュール140のプログラムコード155を実行していることが可能な実装形態に使用することができる。各スレッドは、このスレッドに関連付けられたレルムエントリコンテキスト150のアドレスを追跡することができ、このスレッドに関連付けられたレルムエントリコンテキスト150にアクセスするためにこのアドレスをレルム呼出し命令中で提供することができる。しかし、図2に示される実装形態はまた、セキュアなソフトウェアモジュールのシングルスレッド化実装形態にも使用することができる。
【００３２】
セキュアなソフトウェアモジュールに固有の復号鍵を使用して、呼出し命令中で指定されるアドレスにおいて見つかった命令またはレルムエントリコンテキストを復号することができる(段階410)。コンピューティングデバイス100のプロセッサ105は、セキュアなソフトウェアモジュールに関連付けられた暗号化鍵にアクセスするように構成されてよい。暗号化鍵は、セキュアでないソフトウェアモジュール130などのセキュアでないソフトウェアに本質的にアクセス不可能な、コンピューティングデバイス100のメモリに記憶することができる。プロセッサ105は、セキュアなソフトウェアモジュールに関連付けられた暗号化鍵を使用して、呼出し命令中で指定されるアドレスにおいて見つかった命令またはレルムエントリコンテキストを復号するように構成されてよい。コンピューティングデバイス上のセキュアな各ソフトウェアモジュールが、暗号化鍵に関連付けられてよく、暗号化鍵は、セキュアなソフトウェアモジュールの各々につき異なってよい。
【００３３】
命令が、セキュアなソフトウェアモジュールへの制御されるエントリポイントを表すセキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうか、または、呼出し命令中で指定されるアドレスにおいて見つかったレルムエントリコンテキスト150が、セキュアなソフトウェアモジュールへの制御されるエントリポイントを表すかどうかの決定を行うことができる(段階415)。呼出し命令中で指定されるアドレスが命令を指す場合は、コンピューティングデバイス100のプロセッサ105は、段階410において上記で論じられたように命令を復号し、次いで、命令が本物の構成命令を含むかどうかの決定を行うように構成されてよい。レルム構成命令145は、セキュアなソフトウェアモジュールについてのレルムエントリコンテキスト150を指すように構成され、実行されたとき、レルムエントリコンテキスト150のアドレスをコンピューティングデバイスのプロセッサのRECレジスタ120にロードする。呼出し命令中で指定されるアドレスがレルムエントリコンテキスト150を指す場合は、コンピューティングデバイスのプロセッサは、段階410において上記で論じられたようにレルムエントリコンテキスト150を復号し、次いで、レルムエントリコンテキスト150が真正であるかどうかの決定を行うように構成されてよい。レルムエントリコンテキスト150は、レルム構成情報が正当であると決定するためにコンピューティングデバイスのプロセッサが使用できる、認証タグまたは他の値を含むことができる。コンピューティングデバイス100のプロセッサ105は、レルム呼出し命令中で指定されるアドレスがレルム構成命令またはレルムエントリコンテキストを指さないことに応答して、例外を投げ、かつ/または他のアクションを行い、それにより、攻撃者がプログラムコードに関する情報および/またはセキュアなプログラムコードによって処理されたデータを抽出しようとして無許可のエントリポイントにおいてセキュアなソフトウェアモジュールにジャンプして入るのを防止するように構成されてよい。
【００３４】
図5は、本明細書で開示される技法による、コンピューティングデバイス中のソフトウェアを保護するための例示的なプロセスの流れ図である。図5に示されるプロセスは、図1および図2に示されるコンピューティングデバイス100のプロセッサ105によって実装することができる。図5に示されるプロセスは、図3に示されるプロセスの一部として実装することができる。
【００３５】
呼出し命令中で指定されるアドレスにおいて見つかった命令が構成命令でもレルムエントリコンテキスト150でもないことに応答して、セキュアなソフトウェアモジュールへのアクセスを禁止することができる(段階505)。コンピューティングデバイス100のプロセッサ105は、レルム呼出し命令中で指定されるアドレスがレルム呼出し命令またはレルムエントリコンテキスト150を指さないことに応答して、セキュアなソフトウェアモジュールへのアクセスを防止する1つまたは複数のアクションを実施するように構成されてよい。プロセッサ105は、セキュアなソフトウェアモジュールのソフトウェア命令の後続のフェッチが、コンピューティングデバイスのプロセッサによって実行可能でない暗号化された値を返すように、セキュアなソフトウェアモジュールに関連付けられた復号鍵をプロセッサ105のレジスタからクリアするように構成されてよい。
【００３６】
呼出し命令中で指定されるアドレスが、構成命令でも本物のエントリコンテキストのアドレスでもないことに応答して、アクションを実施することができる(段階510)。コンピューティングデバイス100のプロセッサ105はまた、呼出し命令中で指定されるアドレスが構成命令でも本物のエントリコンテキストのアドレスでもないことに応答して、1つまたは複数の他のアクションを実施するように構成されてよい。プロセッサ105は、セキュアなソフトウェアモジュールを呼び出したセキュアでないソフトウェアの実行を中止できる例外を投げるように構成されてよい。そのようなアプローチを使用すれば、セキュアでないソフトウェアが、プログラムコードに関する情報および/またはセキュアなソフトウェアモジュールによって利用されるデータを抽出しようとしてセキュアなソフトウェアモジュールをプローブするのを防止することができる。プロセッサ105は、いくつかの実装形態では、セキュアでないソフトウェアモジュールに実行を戻すように構成されてよく、セキュアでないソフトウェアモジュールは、セキュアなソフトウェアモジュールを実行できないことによって引き起こされるエラー条件を処理するように構成されてよい。さらに他の実装形態では、プロセッサ105は、コンピューティングデバイスのHLOSに対して、例外を投げるかまたはそうでない場合はエラー条件を示すように構成されてよく、HLOSは、1つまたは複数のアクションを行うように構成されてよく、これらのアクションは、次のものに限定されないが、コンピューティングデバイスをリブートすること、セキュアでないソフトウェアの実行を中止すること、および/または、コンピューティングデバイス上でのセキュアでないソフトウェアの実行を防止することを含む。
【００３７】
図6は、本明細書で開示される技法による、セキュアなソフトウェアモジュールからの退出を制御するための例示的なプロセスの流れ図である。図6に示されるプロセスは、図1および図2に示されるコンピューティングデバイス100のプロセッサ105によって実装することができる。図6に示されるプロセスを使用して、図3に示されるプロセスの段階320を少なくとも部分的に実装することができる。
【００３８】
セキュアなソフトウェアモジュールの命令を実行する間の例外処理をオーバライドすることができる(段階605)。コンピューティングデバイスのプロセッサは、セキュアなソフトウェアモジュールのプログラムコードを実行する間、例外処理をオーバライドする(115)ように構成されてよい。攻撃者は、セキュアなソフトウェアモジュールのデータおよび/またはプログラムコードを暴こうとして、セキュアなソフトウェアモジュール中で例外を引き起こしてプロセッサにセキュアなソフトウェアモジュールの実行を中止させようと試みる場合がある。セキュアなソフトウェアモジュールが中間状態にある間にモジュールの実行が中止されると、その結果、セキュアなソフトウェアモジュールのプログラムコードが中間データを後に残す可能性があり、攻撃者がこの中間データを使用して、セキュアなソフトウェアモジュールに関する実装詳細を推断する可能性がある。さらに、セキュアなソフトウェアモジュールの暗号化された命令を復号するのに使用される復号鍵、および本物のコンテキスト情報が暴かれる可能性もある。プロセッサは、セキュアなソフトウェアモジュールの実行が完了したことおよびセキュアでないソフトウェアモジュールの実行が再開されることを示すリターン命令が実行されるまで、または、セキュアなソフトウェアモジュールの終了を引き起こすことになるエラーもしくは例外が発生するまで、例外処理をオーバライドするように構成されてよい。
【００３９】
セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶することができる(段階610)。セキュアなソフトウェアモジュールの現在状態を表す情報が、暗号化されてレルムエントリコンテキスト150として記憶されてよい。レルムエントリコンテキスト150は、コンピューティングデバイスのプロセッサが他のプログラムコードを実行するコンテキスト切替え後に、セキュアなソフトウェアモジュールの状態を復元するのに使用できる情報を含む。セキュアなソフトウェアモジュールがマルチスレッド化をサポートするように構成されている場合は、レルムエントリコンテキスト150はスレッド固有とすることができ、スレッドは、このスレッドに関連付けられたレルムエントリコンテキスト150のアドレスを追跡するように構成されてよい。そうでない場合は、レルムエントリコンテキスト150は、レルム構成命令によって指定されるメモリアドレスに記憶されてよく、レルム構成命令は、プロセッサがセキュアなソフトウェアモジュールの実行を再開すると、レルムエントリコンテキストにアクセスすることができる。
【００４０】
セキュアなソフトウェアモジュールの命令の復号を停止することができる(段階615)。コンピューティングデバイスのプロセッサは、セキュアなソフトウェアモジュールからの制御された退出の一部として、セキュアなモジュールに関連付けられた命令の復号を停止するように構成されてよい。プロセッサは、セキュアなソフトウェアモジュールの暗号化された命令を復号するのに使用される暗号化鍵のコピーを、暗号化鍵が記憶されていたメモリ場所からクリアするように構成されてよい。暗号化鍵は、コンピューティングデバイスのプロセッサのレジスタに記憶されているものとすることができ、プロセッサは、レジスタに記憶された値をクリアするように構成されてよい。
【００４１】
図7は、本明細書で開示される技法による、セキュアなソフトウェアモジュールを初期化するための例示的なプロセスの流れ図である。図7に示されるプロセスは、図1および図2に示されるコンピューティングデバイス100のプロセッサ105によって実装することができる。図7に示されるプロセスを使用して、図3に示されるプロセスの段階315を少なくとも部分的に実装することができる。
【００４２】
セキュアなソフトウェアモジュールのインスタンスを初期化することができる(段階705)。上記で論じられたように、レルム構成命令は、セキュアなソフトウェアモジュール140への制御されるエントリポイントとしての働きをすることができ、レルム呼出し命令は、レルム構成命令のアドレスを指すように構成されてよい。レルム構成命令は、セキュアなソフトウェアモジュール140を実行に向けて準備するために、1つまたは複数のソフトウェア命令を実行するように構成されてよい。初期化プロセスは、セキュアなソフトウェアモジュール140の現在状態を決定することを含むことができる。
【００４３】
セキュアなソフトウェアモジュール140は、フリー状態、実行中状態、または一時停止状態にある場合がある。実行中状態は、セキュアなソフトウェアモジュール140が現在、別のスレッドまたは別のスレッドプロセスによって実行されていることを示し、プロセッサ105は、セキュアなソフトウェアモジュール140のプログラムコードを実行している他のスレッドまたはプロセスによってセキュアなソフトウェアモジュール140がフリー状態に戻されるまで、セキュアなソフトウェアモジュール140のプログラムコードの実行をブロックするように構成されてよい。一時停止状態は、セキュアなソフトウェアモジュール140が現在、セキュアなソフトウェアモジュール140のプログラムコードを現在実行していない別のスレッドまたはプロセスによって予約されているが、この別のスレッドまたはプロセスは、セキュアなソフトウェアモジュール140のプログラムコードの実行途中にあったのであり、他の何らかのタスクを完了した後でセキュアなソフトウェアモジュール140のプログラムコードの実行の継続に戻るであろうことを示す。一時停止状態を使用して、セキュアなソフトウェアモジュール140の外部にある保護されないプログラムコードの実行を可能にすることができる。たとえば、セキュアなソフトウェアモジュール140のプログラムコードの命令が、1つまたは複数の計算を実施するために、保護されない共有ライブラリに依拠する場合がある。セキュアなソフトウェアモジュール140の命令は、プロセッサ105にプログラム命令を呼び出させるように構成されてよく、このプログラム命令は、実行されたとき、セキュアなソフトウェアモジュール140の外部の命令にジャンプする前に、セキュアなソフトウェアモジュール140の現在状態をレルムエントリコンテキスト150に保存し、セキュアなソフトウェアモジュール140が一時停止状態にあることを示すセキュアなソフトウェアモジュール140のインジケータをセットする。セキュアなソフトウェアモジュール140の外部の命令の実行が完了すると、プロセッサ105は、セキュアなソフトウェアモジュール140に実行を戻すことができる。プロセッサ105は、レルム呼出し命令のアドレスをプログラムスタック上にプッシュするように構成されてよく、レルム呼出し命令は、レルム構成命令を実行して、レルムエントリコンテキスト150をロードし、実行を一時停止する前のセキュアなソフトウェアモジュール140の状態を復元することができる。セキュアなソフトウェアモジュール140の状態は、実行中状態に戻されてよい。
【００４４】
セキュアなソフトウェアモジュール140が現在、フリー状態にある場合は、セキュアなソフトウェアモジュール140は現在、別のスレッドまたはプロセスによって実行されておらず、初期化されることが可能であり、プロセスは段階705を継続することができる。そうでない場合は、プロセッサ105は、セキュアなソフトウェアモジュール140の状態がフリー状態に戻るまで、段階705においてブロックするように構成されてよい。
【００４５】
図2に示される実装形態など、セキュアなソフトウェアモジュール140のマルチスレッド化実装形態では、セキュアなソフトウェアモジュール140は、別のスレッドまたはプロセスから現在のスレッドまたはプロセスへのコンテキスト切替えにより一時停止状態にあるか、または、実行中状態にある場合がある。そのような状況では、現在のスレッドまたはプロセスは、それ自体のレルムエントリコンテキスト150に関連付けられることになり、セキュアなソフトウェアモジュール140のシングルスレッド化バージョンに関して上記で論じられたように、セキュアなソフトウェアモジュール140がフリー状態にあるかのようにセキュアなソフトウェアモジュール140の実行を開始することができる。
【００４６】
セキュアなソフトウェアモジュールのインスタンスの状態を表す暗号化されたコンテキスト情報にアクセスすることができる(段階710)。プロセッサ105は、セキュアなソフトウェアモジュール140に関連付けられた、セキュアなソフトウェアモジュール140に記憶されたレルムエントリコンテキスト150情報にアクセスするように構成されてよい。レルムエントリコンテキスト150は、暗号化されており、認証タグなどの認証情報を含むことができる。この認証タグを使用して、レルムエントリコンテキスト150が認証タグの生成以降に改変されたかどうかを決定することができる。プロセッサ105は、セキュアなソフトウェアモジュールに関連付けられた暗号化鍵を使用して、レルムエントリコンテキスト150についての認証タグを再生成するように構成されてよい。再生成された認証タグと、レルムエントリコンテキスト150に関連付けられた認証タグとがマッチしない場合は、プロセッサ105は、例外を投げて、セキュアなソフトウェアモジュール140の実行を中止するように構成されてよい。レルムエントリコンテキスト150は破損または改ざんされていることがあり、セキュアなソフトウェアモジュール140に攻撃が実施されている場合、セキュアなソフトウェアモジュール140の実行は中止されるべきである。プロセッサ105は、セキュアなソフトウェアモジュール140のプログラムコード155を実行する間に例外処理をオーバライドするように構成されてよく、図6に関して上記で論じられたように様々なアクションを実施して、セキュアなソフトウェアモジュール140の実行を中止する前にクリーンアップすることができる。
【００４７】
セキュアなソフトウェアモジュール140のシングルスレッド化実装形態では、リターン命令または例外の発生時などに必要に応じてプロセッサ105がレルムエントリコンテキスト150にアクセスできるように、レルム構成命令は、レルムエントリコンテキスト150のアドレスを指し、レルムエントリコンテキスト150のアドレスをプロセッサ105のRECレジスタ120にロードするように構成されてよい。別法として、マルチスレッド化実装形態を含む他の実装形態では、レルムエントリコンテキスト150のアドレスは、レルム呼出し命令のパラメータとして提供されてもよい。スレッドまたはプロセスは、このスレッドまたはプロセスに関連付けられたレルムエントリコンテキスト150のアドレスを記憶することを担うことができる。そのような実装形態では、レルム呼出し命令の機能とレルム構成命令の機能とが、レルム呼出し命令にマージされてよい。別法として、レルム呼出し命令は、レルム構成命令を呼び出し、スレッドまたはプロセスに関連付けられたレルムエントリコンテキスト150のアドレスをレルム構成命令に渡すことができ、レルム構成命令は、レルム呼出し命令から提供されたアドレスによって参照されるレルムエントリコンテキスト150を使用して、セキュアなソフトウェアモジュール140を初期化することに進むことができる。
【００４８】
スレッドまたはプロセスが、別のスレッドまたはプロセスに関連付けられたコンテキスト情報にアクセスしようと試みなかったことを保証するために、レルムエントリコンテキスト150は、オーナ認証タグを含むことができる。オーナ認証タグは、本物の呼出し命令を行っているスレッドまたはプロセスを一意に識別するスレッド識別子またはプロセス識別子を使用して生成される認証タグとすることができる。認証タグは、様々な技法を使用し、セキュアなソフトウェアモジュール140に関連付けられた暗号化鍵を使用して、生成されてよい。レルム呼出し命令は、レルムエントリコンテキスト150のアドレスと、スレッドまたはプロセスの識別子とを、パラメータとして受け入れるように構成されてよい。プロセッサ105は、提供されたアドレスにおいてメモリにアクセスし、このメモリ場所にレルムエントリコンテキスト150が存在するかどうかを決定することができる。このメモリアドレスに記憶されたデータがレルムエントリコンテキストでない場合は、プロセッサ105は、例外を投げて、セキュアなソフトウェアモジュール140の実行を中止するように構成されてよい。指定されたアドレスにレルムエントリコンテキスト150が存在する場合は、プロセッサ105は、レルムエントリコンテキスト150からオーナ認証タグを抽出するように構成されてよい。プロセッサ105はまた、スレッドまたはプロセスの識別子に基づいてオーナ認証タグを決定し、これを、レルムエントリコンテキスト150から抽出されたオーナ認証タグと比較することができる。決定されたオーナ認証タグが、レルムエントリコンテキスト150から抽出されたオーナ認証タグとマッチしない場合は、プロセッサは、例外を投げて、セキュアなソフトウェアモジュール140の実行を中止するように構成されてよい。
【００４９】
レルムエントリコンテキスト150は、セキュアなソフトウェアモジュール140に関連付けられた暗号化鍵を使用して、プロセッサ105によって復号することができる。プロセッサ105は、レルムエントリコンテキスト150に含まれるデータを使用して、プロセッサ105の1つまたは複数のレジスタをポピュレートすることができ、このデータを使用して他のアクションを実施して、セキュアなソフトウェアモジュール140のコンテキストを復元することができる。セキュアなソフトウェアモジュール140が前に一時停止状態にあった場合は、レルムエントリコンテキスト150は、中間計算結果、および/または、セキュアなソフトウェアモジュール140が一時停止状態に入る前に作成したかもしくは使用していた他のデータなど、セキュアなソフトウェアモジュール140についての状態情報を含むことができる。セキュアなソフトウェアモジュール140が前にフリー状態にあった場合は、レルムエントリコンテキスト150は、セキュアなソフトウェアモジュール140の1つまたは複数のコンポーネントを初期化するのに使用されるデータを含むことができる。
【００５０】
レルムエントリコンテキスト150がアクセスされ復号されると、プロセッサ105は、セキュアなソフトウェアモジュール140の命令にジャンプし、セキュアなソフトウェアモジュール140を実行できる。プロセッサ105は、現在実行されている命令のみが、攻撃者の攻撃を受けやすいかもしれない復号された状態にあることを保証するために、各命令をその実行の直前に復号するように構成されてよい。プログラムコードの実行が完了すると、レルムリターン命令がプロセッサ105によって実行されて、セキュアなソフトウェアモジュール140に関連付けられたデータのクリーンアップが引き起こされてよく、レルムエントリコンテキスト150は、セキュアなソフトウェアモジュール140に記憶される前に、更新され暗号化されてよく、セキュアなソフトウェアモジュール140の命令を復号するのに使用された暗号化鍵は、プロセッサ105のレジスタまたは他のメモリ場所からクリアされてよい。
【００５１】
図8は、本明細書で開示される技法による、セキュアなソフトウェアモジュールの命令を実行するための例示的なプロセスの流れ図である。図8に示されるプロセスは、図1および図2に示されるコンピューティングデバイス100のプロセッサ105によって実装することができる。図8に示されるプロセスを使用して、図3に示されるプロセスの段階315を少なくとも部分的に実装することができる。
【００５２】
セキュアなソフトウェアモジュールの1つまたは複数の命令を実行する直前に、1つまたは複数の命令の各々を復号することができる(段階805)。セキュアなソフトウェアモジュール140のプログラムコード155のプログラム命令の各々は、暗号化された形で記憶されており、命令の各々が実行のために必要とされるときにのみ復号されてよい。コンピューティングデバイスのプロセッサ105は、セキュアなソフトウェアモジュール140に関連付けられた暗号化鍵にアクセスするように構成されてよい。暗号化鍵は、セキュアなソフトウェアモジュール140に記憶されてよく、コンピューティングデバイス100のプロセッサのレジスタにコピーされてよい。プロセッサ105は、各命令を、その命令がプロセッサ105によって実行される直前に復号するように構成されてよい。命令を必要時にのみ復号することは、セキュアなソフトウェアモジュール140を構成するプログラムコードのセキュリティを維持する助けとなることができる。暗号化鍵はまた、コンピューティングデバイス100のトラステッド実行環境において実装される鍵記憶メカニズムを使用して記憶されてもよい。鍵記憶メカニズムは、それに記憶された暗号化鍵を使用して暗号動作を実施するように構成されてよく、鍵記憶メカニズムからの鍵のエクスポートを防止するように構成されてよい。鍵記憶メカニズムは、暗号化鍵が使用されるために認証を必要とするように構成されてよい。レルム構成命令またはレルム呼出し命令は、セキュアなソフトウェアモジュール140のインスタンスが初期化される時点でそのような認証情報をセキュアなソフトウェアモジュール140からロードするように構成されてよく、認証情報は、プロセッサ105のレジスタに記憶されてよい。プロセッサ105は、認証情報を、暗号動作が実施される対象となるデータとともに鍵記憶メカニズムに提供することができ、動作の結果が、鍵記憶メカニズムによってプロセッサ105に提供されてよい。
【００５３】
図9は、図1および図2に示されるコンピューティングデバイス100を実装するのに使用できる例示的なコンピューティングデバイスの機能ブロック図である。図9は、例示的なコンピューティングデバイス900の様々なコンポーネントを示す概略図であり、コンピューティングデバイス900は、図1に描かれるコンピューティングデバイス100と同様または同じとすることができる。簡単にするために、図9の概略的なボックス中に示される様々な特徴/コンポーネント/機能は、これらの様々な特徴/コンポーネント/機能が動作可能に共に結合されることを表すために、共通のバスを使用して共に接続されている。他の接続、メカニズム、特徴、機能などが、動作可能に結合してポータブルワイヤレスデバイスを構成するように、必要に応じて設けられ適合されてもよい。さらに、図9の例に示される特徴もしくは機能のうちの1つもしくは複数がさらに細分されてもよく、または、図9に示される特徴もしくは機能のうちの2つもしくはそれ以上が組み合わされてもよい。加えて、図9に示される特徴または機能のうちの1つまたは複数が除外されてもよい。
【００５４】
図示のように、コンピューティングデバイス900は、1つまたは複数のアンテナ902に接続され得る1つまたは複数のローカルエリアネットワーク送受信機906を備えることができる。1つまたは複数のローカルエリアネットワーク送受信機906は、WLANアクセスポイントのうちの1つもしくは複数と通信すること、および/またはWLANアクセスポイントのうちの1つもしくは複数との間の信号を検出すること、ならびに/あるいはネットワーク内の他のワイヤレスデバイスと直接に通信および/または信号検出を行うことのために、適切なデバイス、回路、ハードウェア、および/またはソフトウェアを備える。いくつかの実施形態では、ローカルエリアネットワーク送受信機906は、1つまたは複数のワイヤレスアクセスポイントと通信するのに適したWiFi(802.11x)通信送受信機を含むことができる。しかし、いくつかの実施形態では、ローカルエリアネットワーク送受信機906は、他のタイプのローカルエリアネットワーク、パーソナルエリアネットワーク(たとえばBluetooth(登録商標)ワイヤレス技術ネットワーク)などと通信するように構成されてもよい。加えて、任意の他のタイプのワイヤレスネットワーキング技術、たとえばウルトラワイドバンド、ZigBee、ワイヤレスUSBなどが使用されてもよい。
【００５５】
コンピューティングデバイス900はまた、いくつかの実装形態では、1つまたは複数のアンテナ902に接続され得る1つまたは複数のワイドエリアネットワーク送受信機904を備えることもできる。ワイドエリアネットワーク送受信機904はたとえば、WWANアクセスポイントのうちの1つもしくは複数と通信すること、および/またはたとえば、WWANアクセスポイントのうちの1つもしくは複数からの信号を検出すること、ならびに/あるいはネットワーク内の他のワイヤレスデバイスと直接に通信および/または信号検出を行うことのために、適切なデバイス、回路、ハードウェア、および/またはソフトウェアを備えることができる。いくつかの実装形態では、ワイドエリアネットワーク送受信機904は、ワイヤレス基地局のCDMAネットワークとの通信に適したCDMA通信システムを含むことができる。いくつかの実装形態では、ワイヤレス通信システムは、たとえばTDMA、GSM(登録商標)、WCDMA(登録商標)、LTEなど、他のタイプのセルラー電話ネットワークを含むこともできる。加えて、たとえばWiMax(802.16)などを含めた、任意の他のタイプのワイヤレスネットワーキング技術が使用されてもよい。
【００５６】
いくつかの実施形態では、SPS受信機(グローバルナビゲーション衛星システム(GNSS)受信機とも呼ばれる)908がコンピューティングデバイス900内に備わってもよい。SPS受信機908は、衛星信号を受信するために1つまたは複数のアンテナ902に接続されてよい。SPS受信機908は、SPS信号を受信および処理するための任意の適切なハードウェアおよび/またはソフトウェアを備えることができる。SPS受信機908は、他のシステムに情報を適宜要求することができ、任意の適切なSPSプロシージャによって得られた測定値を部分的に使用して、コンピューティングデバイス900の位置を決定するのに必要な計算を実施することができる。
【００５７】
図9にさらに示されるように、例示的なコンピューティングデバイス900は、コントローラ/プロセッサ910に結合された1つまたは複数のセンサ912を備える。たとえば、センサ912は、相対的な動きおよび/または配向の情報(この情報は、ワイドエリアネットワーク送受信機904、ローカルエリアネットワーク送受信機906、および/またはSPS受信機908によって受信される信号から導出される動きデータから独立している)を提供するための動きセンサを含むことができる。限定ではなく例として、動きセンサは、加速度計、ジャイロスコープ、および地磁気(磁力計)センサ(たとえばコンパス)を含むことができ、これらのいずれも、微小電気機械システム(MEMS)に基づいて、または他の何らかの技術に基づいて実装されてよい。1つまたは複数のセンサ912はさらに、温度計(たとえばサーミスタ)、オーディオセンサ(たとえばマイクロフォン)、および/または他のセンサを含むこともできる。1つまたは複数のセンサ912はまた、静止画または動画(たとえばビデオシーケンス)を生み出せるカメラ(たとえば、電荷結合素子(CCD)タイプのカメラ、CMOSベースの画像センサなど)を含むこともでき、これらの静止画または動画は、ディスプレイや画面などのユーザインターフェースデバイス上で表示されることが可能であり、さらに、周囲の照明レベル、ならびに/または、色に関係する情報と、UVおよび/もしくは赤外線照明の存在およびレベルとを決定するのに使用されることが可能である。
【００５８】
プロセッサ(コントローラとも呼ばれる)910は、ローカルエリアネットワーク送受信機906、ワイドエリアネットワーク送受信機904、SPS受信機908、および1つまたは複数のセンサ912に接続されてよい。プロセッサは、処理機能ならびに他の計算および制御機能を提供する1つまたは複数のマイクロプロセッサ、マイクロコントローラ、および/またはディジタル信号プロセッサを含むことができる。プロセッサ910は、プログラムされた機能をモバイルデバイス内で実行するためのデータおよびソフトウェア命令を記憶するために、記憶媒体(たとえばメモリ)914に結合されてよい。メモリ914は、プロセッサ910に搭載されてもよく(たとえば同じICパッケージ内で)、かつ/または、メモリは、プロセッサに対する外部メモリでありデータバスを介して機能的に結合されてもよい。
【００５９】
いくつかのソフトウェアモジュールおよびデータテーブルが、メモリ914中にあってよく、これらは、リモートデバイス/ノードの両方との通信の管理、測位決定機能の実施、および/またはデバイス制御機能の実施のために、プロセッサ910によって利用されてよい。図9に示されるように、いくつかの実施形態では、メモリ914は、1つまたは複数のアプリケーションを実装できるアプリケーションモジュール918を含むことができる。モジュールおよび/またはデータ構造の機能は、コンピューティングデバイス900の実装形態に応じて、組み合わされること、分離されること、および/または異なる方式で構築されることがあることに留意されたい。アプリケーションモジュール918は、コンピューティングデバイス900のトラステッド実行環境980またはセキュアエレメント990によって実行できる、1つまたは複数の信用されるアプリケーションを含むことができる。
【００６０】
アプリケーションモジュール918は、コンピューティングデバイス900のプロセッサ910上で実行されるプロセスまたはスレッドとすることができ、このプロセスまたはスレッドは、コンピューティングデバイス900の1つまたは複数の他のモジュール(図示せず)にデータを要求することができる。アプリケーションは通常、ソフトウェアアーキテクチャの上位レイヤ内で実行され、コンピューティングデバイス900のリッチ実行環境中で実装されてよく、屋内ナビゲーションアプリケーション、ショッピングアプリケーション、ロケーションアウェア(location aware)サービスアプリケーションなどを含むことができる。
【００６１】
プロセッサ910は、トラステッド実行環境980を備えることができ、かつ/または、コンピューティングデバイス900は、セキュアエレメント990を備えることができる。トラステッド実行環境980および/またはセキュアエレメント990は、上記で示されたセキュアなソフトウェアモジュールを実行するためのプロセスを実装するための、セキュアな処理環境を実装するのに使用することができる。トラステッド実行環境980は、プロセッサ910のセキュアなエリアとして実装されてよく、このセキュアなエリアは、オペレーティングシステムおよび/またはアプリケーション(アプリケーションモジュール918のアプリケーションなど)を実行できるリッチ実行環境から隔離された環境で、秘密データを処理および記憶するのに使用することができる。トラステッド実行環境980は、その中に記憶された機密データの機密性、保全性、および保護を実現することによって秘密データのためのエンドツーエンドセキュリティを提供する、信用されるアプリケーションを実行するように構成されてよい。トラステッド実行環境980を使用して、暗号化鍵、アンチリプレイカウンタ(anti-replay counter)データ、および/または他の機密データを記憶することができる。さらに、トラステッド実行環境980を使用して、図1〜図8に示され本明細書で論じられる様々なプロセスを実装することができる。トラステッド実行環境は、データおよび/または実行可能プログラム命令をメモリ914に記憶するように構成されてよく、メモリ914に記憶されたデータは、信用されないプロセスによってデータを利用も修正もできないことを保証するために、暗号化および認証されてよい。
【００６２】
コンピューティングデバイス900は、セキュアエレメント990(本明細書では、信用されるコンポーネントとも呼ばれる)を備えることができる。コンピューティングデバイス900は、トラステッド実行環境980に加えてまたはそれに代えて、セキュアエレメント990を備えることができる。セキュアエレメント990は、セキュアなアプリケーションを実行するのに使用できる自律的な耐タンパー性のハードウェアと、そのようなアプリケーションに関連付けられた機密データとを含むことができる。セキュアエレメント990を使用して、暗号化鍵、アンチリプレイカウンタデータ、および/または他の機密データを記憶することができる。セキュアエレメント990は、近距離無線通信(NFC)タグ、加入者識別モジュール(SIM)カード、または、データを安全に記憶するのに使用できる他のタイプのハードウェアデバイスを含むことができる。セキュアエレメント990は、永久的もしくは半永久的な方式でコンピューティングデバイス900のハードウェアと統合されてもよく、または、いくつかの実装形態では、データを安全に記憶するためおよび/もしくはアプリケーションのためのセキュアな実行環境を提供するために使用できる、コンピューティングデバイス900の取外し可能なコンポーネントであってもよい。
【００６３】
コンピューティングデバイス900はさらに、コンピューティングデバイス900とのユーザ対話を可能にするマイクロフォン/スピーカ952、キーパッド954、およびディスプレイ956などの適切なインターフェースシステムを提供するユーザインターフェース950を備えることもできる。マイクロフォン/スピーカ952(オーディオセンサと同じである場合もあり異なる場合もある)は、音声通信サービスを実現する(たとえば、ワイドエリアネットワーク送受信機904および/またはローカルエリアネットワーク送受信機906を使用して)。キーパッド954は、ユーザ入力のための適切なボタンを備えることができる。ディスプレイ956は、たとえばバックライト付きLCDディスプレイなど、適切なディスプレイを含むことができ、さらに、追加のユーザ入力モードのためのタッチスクリーンディスプレイを含むこともできる。
【００６４】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラム可能プロセッサに対する機械命令を含み、高水準手続き型プログラミング言語および/もしくはオブジェクト指向プログラミング言語で、かつ/またはアセンブリ/機械言語で実装される場合がある。本明細書では、「機械可読媒体」という用語は、機械命令および/またはデータをプログラム可能プロセッサに提供するのに使用される任意の非一時的コンピュータプログラム製品、装置、および/またはデバイス(たとえば、磁気ディスク、光学ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械可読信号として受け取る非一時的機械可読媒体を含む。
【００６５】
メモリは、計算ベースのデバイス内で、またはデバイス外部で実装される場合がある。本明細書では、「メモリ」という用語は、任意のタイプの長期、短期、揮発性、不揮発性、または他のメモリを指し、いずれかの特定のメモリタイプもしくはメモリ数、またはメモリが格納される媒体タイプに限定されるべきではない。機能がソフトウェアとともにハードウェアまたはファームウェアによって部分的に実装される場合、機能は1つまたは複数の命令またはコードとしてコンピュータ可読媒体に記憶される場合がある。例は、データ構造を用いて符号化されたコンピュータ可読媒体、および、コンピュータプログラムを用いて符号化されたコンピュータ可読媒体を含む。コンピュータ可読媒体は、物理的なコンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスできる任意の利用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光学ディスクストレージ、磁気ディスクストレージ、半導体ストレージ、または他の記憶デバイスを含むことができ、あるいは、所望のプログラムコードを命令またはデータ構造の形で記憶するのに使用でき、コンピュータによってアクセスできる任意の他の媒体を含むことができる。ディスク(disk)およびディスク(disc)は、本明細書では、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光学ディスク(disc)、ディジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【００６６】
別段に定義されていない限り、本明細書で使用されるすべての技術的および科学的用語は、一般的または慣例的に理解されるのと同じ意味を有する。本明細書では、冠詞「a」および「an」は、1つのまたは1つよりも多くの(すなわち少なくとも1つの)、冠詞の文法的対象を指す。例として、「要素(an element)」は、1つの要素または1つよりも多い要素を意味する。量や時間的期間などの測定可能な値を指すときに本明細書で使用される「約」および/または「およそ」は、指定された値から±20%もしくは±10%、±5%、または+0.1%の変動が本明細書で説明されるシステム、デバイス、回路、方法、および他の実装形態のコンテキストで適切である場合には、そのような変動を包含する。量や時間的期間や物理的属性(周波数など)等、測定可能な値を指すときに本明細書で使用される「ほぼ」もまた、指定された値から±20%もしくは±10%、±5%、または+0.1%の変動が本明細書で説明されるシステム、デバイス、回路、方法、および他の実装形態のコンテキストで適切である場合には、そのような変動を包含する。
【００６７】
特許請求の範囲を含めて、本明細書では、「または、もしくは、あるいは(or)」が、「のうちの少なくとも1つ」または「のうちの1つまたは複数」が後に続くアイテムのリスト中で使用される場合、これは離接的なリストを示し、したがって、たとえば「A、B、またはCのうちの少なくとも1つ」のリストは、AもしくはBもしくはCもしくはABもしくはACもしくはBCもしくはABC(すなわちAおよびBおよびC)、または、1つよりも多い特徴の組合せ(たとえば、AA、AAB、ABBCなど)を意味する。また、本明細書では、別段の記載がない限り、機能または動作がアイテムまたは条件に「基づく」という記載は、機能または動作が、記載されたアイテムまたは条件に基づくものであり、記載されたアイテムまたは条件に加えて1つまたは複数のアイテムおよび/または条件に基づく場合もある、ということを意味する。
【００６８】
本明細書では、モバイルデバイスまたは移動局(MS)は、ワイヤレス通信および/またはナビゲーション測位信号などのナビゲーション信号を受け取ることのできる、セルラーまたは他のワイヤレス通信デバイス、スマートフォン、タブレット、パーソナル通信システム(PCS)デバイス、パーソナルナビゲーションデバイス(PND)、パーソナル情報マネージャ(PIM)、携帯情報端末(PDA)、ラップトップ、または他の適切なモバイルデバイス、などのデバイスを指す。「移動局」(または「モバイルデバイス」もしくは「ワイヤレスデバイス」)という用語はまた、衛星信号受信、アシスタンスデータ受信、および/または位置関連処理がデバイスにおいて発生するかPNDにおいて発生するかにかかわらず、短距離ワイヤレス接続、赤外線接続、ワイヤライン接続、または他の接続などによってパーソナルナビゲーションデバイス(PND)と通信するデバイスも含むものとする。また、「移動局」は、衛星信号受信、アシスタンスデータ受信、および/または位置関連処理がデバイスにおいて発生するか、サーバにおいて発生するか、またはネットワークに関連付けられた別のデバイスもしくはノードにおいて発生するかにかかわらず、インターネット、WiFi、または他のネットワークなどを介してサーバと通信して1つまたは複数のタイプのノードと通信できる、ワイヤレス通信デバイス、コンピュータ、ラップトップ、タブレットデバイスなどを含めたすべてのデバイスを含むものとする。上記の任意の動作可能な組合せも、「移動局」と考えられる。モバイルデバイスはまた、モバイル端末、端末、ユーザ機器(UE)、デバイス、セキュアユーザプレーンロケーション対応端末(SET:Secure User Plane Location Enabled Terminal)、ターゲットデバイス、ターゲットとして、または他の何らかの名前で呼ばれることもある。
【００６９】
本明細書で提示される技法、プロセス、および/または実装形態のいくつかは、1つまたは複数の規格の全部または一部に準拠する場合があるが、そのような技法、プロセス、および/または実装形態は、いくつかの実施形態では、そのような1つまたは複数の規格の一部または全部に準拠しない場合もある。
【符号の説明】
【００７０】
100  コンピューティングデバイス
105  プロセッサ
110  レルム固有のCPU命令
115  例外オーバライド処理ロジック
120  レルムエントリコンテキスト(REC)レジスタ
125  メモリ
130  セキュアでないソフトウェアモジュール
135  レルム呼出し命令
140  セキュアなソフトウェアモジュール
145  レルム構成命令
150  レルムエントリコンテキスト
155  プログラムコード
160  レルムリターン命令
900  コンピューティングデバイス
902  アンテナ
904  ワイドエリアネットワーク送受信機
906  ローカルエリアネットワーク送受信機
908  SPS受信機
910  コントローラ/プロセッサ
912  センサ
914  メモリ
918  アプリケーションモジュール
950  ユーザインターフェース
952  マイクロフォン/スピーカ
954  キーパッド
956  ディスプレイ
980  トラステッド実行環境
990  セキュアエレメント
【図１】
2018532183.tif 000003
【図２】
2018532183.tif 000004
【図３】
2018532183.tif 000005
【図４】
2018532183.tif 000006
【図５】
2018532183.tif 000007
【図６】
2018532183.tif 000008
【図７】
2018532183.tif 000009
【図８】
2018532183.tif 000010
【図９】
2018532183.tif 000011
【手続補正書】
【提出日】平成30年3月13日(2018.3.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイス中のソフトウェアを保護するための方法であって、
セキュアなソフトウェアモジュールに固有の暗号化鍵を使用して暗号化された暗号化済みプログラムコードを含む前記セキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るステップと、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するステップと、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するステップと、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すステップと
を含む方法。
【請求項２】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定するステップが、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスするステップと、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号するステップと、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止するステップと、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施するステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するステップが、
前記セキュアなソフトウェアモジュールのインスタンスを初期化するステップをさらに含む、請求項1に記載の方法。
【請求項５】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化するステップが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスするステップを含む、請求項4に記載の方法。
【請求項６】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すステップが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するステップと、
前記セキュアなソフトウェアモジュールの命令の復号を停止するステップと
をさらに含む、請求項4に記載の方法。
【請求項７】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すステップが、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドするステップと、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するステップと、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止するステップと
をさらに含む、請求項4に記載の方法。
【請求項８】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するステップが、
前記1つまたは複数の命令を実行する直前に、実行されている前記セキュアなソフトウェアモジュールのインスタンスに関連付けられた前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令の各々を復号するステップをさらに含む、請求項1に記載の方法。
【請求項９】
前記1つまたは複数の命令を実行する直前に、実行されている前記セキュアなソフトウェアモジュールの前記インスタンスに関連付けられた前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令の各々を復号するステップが、
前記セキュアなソフトウェアモジュールに関連付けられた暗号化鍵を使用して前記1つまたは複数の命令の各々を復号するステップをさらに含む、請求項8に記載の方法。
【請求項１０】
セキュアなソフトウェアモジュールに固有の暗号化鍵を使用して暗号化された暗号化済みプログラムコードを含む前記セキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取るための手段と、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定するための手段と、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行するための手段と、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すための手段と
を備える装置。
【請求項１１】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定するための前記手段が、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスするための手段と、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号するための手段と、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定するための手段と
をさらに含む、請求項10に記載の装置。
【請求項１２】
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止するための手段と、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施するための手段と
をさらに備える、請求項11に記載の装置。
【請求項１３】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するための前記手段が、
前記セキュアなソフトウェアモジュールのインスタンスを初期化するための手段をさらに含む、請求項10に記載の装置。
【請求項１４】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化するための前記手段が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスするための手段を含む、請求項13に記載の装置。
【請求項１５】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すための前記手段が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するための手段と、
前記セキュアなソフトウェアモジュールの命令の復号を停止するための手段と
をさらに含む、請求項13に記載の装置。
【請求項１６】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すための前記手段が、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドするための手段と、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶するための手段と、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止するための手段と
をさらに含む、請求項13に記載の装置。
【請求項１７】
メモリと、
前記メモリに結合されたプロセッサとを備える装置であって、前記プロセッサが、
セキュアなソフトウェアモジュールに固有の暗号化鍵を使用して暗号化された暗号化済みプログラムコードを含む前記セキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取ることと、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定することと、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行することと、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことと
を行うように構成された、装置。
【請求項１８】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定することを行うように構成された前記プロセッサが、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスすることと、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号することと、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定することと
を行うようにさらに構成された、請求項17に記載の装置。
【請求項１９】
前記プロセッサが、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止することと、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施することと
を行うようにさらに構成された、請求項18に記載の装置。
【請求項２０】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行するように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールのインスタンスを初期化するようにさらに構成された、請求項17に記載の装置。
【請求項２１】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化するように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスすることを行うようにさらに構成された、請求項20に記載の装置。
【請求項２２】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを行うように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、前記メモリのセキュアな部分に記憶することと、
前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を行うようにさらに構成された、請求項20に記載の装置。
【請求項２３】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを行うように構成された前記プロセッサが、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドすることと、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、前記メモリのセキュアな部分に記憶することと、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を行うようにさらに構成された、請求項20に記載の装置。
【請求項２４】
コンピューティングデバイス中のソフトウェアを保護するためのコンピュータ可読命令が記憶された非一時的コンピュータ可読媒体であって、
セキュアなソフトウェアモジュールに固有の暗号化鍵を使用して暗号化された暗号化済みプログラムコードを含む前記セキュアなソフトウェアモジュールの命令を実行する要求を、セキュアでないソフトウェアモジュールから受け取ることと、
前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの制御されるエントリポイントに関連付けられた命令を含むかどうかを決定することと、
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの1つまたは複数の命令を実行することと、
前記セキュアなソフトウェアモジュールからの退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことと
を前記コンピューティングデバイスに行わせるように構成された命令を含む、非一時的コンピュータ可読媒体。
【請求項２５】
前記命令が呼出し命令を含み、前記命令が、前記セキュアなソフトウェアモジュールの外部でアクセス可能な前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた前記命令を含むかどうかを決定することを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアでないソフトウェアモジュールによって実行された前記呼出し命令中で指定されるアドレスにおいて、前記セキュアなソフトウェアモジュールの命令にアクセスすることと、
前記セキュアなソフトウェアモジュールに固有の復号鍵を使用して、前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令を復号することと、
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントを表す前記セキュアなソフトウェアモジュールに関連付けられた構成命令であるかどうかを決定することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２６】
前記呼出し命令中で指定される前記アドレスにおいて見つかった前記命令が前記構成命令でないことに応答して、前記セキュアなソフトウェアモジュールへのアクセスを禁止することと、
前記呼出し命令中で指定される前記アドレスが前記構成命令でないことに応答して、アクションを実施することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項25に記載の非一時的コンピュータ可読媒体。
【請求項２７】
前記命令が、前記セキュアなソフトウェアモジュールへの前記制御されるエントリポイントに関連付けられた命令を含むことに応答して、前記セキュアなソフトウェアモジュールの前記1つまたは複数の命令を実行することを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールのインスタンスを初期化することを前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項24に記載の非一時的コンピュータ可読媒体。
【請求項２８】
前記セキュアなソフトウェアモジュールの前記インスタンスを初期化することを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報にアクセスすることを前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項27に記載の非一時的コンピュータ可読媒体。
【請求項２９】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶することと、
前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項27に記載の非一時的コンピュータ可読媒体。
【請求項３０】
前記セキュアなソフトウェアモジュールからの前記退出を制御して、前記セキュアでないソフトウェアモジュールに実行を戻すことを前記コンピューティングデバイスに行わせるように構成された前記命令が、
前記セキュアなソフトウェアモジュールの命令を実行する間に例外処理をオーバライドすることと、
前記セキュアなソフトウェアモジュールの前記インスタンスの状態を表す暗号化されたコンテキスト情報を、セキュアなメモリに記憶することと、
例外の発生に応答して、前記セキュアなソフトウェアモジュールの命令の復号を停止することと
を前記コンピューティングデバイスに行わせるように構成された命令をさらに含む、請求項27に記載の非一時的コンピュータ可読媒体。
【国際調査報告】
2018532183.tif 000012
2018532183.tif 000013