(57)【要約】【課題】電子装置にプログラム状態データをセキュアに記憶する方法を提供する。【解決手段】本発明は、電子装置(100)の実行環境(110)へのプログラム情報が得られる方法に係る。プログラム情報は、少なくともプログラムコード(121)を含む。プログラム情報及び装置特有のシークレット値(114)のキーが計算される。このキーを使用して、実行環境(110)においてプログラム特有の状態データ(170)を解読し、そして実行の後に変更された状態データを暗号化する。【選択図】図１
2010514000.tif 000002
【特許請求の範囲】
【請求項１】
電子装置に含まれた実行環境へのプログラム情報を得るステップであって、前記プログラム情報が少なくともプログラムコードを含むものであるステップと、
前記プログラム情報の少なくとも一部分及び前記電子装置特有のシークレット値のコンフィデンシャルキーを計算するステップと、
前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用するステップであって、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含むようなステップと、
を備えた方法。
【請求項２】
前記方法は、更に、
前記プログラムコードを第２の入力データエレメント及び前記第１の入力データエレメントで実行して、前記実行環境に第２の出力データエレメントを発生するステップと、
前記第２の入力データエレメント、前記第２の出力データエレメント及び前記プログラム情報の第２ハッシュを計算するステップと、
前記第２のハッシュを第２のプライベートキーで暗号化して結果のシグネチャーを発生するステップであって、前記第２のプライベートキーは、前記実行環境に関連したものであるステップと、
を備えた請求項１に記載の方法。
【請求項３】
前記方法は、更に、
ネットワークノードへの前記プログラム情報を得るステップと、
前記ネットワークノードに第２の入力データエレメントを発生するステップと、
前記プログラム情報及び前記第２の入力データエレメントを前記電子装置に与えるステップと、
前記電子装置から前記ネットワークノードへの第２の出力データエレメントを得るステップと、
前記ネットワークノードにおいて前記結果のシグネチャーを検証して、前記プログラム情報に含まれたプログラムコードが前記電子装置において実行されたことを決定するステップと、
を備えた請求項１又は２に記載の方法。
【請求項４】
前記方法は、更に、
前記ネットワークノードが前記第２出力データエレメントから制御情報を抽出し、
前記ネットワークノードが前記制御情報で装置を制御する、
ことを含む請求項３に記載の方法。
【請求項５】
前記方法は、更に、
前記プログラム情報において、プログラムコード、第１のパブリックキー、プログラム名、バージョン番号及びシグネチャーを前記実行環境に与えるステップと、
前記シグネチャーを、第１のプライベートキーに関連した前記第１のパブリックキーでチェックするステップと、
少なくとも前記第１のパブリックキー、前記プログラム名及び前記バージョン番号から第１のハッシュを計算するステップと、
前記プログラムコードを実行するために前記第１の入力情報エレメントを前記実行環境に与えるステップと、
前記第１のハッシュ及び前記電子装置特有の前記シークレット値からコンフィデンシャルキーを一方向ファンクションで計算するステップと、
前記第１入力情報エレメントを前記コンフィデンシャルキーで解読するステップと、
前記実行環境において前記第１情報エレメントを変更するステップと、
前記第１出力情報エレメントを前記コンフィデンシャルキーで暗号化するステップと、
を備えた請求項１から４のいずれかに記載の方法。
【請求項６】
前記方法は、更に、
前記プログラムコードを得るステップと、
前記プログラムコードに前記第２のパブリックキー、前記プログラム名及び前記バージョン番号を付与して、第２のデータオブジェクトを発生するステップと、
前記第２のデータオブジェクトに前記第１のパブリックキーでサインして、前記シグネチャーを得るステップと、
を備えた請求項５に記載の方法。
【請求項７】
前記第１入力データエレメントは、前記プログラムコードに関連した状態情報を含む、請求項５に記載の方法。
【請求項８】
前記コンフィデンシャルキーは、シンメトリーのキーである、請求項１から７のいずれかに記載の方法。
【請求項９】
前記実行環境は、移動ノードにおけるセキュアな環境である、請求項１から８のいずれかに記載の方法。
【請求項１０】
少なくともプログラムコードを含むプログラム情報を得、前記プログラム情報の少なくとも一部分及び電子装置特有のシークレット値のコンフィデンシャルキーを計算し、そして前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用し、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含む、というように構成された実行環境を備えた電子装置。
【請求項１１】
前記電子装置は、更に、前記実行環境が前記プログラムコードを第２の入力データエレメントで実行するように構成され、そして前記第１入力データエレメントが、前記実行環境において第２の出力データエレメントを発生し、前記第２の入力データエレメント、前記第２の出力データエレメント及び前記プログラム情報の第２ハッシュを計算し、そして前記第２ハッシュを第２のプライベートキーで暗号化して結果のシグネチャーを発生し、前記第２のプライベートキーは、前記実行環境に関連したものである、請求項１０に記載の電子装置。
【請求項１２】
前記電子装置は、更に、
前記プログラム情報において、プログラムコード、第１のパブリックキー、プログラム名、バージョン番号及びシグネチャーを前記実行環境に与え、前記プログラムコードを実行するために前記第１の入力情報エレメントを前記実行環境に与えるように構成されたプロバイダーエンティティを備え、
前記実行環境は、前記シグネチャーを、第１のプライベートキーに関連した前記第１のパブリックキーでチェックし、少なくとも前記第１のパブリックキー、前記プログラム名及び前記バージョン番号から第１のハッシュを計算し、前記第１のハッシュ及び前記電子装置特有の前記シークレット値から一方向ファンクションでコンフィデンシャルキーを計算し、前記第１入力情報エレメントを前記コンフィデンシャルキーで解読し、前記実行環境において前記第１情報エレメントを変更し、そして前記第１出力情報エレメントを前記コンフィデンシャルキーで暗号化する、というように構成された、請求項１０又は１１に記載の電子装置。
【請求項１３】
前記電子装置は、更に、前記プロバイダーエンティティが、前記プログラムコードを得、前記プログラムコードに前記第２のパブリックキー、前記プログラム名及び前記バージョン番号を付与して、第２のデータオブジェクトを発生し、そして前記第２のデータオブジェクトに前記第１のパブリックキーでサインして、前記第１のデータオブジェクトを得るように構成される、請求項１２に記載の電子装置。
【請求項１４】
前記第１入力データエレメントは、前記プログラムコードに関連した状態情報を含む、請求項１０から１３のいずれかに記載の電子装置。
【請求項１５】
前記コンフィデンシャルキーは、シンメトリーのキーである、請求項１０から１４のいずれかに記載の電子装置。
【請求項１６】
前記実行環境は、移動ノードにおけるセキュアな環境である、請求項１０から１５のいずれかに記載の電子装置。
【請求項１７】
少なくともプログラムコードを含むプログラム情報を得る手段と、
前記プログラム情報の少なくとも一部分及び電子装置特有のシークレット値のコンフィデンシャルキーを計算する手段と、
前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用する手段であって、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含むような手段と、
を備えた電子装置。
【請求項１８】
コンピュータ読み取り可能な媒体にて実施されるコンピュータプログラムにおいて、
少なくともプログラムコードを含むプログラム情報を得、
前記プログラム情報の少なくとも一部分及び前記電子装置特有のシークレット値のコンフィデンシャルキーを計算し、
前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用し、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含む、
ことより成る方法を実行するようにプロセッサを制御するためのコードを備えたコンピュータプログラム。
【請求項１９】
前記コンピュータ読み取り可能な媒体は、取り外し可能なメモリカードである、請求項１８に記載のコンピュータプログラム。
【請求項２０】
前記コンピュータ読み取り可能な媒体は、磁気又は光学ディスク、或いはホログラフィーメモリである、請求項１８に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置のセキュリティに係る。より詳細には、本発明は、電子装置にプログラム状態データをセキュアに記憶するための方法に係る。
【背景技術】
【０００２】
全てのコンピュータプログラム及びアプリケーションが操作のための潜在的なターゲットである世界では、ユーザが使用しているプログラムが、最初にインストール又はダウンロードされたときのままであるよう確保して、ユーザが休息をとれることが必要である。しかしながら、プログラムは、例えば、情報を収集してインターネットへ漏洩する同様に見え且つ感じるプログラムに置き換えられる危険性がある。又、ソフトウェア及びデジタルメディアの売主は、無断配布及び製品改ざんに伴う危険性も悟っている。コンピュータプログラムを使用して実在の資産を管理している場合には危険性が特に顕著である。
【０００３】
益々多くの移動装置及びコンピューティング装置に、信頼性ある環境、即ちセキュアなプログラム実行環境が設けられつつある。信頼性ある環境は、装置特有の又はインポートされたシークレットを取り扱うアプリケーションを実行するのに使用される。信頼性ある環境におけるデータは、デジタル権利の管理及びコピー保護を実施するのに使用できる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、既存の信頼性ある環境における問題は、プログラム及びデータが、信頼性ある環境の所有者との協働において記憶され、更新され且つ読み取られることである。所有者は、装置製造者、サービスプロバイダー（ｘＳＰ）又はネットワークオペレータである。新たな特徴及びプログラムの追加は、信頼性ある環境の所有者からの検証を必要とする。第三者が、信頼性ある環境の利点を利用して、多数の信頼性ある第三者プログラムの基礎を与えることのできる解決策を得ることができれば有益である。
【課題を解決するための手段】
【０００５】
本発明は、電子装置に含まれる実行環境へのプログラム情報を得るステップであって、前記プログラム情報が少なくともプログラムコードを含むものであるステップと、前記プログラム情報の少なくとも一部分及び前記電子装置特有のシークレット値のコンフィデンシャルキーを計算するステップと、前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用するステップであって、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含むようなステップと、を備えた方法に係る。
【０００６】
又、本発明は、少なくともプログラムコードを含むプログラム情報を得、前記プログラム情報の少なくとも一部分及び電子装置特有のシークレット値のコンフィデンシャルキーを計算し、そして前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用し、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含む、というように構成された実行環境を備えた電子装置にも係る。
【０００７】
又、本発明は、少なくともプログラムコードを含むプログラム情報を得る手段と、前記プログラム情報の少なくとも一部分及び電子装置特有のシークレット値のコンフィデンシャルキーを計算する手段と、前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用する手段であって、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含むような手段と、を備えた電子装置にも係る。
【０００８】
又、本発明は、データ処理システムにて実行されるときに次のステップ、即ち少なくともプログラムコードを含むプログラム情報を得るステップと、前記プログラム情報の少なくとも一部分及び電子装置特有のシークレット値のコンフィデンシャルキーを計算するステップ、及び前記コンフィデンシャルキーをキーとして暗号法オペレーションを、前記プログラムコードへの第１入力データエレメント又は前記プログラムコードからの第１出力データエレメントより成る第１データエレメントに適用するステップであって、前記暗号法オペレーションが暗号化及び解読の少なくとも１つを含むようなステップ、を遂行するためのコードを備えたコンピュータプログラムにも係る。
【０００９】
本発明の一実施形態では、前記電子装置特有のシークレット値は、前記電子装置特有のマスターシークレット値から得られる。コンフィデンシャルキーの計算に使用するためのシークレット値は、実行環境においてマスターシークレット値からの多様化により得られる。この多様化は、例えば、プログラムコードのようなプログラム情報のハッシュを計算し、そしてこのハッシュをマスターシークレット値に連結することにより遂行することができる。その際に、実行環境は、連結されたハッシュ及びマスターシークレット値を引数として一方向ファンクションを計算し、そして多様化されたシークレット値、即ち電子装置特有のシークレット値を得る。
【００１０】
本発明の一実施形態では、電子装置内の実行環境は、第２入力データエレメント及び前記第１入力データエレメントで前記プログラムコードを実行して、前記実行環境において第２出力データエレメントを発生するように構成される。実行環境は、前記第２入力データエレメント、前記第２出力データエレメント、及び前記プログラム情報の第２ハッシュを計算する。その際に、実行環境は、第２プライベートキーで第２ハッシュを暗号化して、結果シグネチャーを発生し、前記第２プライベートキーは、前記実行環境に関連付けられる。
【００１１】
本発明の一実施形態では、電子装置と通信するように構成されたネットワークノードへのプログラム情報が得られる。このネットワークノードは、第２入力データエレメントを発生する。又、ネットワークノードは、プログラム情報及び前記第２入力データエレメントを前記電子装置に与える。ネットワークノードは、前記電子装置から第２出力データエレメントを得て、結果シグネチャーを検証し、前記プログラム情報に含まれたプログラムコードが前記電子装置において実行されたことを決定する。
【００１２】
本発明の一実施形態では、ネットワークノードは、前記第２出力データエレメントから制御情報を抽出し、そして前記制御情報で装置を制御する。この装置は、ネットワークノードに直接接続されてもよい。この装置は、例えば、ロック又はアラームシステムのようなセキュリティ装置でよい。
【００１３】
本発明の一実施形態では、電子装置におけるプロバイダーエンティティは、前記プログラム情報において、プログラムコード、第１パブリックキー、プログラム名、バージョン番号及びシグネチャーを前記実行環境に与える。実行環境は、第１プライベートキーに関連した前記第１パブリックキーで前記シグネチャーをチェックする。実行環境は、少なくとも、前記第１パブリックキー、前記プログラム名、及び前記バージョン番号から第１ハッシュを計算する。プロバイダーエンティティは、前記第１入力情報エレメントを、前記プログラムコードの実行のために前記実行環境に与える。実行環境は、前記第１ハッシュ及び前記電子装置特有の前記シークレット値から一方向ファンクションでコンフィデンシャルキーを計算する。実行環境は、前記第１入力情報エレメントを前記コンフィデンシャルキーで解読し、そして前記第１情報エレメントを変更する。最終的に、実行環境は、前記第１出力情報エレメントを前記コンフィデンシャルキーで暗号化する。
【００１４】
本発明の一実施形態では、プロバイダーエンティティは、前記プログラムコードを得、前記プログラムコードに前記第１パブリックキー、前記プログラム名及び前記バージョン番号を設けて、第２のデータオブジェクトを発生すると共に、前記第２データオブジェクトに前記第１パブリックキーでサインして、前記シグネチャーを得るように構成される。これらのタスクは、電子装置と通信するネットワークノードに設けることもできる。
【００１５】
本発明の一実施形態では、第１入力データエレメントは、前記プログラムコードに関連した状態情報を備えている。
【００１６】
本発明の一実施形態では、コンフィデンシャルキーは、シンメトリーのキーである。又、本発明の一実施形態では、コンフィデンシャルキーは、プライベートキー及びパブリックキーの対であり、暗号化は、プライベートキーで行われ、解読は、パブリックキーで行われ、或いはその逆のことも言える。
【００１７】
本発明の一実施形態では、実行環境は、移動ノードにおけるセキュアな環境である。
【００１８】
本発明の一実施形態では、実行環境は、セキュアな環境であり、例えば、移動ノードである。
【００１９】
本発明の一実施形態では、前記移動ノードは、移動通信システムにおける移動ステーションである。
【００２０】
本発明の一実施形態では、前記移動ノードは、移動ステーション又は一般的に移動ターミナルを含む。本発明の一実施形態では、移動通信システムは、移動通信グローバルシステム（ＧＳＭ）ネットワーク及びユニバーサル移動テレコミュニケーションシステム（ＵＭＴＳ）ネットワークの少なくとも１つを含む。又、本発明の一実施形態では、システムは、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）を含む。本発明の一実施形態では、システムは、マイクロ波アクセス用ワールドワイド相互運用（ＷｉＭＡＸ）ネットワークも含む。又、本発明の一実施形態では、移動ノードは、例えば、異なるアクセス形式をサポートするための二重モード又はマルチモード機能を伴うＧＳＭ移動ステーション又はＵＭＴＳ移動ステーションでよい。
【００２１】
本発明の一実施形態では、コンピュータプログラムがコンピュータ読み取り可能な媒体に記憶される。コンピュータ読み取り可能な媒体は、取り外し可能なメモリカード、磁気ディスク、ホログラフィックメモリ、光学的ディスク又は磁気テープでよい。
【００２２】
本発明の一実施形態では、電子装置の実行環境へのプログラム情報が得られる。プログラム情報は、少なくともプログラムコードを含む。キーは、プログラム情報及び装置特有のシークレット値で計算される。キーは、プログラムコード実行のために実行環境においてプログラム特有の状態データを解読するのに使用される。キーは、実行の後に、変更された状態データを暗号化するのに使用される。
【００２３】
以上に述べた本発明の実施形態は、互いにある組み合わせで使用されてもよい。多数の実施形態を一緒に組み合わせて、本発明の更に別の実施形態を形成してもよい。本発明に係る方法、システム、電子装置又はコンピュータプログラムは、以上に述べた本発明の実施形態の少なくとも１つを含むことができる。
【００２４】
本発明の利益は、実行環境に対して与えられるプログラムコードのための改良されたセキュリティ、及びセキュアなアプリケーションのためのソフトウェア開発における改良された融通性に関連している。
【００２５】
本発明を更に理解するために含まれ本明細書の一部分を構成する添付図面は、本発明の実施形態を示すと共に、本発明の原理を説明する上で役立つ記述を伴う。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施形態におけるセキュアな実行環境を含む電子装置を示すブロック図である。
【図２】本発明の一実施形態においてプログラムコードからハッシュを計算するセキュアな実行環境を含む電子装置を示すブロック図である。
【図３】本発明の一実施形態におけるリモート装置のセキュアな制御を示すブロック図である。
【図４】本発明の一実施形態におけるセキュアなプログラム実行のための方法を示すフローチャートである。
【図５】本発明の一実施形態における電子装置を示すブロック図である。
【発明を実施するための形態】
【００２７】
以下、添付図面に示された本発明の実施形態を詳細に説明する。
【００２８】
図１は、本発明の一実施形態におけるセキュアな実行環境を含む電子装置を示すブロック図である。図１には、電子装置１００が示されている。この電子装置１００は、セキュアな実行環境１１０及びプロバイダーエンティティ１１２を備えている。本発明の一実施形態では、プロバイダーエンティティ１１２は、電子装置１００とは個別であり、リモートノード（図示せず）において実行される。プロバイダーエンティティ１１２には、少なくとも１つのプログラムレコード、例えば、プログラムレコード１２０、１３０及び１４０が記憶される。プログラムレコード１２０は、コンピュータプログラムコード１２１、パブリックキー１２２、プログラム名１２３、プログラムバージョン１２４、及びプログラムのデジタルシグネチャー１２５を含む。プログラムレコードは、電子装置１００に長期間記憶されてもよいし、又はセキュアな実行環境においてプログラムレコードが実行される直前にのみネットワーク１００に受け取られてもよい。プロバイダーエンティティには、入力データ１５０及びプログラムレコード状態１７０もある。プロバイダーエンティティ１１２は、少なくとも１つのプログラムレコードに対するプログラム状態を記憶することができる。
【００２９】
図１のスタート点として、プロバイダーエンティティ１１２がセキュアな実行環境１１０において実行のためにプログラムレコード１２０を与える。プロバイダーエンティティ１１２は、プログラムコード１２１に、パブリックキー１２２、プログラム名、及びプログラムのバージョン番号１２４を添付して、添付プログラムコードを発生する。それ故、プロバイダーエンティティ１１２は、パブリックキー１２２に対応する第１プライベートキーを使用して添付プログラムコードにデジタルでサインし、そしてこのように形成されたシグネチャーを添付プログラムコードに更に添付して、プログラムレコード１２０を発生する。添付プログラムコードにデジタルでサインすることは、例えば、添付プログラムコードのメッセージダイジェストを計算し、そしてプライベートキーを使用してメッセージダイジェストを暗号化して、シグネチャーを生成することを含む。プロバイダーエンティティは、プログラムレコード１２０、プログラムコード１２１のための入力データ１５０、及びプログラムレコード状態１７０を、プログラムコード１２１の実行のためにセキュアな実行環境１１０に与える。又、プロバイダーエンティティ１１２は、プログラムレコード１２０の一部分として、又は個別データパブリックキー１２２として、プログラム名１２３及びバージョン番号１２４をセキュアな実行環境１１０に与える。本発明の一実施形態では、プロバイダーエンティティ１１２は、電子装置１００とは異なるネットワークノードに配置される。
【００３０】
セキュアな実行環境１１０内において、チェックファンクション１０１は、例えば、シグネチャー１２５を解読し、そしてその解読されたシグネチャーを、セキュアな実行環境１１０内で添付プログラムコードを使用して繰り返し計算されたメッセージダイジェストにマッチングさせることにより、パブリックキー１２２に対応するプライベートキーを使用してプログラムレコード１２０のシグネチャー１２５が実際に発生されるかどうか検証する。チェックファンクションが成功であると、セキュアな実行環境１１０は、パブリックキー１２２、プログラム名１２３及びバージョン番号１２４からハッシュファンクション１０２を計算する。ハッシュファンクション１０２の結果は、電子装置１００の独特の装置シークレット１１４と共に一方向ファンクション１０３へ入力として与えられる。一方向ファンクション１０３は、プログラムレコード特有のキー１８０を生成する。キー１８０は、シンメトリーのキーでよい。キー１８０は、解読ファンクション１０４においてプログラムレコード状態１７０を解読するのに使用され、解読されたプログラムレコード状態１７１を生成する。解読ファンクション１０４が完了すると、実行ファンクション１０５は、プログラムコード１２１を入力データ１５０及び解読されたプログラムレコード状態１７１で実行することができる。解読されたプログラムレコード状態１７１は、プログラムコード１２１の異なる実行の間に通信される情報を含む。実行ファンクション１０５におけるプログラムコード１２１の実行中に、プログラムコード１２１からの出力は、出力１６０として収集され、そして変更されたプログラムレコード状態は、変更されたプログラムレコード状態１７２として取り出される。実行ファンクション１０５の完了後に、入力１５０、プログラムコード１２１及び出力１６０は、ハッシュファンクション１０６においてハッシュ処理されて、第２のハッシュ結果を生じさせる。この第２のハッシュ結果は、シグネチャーファンクション１０８において第２プライベートキー１１６を使用して暗号化されて、結果のシグネチャー１６２を発生する。プライベートキー１１６は、信頼性のあるパブリックキーに関係付けられる。信頼関係は、任意の手段によって形成され、例えば、第三者からの証明書によるか又は装置の物理的な所有権により形成される。結果のシグネチャー１６２は、第２のプライベートキー１１６を所有するセキュアな実行環境においてプログラムコード１２１の入力１５０を使用して出力１６０が発生されたという証明を与える。結果のシグネチャーは、第２のプライベートキー１１６に関連したパブリックキーで検証することができる。第２のプライベートキー１１６は、セキュアな実行環境１１０、並びにセキュアな実行環境１１０又は電子装置１００の所有者に関連付けられる。変更されたプログラムレコード状態１７２は、暗号化ファンクション１０７に与えられ、これは、キー１８０を使用して、変更されたプログラムレコード状態１７２を暗号化し、新たな暗号化されたプログラムレコード状態１７３を発生する。この新たな暗号化されたプログラムレコード状態１７３は、プログラムレコード１２０が実行のために繰り返し与えられるまで記憶するためにプロバイダーエンティティ１１２へ与えられる。
【００３１】
図２は、本発明の一実施形態においてプログラムコードからハッシュを計算するセキュアな実行環境を含む電子装置を示すブロック図である。図２には、電子装置２００が示されている。この電子装置２００は、セキュアな実行環境２１０及びプロバイダーエンティティ２１２を備えている。本発明の一実施形態では、プロバイダーエンティティ２１２は、電子装置２００とは個別であり、リモートノード（図示せず）において実行される。プロバイダーエンティティ２１２には、少なくとも１つのプログラムレコード、例えば、プログラムレコード２２０、２３０及び２４０が記憶される。プログラムレコード２２０は、少なくともコンピュータプログラムコード２２１を含む。プロバイダーエンティティ２１２には、入力データ２５０及びプログラムレコード状態２７０もある。プロバイダーエンティティ２１２は、少なくとも１つのプログラムレコードに対してプログラム状態を記憶することができる。
【００３２】
図２におけるスタート点として、プロバイダーエンティティ２１２がセキュアな実行環境２１０において実行のためにプログラムレコード２２０を与える。プロバイダーエンティティは、プログラムコード２２１を実行するために、プログラムレコード２２０、プログラムコード２２１に対する入力データ２５０、及びプログラムレコード状態２７０をセキュアな実行環境２１０に与える。本発明の一実施形態では、プロバイダーエンティティ２１２は、電子装置２００とは異なるネットワークノードに配置される。
【００３３】
セキュアな実行環境２１０は、プログラムコード２２１の少なくとも一部分からハッシュファンクション２０１を計算する。ハッシュファンクション２０１の結果は、電子装置２００の独特の装置シークレット２１４と一緒に、一方向ファンクション２０２へ入力として与えられる。一方向ファンクション２０２は、プログラムレコード特有のキー２８０を発生する。このキー２８０は、シンメトリーのキーでよい。キー２８０は、解読ファンクション２０３においてプログラムレコード状態２７０を解読するのに使用され、解読されたプログラムレコード状態２７１を生成する。解読ファンクション２０３が完了すると、実行ファンクション２０４は、プログラムコード２２１を入力データ２５０及び解読されたプログラムレコード状態２７１で実行することができる。解読されたプログラムレコード状態２７１は、プログラムコード２２１の異なる実行の間に通信される情報を含む。実行ファンクション２０４におけるプログラムコード２２１の実行中に、プログラムコード２２１からの出力は、出力２６０として収集され、そして変更されたプログラムレコード状態は、変更されたプログラムレコード状態２７２として取り出される。実行ファンクション２０４の完了後に、入力２５０、プログラムコード２２１及び出力２６０は、ハッシュファンクション２０５においてハッシュ処理されて、第２のハッシュ結果を生じさせる。この第２のハッシュ結果は、シグネチャーファンクション２０７においてパブリックキー証明書に関係した第２プライベートキー２１６を使用して暗号化されて、結果のシグネチャー２６２を発生する。結果のシグネチャー１６２は、第２のプライベートキー２１６を所有するセキュアな実行環境においてプログラムコード２２１の入力２５０を使用して出力２６０が発生されたという証明を与える。結果のシグネチャーは、第２のプライベートキー２１６に関連したパブリックキーで検証することができる。第２のプライベートキー２１６は、セキュアな実行環境２１０、並びにセキュアな実行環境２１０又は電子装置２００の所有者に関連付けられる。変更されたプログラムレコード状態２７２は、暗号化ファンクション２０６に与えられ、これは、キー２８０を使用して、変更されたプログラムレコード状態２７２を暗号化し、新たな暗号化されたプログラムレコード状態２７３を発生する。この新たな暗号化されたプログラムレコード状態２７３は、プログラムレコード２２０が実行のために繰り返し与えられるまで記憶するためにプロバイダーエンティティ２１２へ与えられる。
【００３４】
図３は、本発明の一実施形態におけるリモート装置のセキュアな制御を示すブロック図である。図３には、通信システム３５０が示され、これは、移動ノード３６０、移動ネットワーク３７０及びインターネット３８０を備えている。移動ノード３６０の内部ファンクションは、ボックス３６２で示されている。移動ノード３６０は、通信エンティティ３６３、セキュアな実行環境３６５、及びプロバイダーエンティティ３６５を備えている。図３におけるスタート点として、移動ノード３６０は、リモートクライアント３８２への制御要求の発行を希望する。リモートクライアント３８２は、例えば、実在の資産へのアクセスを与える装置を制御する。実在の資産は、例えば、家や車である。移動ノード３６０は、矢印３０１で示すように、リモートクライアント３８２へ初期メッセージを送信する。この初期メッセージは、例えば、ノンス(nonce)、即ち非繰り返しランダムストリング、移動ノード３６０に関連したパブリックユーザアイデンティティ、及び装置のためのインストラクションを含む。初期メッセージを受け取ると、リモートクライアント３８２は、矢印３０２で示すように、移動ノード３６０へ認証要求を送信する。この認証要求は、少なくともノンスを更に含むチャレンジ(challenge)を含む。このチャレンジは、移動ノード３６０及びプロバイダーエンティティ３６５によって受け取られる。プロバイダーエンティティ３６５は、例えば、メッセージ３０２及び送信者の形式に基づいてプログラムレコードを選択する。プロバイダーエンティティ３６５は、選択されたプログラムレコード及びチャレンジを、処理のためにセキュアな実行環境３６４に与える。セキュアな実行環境３６４からの結果は、図１を参照して説明したように、入力、出力及び結果のシグネチャーを含む。出力及びシグネチャーは、矢印３０３で示すように、移動ノード３６０からリモートクライアント３８２に与えられる。第２のプライベートキーに関連したパブリックキーを使用してシグネチャーを検証すると、リモートクライアント３８２は、初期メッセージで得られるインストラクションに基づいて装置を制御する。
【００３５】
図４は、本発明の一実施形態におけるセキュアなプログラム実行のための方法を示すフローチャートである。
【００３６】
ステップ４００において、電子装置に含まれるプロバイダーエンティティにプログラムコードが得られる。又、電子装置は、セキュアな実行環境を含むこともできる。プログラムコードは、例えば、マシンコード、バイトコード、中間言語、バーチャルマシンコード、ソースコード、その組み合わせ、又はセキュアな実行環境において処理される任意のプログラムコードでよい。
【００３７】
ステップ４０２では、プログラムコードに、プロバイダーエンティティにおいて第１パブリックキー、プログラム名及びバージョン番号が付与される。プログラム名、バージョン番号及び第１パブリックキーは、プログラムコードのヘッダに追加することができる。又、プログラム名、バージョン番号及び第１パブリックキーは、プログラムコードに添付されてもよいし、或いはプログラムコードの実行を妨げないプログラムコードの部分に入れられてもよい。本発明の一実施形態では、プログラムコードのみが実行環境に与えられる。
【００３８】
ステップ４０４では、前記付与されたプログラムコードは、プロバイダーエンティティにおいて、第１パブリックキーに関連した第１プライベートキーでサインされる。前記付与されたプログラムコードにデジタルでサインすることは、例えば、前記付与されたプログラムコードのメッセージダイジェストを計算し、そしてプライベートキーを使用してメッセージダイジェストを暗号化して、シグネチャーを生成することを含む。このシグネチャーも、プログラムコードに付与される。それにより最終的に得られる前記付与されたプログラムコードは、プログラムレコードと称される。
【００３９】
ステップ４０６において、このプログラムレコードは、暗号化されたプログラムレコード状態及び入力データと一緒に、プロバイダーエンティティからセキュアな実行環境に与えられる。このように与えられることは、プロバイダーエンティティ及びセキュアな実行環境が異なるノードにある場合にセキュアな実行環境を含む第２のネットワークノードへプログラムレコードを送信することを含む。プログラムレコード及びそれに関連した入力データ並びに暗号化されたプログラムレコード状態は、１つの手順、ファンクション又はメソッドコールで、或いは多数の断片において与えられてもよい。入力データエレメントは、任意の数の手順、セクション、ファンクション、モジュール、メソッド、又は同等のコンピュータプログラムコードコールにおいて１つ又は多数の引数として与えられてもよい。
【００４０】
ステップ４０８において、セキュアな実行環境は、シグネチャーがＯＫであるかどうかチェックし、即ち第１プライベートキーに関連したパブリックキーを使用してシグネチャーを検証する。シグネチャーがＯＫでない場合には、ステップ４２２に続く。シグネチャーの検証は、必須ではない。
【００４１】
ステップ４１０において、セキュアな実行環境は、第１パブリックキー、プログラム名、及び任意であるが、バージョン番号の少なくとも一部分から、ハッシュ値Ｈ１を計算する。
【００４２】
本発明の一実施形態では、ハッシュ値Ｈ１は、プログラムコードのみから計算される。
【００４３】
ステップ４１２では、ハッシュ値Ｈ１及び独特の装置シークレットは、セキュアな実行環境において、一方向ファンクションでキーＫ（Ｖ）を計算するのに使用される。キーＫ（Ｖ）は、処理されるプログラムレコード特有のキーである。キーＫ（Ｖ）は、シンメトリーのキーでもよいし、パブリックキー及びプライベートキーの対でもよい。
【００４４】
ステップ４１４では、キーＫ（Ｖ）は、セキュアな実行環境において、プロバイダーエンティティから得たプログラムレコード状態を解読するのに使用される。プログラムレコード状態は、データの改ざんを回避するために、セキュアな実行環境の外部では暗号フォーマットに維持される。
【００４５】
ステップ４１６では、プログラムレコードからのプログラムコードが、セキュアな実行環境において実行されて、入力データ及びプログラムレコード状態が実行に対して入力として与えられるようにする。プログラムレコード状態は、プログラムコードのその後の実行と実行との間に通信される情報を含む。セキュアな実行環境におけるプログラムコードの実行は、出力データを与える。
【００４６】
ステップ４１８では、プログラムコードの実行中に変更されたプログラムレコード状態は、セキュアな実行環境において、キーＫ（Ｖ）で暗号化される。その暗号化されたプログラムレコード状態は、記憶のためにプロバイダーエンティティへ戻される。
【００４７】
ステップ４２０では、入力データ、出力データ及びプログラムコードをハッシュすることにより得たハッシュＨ２に第２のプライベートキーでサインすることにより、セキュアな実行環境において結果のシグネチャーが計算される。結果のシグネチャーは、出力データと一緒に、セキュアな実行環境からプロバイダーエンティティに与えられる。
【００４８】
ステップ４２２において、セキュアな実行環境は、プロバイダーエンティティへエラーを発生する。
【００４９】
本発明の一実施形態では、セキュアな実行環境は、プログラムレコード状態の記憶を行う。
【００５０】
本発明の一実施形態では、プログラムレコード状態が記憶されない。
【００５１】
図５は、本発明の一実施形態における電子装置を示すブロック図である。
【００５２】
図５には電子装置５００が示されている。この電子装置５００は、プロセッサ５１０、二次メモリ５２０、一次メモリ５３０、ディスプレイ５５０、及びユーザインターフェイス５６０を備えている。ユーザインターフェイスは、例えば、キーパッド、キーボード、或いは制御スティック又は制御パッドでよい。又、電子装置５００は、任意の数の他のプロセッサ及び任意の数の二次メモリユニットを含んでもよい。又、個別のアドレススペースを伴う他の一次メモリがあってもよい。電子装置５００は、ネットワークインターフェイス５４０も備えている。プロセッサ５１０は、一次メモリ５３０に少なくとも部分的に記憶された多数のソフトウェアエンティティを実行する。一次メモリ５３０は、通信エンティティ５３２、プロバイダーエンティティ５３４、及びセキュアな実行環境５３６を備えている。エンティティ５３４及び５３６は、図１のエンティティ１１０及び１１２並びに図２のエンティティ２１０及び２１２と機能的に同様のものでよい。本発明の一実施形態では、プロトコルエンティティ５３５、５３６及び５３７の一部分は、電子装置５００のオペレーティングシステムにおいて構成される。
【００５３】
図５の電子装置５００内のエンティティは、種々の仕方で実施されてもよい。それらは、電子装置のネーティブなオペレーティングシステムのもとで実行されるプロセスとして実施されてもよい。又、それらエンティティは、個別のプロセス又はスレッドとして実施されてもよいし、多数の異なるエンティティが１つのプロセス又はスレッドによって実施されるようにしてもよい。プロセス又はスレッドは、多数のルーチン、例えば、手順及びファンクションを含むプログラムブロックのインスタンスであってもよい。又、エンティティは、個別のコンピュータプログラムとして実施されてもよいし、或いはエンティティを実施する多数のルーチン又はファンクションより成る単一のコンピュータプログラムとして実施されてもよい。プログラムブロックは、例えば、メモリ回路、メモリカード、ホログラフィーメモリ、磁気又は光学ディスクのような少なくとも１つのコンピュータ読み取り可能な媒体に記憶される。あるエンティティは、別のエンティティにリンクされたプログラムモジュールとして実施されてもよい。又、図５のエンティティは、個別のメモリに記憶されて個別のプロセッサにより実行されてもよく、これらは、例えば、電子装置内のメッセージバス又は内部ネットワークを経て通信する。このようなメッセージバスは、例えば、周辺コンポーネント相互接続（ＰＣＩ）バスである。内部ネットワークは、例えば、ローカルエリアネットワークである。又、エンティティは、ＡＳＩＣＳ又はＦＰＧＡのようなハードウェアとして部分的に又は全体的に実施されてもよい。
【００５４】
当業者であれば、技術の進歩に伴い、本発明の基本的な考え方を種々の仕方で実施できることが明らかであろう。従って、本発明及びその実施形態は、上述した実施例に限定されず、特許請求の範囲内で変更することができる。
【符号の説明】
【００５５】
１００：電子装置
１０４：解読ファンクション
１０５：実行ファンクション
１０７：暗号化ファンクション
１０８：シグネチャーファンクション
１１０：セキュアな実行環境
１１２：プロバイダーエンティティ
１１６：プライベートキー
１２０、１３０、１４０：プログラムレコード
１２１：コンピュータプログラムコード
１２２：パブリックキー
１２３：プログラム名
１２４：プログラムバージョン
１２５：デジタルシグネチャー
１５０：入力データ
１６０：出力
１６２：結果のシグネチャー
１７０：プログラムレコード状態
１７１：解読されたプログラムレコード状態
１７２：変更されたプログラムレコード状態
１７３：暗号化されたプログラムレコード状態
１８０：プログラムレコード特有のキー
２００：電子装置
２１０：セキュアな実行環境
２１２：プロバイダーエンティティ
２２０：プログラムレコード
２２１：コンピュータプログラムコード
２５０：入力データ
２７０：プログラムレコード状態
３５０：通信システム
３６０：移動ノード
３７０：移動ネットワーク
３８０：インターネット
【図１】
2010514000.tif 000003
【図２】
2010514000.tif 000004
【図３】
2010514000.tif 000005
【図４】
2010514000.tif 000006
【図５】
2010514000.tif 000007
【国際調査報告】
2010514000.tif 000008
2010514000.tif 000009
2010514000.tif 000010