(57)【要約】  ソフトウェアアプリケーション群によってなされるソフトウェアプラットホームアクセスにおいてタイプ安全性をセキュアにするための効果的な方法において、本開示は、ソフトウェアプラットホームによる認証と登録のために、ソフトウェアアプリケーション群において暗号化署名済タイプ情報の導入を教示している。この方法を用いると、所与のソフトウェアアプリケーションは、登録されたタイプ情報に適合するプラットホームアクセス（例えば、タイプインスタンス化、メモリアクセス、メソッド起動等）だけを行うことが許可される。【選択図】  なし
2012506584.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアプラットホームにおける、ソフトウェアアプリケーションによって前記ソフトウェアプラットホームになされるアクセスをセキュアにする方法であって、
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップと、
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するステップと、
前記暗号化署名が真正である場合、前記タイプ情報を前記ソフトウェアプラットホームに登録するステップと、
前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可するステップと
を備えることを特徴とする方法。
【請求項２】
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップは、署名済データタイプ情報と署名済メソッドタイプ情報とを受信することを含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するステップは、前記データタイプ情報に対する１つ以上の暗号化署名と、前記メソッドタイプ情報に対する１つ以上の暗号化署名を検証することを含んでいる
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記タイプ情報を前記ソフトウェアプラットホームに登録するステップは、前記データタイプ情報を登録し、かつ前記メソッドタイプ情報を登録して、登録されたデータタイプ情報と登録されたメソッドタイプ情報とを生成することを含み、
前記メソッドタイプ情報の登録は、各メソッドタイプが登録されたデータタイプ群だけへの登録されたリンク群であるかを検証することを含んでいる
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記タイプ情報を前記ソフトウェアプラットホームに登録するステップは、データタイプ情報とメソッドタイプ情報とを登録することを含み、
前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可するステップは、登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致するプラットホームメソッド起動とプラットホームメモリアクセスとを許可し、かつ登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致しないプラットホームメソッド起動とプラットホームメモリアクセスとを許可しない
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するステップは、前記ソフトウェアプラットホームによってセキュアに保持される暗号化キー情報に基づいて、前記暗号化署名を検証することを含み、
前記暗号化キー情報は、対称シークレットキーペアデータあるいはパブリックキーインフラストラクチャであるＰＫＩの暗号化キーデータの１つを備える
ことを特徴とする請求項１に記載の方法。
【請求項７】
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップは、前記ソフトウェアアプリケーションによって使用されることになるヒープデータタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済ヒープデータタイプ登録情報を含む１つ以上のヒープデータタイプ登録メッセージを受信し、かつ登録されるヒープデータタイプ群を参照するための１つ以上のヒープデータタイプハンドルを前記ソフトウェアアプリケーションへ返信することを含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項８】
前記ソフトウェアプラットホームは、ヒープデータタイプ群の前記ソフトウェアアプリケーションによってリクエストされる命令群を検証し、かつ前記ヒープデータタイプ群のインスタンス群への前記ソフトウェアアプリケーションによるプラットホームメモリアクセスを検証するために、前記登録されているヒープデータタイプ群を使用する
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップは、前記ソフトウェアアプリケーションによって起動されるメソッドタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済メソッドタイプ登録情報を含む１つ以上のメソッドタイプ登録メッセージを受信し、かつ登録されているメソッドタイプ群を参照するための１つ以上のメソッドタイプハンドルを前記ソフトウェアアプリケーションへ返信することを含んでいる
ことを特徴とする請求項７に記載の方法。
【請求項１０】
ソフトウェアアプリケーションによって、ソフトウェアプラットホームになされるアクセスをセキュアにする前記ソフトウェアプラットホームを実現するようにプログラムされたコンピュータであって、
前記ソフトウェアプラットホームは、
アプリケーションプログラムインタフェースであるＡＰＩレイヤと、前記ＡＰＩレイヤと該ＡＰＩレイヤを使用するソフトウェアアプリケーション群との間の中間物として機能的に配置されるアクセス制御レイヤとを備え、
前記アクセス制御レイヤは、
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信し、
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定し、
前記暗号化署名が真正である場合、前記タイプ情報を前記ソフトウェアプラットホームに登録し、かつ
前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可する
ように構成されている
ことを特徴とするコンピュータ。
【請求項１１】
前記アクセス制御レイヤは、署名済データタイプ情報と署名済メソッドタイプ情報とを前記暗号化署名済タイプ情報として受信するように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１２】
前記アクセス制御レイヤは、前記データタイプ情報に対して受信される１つ以上の暗号化署名と、前記メソッドタイプ情報に対して受信される１つ以上の暗号化署名を検証することによって、前記受信したタイプ情報の前記暗号化署名が真正であるかどうかを判定するように構成されている
ことを特徴とする請求項１１に記載のコンピュータ。
【請求項１３】
前記アクセス制御レイヤは、前記データタイプ情報を登録し、かつ前記メソッドタイプ情報を登録して、登録されたデータタイプ情報と登録されたメソッドタイプ情報とを生成するために、前記ソフトウェアプラットホームに前記タイプ情報を登録するように構成され、
前記アクセス制御レイヤは、各メソッドタイプが登録されたデータタイプ群だけへの登録されたリンク群であるかを検証するように構成されている
ことを特徴とする請求項１１に記載のコンピュータ。
【請求項１４】
前記アクセス制御レイヤは、データタイプ情報とメソッドタイプ情報とを登録することによって前記タイプ情報を前記ソフトウェアプラットホームに登録するように構成され、
前記アクセス制御レイヤは、登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致するラインタイムプラットホームメソッド起動とランタイムプラットホームメモリアクセスとを許可することによって、前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可し、かつ登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致しないランタイムプラットホームメソッド起動とランタイムプラットホームメモリアクセスとを許可しないことによって、前記登録されたタイプ情報と適合しない前記ソフトウェアアプリケーションによるプラットホームアクセスを許可しないように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１５】
前記アクセス制御レイヤは、前記ソフトウェアプラットホームによってセキュアに保持される暗号化キー情報に基づいて前記暗号化署名を検証することによって、前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するように構成されていて、
前記暗号化キー情報は、対称シークレットキーペアデータあるいはパブリックキーインフラストラクチャであるＰＫＩの暗号化キーデータの１つを備える
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１６】
前記アクセス制御レイヤは、前記ソフトウェアアプリケーションによって使用されることになるヒープデータタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済ヒープデータタイプ登録情報を含む１つ以上のヒープデータタイプ登録メッセージを前記暗号化署名済タイプ情報として受信するように構成され、かつ
前記アクセス制御レイヤは、登録されるヒープデータタイプ群を参照するための１つ以上のヒープデータタイプハンドルを前記ソフトウェアアプリケーションへ返信するように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１７】
前記アクセス制御レイヤは、ヒープデータタイプ群の前記ソフトウェアアプリケーションによってリクエストされる命令群を検証し、かつ前記ヒープデータタイプ群のインスタンス群への前記ソフトウェアアプリケーションによるプラットホームメモリアクセスを検証するために、前記登録されているヒープデータタイプ群を使用するように構成されている
ことを特徴とする請求項１６に記載のコンピュータ。
【請求項１８】
前記アクセス制御レイヤは、前記ソフトウェアアプリケーションによって起動されるメソッドタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済メソッドタイプ登録情報を含む１つ以上のメソッドタイプ登録メッセージを前記暗号化署名済タイプ情報として受信するように構成され、かつ
前記アクセス制御レイヤは、登録されているメソッドタイプ群を参照するための１つ以上のメソッドタイプハンドルを前記ソフトウェアアプリケーションへ返信するように構成されている
ことを特徴とする請求項１６に記載のコンピュータ。
【請求項１９】
前記コンピュータは、無線通信デバイスにおける処理要素を備え、
前記ソフトウェアプラットホームの前記アクセス制御レイヤは、前記無線通信デバイスにダウンロードされるあるいはインストールされるソフトウェアアプリケーション群に対する前記ソフトウェアプラットホームの前記ＡＰＩレイヤへのセキュアなアクセスを提供するように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項２０】
ソフトウェアプラットホームへのセキュアアクセスを行うように意図されているソフトウェアアプリケーションを生成する方法であって、
前記ソフトウェアアプリケーションによって使用されるべき、ソフトウェアプラットホームのデータタイプ群とメソッド群とを記述するタイプ情報を生成するステップと、
前記ソフトウェアプラットホームにおける解読処理に知られているあるいは互換性のある暗号化キーデータを使用して前記タイプ情報を暗号化署名するステップと
前記暗号化署名済タイプ情報を前記ソフトウェアアプリケーションに埋め込むあるいはバンドルするステップと
を備えることを特徴とする方法。
【請求項２１】
前記ソフトウェアプラットホームによる検証のために、前記暗号化署名済タイプ情報を前記ソフトウェアプラットホームへ提供し、それによって、前記暗号化署名済タイプ情報で識別されるソフトウェアプラットホームのデータタイプ群とメソッド群へのアクセスを行うように前記ソフトウェアアプリケーションを構成するステップを更に備える
ことを特徴とする請求項２０に記載の方法。
【請求項２２】
ソフトウェアプラットホームへのセキュアアクセスを行うソフトウェアアプリケーションのための方法であって、
前記ソフトウェアアプリケーションの初期実行あるいはローディング時に、暗号化署名済タイプ情報を前記ソフトウェアプラットホームへ送信し、登録されたデータ及び登録されたメソッドタイプ群に対する登録情報を受信するステップであって、前記暗号化署名済タイプ情報は、前記ソフトウェアアプリケーションによって使用されるべきプラットホームデータとメソッドタイプ群とを識別する、ステップと、
前記ソフトウェアアプリケーションの実行中に前記登録情報を使用して、データタイプインスタンス化、メモリアクセス、及びメソッド起動に対する前記ソフトウェアプラットホームへのリクエスト群を生成するステップと
を備えることを特徴とする方法。
【請求項２３】
前記登録情報は、前記ソフトウェアプラットホームによって保持されるヒープ空間データメモリへのリンク群あるいはポインタ群を備える
ことを特徴とする請求項２２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散ソフトウェアに関するものであり、特に、分散ソフトウェアコンポーネント群によってなされるソフトウェアプラットホームアクセスをセキュアにすることに関するものである。
【背景技術】
【０００２】
ソフトウェアプラットホーム群は、ソフトウェアプラットホームにインストールされているあるいはソフトウェアプラットホームと協働するソフトウェアアプリケーション群によってなされる悪意のあるいは不正なプラットホームアクセスから保護するために、高性能なタイプのチェックと安全な提供を含む言語／アーキテクチャ実装に基づくことができる。一方、いくつかのソフトウェアプラットホーム群、特に、埋込アプリケーション群におけるリアルタイムシステム群（移動通信デバイス群及び他の携帯機器群）を動作させるために使用されるものは、Ｃ言語あるいはその他の低レベル言語に基づくことができ、これは、そのような言語の付随的な能力及びサイズ上の利点によるものである。しかしながら、一般的には、このような言語群は、ビルトインされた型の安全性（タイプ安全性：type safety）を持たない、これは、悪意のあるあるいは不正なプラットホームアクセスに対する保護が難しいことを意味する。
【０００３】
１つの方法は、完全に信頼できるアプリケーション群にのみ、ソフトウェアプラットホームによって提供されるメモリ空間と機能群へのアクセスを許容することであるが、この方法は、デバイスのユーザが新規のソフトウェアアプリケーション群を購入することを可能にする要望を妨げるあるいは少なくとも複雑にしてしまう。ここで、この新規のソフトウェアアプリケーション群の多くは、ソフトウェアプラットホームのセキュリティに敏感な要素群へアクセスすることを要求するあるいはそのアクセスすることの恩恵を受けることになるものである。
【０００４】
これらのセキュリティの問題を理解するために、伝統的な分散ソフトウェアコンポーネントシステム群（例えば、ＤＣＯＭあるいいはエリクソンの「ＤＥＣＭ」）は、１つのメモリ空間内のコンポーネント群が、他のメモリ空間内のコンポーネント群によって実現される機能群へアクセスすることを可能にしていることに注意されたい。本質的には、このようなシステム群は、オブジェク指向（コンポーネント指向）形式のリモート手続呼出（ＲＰＣ）である。メソッドの起動（method invocation）は、発呼側から着呼側へとメッセージを渡すことによって実行される。メソッドの起動において、すべてのメソッドパラメータ群はシリアライズ（配列化）され、かつ起動メッセージに含められる。このパラメータ群は着呼側によってデシリアライズ（配列解除）され、そこで、実際の起動を実行する。
【０００５】
ソフトウェアプラットホームリソース群へのリモートアクセスは、呼出を行う、あるいはそうでなければ、ソフトウェアプラットホームへメッセージ群を渡すことをアクセスするアプリケーション群へ要求する。セキュリティに敏感なプラットホーム群に対しては、これらのアクセスは、有効なメモリ位置に制限されなければならない。信頼のないアプリケーションは、プラットホームのメモリ空間への自由なアクセスを許容することもできなければ、セキュリティに敏感なメソッド群を起動することを許容することもできない。事実、完全なプラットホームアクセスは、信頼のある（即ち、署名済）アプリケーション群に制限することができる。しかしながら、アプリケーションを署名することは繁雑である。つまり、署名済のアプリケーションとして与えられるソフトウェアアプリケーションを作成し、かつ分散することの負担を被ることは価値のあることではない。これは、対象とするソフトウェアプラットホームへのセキュアアクセスが高められる場合にソフトウェアアプリケーションの機能が拡張されるとしてでもある。
【０００６】
また、署名済アプリケーション群に対してでさえも、いくつかのアクセスレベル群が要求される場合がある（例えば、信頼のあるサードパーティデベロッパー群、オペレータ群、デバイス製造者群）。これらの状況は、アプリケーションが、プラットホームリソース群の選択されたサブセットのみにアクセスすることを検証するためのメカニズム群をソフトウェアプラットホーム内に要求する。例えば、所与のソフトウェアアプリケーションの信頼レベルは、ソフトウェアプラットホームのアプリケーションプログラムインタフェース（ＡＰＩ）群の内のどれが、その所与のソフトウェアアプリケーションに利用可能であるかを判定するために使用することができる。このようなメカニズム、例えば、所与のプラットホームアクセスが可能であるかどうかのランタイム決定を行うことは、通常、アクセス制御メカニズムと呼ばれる。
【０００７】
周知のアクセス制御メカニズム群は、データに対する、また、メソッド群に対する、タイプ安全性（型安全性）の検証に関連する。つまり、制御メカニズム群は、プラットホームのメモリ空間へのメモリアクセスが有効な型（タイプ）群に制限されること、また、アクセスパラメータ群（サイズ群、ポインタ群等）が完全に一致することを保証するために使用することができる。それを行うことは、悪意のあるあるいは誤りのあるメモリ読出／書込、上書等を防ぐことになる。同様のタイプ安全性チェックは、ソフトウェアアプリケーション群によって起動されるプラットホームメソッド群に対して実行することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
伝統的なコンポーネントシステム群は、これらの問題をオブジェクト群のシリアル化によって対処している。しかしながら、シリアル化（発呼側における）／デシリアル化（着呼側における）は好ましくないものである、これは、それがインタフェースに特化したものであるからである。リモートでアクセス可能とするべきメソッドそれぞれに対しては、専用コードがパラメータ群をデシアリル化しなければならない。これは、高「フットプリント（footprint）」オーバヘッドとなることを意味する。なぜなら、ソフトウェアアプリケーション群に曝されることになる各プラットホームＡＰＩにおける各プラットホームメソッドに対しては、ＦＬＡＳＨ（フラッシュ）あるいは他の不揮発性メモリが消費されることになるからである。これは、アクセス可能なプラットホームメソッドが起動されるかどうかに関わらず、そのアクセス可能なプラットホームメソッドそれぞれに対するメモリコストになることを意味する。また、この方法は、潜在的には発呼側と着呼側との間で過度な通信を行うことを意味する。なぜなら、起動に関与する参照データのすべてが、あらゆる起動においてシリアル化されなければならないからである。同一のヒープデータがいくつかの移動において介在する場合には、その度に完全なシリアル化がなされることになる。
【０００９】
ソフトウェアアプリケーション群によってなされるソフトウェアプラットホームアクセスにおいて型（タイプ）の安全性をセキュアにすることの有利な方法において、本開示は、ソフトウェアプラットホームによる認証及び登録に対して、ソフトウェアアプリケーション群における暗号化署名済タイプ情報を導入することを教示する。この方法を用いると、所与のソフトウェアアプリケーションは、登録済タイプ情報と適合するプラットホームアクセス（例えば、データタイプインスタンス化、メモリアクセス、メソッド起動等）を行うことだけが許容される。この方法の１つの利点は、タイプ安全性処理に対して、ソフトウェアプラットホームによって必要とされるメモリ容量を削減することである。これは、与えられるアプリケーションによって実際に使用されるこれらのデータ及びメソッドタイプだけが登録され、かつアカウントがとられる必要があるからである。別の利点は、ソフトウェアアプリケーション群において含有するタイプ情報は、セキュアソフトウェアプラットホームでさえも、分散ソフトウェアアプリケーション群をセキュアソフトウェアプラットホーム群にさえも安全にインストールしかつ実行することを可能にすることである。ここで、このセキュアソフトウェアプラットホーム群は、例えば、典型的には、移動通信デバイスで実現される。
【課題を解決するための手段】
【００１０】
一実施形態では、ソフトウェアプラットホームにおける、ソフトウェアアプリケーションによって前記ソフトウェアプラットホームになされるアクセスをセキュアにする方法は、前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信することを含んでいる。この方法は、更に、前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定すること、前記暗号化署名が真正である場合、前記タイプ情報を前記ソフトウェアプラットホームに登録することを含んでいる。これに対応して、この方法は、更に、前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可することを含んでいる。限定的でない例として、ソフトウェアアプリケーションは、使用することになる（ヒープ空間）データタイプ群と、起動することになるプラットホームメソッド群とを登録し、そして、ソフトウェアアプリケーションによる任意の後続のランタイムデータインスタンス化、メモリアクセス及びメソッド起動が許可される。これは、それらが登録されたタイプ情報と適合される場合にのみ許可される。
【００１１】
別の実施形態では、プラグラムされたコンピュータが、ソフトウェアアプリケーションによってソフトウェアプラットホームになされるアクセスをセキュアにするソフトウェアプラットホームを実現する。このソフトウェアプラットホームは、アプリケーションプログラムインタフェース（ＡＰＩ）レイヤと、前記ＡＰＩレイヤと該ＡＰＩレイヤを使用するソフトウェアアプリケーション群との間の中間物として機能的に配置されるアクセス制御レイヤとを含んでいる。前記アクセス制御レイヤは、前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信し、前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するように構成されることによって型安全性（タイプセーフティ）を実施する。前記暗号化署名が真正である場合、アクセス制御レイヤは、前記タイプ情報を前記ソフトウェアプラットホームに登録し、かつ前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可する。利点の一例としては、ソフトウェアプラットホームは閉じられており、セキュアであり、あるいはそうでなければ、プラットホームに制約が課されており、かつ所与のソフトウェアアプリケーションによるアクセスは、その所与のソフトウェアアプリケーションに対して暗号化認証されかつ登録されているタイプ情報と適合するそのようなアクセスの範囲にのみ許可されている。
【００１２】
１つ以上の実施形態では、ソフトウェアプラットホームは、移動通信デバイスソフトウェアプラットホームを備え、このプログラムされたコンピュータは、セキュアなメモリ等を有することができる、移動通信デバイスを備える。このような実施形態では、ソフトウェアプラットホームは、そのようなアプリケーションそれぞれに対して登録されているタイプ情報と適合するプラットホームアクセスを許可することによって、ソフトウェアアプリケーション群、例えば、ダウンロードされたウィジット群、アプレット群、コンポーネント群等にソフトウェアプラットホームになされるアクセスを「セキュア」にする。ここで、用語「セキュア」の意味は、特に、安全にすることを意味する。
【００１３】
別の実施形態では、ソフトウェアプラットホームへのセキュアアクセスを行うように意図されているソフトウェアアプリケーションを生成する方法は、前記ソフトウェアアプリケーションによって使用されるべき、ソフトウェアプラットホームのデータタイプ群とメソッド群とを記述するタイプ情報を生成すること、前記ソフトウェアプラットホームにおける解読処理に知られているあるいは互換性のある暗号化キーデータを使用して前記タイプ情報を暗号化署名することを有する。この方法は、更に、前記暗号化署名済タイプ情報を前記ソフトウェアアプリケーションに埋め込むあるいはバンドルすることを含んでいる。更に、また、この方法は、例えば、ランタイム時での、前記ソフトウェアプラットホームによる検証のために、前記暗号化署名済タイプ情報を前記ソフトウェアプラットホームへ提供し、かつ、それによって、前記暗号化署名済タイプ情報で識別されるソフトウェアプラットホームのデータタイプ群とメソッド群へのアクセスを行うように前記ソフトウェアアプリケーションを構成することを含んでいる。
【００１４】
更にまた別の実施形態では、ソフトウェアプラットホームへのセキュアアクセスを行うソフトウェアアプリケーションのための方法は、前記ソフトウェアアプリケーションの初期実行あるいはローディング時に、暗号化署名済タイプ情報を前記ソフトウェアプラットホームへ送信し、登録されたデータ及び登録されたメソッドタイプ群に対する登録情報を受信することを含んでいる。ここで、前記暗号化署名済タイプ情報は、前記ソフトウェアアプリケーションによって使用されるべきプラットホームデータとメソッドタイプ群とを識別し、この方法は、更に、前記ソフトウェアアプリケーションの実行中に前記登録情報を使用して、データタイプインスタンス化、メモリアクセス、及びメソッド起動に対する前記ソフトウェアプラットホームへのリクエスト群を生成することを含んでいる。このような一実施形態では、登録情報は、前記ソフトウェアプラットホームによって保持されるヒープ空間データメモリへのリンク群あるいはポインタ群を備える。
【００１５】
しかしながら、本発明は、上述の特徴及び利点に制限されるものではない。実際には、当業者は、詳細な説明を読み、及びそれに付随する図面を見ることによって、更なる特徴及び利点があることを認識することになるであろう。
【図面の簡単な説明】
【００１６】
【図１】ソフトウェアプラットホーム及びソフトウェアアプリケーションによってなされる、着呼側ソフトウェアと発呼側ソフトウェアの一実施形態のブロック図である。
【図２】デバイスがソフトウェアプラットホームを含んでいる場合の、無線通信デバイスとサポートしている無線通信ネットワークの一実施形態のブロック図である。
【図３】ソフトウェアアプリケーションに対するソフトウェアプラットホームがタイプ情報を登録する方法の一実施形態の論理フロー図である。
【図４】信頼のあるメモリ空間におけるソフトウェアプラットホームと信頼のないメモリ空間におけるソフトウェアアプリケーションとを有するプログラム化コンピュータの一実施形態のブロック図である。
【図５】ソフトウェアアプリケーション群に埋め込むための暗号化署名済タイプ情報を生成するためのシステムの一実施形態のブロック図である。
【図６Ａ】割当済ヒープインスタンスから対応するヒープタイプへのリファレンスを含めるための様々な実施形態の図である。
【図６Ｂ】割当済ヒープインスタンスから対応するヒープタイプへのリファレンスを含めるための様々な実施形態を示す図である。
【図７】一実施形態におけるヒープインスタンス割当の結果を示す図である。
【発明を実施するための形態】
【００１７】
図１は、「着呼側」ソフトウェア１０と「発呼側」ソフトウェア１２の一実施形態を示していて、ここで、着呼側ソフトウェア１０は、セキュリティ制約に関して、発呼側ソフトウェア１２によって使用できるメモリ及びプログラムリソース群を提供する。発呼側ソフトウェア１２が完全に信頼できるアプリケーションであることを要求するよりはむしろ、着呼側ソフトウェア１０は、発呼側ソフトウェア１２から暗号化署名済タイプ情報１４を受信し、そして、発呼側ソフトウェア１２によってなされるすべてのアクセスに対してタイプ情報を提供する。
【００１８】
着呼側ソフトウェア１０は、暗号化処理リソース群（例えば、解読処理機能群）と、暗号化キーデータ１６を含んでいて、これは、暗号化署名が真正であるかどうかを判定するために使用する。暗号化署名が真正である場合、これは、タイプ情報が信頼のあるパーティによって生成されたことを意味し、着呼側ソフトウェア１０は、タイプ情報を登録し、かつその登録したタイプ情報１４に従って、着呼側ソフトウェア１０への発呼側ソフトウェア１２によってなされるランタイムアクセスを検証する。一実施形態では、着呼側ソフトウェア１０は「ソフトウェアプラットホーム」であり、かつ発呼側ソフトウェア１２は「ソフトウェアアプリケーション」である。
【００１９】
説明を簡単にするために、本開示は、着呼側ソフトウェア１０をソフトウェアプラットホーム１０とし、発呼側ソフトウェア１２をソフトウェアアプリケーション１２と呼ぶことにする。この状況で使用されるように、用語「ソフトウェアプラットホーム」は、とりわけ、コンピュータシステム用のオペレーティングシステムを示しているが、より広くは、ある意味では、他のソフトウェアアプリケーション群に対して基本あるいは基礎となることを担う任意のソフトウェアアプリケーションを示している。少なくとも一実施形態では、ソフトウェアプラットホーム１０は、アプリケーションプログラムインタフェース（ＡＰＩ）を提供し、これは、ソフトウェアアプリケーション１２に、定義済のファンクションコール（関数呼出）群を行うことを可能にする。このファンクションコール群には、呼出データと戻しデータ、登録済タイプ情報に従うものすべてを含んでいる。対応して、１つ以上の実施形態では、ソフトウェアアプリケーション１２は、分散ソフトウェアアプリケーション（例えば、ダウンロード可能プログラム、アプレット、モジュール、コンポーネント等）であり、これは、ソフトウェアプラットホーム１０へのコール（呼出）を行い、対応する応答を受信する。
【００２０】
ソフトウェアプラットホーム１０とソフトウェアアプリケーション１２との間の通信は、プロトコルレイヤ１８を通じて発生し得る。ここで、プロトコルレイヤ１８は、ソフトウェアプラットホーム１０とソフトウェアアプリケーション１２による補完的な形態で実現することができる。限定的でない例の１つには、プロトコルレイヤ１８は、１つ以上のソフトウェアアプリケーション１２によるソフトウェアプラットホーム１０へのリモートアクセスをサポートする「オープンモバイルアライアンス（ＯＭＡ）」プロトコルであり、このＯＭＡは、ネットワーク業者、通信業者、及びコンテンツプロバイダ業者による周知の産業共同体である。
【００２１】
特に、リモートＯＰＡ（略して、ｒＯＰＡ）は、ソフトウェアコンポーネント技術であり、これは、１つのアドレス空間でソフトウェアプラットホーム（ＯＰＡを伴う）を動作させ、かつ別のアドレス（メモリ）空間でソフトウェアアプリケーションを動作させるために特別に設計されている。リモートＯＰＡは、プラットホームメモリ空間内の（ＯＰＡ関連）ヒープデータのすべてのマスターコピーを保持し、また、ｒＯＰＡにおけるソフトウェアアプリケーション群によるメソッド起動は、シリアル化ヒープデータを含まない。代わりに、これらのメソッド起動は、プラットホームのメモリ空間内のヒープデータへのポインタ群を含んでいる。ｒＯＰＡが「ｊＯＰＡ」（ジャバベースＯＰＡ）に基づいている一方で、これは、任意の特定ンアプリケーション言語に明確に関係していない。特に注目すべきことは、ｊＯＰＡは、ジャバ仮想マシンセキュリティに基づいているタイプ／メソッド安全性に対するセキュリティソリューションを使用する、従って、本明細書で意図されるタイプ／メソッド登録セキュリティソリューションとは異なるものである。
【００２２】
ソフトウェアプラットホーム１０とソフトウェアアプリケーション１２との間で、ｒＯＰＡプロトコルインタフェースが使用されるかどうかとは独立して、ソフトウェアプラットホーム１０は、無線通信デバイス用のソフトウェアプラットホームを備えることができる。図２は、無線通信デバイス２０の一実施形態を示していて、これは、信頼のない非信頼メモリ空間２４と信頼のある信頼メモリ空間２６とを実現する１つ以上のプロセッサ２２を備える。プロセッサ（群）２２は、例えば、１つ以上のマイクロプロセッサと、データ及びプログラムメモリをサポートする。ソフトウェアプラットホーム１０は、信頼メモリ空間２６内で実現され、かつセキュリティ制約に従う低レベルプラットホーム機能群へのアクセスを非信頼メモリ空間２４で動作するソフトウェアアプリケーション群に提供する。例えば、ソフトウェアプラットホーム１０は、完全に信頼できるソフトウェアアプリケーション群、例えば、デバイスベンダーによってプリインストールされかつ制御されるアプリケーション群に、デバイスの通信トランシーバ２８によってサポートされる通信機能への直接アクセスを許容することができる。
【００２３】
しかしながら、デバイス所有者のユーザ経験は、ユーザがソフトウェアアプリケーション群をインストールして実行すること、これに加えて、任意のプリインストールアプリケーション群を実行することを許容することによって拡張される。例えば、無線通信デバイス２０は、無線通信ネットワーク３０（無線アクセスネットワークであるＲＡＮ３２とコアネットワークであるＣＮ３４とを含む）と通信するように構成されている。この無線通信ネットワーク３０は、無線通信デバイス２０を１つ以上のパブリックデータネットワーク群（ＰＤＮ群）４０と通信するために接続している。少なくとも１つの実施形態では、ＰＤＮ（群）４０は、ソフトウェアアプリケーションデータベース４２へのアクセスを提供し、そのソフトウェアアプリケーションデータベース４２から、デバイス２０はソフトウェアアプリケーション群をダウンロードすることができる。ＰＤＮ（群）４０は、インターネットを含むあるいは接続することができ、データベース４２は、ウェブサーバを備えることができ、このウェブサーバは、ゲーム、ビジネスソフトウェア、あるいは本質的には任意のタイプの分散されたダウンロード可能なソフトウェアアプリケーションを提供する。
【００２４】
信頼のあるタイプ情報はそのようなアプリケーション群に埋め込まれるあるいはそうでなければ含められ、これにより、無線通信デバイス２０のソフトウェアプラットホーム１０に、プラットホームアクセス（メモリ、機能／メソッド起動等）のランタイム検証を実行することを可能にしている。このような処理が、図３に示されていて、ここでは、ソフトウェアアプリケーション１２によってソフトウェアプラットホーム１０になされるアクセスをセキュアにする方法の一実施形態を示している。図示される方法は、ソフトウェアプラットホーム１０の１つ以上の実施形態で実現され、また、これは、図示の処理の少なくともいくつかのステップは、別のシーケンスで、あるいは同時に実行することができる、あるいはループされるあるいは繰り返され、また、このような処理が処理タスク群のセットの全体の一部であっても良いことが理解されるべきである。例えば、図２の無線通信デバイス２０に関して、図示の方法を含むソフトウェアプラットホーム１０は、プロセッサ（群）２２によって実現することができ、このプロセッサ（群）２２は、メモリに記憶されている、あるいはプロセッサ（群）２２に含まれるあるいはアクセス可能な他のコンピュータ可読媒体に記憶されている、記憶済のコンピュータプログラム命令群を実行する。
【００２５】
ソフトウェアプラットホーム１０が動作していて、かつ所与のソフトウェアアプリケーション１２がロードされているあるいはそうでなければ実行のために開始されていると想定すると、図示の方法は、ソフトウェアアプリケーション１２によってなされるプラットホームアクセスに対して、ソフトウェアアプリケーション１２から暗号化署名済タイプ情報を受信することを含んでいる（ブロック１００）。つまり、ソフトウェアアプリケーション１２のロード時点あるいはそうでなければ初期化時点で、ソフトウェアアプリケーション１２は、暗号化署名済タイプ情報をソフトウェアプラットホーム１０へ送信するように構成されている。このような情報の受信と検証は、ソフトウェアアプリケーション１２に、ソフトウェアプラットホーム１０を動作させるあるいはそうでなければアクセスすることを可能にする前提条件となっている。
【００２６】
つまり、この方法は、受信したタイプ情報の暗号化署名が真正であるかどうかを判定するソフトウェアプラットホーム１０で継続する（ブロック１０２）。暗号化署名が真正でない場合、あるいはいくつかの理由で検証が失敗する場合（ブロック１０４からＮｏ）、ソフトウェアプラットホーム１０は、認証失敗処理を実行する（ブロック１０６）。この処理は、例えば、ソフトウェアアプリケーション１２の任意の動作あるいは更なる実行を無効にし、かつ、例えば、ユーザに対する診断／警告情報を生成する。
【００２７】
暗号化署名が真正である場合（ブロック１０４からＹｅｓ）、この方法は、ソフトウェアプラットホーム１０でのタイプ情報の登録で継続し（ブロック１０８）、かつ登録されたタイプ情報に適合するソフトウェアアプリケーション１２によるプラットホームアクセスを許可する（ブロック１１０）。この最終「ステップ」あるいは動作は、ソフトウェアプラットホーム１０へのソフトエアアプリケーション１２自身のアクセスが登録されたタイプ情報に適合することを保証するために、ソフトウェアアプリケーション１２の実行中に動作する継続あるいは続行処理として理解することができる。ここで、登録されたタイプ情報に「適合する」アクセスは、タイプとパラメータ群が、特定のソフトウェアアプリケーション１２に対して暗号的に認証されかつ登録されているタイプ情報に完全に照合する、一致する、あるいはそうでなければ、適合するアクセスとして理解することができる。
【００２８】
これらのアクセス制約群を理解するために、少なくとも１つの実施形態では、ソフトウェアアプリケーション１２によってなされるプラットホームアクセスに対して、ソフトウェアアプリケーション１２から暗号化署名済タイプ情報を受信することは、署名済データタイプ情報と署名済メソッドタイプ情報を受信することを含んでいる。つまり、ソフトウェアアプリケーション１２は、使用することになるデータタイプを登録しなければならず、また、呼び出すことになるあるいはそうでなければ起動することになるメソッドを登録しなければならず、これには、これらの起動に関与する呼出と応答の引数タイプの識別を含んでいる。つまり、受信したタイプ情報の暗号化情報が真正であるかどうかの判定は、データタイプ情報に対する１つ以上の暗号化署名と、メソッドタイプ情報に対する１つ以上の暗号化署名とを検証するソフトウェアプラットホーム１０を含んでいる。これに関しては、使用されるべき各データ、起動されるべき各メソッドが、別々の暗号化署名、例えば、ソフトウェアプラットホーム１０に既知のシークレットキーデータを使用する、データタイプあるいはメソッドタイプ依存暗号化ハッシュを含むことができることが理解されるべきである。
【００２９】
更なる例では、ソフトウェアアプリケーション１２によってなされるプラットホームアクセスに対して、ソフトウェアアプリケーション１２から暗号化署名タイプ情報を受信することは、ソフトウェアプラットホーム１０が１つ以上のヒープデータタイプ登録メッセージ群を受信することを含んでいる。このメッセージ（群）は、ソフトウェアアプリケーション１２によって使用されることになるヒープデータタイプ群の登録時に、ソフトウェアプラットホームによって使用するための、暗号化署名済ヒープデータタイプ登録情報を含んでいる。このソフトウェアプラットホーム１０は、これに対応して、登録されたヒープデータタイプ群を参照するために、ソフトウェアアプリケーション１２へ１つ以上のヒープデータタイプ「ハンドル群」（ポインタ群あるいは他の識別子群）を返信するように構成されている。ソフトウェアアプリケーション１２のランタイム実行中に、ソフトウェアプラットホーム１０は、ヒープデータタイプ群のソフトウェアアプリケーション１２によってリクエストされるインスタンス化を検証するために、かつこれらのヒープデータタイプ群のインスタンス群への、ソフトウェアアプリケーション１２によるプラットホームメモリアクセス群を検証するために、登録されたヒープデータタイプ群を使用する。
【００３０】
更に、また、少なくとも一実施形態では、ソフトウェアプラットホーム１０は、ソフトウェアプラットホーム１２から受信されるタイプ情報の一部として、１つ以上のメソッドタイプ登録メッセージ群を受信する。このような受信した情報は、ソフトウェアアプリケーション１２によって起動されるメソッドタイプ群の登録時に、ソフトウェアプラットホーム１０によって使用するための暗号化署名メソッドタイプ登録情報を含んでいる。これに対応して、ソフトウェアプラットホーム１０は、登録されたメソッドタイプ群（ランタイプメソッド起動時に）を参照するために、ソフトウェアプラットホーム１２へ１つ以上のメソッドタイプハンドル群を返信するように構成されている。
【００３１】
つまり、ソフトウェアプラットホーム１０にタイプ情報を登録することには、このような実施形態では、登録されたデータタイプ情報と登録されたメソッドタイプ情報とをそれぞれ生成するために、データタイプ情報の登録とメソッドタイプ情報の登録とを含んでいる。更に、少なくとも１つの実施形態では、メソッドタイプ情報の登録は、各メソッドタイプが、登録されたデータタイプ群だけへの登録されたリンク群であることを検証する。つまり、プラットホーム１０は、まず、データタイプ情報を認証し、かつそれを登録し、更に、メソッドタイプ情報が登録されたデータタイプ情報と一致する場合には、メソッドタイプ情報を認証し、かつそれを登録する。
【００３２】
つまり、登録処理は、ソフトウェアアプリケーション１２にプラットホームアクセスを行うことを許容する前に、ソフトウェアアプリケーション１２によって使用されるべきデータタイプとメソッドタイプとを登録するソフトウェアプラットホーム１０として理解されるべきである。図３のブロック１１０は、登録されたメソッドタイプ情報あるいはデータタイプ情報と照合するソフトウェアアプリケーション１２によって、プラットホームメソッド起動とプラットホームメモリアクセスを許可するものとして理解することができる。逆に、特に、ソフトウェアプラットホーム１０がセキュアなあるいはそうでなければ閉じられたプラットホームである場合、例えば、移動通信デバイスで使用される場合には、登録されたタイプ情報と適合しない任意のプラットホームメソッド起動あるいはプラットホームメモリアクセスは許可されない。このような実施形態では、登録されたタイプ情報と適合するソフトウェアアプリケーション１２によるソフトウェアプラットホーム１０へのアクセスだけが許可され、これは、ソフトウェアアプリケーション１２に対するタイプ情報が信頼されていると認証されたことである基礎的な前提と一致する。
【００３３】
これに関して、ソフトウェアアプリケーション１２によって提示されるタイプ情報の暗号化署名を検証することは、上述したように、ソフトウェアプラットホーム１０によってセキュアに保持される暗号化キー情報１６に基づいている。暗号化キー情報１６は、例えば、対称キーアルゴリズムで使用することができるキーと同一のキーを備える、あるいはパブリックキーインフラストラクチャであるＰＫＩ暗号化キーデータソリューションに適合するキーと同一のキーを備える。ソフトウェアプラットホーム１０は、パブリックキー（受信したタイプ情報における署名を検証するための）とプライベートキー（登録処理の一部として、ソフトウェアプラットホーム１２へ返信されるポインタ群あるいは他の登録情報に対するランタイム署名を生成するための）との両方を含まなければならないであろう。
【００３４】
ここで、また、同一のキーとハッシュ関数群は、データタイプ情報とメソッドタイプ情報との両方を署名するために使用することができる。一方で、一方のキーはデータタイプ情報を署名するために使用することができ、もう一方のキーはヒープ情報、メソッド起動、あるいは他のタイプ情報を署名するために使用することができる。同様に、様々なハッシュ関数群を使用することができる。
【００３５】
どのような場合でも、ソフトウェアアプリケーション１２の著作者あるいはベンダーは、ソフトウェアプラットホーム１０に記憶されている、あるいはＰＫＩのパブリック／プライベートキーペア群と同一のものの一部である、同一のシークレットキーデータへのアクセスを有するので、ソフトウェアアプリケーション１２に対する合法な署名済タイプ情報を生成することができる。選択的には、所与のパーティは、機密性が与えられているそのようなキーデータの厳格な制御を保持することができるが、そのパーティによって信頼されているソフトウェアベンダー群で利用可能で合法の署名済タイプデータを作成する。これによって、これらのベンダー群に、自身のアプリケーションに含まれる署名済タイプデータでその自身のアプリケーション群を構築することを可能にする。
【００３６】
上述のソフトウェアプラットホームメソッドの実施形態とそれらの実施形態の変形は、図４に示されるデバイス２０の例示の実施形態で実現することができる。例えば、デバイス２０のプロセッサ（群）２０（プログラムとデータメモリを含む）は、ソフトウェアプラットホーム１０を構築する命令群に従って構成されるあるいはそうでなければ動作するプログラム化コンピュータとして理解することができる。
【００３７】
この状況では、ソフトウェアアプリケーション１２はデバイス２０の非信頼メモリ空間２４に常駐し、一方で、ソフトウェアプラットホーム１０はデバイス２０の信頼メモリ空間２６に常駐することがわかる（デバイス２０は、ＡＲＭ  ＴＲＵＳＴＺＯＮＥ環境あるいは他のセキュア環境を、信頼メモリ空間２６の一例として含むことができ、また、信頼メモリ空間２６は、ソフトウェアアプリケーション１２によって呼び出されるＡＰＩ機能群（メソッド群）を実行する時に使用されるヒープデータを保持するためのヒープメモリを含んでいる）。
【００３８】
本明細書で記載されるプログラム化コンピュータは、ソフトウェアアプリケーション１２によってソフトウェアプラットホーム１０へなされるアクセスをセキュアにするソフトウェアプラットホーム１０を実現する。ここで、ソフトウェアプラットホーム１０は、アプリケーションプログラムインタフェース（ＡＰＩ）レイヤ５０とアクセス制御レイヤ５２とを備える。アクセス制御レイヤ５２は、機能的には、ＡＰＩレイヤ５０と、そのＡＰＩレイヤ５０を使用するソフトウェアアプリケーション１２との間の中間物として配置される。（アクセス制御レイヤ５２は、ＡＰＩレイヤ５０と、非信頼メモリ空間２４で動作する任意の数のソフトウェアアプリケーション群との間の機能的な中間物として動作し、これによって、データ及びメソッドタイプの安全性と、これらのアプリケーション群のランタイム動作群に対する検証を提供する）。
【００３９】
この役割では、アクセス制御レイヤ５２は、ソフトウェアアプリケーション１２によってなされるプラットホームアクセスに対して、ソフトウェアアプリケーション１２からの暗号化署名タイプ情報を受信し、かつ受信したタイプ情報の暗号化署名が真正であるかどうかを判定するように構成される。アクセス制御レイヤ５２は、暗号化署名が真正である場合には、タイプ情報をソフトウェアプラットホーム１０に登録し、その後、登録したタイプ情報に適合するソフトウェアアプリケーション１２によるプラットホームアクセスを許可する。逆に、ソフトウェアアプリケーション１２に対して登録されているタイプ情報に適合しないアクセスは許可されない。ソフトウェアプラットホーム１０、及び特に、アクセス制御レイヤ５２が、図３の処理と、かつそのような処理に対して上述で説明される更なる詳細とに従って構成できることが当業者は理解するであろう。
【００４０】
もちろん、ソフトウェアアプリケーション１２が、ソフトウェアプラットホーム１０による検証のために、暗号化署名済タイプ情報を提供することによって、そのような処理を直接サポートしなければならない。対応して、ソフトウェアプラットホーム１０へのセキュアアクセスを行うために意図されるソフトウェアアプリケーション１２の生成の方法の１つは、ソフトウェアアプリケーション１２によって使用されるべきソフトウェアプラットホームデータタイプ群とメソッド群を記述するタイプ情報を生成することと、かつソフトウェアプラットホーム１０における解読処理に知られているあるいは互換性のある暗号化キーデータを使用してタイプ情報を暗号化署名することを含んでいる。この方法は、更に、暗号化署名済タイプ情報をソフトウェアアプリケーション１２に埋め込むこと、あるいはそうでなければ、バインドすることを含んでいる。これらの方法の動作は、ソフトウェアアプリケーション１２の「構築」、即ち、これらのステップ群が、配信する前にソフトウェアアプリケーション１２を作成する処理の一部であることが理解することができる。
【００４１】
上述のように、ソフトウェアプラットホーム１０による検証のためにソフトウェアプラットホーム１０へ暗号化署名済タイプ情報を提供し、それによって、暗号化署名済タイプ情報で識別されるソフトウェアプラットホームデータタイプ群とメソッド群へのアクセスを得るように、ソフトウェアアプリケーション１２を構成するためのプログラムコードもソフトウェアアプリケーション１２に含まれる。従って、ソフトウェアプラットホーム１０へのセキュアアクセスを行うためのソフトウェアアプリケーション１２に対する方法は、ソフトウェアアプリケーション１２の初期の実行あるいはローディング時（ソフトウェアプラットホーム１０による）において、暗号化署名済タイプ情報をソフトウェアプラットホーム１０へ送信し、登録されたデータ及びメソッドタイプ群に対する登録情報を受信することを備えている。つまり、ソフトウェアプラットホーム１０は、登録に対して提案されるデータ及びメソッドタイプ情報に対する登録情報をソフトウェアアプリケーション１２へ返信し、そして、ソフトウェアアプリケーション１２は、対応して、ソフトウェアアプリケーションの実行中にその登録情報を使用して、データタイプインスタンス化、メモリアクセス、及びメソッド起動のための、ソフトウェアプラットホーム１０に対するリクエスト群を生成する。上述のように、ソフトウェアプラットホーム１０によって返信される登録情報は、一実施形態では、ソフトウェアプラットホーム１０によって保持されるヒープ空間データメモリへのリンク群あるいはポインタ群を備えている。
【００４２】
図４を参照すると、暗号化署名済タイプ情報１４は、ソフトウェアアプリケーション１２に対する署名済のセキュアタイプデータを含むプロキシ群のセットとして埋め込まれることがわかる。暗号化署名済タイプ情報１４を搬送するためにこのようなプロキシ群を使用することは、特別な利点のために、制限する方法ではないが、信頼のあるタイプ情報を分散可能なソフトウェアアプリケーション群に埋め込むことを提供する。
【００４３】
特に、図５は、署名済セキュアタイプデータでプロキシ群を生成する方法を示している。特別に設計されたインタフェース記述言語（ＩＤＬ）トランスレータ６０は、ＩＤＬファイル群を、所望のアプリケーション言語（ソフトウェアアプリケーション１２に対して使用される特定の言語）に対するプロキシ群６２に変換する。ＩＤＬトランスレータ６０は、与えられ、対象とされるソフトウェアプラットホーム１０内で利用可能なデータタイプ群とメソッド群に基づいてプロキシ群６２を生成し、これは、ＩＤＬベースのプラットホームインタフェース記述群６４内に取り込まれる。ＩＤＬトランスレータ６０は、また、暗号化キーデータ６６へのアクセスを有し、この暗号化キーデータ６６は、対象とされるソフトウェアプラットホーム１０に保持される暗号化キーデータ１６と同一あるいは関連している。このように、生成されたプロキシ群６２は、対象とされるソフトウェアプラットホーム（群）１０によって後で認証することができる方法で暗号化署名される。
【００４４】
こうして、プロキシ群６２は、ソフトウェアプラットホーム１０内で利用可能なデータ及びメソッドタイプ群を搬送し、それによって、正しく署名されたタイプ情報でソフトウェアアプリケーション１２を構築するために使用することができる。ここで、ソフトウェアアプリケーション１２（図１に示される）内で搬送される暗号化署名タイプ情報１４は、プロキシ群６２の関連するサブセットだけを備えることができることに注意されたい。ここで「関連」の意味は、ソフトウェアアプリケーション１２に、ソフトウェアプラットホーム１０上でセキュリティ関連動作群を実行することを可能にするために、データ及びメソッドタイプ群のサブセットが、ソフトウェアアプリケーション１２によって使用される、つまり、ソフトウェアプラットホーム１０に登録される必要があることを意味する。
【００４５】
ソフトウェアプラットホーム１０の信頼メモリ空間内にヒープデータのインスタンスを作成することは、セキュリティに敏感な動作の一例を表していて、かつ、更に議論するための好適な基本を提供する。ヒープデータインスタンスをセキュアに作成し、かつメソッド起動内でそれを使用するために、以下の例示のステップが関与する。（１）ソフトウェアアプリケーション１２は、ヒープデータタイプ情報をソフトウェアプラットホーム１０に登録し、かつ（２）メソッドタイプ情報をソフトウェアプラットホーム１０に登録する。これに応じて、ソフトウェアプラットホーム１０は、（ヒープデータインスタンス群への）メモリアクセス群を実行するために、また、メソッド起動を実行するために（例えば、ＡＰＩファンクションコール群を行うために）、必要に応じて、ソフトウェアアプリケーション１２に対して、ヒープデータインスタンス群を割り当てる。ソフトウェアプラットホーム側での処理は、一般的には、必要に応じて（例えば、ソフトウェアアプリケーション１２の終了時）、ヒープデータの割当解除とメソッドとヒープデータタイプ情報の登録解除とまでに及ぶ。
【００４６】
仮想のプラットホームメソッドは、実行例として使用することができる。例えば、１つには、以下で定義される、エリクソンのＩＤＬで記述される、「ＩＣｌｏｃｋ：：ＳｅｔＴｉｍｅ」として示される方法を使用することができる。
【００４７】
...
interface IClock ...
{
...
RVoid SetTime ( [m] TTime* pTime) ;
...
}
構造体タイプＴＴｉｍｅは、以下のように定義される（ＦＵｎｉｔ８は、未署名の８ビット整数タイプである）。
【００４８】
typedef struct {
Funit8 Hours;
Funit8 Minutes;
Funit8 Seconds;
Tdate *pDate;
} TTime;
ＰＤａｔｅ要素は、以下で定義される、ＴＤａｔｅのインスタンスをポイントする。
【００４９】
typedef struct {
Funit16 Year;
Funit8  Month;
Funit8  Day;
} TDate;
それゆえ、ソフトウェアアプリケーション１２は、ＴＤａｔｅとＴＴｉｍｅインスタンスを割り当てること、それらを正しい時間で投入すること、そして、ＳｅｔＴｉｍｅ（）の起動において投入されたＴＴｉｍｅインスタンスへポインタを渡すことを担当する。対応して、ソフトウェアプラットホーム１０は、ＩＣｌｏｃｋ：：ＳｅｔＴｉｍｅ起動において、パラメータｐＴｉｍｅが有効なＴＴｉｍｅインスタンスをポイントする（あるいは特定値ＮＵＬＬを有している）ことのランタイム検証を実行しなければならない。また、ソフトウェアプラットホーム１０は、ＴＴｉｍｅタイプインスタンスへの書込アクセスにおいて、ｐＤａｔｅ要素値が有効なＴＤａｔｅインスタンスをポイントする（あるいはＮＵＬＬである）ことを検証しなければならない。
【００５０】
もちろん、ソフトウェアプラットホーム１０によるこれらのランタイム検証は、ソフトウェアアプリケーション１２に対する実行の発生前あるいは発生時の、適切なデータ及びメソッドタイプ情報の登録に依存する。詳細な例では、ソフトウェアアプリケーション１２は、まず、ヒープデータタイプ情報をソフトウェアプラットホーム１０に登録するように構成される。ソフトウェアアプリケーション１２は、例えば、図４に示される非信頼メモリ空間２４へロードされる際に、ヒープタイプ情報をソフトウェアプラットホーム１０へ送信する。このソフトウェアプラットホーム１０は、ソフトウェアアプリケーション１２によるヒープデータタイプ群の後続するランタイムインスタンス化と、これらのインスタンスへのソフトウェアアプリケーション１２によるメモリアクセスを検証することが十分に可能である。
【００５１】
初期の登録の一部としてソフトウェアアプリケーション１２によってソフトウェアプラットホーム１０に提供されるデータタイプ情報（以下では、「ヒープタイプ（heaptype）」と呼ばれる）は、例えば、データタイプのサイズ、バイトで；ペア群のセット、１つは、タイプ内の各ポインタ有効メンバに対するもの、これは、タイプ内のメンバのオフセット（バイト群）と参照される値を記述するヒープタイプへのリファレンスを含んでいる。リーフデータタイプ（即ち、これ以上のリファレンス群を含まないタイプ）に対しては、ポインタメンバ群のセットは空である。
【００５２】
実世界でのソフトウェアアプリケーション１２で使用される実際のデータ構造は変化するものであり、クロックタイム（clock time）例に対する例示のデータ構造は、以下のように与えられる。
【００５３】
heaptypeTDate=＜4,{}＞, and
heaptypeTTime=＜8,{＜4, heaptypeTDate＞}＞
これらの例は、３２ビットサイズで、また、３２ビット境界でさえも記憶されるポインタ群と想定する。このような制約群は、（ソフトウェアプラットホーム１０の）デバイスプラットホーム（例えば、ＡＲＭ、ｘ８６、．．．）に専用であり、また、ＩＤＬ変換時点にわかる。
【００５４】
どのような場合でも、タイプ情報登録は、以下の形式で、メッセージをソフトウェアアプリケーション１２からソフトウェアプラットホーム１０へ送信することによって実行することができる。
【００５５】
REGISTER_HEAPTYPE(size, N, Offset1, heaptype1,
..., offsetN, heaptypeN, Sheaptype)
応答では、ソフトウェアプラットホーム１０は、ヒープタイプハンドルを、登録されたヒープタイプを参照するソフトウェアアプリケーション１２へ返信する。（これは、タイプ情報と署名への単なるポインタとして、あるいはいくつかの他の方法で実現することができる。）署名Sheaptypeは、以下のように（例えば、図５のＩＤＬトランスレータ６０によって）計算される。
【００５６】
Sheaptype=fsign(K, size, N,
offset1, Sheaptype_1,..., and
offsetN, Sheaptype_N
ここで、Ｈｅａｐｔｙｐｅiは、ソフトウェアアプリケーション１２が参照されたヒープタイプ群をソフトウェアプラットホーム１０へ首尾よく登録することによって取得されるヒープタイプハンドル群である。この実施形態を用いると、与えられるヒープタイプ（heaptype）は、参照されるヒープタイプ群のすべてがインストールされるまで登録することができない。
【００５７】
次に、この署名は、ＲＥＧＩＳＴＥＲ＿ＨＥＡＰＴＹＰＥメッセージを受信する時に、ソフトウェアプラットホーム１０によるランタイム時に検証することができる。返信されるヒープタイプリファレンスは、参照されるタイプ情報の署名を検証することによって後で使用する時に検証することができる。
【００５８】
ソフトウェアアプリケーション１２が上述のようにデータタイプ情報を一旦登録すると、メソッドタイプ情報を登録することができる。メソッドタイプ登録の目的は、ソフトウェアプラットホーム１０に、十分な情報を提供して、ソフトウェアアプリケーション１２によってソフトウェアプラットホーム１０になされるメソッド起動の呼出群の完全性のランタイム検証を実行することである。
【００５９】
エリクソンＯＰＡプラットホームとエリクソンＩＤＬコンテキスト群内からの例を継続すると、タイプ情報は、次の要素群からなる：「ＵＵＩＤ」、これは、インタフェース、例えば、ＩＣｌｏｃｋインタフェースを固有に識別する１２８ビットインタフェースアイデンティティである；インタフェース内のメソッドを固有に識別する整数値からなるメソッドインデックス；パラメータ群のそれぞれに対するタイプ記述子；及び、検証用の署名である。ここで、ヒープデータタイプに対するタイプ記述子は、ヒープタイプであることに注意されたい。また、用語「パラメータ」は、本明細書では、メソッド起動で関与する、３２ビット値のロウシーケンス（raw sequence）を指している（スタックコンテンツ）。各メソッドパラメータは、１つのこのような３２ビット値（あるいは、６４ビットタイプにた対しては、２つの値）によって表される。
【００６０】
一実施形態では、タイプ情報登録は、以下の形式で、メッセージを、ソフトウェアアプリケーション１２からソフトウェアプラットホーム１０へ送信することによって実行される。
【００６１】
REGISTER_METHODTYPE(UUID, index, N, arg_descr1,..., arg_descrN, Smethod)
ここで、Ｓmethodは、以下の式で（図５のＩＤＬトランスレータ６０によって）計算される署名である。
【００６２】
Smethod=f(K, UUID, index, N, Sheaptype_1,... Sheaptype_N)
この署名Ｓheaptype_Xの使用は、ここでは、メソッドパラメータ群がヒープポインタ群であることを意味する。スカラーデータタイプ群に対する署名は、プレースホルダー（代替物）、例えば、０で表現することができ、また、「Ｋ」は、図５に示される暗号化キーデータ６６が、署名検証用にソフトウェアプラットホーム１０で使用されるデータと同一である、あるいはそうでなければ、署名検証用にソフトウェアプラットホーム１０で使用されるデータにセキュアに関連していることを理解するであろう。関数ｆは、例えば、適切な暗号属性群を有するハッシュ関数であり、また、整数Ｎは、引数リスト内の３２ビット値の数であることを示している。
【００６３】
ソフトウェアアプリケーション１２から上述のメッセージをソフトウェアプラットホーム１０が受信すると、ソフトウェアアプリケーション１２へ対応するリファレンスを返信する（ソフトウェアプラットホーム１０による署名検証が成功していると想定する）。効果的で単純な実装では、ソフトウェアプラットホーム１０は、信頼メモリ空間２６内のＲＥＧＩＳＴＥＲ＿ＭＥＴＨＯＤＴＹＰＥメッセージの内容を記憶し、かつその位置（ロケーション）へポインタを返信する。もちろん、他の実装が使用されても良く、どのような場合でも、１つのタイプ情報が一旦登録されると、この方法は、任意の回数で、ソフトウェアアプリケーション１２によって起動することができる。それゆえ、この登録ステップは、一度だけ、ソフトウェアアプリケーション１２によって実行される必要がある（典型的には、アプリケーションスタート時あるいはプロキシロード時）。
【００６４】
上述の登録が首尾よく完了すると、ソフトウェアプラットホーム１０は、自身のランタイム動作中に、ソフトウェアアプリケーション１２によるリクエスト群をサポートすることが必要とされるので、ヒープデータインスタンス群を、これらのリクエスト群が登録されたタイプ情報と適合する範囲に少なくとも割り当てる。特定の例では、ヒープデータインスタンスの割当は、以下の形式で、メッセージをソフトウェアアプリケーション１２からソフトウェアプラットホーム１０へ渡すことによって実行される。
【００６５】
HEAP_ALLOC(heaptype)
ここで、ｈｅａｐｔｙｐｅは、事前に登録された有効なヒープタイプを同定する。割り当てられたヒープデータインスタンスは、実際のヒープデータインスタンスに割り当てられているメモリエリア外で記憶されている、ヒープタイプへのリファレンスを含んでいる。一実施形態では、このリファレンスは、インスタンスの直前に記憶され、また、別の実施形態では、リファレンスは、インスタンスの直後に記憶される。
【００６６】
どのような場合でも、ソフトウェアプラットホーム１０は、指示されるヒープタイプのリファレンスが有効であること（自身の署名を検証することによって）を検証し、かつ割り当てられたメモリへのポインタをソフトウェアアプリケーション１２へ返信する。新規に割り当てられたヒープインスタンスは、自身のコンポーネント群に対して明確な初期値を有していて、特に、すべてのポインタ群は、値ＮＵＬＬであるとする。図６Ａと図６Ｂは、上述のｃｌｏｃｋ関連例のコンテキストを使用する割当例を示している。特に、図６ＡはＴＴｉｍｅインスタンスに対する署名済ポインタの例を示していて、ここで、リファレンスはインスタンスの直前に記憶されている。図６Ｂは、ＴＴｉｍｅインスタンスに対する署名済ポインタの例を示していて、ここで、リファレンスはインスタンスの直後に記憶されている。
【００６７】
関連例では、図７は、ＴＴｉｍｅ構造のヒープインスタンス割当の結果を示している。特に、図７は、ＴＴｉｍｅｈｅａｐｔｙｐｅ（ヒープタイプ）へのリファレンスと一緒に配置されている、（プラットホーム）メモリ内のＴＴｉｍｅヒープインスタンスを示している。また、ＴＴｉｍｅｈｅａｐｔｙｐｅ（ヒープタイプ）は、ＴＤａｔｅタイプを参照している。
【００６８】
更なる詳細例は、ソフトウェアプラットホーム１０のメモリ空間から／へのソフトウェアアプリケーション１２によるメモリ読出及び書込に関連する。特定の例は、メモリ書込動作に対して与えられ、また、当業者は、同様の動作をメモリ読出に適用することを理解するであろう。割当られたヒープデータインスタンスへのメモリ書込アクセスは、以下の形式で、メッセージをソフトウェアアプリケーション１２からソフトウェアプラットホーム１０へ渡すことによって実行される。
【００６９】
HEAP_WRITE(p, heaptype, offset, data)
ここで、ｐはＨＥＡＰ＿ＡＬＬＯＣ動作から取得されるポインタ値であり、ｈｅａｐｔｙｐｅは割当のために使用されるヒープタイプであり、ｏｆｆｓｅｔは書込対象のヒープ要素内の相対的位置であり、ｄａｔａは参照される位置（ロケーション：location）で記憶するためのバイト群のセットである。ソフトウェアプラットホーム１０が、提供されるヒープタイプがポインタが示すヒープタイプに合致することを検証し、かつ書込対象のデータ量が割当られる構造内に収まるかを検証した後、書込動作が実行される。
【００７０】
更なる詳細例として、メソッド起動が、以下の形式で、メッセージをソフトウェアアプリケーション１２からソフトウェアプラットホーム１０へ渡すことによって実行することができる。
【００７１】
INVOKE(iptr, index, methodtype, N, arg1,..., argN)
ここで、ｉｐｔｒは呼び出されるインタフェースインスタンスであり、ｉｎｄｅｘはメソッドを同定し、ｍｅｔｈｏｄｔｙｐｅは登録されたタイプ情報を参照し、Ｎは３２ビット引数の数を示し、そして、ａｒｇ1,..., ａｒｇNは３２ビット引数値群である。
【００７２】
このメッセージを受信すると、ソフトウェアプラットホーム１０は以下の動作を行う。：識別されるメソッドタイプが実際に有効であることを検証する（即ち、署名をチェックする）；インタフェースポインタｉｐｔｒからインタフェースＵＵＩＤを推定し、かつそれが参照されるメソッドタイプにおけるＵＵＩＤと照合するかを検証する。：メソッドタイプを検査し、かつ各ポインタ引数が指示されるタイプのものであることを（割当られたデータに埋め込まれているヒープタイプを使用して）検証する。引数タイプ群が正しい場合、メソッドが起動される。このメソッドの実施形態は、任意のポインタ群が正しいタイプの有効なインスタンス群を実際にポイントすることを検証することに注意されたい。また、このような処理は、インタフェースポインタから参照されるインタフェースのＵＵＩＤを推定することを可能にすることを想定することに注意されたい。（これは、例えば、ＵＵＩＤに仮想メソッドテーブルに含めることによって実行することができる）。
【００７３】
このｉｐｔｒ引数は、コンポーネントインスタンスのインタフェースを参照し、かつ実際のインスタンスをポイントしていることの検証が必要とされる。このようなコンポーネント群は、アプリケーションのメソッド呼出群に応じて、ソフトウェアプラットホーム１０によってヒープ上で暗黙的に作成され、かつ上述と同一のヒープ割当及び検証メカニズムを使用することによって保護することができる。
【００７４】
追加の機能群は、例えば、アプリケーションの終了時のメモリクリーンアップに対してあるいは必要に応じて、ソフトウェアプラットホーム１０によってサポートすることができる。一例では、ソフトウェアプラットホームのメモリ空間内のヒープデータの割当解除を介在する。一実施形態では、ヒープデータインスタンスの割当解除は、以下の形式で、メッセージをソフトウェアアプリケーション１２からソフトウェアプラットホーム１０へ渡すことによって実行される。
【００７５】
HEAP_DEALLOC(p),
ここで、タグとサイズパラメータ群は、ＨＥＡＰ＿ＡＬＬＯＣメッセージに対するものと同一である。関連する機能群は、メソッドとヒープデータタイプ情報の登録解除を含んでいる。ソフトウェアアプリケーション１２に対して、ソフトウェアプラットホームによって従前に登録されているタイプ情報の登録解除は、以下の形式で、メッセージをソフトウェアアプリケーション１２からソフトウェアプラットホーム１０へ渡すことによって実行される。
【００７６】
DEREGISTER_METHODTYPE(methodtype), and
DEREGISTER_HEAPTYPE(heaptype)
これらの登録解除は、割り当てられたメモリを再利用するためだけに必要とされ、また、必要に応じて、アプリケーション終了時、アプリケーション側のプロキシクラスのガーベジコレクション時、あるいはメソッド起動とアプリケーション終了との間の任意の他の時点に実行することができる。ここでも、タイプ情報を登録解除することは、メモリ内の任意の関連する署名を無効にすることを意味することに注意されたい。
【００７７】
これらの例が限定するものでないことを考慮して、本明細書で提案される方法及び装置は、所与のソフトウェアプラットホーム内で静的な取り得るデータタイプ群のすべてに対してタイプ情報を埋め込む「伝統的な」ランタイムシステム以上の大きな効果を提供する。取り得るタイプ情報のすべてを埋め込むことは、著しくメモリを消費する（例えば、望ましくない量のフラッシュメモリ）、その結果、柔軟性を損失することになる。つまり、ソフトウェアプラットホーム自身に埋め込まれる固定のタイプ情報を用いると、ソフトウェアアプリケーション群によるリモートアクセスに対して、どのデータタイプ群及びインタフェース群をサポートするかの慎重な決定を行わなければならないことになる。このような決定を見直すことは、ソフトウェアプラットホームを再構築することを要求することになる。
【００７８】
これに対して、本明細書で開示される教示は、要求されるタイプ情報を信頼があり検証可能なタイプ情報としてソフトウェアアプリケーション１２内に埋め込んでいる。この信頼があり検証可能なタイプ情報は、ソフトウェアアプリケーション１２によってなされるランタイムプラットホームアクセスをセキュアにする（安全にする）ためのソフトウェアプラットホーム１０によって使用されるものである。このようなタイプ情報は、ランタイムで、ソフトウェアプラットホーム１０へ転送されなければならないが、オーバヘッドは、その特定のソフトウェアアプリケーション１２によって確実に使用されるインタフェース群とデータタイプ群に制限される（全体で定義される範囲のデータタイプ群及び機能群ではなく）。また、追加のインタフェース群は、新規の追加のインタフェース群を含めるために、ソフトウェアプラットホームを再構築することなく信頼のあるＩＤＬトランスレータ６０（図５）を実行することによって、あるいはいくつかの他の改善されたタイプ情報の生成を実行することによってサポートすることができる。
【００７９】
つまり、本明細書で提示される教示は、サードパーティアプリケーション環境群、例えば、ウェブアプリケーション群あるいはＷＥＢＫＩＴで動作するウィジット群、ＪＡＶＡ  ＭＩＤｌｅｔ群等に対して、総合的なセキュリティアーキテクチャにおける不可欠なコンポーネントを表している。この教示は、また、セキュリティに敏感なインタフェース群が信頼のないアプリケーション群によってアクセスされないことを補償するために、アプリケーション群の署名と組み合わせることができる。
【００８０】
もちろん、当業者は、この使用が限定するものでないことを認識するであろう。事実、本発明は、上述の説明と図面に制限されるものではない。むしろ、本発明は、添付の請求項とそれらの法的な等価物によってのみ制限されるものである。
【図１】
2012506584.tif 000003
【図２】
2012506584.tif 000004
【図３】
2012506584.tif 000005
【図４】
2012506584.tif 000006
【図５】
2012506584.tif 000007
【図６Ａ】
2012506584.tif 000008
【図６Ｂ】
2012506584.tif 000009
【図７】
2012506584.tif 000010
【手続補正書】
【提出日】平成22年8月24日(2010.8.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアプラットホームにおける、ソフトウェアアプリケーションによって前記ソフトウェアプラットホームになされるアクセスにおける型の安全性をセキュアにする方法であって、
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップと、
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するステップと、
前記暗号化署名が真正である場合、前記タイプ情報を前記ソフトウェアプラットホームに登録するステップと、
前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可するステップと
を備えることを特徴とする方法。
【請求項２】
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップは、署名済データタイプ情報と署名済メソッドタイプ情報とを受信することを含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するステップは、前記データタイプ情報に対する１つ以上の暗号化署名と、前記メソッドタイプ情報に対する１つ以上の暗号化署名を検証することを含んでいる
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記タイプ情報を前記ソフトウェアプラットホームに登録するステップは、前記データタイプ情報を登録し、かつ前記メソッドタイプ情報を登録して、登録されたデータタイプ情報と登録されたメソッドタイプ情報とを生成することを含み、
前記メソッドタイプ情報の登録は、各メソッドタイプが登録されたデータタイプ群だけへの登録されたリンク群であるかを検証することを含んでいる
ことを特徴とする請求項２に記載の方法。
【請求項５】
前記タイプ情報を前記ソフトウェアプラットホームに登録するステップは、データタイプ情報とメソッドタイプ情報とを登録することを含み、
前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可するステップは、登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致するプラットホームメソッド起動とプラットホームメモリアクセスとを許可し、かつ登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致しないプラットホームメソッド起動とプラットホームメモリアクセスとを許可しない
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するステップは、前記ソフトウェアプラットホームによってセキュアに保持される暗号化キー情報に基づいて、前記暗号化署名を検証することを含み、
前記暗号化キー情報は、対称シークレットキーペアデータあるいはパブリックキーインフラストラクチャであるＰＫＩの暗号化キーデータの１つを備える
ことを特徴とする請求項１に記載の方法。
【請求項７】
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップは、前記ソフトウェアアプリケーションによって使用されることになるヒープデータタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済ヒープデータタイプ登録情報を含む１つ以上のヒープデータタイプ登録メッセージを受信し、かつ登録されるヒープデータタイプ群を参照するための１つ以上のヒープデータタイプハンドルを前記ソフトウェアアプリケーションへ返信することを含んでいる
ことを特徴とする請求項１に記載の方法。
【請求項８】
前記ソフトウェアプラットホームは、ヒープデータタイプ群の前記ソフトウェアアプリケーションによってリクエストされる命令群を検証し、かつ前記ヒープデータタイプ群のインスタンス群への前記ソフトウェアアプリケーションによるプラットホームメモリアクセスを検証するために、前記登録されているヒープデータタイプ群を使用する
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信するステップは、前記ソフトウェアアプリケーションによって起動されるメソッドタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済メソッドタイプ登録情報を含む１つ以上のメソッドタイプ登録メッセージを受信し、かつ登録されているメソッドタイプ群を参照するための１つ以上のメソッドタイプハンドルを前記ソフトウェアアプリケーションへ返信することを含んでいる
ことを特徴とする請求項７に記載の方法。
【請求項１０】
ソフトウェアアプリケーションによって、ソフトウェアプラットホームになされるアクセスにおける型の安全性をセキュアにする前記ソフトウェアプラットホームを実現するようにプログラムされたコンピュータであって、
前記ソフトウェアプラットホームは、
アプリケーションプログラムインタフェースであるＡＰＩレイヤと、前記ＡＰＩレイヤと該ＡＰＩレイヤを使用するソフトウェアアプリケーション群との間の中間物として機能的に配置されるアクセス制御レイヤとを備え、
前記アクセス制御レイヤは、
前記ソフトウェアアプリケーションによってなされるプラットホームアクセスに対して、前記ソフトウェアアプリケーションから暗号化署名済タイプ情報を受信し、
前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定し、
前記暗号化署名が真正である場合、前記タイプ情報を前記ソフトウェアプラットホームに登録し、かつ
前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可する
ように構成されている
ことを特徴とするコンピュータ。
【請求項１１】
前記アクセス制御レイヤは、署名済データタイプ情報と署名済メソッドタイプ情報とを前記暗号化署名済タイプ情報として受信するように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１２】
前記アクセス制御レイヤは、前記データタイプ情報に対して受信される１つ以上の暗号化署名と、前記メソッドタイプ情報に対して受信される１つ以上の暗号化署名を検証することによって、前記受信したタイプ情報の前記暗号化署名が真正であるかどうかを判定するように構成されている
ことを特徴とする請求項１１に記載のコンピュータ。
【請求項１３】
前記アクセス制御レイヤは、前記データタイプ情報を登録し、かつ前記メソッドタイプ情報を登録して、登録されたデータタイプ情報と登録されたメソッドタイプ情報とを生成するために、前記ソフトウェアプラットホームに前記タイプ情報を登録するように構成され、
前記アクセス制御レイヤは、各メソッドタイプが登録されたデータタイプ群だけへの登録されたリンク群であるかを検証するように構成されている
ことを特徴とする請求項１１に記載のコンピュータ。
【請求項１４】
前記アクセス制御レイヤは、データタイプ情報とメソッドタイプ情報とを登録することによって前記タイプ情報を前記ソフトウェアプラットホームに登録するように構成され、
前記アクセス制御レイヤは、登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致するラインタイムプラットホームメソッド起動とランタイムプラットホームメモリアクセスとを許可することによって、前記登録されたタイプ情報と適合する前記ソフトウェアアプリケーションによるプラットホームアクセスを許可し、かつ登録されたメソッドタイプ情報と登録されたデータタイプ情報と合致しないランタイムプラットホームメソッド起動とランタイムプラットホームメモリアクセスとを許可しないことによって、前記登録されたタイプ情報と適合しない前記ソフトウェアアプリケーションによるプラットホームアクセスを許可しないように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１５】
前記アクセス制御レイヤは、前記ソフトウェアプラットホームによってセキュアに保持される暗号化キー情報に基づいて前記暗号化署名を検証することによって、前記受信したタイプ情報の暗号化署名が真正であるかどうかを判定するように構成されていて、
前記暗号化キー情報は、対称シークレットキーペアデータあるいはパブリックキーインフラストラクチャであるＰＫＩの暗号化キーデータの１つを備える
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１６】
前記アクセス制御レイヤは、前記ソフトウェアアプリケーションによって使用されることになるヒープデータタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済ヒープデータタイプ登録情報を含む１つ以上のヒープデータタイプ登録メッセージを前記暗号化署名済タイプ情報として受信するように構成され、かつ
前記アクセス制御レイヤは、登録されるヒープデータタイプ群を参照するための１つ以上のヒープデータタイプハンドルを前記ソフトウェアアプリケーションへ返信するように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項１７】
前記アクセス制御レイヤは、ヒープデータタイプ群の前記ソフトウェアアプリケーションによってリクエストされる命令群を検証し、かつ前記ヒープデータタイプ群のインスタンス群への前記ソフトウェアアプリケーションによるプラットホームメモリアクセスを検証するために、前記登録されているヒープデータタイプ群を使用するように構成されている
ことを特徴とする請求項１６に記載のコンピュータ。
【請求項１８】
前記アクセス制御レイヤは、前記ソフトウェアアプリケーションによって起動されるメソッドタイプ群の登録時に前記ソフトウェアプラットホームによって使用するための暗号化署名済メソッドタイプ登録情報を含む１つ以上のメソッドタイプ登録メッセージを前記暗号化署名済タイプ情報として受信するように構成され、かつ
前記アクセス制御レイヤは、登録されているメソッドタイプ群を参照するための１つ以上のメソッドタイプハンドルを前記ソフトウェアアプリケーションへ返信するように構成されている
ことを特徴とする請求項１６に記載のコンピュータ。
【請求項１９】
前記コンピュータは、無線通信デバイスにおける処理要素を備え、
前記ソフトウェアプラットホームの前記アクセス制御レイヤは、前記無線通信デバイスにダウンロードされるあるいはインストールされるソフトウェアアプリケーション群に対する前記ソフトウェアプラットホームの前記ＡＰＩレイヤへのセキュアなアクセスを提供するように構成されている
ことを特徴とする請求項１０に記載のコンピュータ。
【請求項２０】
ソフトウェアプラットホームへのアクセスにおける型の安全性をセキュアにするように意図されているソフトウェアアプリケーションを生成する方法であって、
前記ソフトウェアアプリケーションによって使用されるべき、ソフトウェアプラットホームのデータタイプ群とメソッド群とを記述するタイプ情報を生成するステップと、
前記ソフトウェアプラットホームにおける解読処理に知られているあるいは互換性のある暗号化キーデータを使用して前記タイプ情報を暗号化署名するステップと
前記暗号化署名済タイプ情報を前記ソフトウェアアプリケーションに埋め込むあるいはバンドルするステップと
を備えることを特徴とする方法。
【請求項２１】
前記ソフトウェアプラットホームによる検証のために、前記暗号化署名済タイプ情報を前記ソフトウェアプラットホームへ提供し、それによって、前記暗号化署名済タイプ情報で識別されるソフトウェアプラットホームのデータタイプ群とメソッド群へのアクセスを行うように前記ソフトウェアアプリケーションを構成するステップを更に備える
ことを特徴とする請求項２０に記載の方法。
【請求項２２】
ソフトウェアプラットホームへのアクセスにおける型の安全性をセキュアにするソフトウェアアプリケーションのための方法であって、
前記ソフトウェアアプリケーションの初期実行あるいはローディング時に、暗号化署名済タイプ情報を前記ソフトウェアプラットホームへ送信し、登録されたデータ及び登録されたメソッドタイプ群に対する登録情報を受信するステップであって、前記暗号化署名済タイプ情報は、前記ソフトウェアアプリケーションによって使用されるべきプラットホームデータとメソッドタイプ群とを識別する、ステップと、
前記ソフトウェアアプリケーションの実行中に前記登録情報を使用して、データタイプインスタンス化、メモリアクセス、及びメソッド起動に対する前記ソフトウェアプラットホームへのリクエスト群を生成するステップと
を備えることを特徴とする方法。
【請求項２３】
前記登録情報は、前記ソフトウェアプラットホームによって保持されるヒープ空間データメモリへのリンク群あるいはポインタ群を備える
ことを特徴とする請求項２２に記載の方法。
【国際調査報告】
2012506584.tif 000011
2012506584.tif 000012
2012506584.tif 000013