(57)【特許請求の範囲】
【請求項１】
デバイス（１）においてテストを行う方法であって、少なくとも一つのプログラム（１１０、１１２）が前記デバイス（１）にロードされ、前記プログラムで使用する少なくとも一つの鍵（１１１）が前記デバイスに記憶されており、前記デバイスのプロセッサが前記プログラムを実行することによって、該プログラムのモードがテストモード又は通常モードに設定される方法において、前記デバイスのプロセッサが前記プログラムを更に実行することによって、
前記デバイス（１）で使用する鍵に対するセキュリティレベルが高セキュリティレベルか、低セキュリティレベルかが判定され、
前記鍵に対して判定された前記セキュリティレベルと前記プログラムのモードとが照合され、
該照合に基づいて、前記鍵が前記プログラムのモードで使用できるかどうか判定されることを特徴とし、更に
前記鍵が前記プログラムのモードで使用できないと判定されたときは、テスト鍵がテスト中に使用できるように設定する
ことを特徴とする方法。
【請求項２】
前記セキュリティレベルは、前記プログラムで使用するすべての鍵に対して同一に設定されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記セキュリティレベルは、前記プログラムで使用する鍵毎に、独立に設定されることを特徴とする、請求項１に記載の方法。
【請求項４】
前記のセキュリティレベルが判定される鍵は、前記システムの内部で使用するための鍵であることを特徴とする、請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記のセキュリティレベルが判定される鍵の少なくとも一つが、相互に通信し合う二つのプログラムで使用するための鍵であることを特徴とする、請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記デバイス（１）は通常モードとテストモードとを少なくとも有し、前記プログラムは、前記デバイスのモードで動作することを特徴とする、請求項１から５のいずれか１項に記載の方法。
【請求項７】
デバイス（１）においてテストを行うシステムであって、少なくとも一つのプログラム（１１０、１１２）がロードされており、前記プログラムのモードがテストモード又は通常モードに設定されるように構成され、前記プログラムで使用する少なくとも一つの鍵（１１１）が前記システムで記憶されているシステムにおいて、
前記デバイス（１）で使用する鍵に対するセキュリティレベルが高セキュリティレベルか、低セキュリティレベルかが判定され、前記システムは、
前記鍵に対して判定された前記セキュリティレベルと前記プログラムのモードとを照合する照合手段（３．３）と、
該照合に基づいて、前記鍵が前記プログラムのモードで使用できるかどうかを判定する判定手段（１１９、１２０）と
を備えることを特徴とし、更に
前記鍵が前記プログラムのモードで使用できないと判定されたときは、テスト鍵がテスト中に使用できるように設定する
ことを特徴とするシステム。
【請求項８】
前記セキュリティレベルは、前記プログラムで使用するすべての鍵に対して同一に設定されていることを特徴とする、請求項７に記載のシステム。
【請求項９】
前記セキュリティレベルは、前記プログラムで使用する鍵毎に、独立に設定されていることを特徴とする、請求項７に記載のシステム。
【請求項１０】
デバイス（１）であって、該デバイスにロードされたプログラム（１１０、１１２）のテストを行う少なくとも一つのプロセッサ（２、３．３）を備え、前記プログラムのモードがテストモード又は通常モードに設定されるように構成され、前記プログラム（１１０、１１２）で使用する少なくとも一つの鍵（１１１）が記憶されている前記デバイス（１）において、
該デバイス（１）で使用する鍵に対するセキュリティレベルが高セキュリティレベルか、低セキュリティレベルかが判定され、前記デバイス（１）は、
前記鍵に対して判定された前記セキュリティレベルと前記プログラムのモードとを照合する照合手段（３．３）と、
該照合に基づいて、前記鍵が前記プログラムのモードで使用できるかどうかを判定する判定手段（１１９、１２０）と
を備えることを特徴とし、更に
前記鍵が前記プログラムのモードで使用できないと判定されたときは、テスト鍵がテスト中に使用できるように設定する
ことを特徴とするデバイス。
【請求項１１】
前記デバイス（１）は、移動通信手段（５、６）を備えることを特徴とする、請求項１０に記載のデバイス。
【請求項１２】
デバイス（１）においてテストを実行するための機械で実行可能なプログラムを記憶する計算機可読記憶媒体であって、少なくとも一つのプログラム（１１０、１１２）がロードされ、該プログラムで使用する少なくとも一つの鍵（１１１）が記憶されており、前記プログラムを前記デバイスのプロセッサ（２）で実行することによって、前記プログラムのモードがテストモード又は通常モードに設定される計算機可読記憶媒体において、前記プログラムを前記デバイスのプロセッサ（２）で更に実行することによって、
前記デバイス（１）で使用する前記鍵に対するセキュリティレベルが高セキュリティレベルか、低セキュリティレベルかを判定し、
前記鍵に対して判定された前記セキュリティレベルと前記プログラムのモードとを照合し、
該照合に基づいて、前記鍵が前記プログラムのモードで使用できるかどうかを判定することを特徴とし、更に
前記鍵が前記プログラムのモードで使用できないと判定されたときは、テスト鍵がテスト中に使用できるように設定する
ことを特徴とする計算機可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデバイスにおいてテストを行う方法に関し、この方法では少なくとも一つのプログラムがデバイスにロードされ、該プログラムに関連するモードデータの少なくとも一つの項目が決定され、該プログラムで用いる少なくとも一つの鍵が形成される。また、本発明はデバイスにおいてテストを行うシステムに関し、このシステムでは少なくとも一つのプログラムがロードされており、該プログラムに関連するモードデータの少なくとも一つの項目がシステムにおいて決定されるように構成されており、該プログラムで用いる少なくとも一つの鍵がシステムに備えられている。また、本発明はデバイスにロードされたプログラムを実行する少なくとも一つのプロセッサを含むデバイスに関し、該プログラムに関連するモードデータの少なくとも一つの項目がデバイスで決定されるように構成され、該プログラムで用いる少なくとも一つの鍵がデバイスに備えられている。さらに、本発明は記憶手段に関し、この記憶手段では、機械で実行可能なプログラムコマンドのセットがテストを行うためにデバイスに記憶されており、該デバイスには、少なくとも一つのプログラムがロードされて、該デバイスで実行されるように構成されており、該プログラムに対して、モードデータの少なくとも一つの項目が決定されており、該プログラムで用いる少なくとも一つの鍵が形成されている。
【背景技術】
【０００２】
アプリケーションへのアクセス権が取得された後に、デバイスで使用できるようになる既知のアプリケーションがある。先行技術のシステムでは、例えば、ユーザはデータネットワーク経由でアプリケーションをデバイスにロードするなどの方法によって、このようなアクセス権を取得することができる。これに関連して、ユーザは自身の連絡先データを提供し、アプリケーションの提供元はアクセス権を有効にするのに必要な情報を、例えば郵便で送付する。ユーザは、アプリケーションのアクセス権の代金を自身のクレジットカード番号を提供することによって、ロードに伴って都合よく支払うことができる。したがって、支払いはクレジットカード会社を介して請求される。また一方で、支払いは代金引換で行われてもよく、ユーザは郵送されるアクセス権データを請求した場合に支払いを行う。ユーザは受け取ったアクセス権データを入力し、その後アプリケーションを使い始めることができる。このようなデータは、例えば、ユーザＩＤおよびパスワード、登録コードなどを含むこともできる。アクセス権はユーザのデバイスの識別情報または他の個別化情報を含むと有益であり、これによって、異なるユーザが一人のユーザのアクセス権を用いて同じアプリケーションを使用することを防いでいる。
【０００３】
電子デバイスの用途が多様化するにつれて、権限を持つプログラムを介した場合にのみ、ある機能へのアクセスが行われるなどの方法で、電子デバイスの特定の機能を保護することが必要になってきている。例えば、携帯電話は多様な用途のデータ処理に適した通信デバイスに発展しており、通話するのに必要なプログラム以外のプログラムを実行することもできる。新たなプログラムを後にこれらのデバイスにインストールすることもできるし、また、既にインストール済みのプログラムを新しいバージョンに更新することもできる。しかし、例えば携帯電話の機能には特定のセキュリティが必要である。このセキュリティでは、例えば、どのプログラムでもＳＩＭカードに記憶されている情報を判別したり、あるいは別の移動体加入者に通話料が請求されるように偽の識別データを用いて移動通信網に電話をかけたりすることができるという訳ではない。同様に、例えば、支払い手段としてのデバイスの使用など、金銭取引に関連する機能を含んでいるデバイスでは、欠陥プログラムまたは不正プログラムが金銭取引に影響を与えたり、あるいは、例えばデバイスに記憶されている金額データを変更したりすることができないように安全を確保する必要がある。さらに、デバイスでいくつかのデジタル記録情報を使用するには、制限付きのアクセス権が伴う場合もある。例えば、ユーザが音楽、ソフトウェアまたは他のデジタル記録情報を申し込み、自身のデバイスにそれらをインストールする。場合によっては、これらのデジタル記録情報のアクセス権は制限されている。例えば、デジタル記録情報が所定のデバイスだけにしかインストールできなかったり、デジタル記録情報の使用回数または使用期間が制限されている場合もあったり、あるいは、例えば、デジタル記録情報を使用する都度、支払いをしなければならない場合もある。上述の状況に関して、デバイスのソフトウェアは保護された部分を備えており、この保護された部分は必要な安全性のチェックと符号化および復号化に関連する機能とを実行する。さらに、これらのデバイスは、デバイスの機能ブロックの制御及び異なるブロック間でのデータ伝送などに用いられるオペレーティングシステムを典型的には含んでいる。オペレーティングシステムと保護された部分との間で情報を伝送するためにインターフェースが実装されている。例えば、デバイスで受け取られた暗号化メッセージを復号化するために保護された部分へ転送する。その後、さらに処理するために復号化されたメッセージをオペレーティングシステムに転送することができる。
【０００４】
デバイスで実行されるプログラムは、種々のアクセス権レベルに分けすることができる。プログラムは、例えば、安全性が要求される機能へのアクセス権を一切持っていないようなプログラムと、安全性が要求される機能の少なくともいくつかを処理する可能性のあるようなプログラムとに分けすることができる。したがって、プログラムが始動すると、オペレーティングシステムまたは保護された部分が、そのプログラムのアクセス権をチェックし、プログラムが特定の機能へアクセスするのを防いだり、あるいは許可したりする。アクセス権を決定する動作は、例えば、プログラムの起点（ｏｒｉｇｉｎ）に基づくものであってもよい。この場合、例えば、デバイスの製造元が作成したプログラムに第三者が作成したプログラムよりも広範囲のアクセス権を与えることができる。一方で、例えば、デバイスの製造元は、特定のプログラム製造元に対して他者よりも広範囲の権限（高い信頼性）を与えることができる。この場合、信頼性の高いプログラム製造元のプログラムに対して、信頼性レベルが低いかあるいは未確定の製造元のプログラムよりも多くのアクセス権を与えることができる。
【０００５】
現在では、様々な使用目的の鍵が多くのデバイスに記憶されている。とりわけ、鍵は情報の確認、アクセス権のチェック、ソフトウェアの認証、および情報の暗号化と復号化に用いることができる。このような鍵は、一般的なソフトウェアがアクセスできないようなデバイスの部分に記憶されてもよいし、あるいは、鍵は暗号化された形式で記憶されてもよい。この場合、鍵を用いるプログラムはこの鍵を復号化するための別の鍵を含む。したがって、この第２の鍵は、一般的なプログラムがアクセスできないメモリに記憶されなければならない。
【０００６】
上述のようなデバイスおける問題点の一つは、新たなプログラムを開発する場合に、あるいは既存のプログラムの開発をさらに進める場合に、できる限り信頼できる環境でプログラムのテストが可能でなければならないことである。また、テストされるプログラムは、必要な鍵を使用できるようにしておかなければならない。デバッガプログラムおよび／またはデバッガデバイスなどのプログラムのテストに使用するツールによって、上述の鍵など、秘密にしておく情報を含んでいるようなデバイスの領域を検査することができる。この情報の一部は、それを開示しても、それほど有害ではない場合もある。しかし、一部は、たとえテストの場合であっても、アクセスできないようにしておく必要のあるような鍵を含む可能性がある。これらの鍵は、例えば、種々の決済アプリケーション、デジタル記録情報へのアクセス権の管理（ＤＲＭ，デジタル著作権管理）、暗号化された形式での機密情報の伝送、およびその他の類似機能に関連するものである。
【０００７】
先行技術のいくつかの構成では、秘密にしておく必要のある重要な鍵は少なくともそのすべてを、使用後に削除されるテスト鍵に置き換えている。このような方法では、これらのテスト鍵を用いることによってプログラムをテストすることができるが、テスト完了後には、テスト鍵をデバイスで新たな鍵に置き換える必要がある。
【発明の開示】
【課題を解決するための手段】
【０００８】
本発明の目的は、信頼できるハードウェア環境でプログラムのテストをするための改良された方法およびシステムを提供することである。本発明は、デバイスで使用される鍵に対して少なくとも二つの異なるセキュリティレベルを規定するという考えに基づいており、これらのセキュリティレベルの一つがそれぞれの鍵に対して選択される。第１のセキュリティレベルは、低セキュリティレベルであることが好ましく、したがって、第２のセキュリティレベルは高セキュリティレベルとなる。本発明の構成において、第１のセキュリティレベルの鍵は、テスト目的でも使用することができるが、第２のセキュリティレベルの鍵はテストを行うためにテスト鍵に置き換えられる。正確に言えば、本発明による方法は主に、少なくとも二つの異なるセキュリティレベルがデバイスで使用する鍵に対して規定され、鍵に対して規定された前記セキュリティレベルとプログラムに関連するモードデータの少なくとも一つの項目とが検査され、その検査に基づいて、前記鍵がプログラムのモードデータに示されているモードで使用できるかどうか決定されることを特徴とする。本発明によるシステムは主に、少なくとも二つの異なるセキュリティレベルがデバイスで使用する鍵に対して規定され、そのシステムが、前記セキュリティレベルとプログラムに関連するモードデータの少なくとも一つの項目とを検査する検査手段と、前記鍵をプログラムのモードデータに示されているモードで使用できるかどうかを決定する決定手段とを含むことを特徴とする。本発明によるデバイスは主に、少なくとも二つの異なるセキュリティレベルがデバイスで使用する鍵に対して規定され、そのデバイスが前記セキュリティレベルとプログラムに関連するモードデータの少なくとも一つの項目とを検査する検査手段と、前記鍵をプログラムのモードデータに示されているモードで使用できるかどうかを決定する決定手段とを含むことを特徴とする。さらに、本発明による記憶手段は主に、少なくとも二つの異なるセキュリティレベルがデバイスで使用する鍵に対して規定され、その記憶手段がさらに、前記鍵に対して決定されたセキュリティレベルとプログラムに関連するモードデータの少なくとも一つの項目とを検査するプログラムコマンドと、その検査に基づいて、前記鍵をプログラムのモードデータに示されているモードで使用できるかどうかを決定するプログラムコマンドとを含むことを特徴とする。
【０００９】
本発明は、先行技術のソリューションより優れた利点を示す。本発明によるシステムでは、できる限り実際の使用状況に則した周囲の状態および環境でプログラムをテストすることができる。したがって、エラーを検出する可能性は先行技術のソリューションよりも高くなり、完成したプログラムの信頼性も高くなる。また、重要な鍵はテストの状態では使用されないので、重要な鍵のセキュリティが確保される。一方、いくつかの鍵はテストに使用されるので、テスト鍵の必要性は先行技術のソリューションの場合よりも低くなる。
【００１０】
以下、本発明を添付の図面を参照して詳細に説明する。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の有益な実施例による方法の動作を、一例として図３ａのデバイスを使用して説明する。デバイス１が、プログラムを実行したり、デバイスのオペレーティングシステムの機能を果たしたり、デバイスの異なる機能ブロックの動作を制御したりする一つまたは複数のプロセッサ２を含む。このデバイスはまた、次のような機能の大半を処理する保護されたブロック３を含む。その機能の実行が、秘密鍵の処理などの秘密にするための動作と関係する機能である。この保護されたブロックの構成の一例は、以下に詳細に説明する図３ｂに示す。このデバイスはまた、例えば、デバイスの動作に必要なソフトウェアと情報とを記憶するメモリ４を含む。デバイス１はまた、送信機５と受信機６とを含み、それによってデバイス１は通信網と通信することができる。送信機５と受信機６は無線通信用であることが好ましく、この場合、デバイス１を移動通信網（図示せず）などの無線通信網との通信に使用することができる。デバイス１はまた、例えば、デバイス１の周辺にあるその他のデバイス（図示せず）と通信するためのローカル通信手段７を含むことができる。これらのローカル通信手段７は、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）送受信機などの低電力無線伝送をベースとした送受信機を含む。このデバイスの操作システム８が、ディスプレイ８.２、キーパッド８.１、イヤホン／スピーカ８.３、およびマイクロホン８.４を含むと有益である。このデバイスはまた、二つ以上のユーザインターフェースを含むことができることは明らかであるので、一つのユーザインターフェースが、例えば、主にデータ処理機能用に構成されてもよく、また別のユーザインターフェースが、主に携帯電話機能用に構成されてもよい。このようなデバイスの一例は、Ｎｏｋｉａ  ９２１０ｉ  Ｃｏｍｍｕｎｉｃａｔｏｒ（登録商標）である。さらに、デバイス１は、ＳＩＭ（加入者識別モジュール）および／またはＵＳＩＭ（ＵＭＴＳ加入者識別モジュール）などのユーザ識別カード９を含むと有益であり、このユーザ識別カード９によって、デバイス１の電源がオンにされたときにユーザは識別され、ユーザに付与される移動局の機能の特性が決定される。
【００１２】
図３ｂによる保護されたブロック３は、読み取り専用メモリ３.１、ランダムアクセスメモリ３.２、プロセッサ３.３、バス接続３.４、およびテスト接続３.５を含むことが好ましい。この保護されたブロックは、保護されたブロックの内部接続に外部からアクセスできないような方法で一つの集積回路として形成されることが好ましい。したがって、この保護されたブロック内で転送される信号を見つけ出すことはほとんど不可能である。読み取り専用メモリ３.１には、デバイス１の製造後に変更する必要のないような記憶された情報とソフトウェアとが含まれる。読み取り専用メモリ３.１は、例えば、保護されたブロックの識別情報（チップＩＤ）、いくつかの鍵を生成するのに使用される乱数、情報をロードする管理機能、保護されたメモリ用の管理機能、デバイスコントローラなどを含む。保護されたブロックのランダムアクセスメモリ３.２は、例えば、保護されたソフトウェアをその実行中に記憶させるのに使用され、また、ソフトウェアの実行中に必要とされかつ秘密にするべき情報の一時的な記憶にも使用される。保護されたブロックのプロセッサ３.３の機能は、例えば、保護されたソフトウェアの実行およびバス接続３.４の制御である。バス接続３.４を介して、保護されたブロック３とデバイス１の残りの部分との間で情報を転送することができる。インターフェースを介して情報を転送する必要がない場合、プロセッサ３.３は、保護されたブロックの内部信号がバス接続に転送されないような状態にバス接続３.４を設定することが好ましい。したがって、インターフェースで信号を監視したとしても保護されたブロックの内部動作を判別することはできない。
【００１３】
一方、保護されたブロック３の機能ならびにその他の機能が一つのプロセッサに実装されるようにデバイス１を実装できることも明らかであろう。この場合、保護されたブロックの読み取り専用メモリ３.１、ランダムアクセスメモリ３.２、およびバス接続３.４は、プロセッサの内部ブロックとして実装され、保護されたブロックの機能をプロセッサが実行しているときに、プロセッサの接続ピンを介して内部のバス信号が監視されるのを防ぐことができる。
【００１４】
さらに、保護されたブロック３を、ＳＩＭカードなどのデバイス１に接続可能なスマートカード９またはデバイス１と接続する別の適切な場所に実装することができる。
【００１５】
図２は、デバイス１のソフトウェア実行環境の構成を簡略に示す。この構成は、保護された環境１０と保護されていない環境１１とを含む。保護された環境１０は、デバイス１の保護されたブロック３に実装される。これに対応して、保護されていない環境１１は、プロセッサ２およびメモリ４などのデバイスのその他の機能ブロックに実装される。保護された環境は、読み取り専用メモリ３.１、ランダムアクセスメモリ３.２、およびこれらの間に設けられる保護されたアプリケーションインターフェース（ＡＰＩ）１０.１からなる。保護されたアプリケーションは、プログラムの動作を外部から監視することができないような方法により、保護された環境下で実行されるようになっているようなプログラムに関連する。このようなプログラムは、決済取引に関するいくつかのプログラム、秘密暗号化鍵が暗号化されていないフォーマットで処理される情報の暗号化／復号化用プログラムなど、所定のセキュリティレベルを必要とするプログラムである。
【００１６】
三つの接続１２.１、１２.２、１２.３が、保護された環境１０と保護されていない環境１１との間で形成され、上述のインターフェース３.４のバス（図示せず）によってハードウェアレベル上に実装されることが好ましい。第１の接続１２.１は保護された環境からのサブルーチン呼び出し用で、このとき、呼び出されるサブルーチンが保護されていない環境に置かれる。呼び出されるサブルーチンは、例えば、メモリ割り当て、保護されたブロック外のメモリ４での保護された（暗号化された）データの記憶などのオペレーティングシステムサービス１１.１を含む。第２の接続１２.２は、保護されていない環境１１から保護された環境１０へのアプリケーションインターフェース用である。例えば、保護された環境外に秘密情報を転送する必要がない場合に保護された環境のサービスを使用するのに、この第２の接続１２.２を適用することができる。保護されていない環境は、オペレーティングシステムドライバ（ＯＳドライバ）１１.２を含むことが好ましく、これらのドライバを介して上記サービスを呼び出すことができる。このようなサービスの一例として、検証されるべきデジタル署名と必要であれば公開鍵とが、保護されていない環境１１から保護された環境１０に転送されるデジタル署名の検証について述べることとする。この保護された環境は、検証を実行するプログラムを含む。保護された環境１０と保護されていない環境１１との間の第３の接続１２.３は、一般的な（保護されていない）アプリケーションと保護されたアプリケーションとの間の通信用である。
【００１７】
図１ａは、デバイス１における鍵の処理階層を簡略化した図で示す。しかし、本例は本発明に関連して利用することができる可能な実施例にすぎないことは明らかであろう。図１ａの鍵の処理階層において、デバイス１のいわゆる公開鍵ヘッダ１０１を構成する複数の公開鍵がある。この公開鍵ヘッダ１０１は、デバイス１の公開鍵についての情報ならびに公開鍵１０２〜１０５を含む。ここでは、公開鍵は、例えば、デバイス固有鍵１０２（チップＨＷ公開鍵）、保護されたソフトウェア用署名鍵１０３（安全モード公開鍵）、ソフトウェア署名鍵１０４（ＯＥＭ１ソフトウェア署名鍵）、およびソフトウェアテスト署名鍵１０５（ＯＥＭ２Ｒ＆Ｄコントロール鍵）を含む。デバイス１の使用中、公開鍵をメモリ４から読み出し、保護された環境のランダムアクセスメモリ３.２に記憶させることができる。記憶に関連して、データがデバイス固有鍵１０２によって検証されるのが好ましい。一方、公開鍵を必要とする段階で、公開鍵をメモリ４から保護された環境のランダムアクセスメモリ３.２に読み込むことができる。この場合でも、データは検証されなければならない。
【００１８】
さらに、デバイス固有鍵１０２を基に計算されるハッシュ値１０６、チップ固有内部鍵１０７、および認証鍵１０８を、保護されたブロックを含む回路内に記憶させる。前記ハッシュ値１０６、チップ固有内部鍵１０７、および認証鍵１０８を、回路を製造する段階で回路に記憶させることが好ましい。この場合、これらを後になって変更することはできない。また、デバイス固有鍵１０２を回路の製造に関連して回路に記憶させることが好ましい。この場合、記憶後にこれを変更することはできない。また、テスト鍵をデバイスに記憶させることが好ましい。サイトＲ＆Ｄコントロール公開鍵１０９が、テストと関連して使用される。これについては、本明細書中で以下に詳細に説明する。
【００１９】
上記で示された鍵に加えて図１ａはまた、デバイスの保護に関するその他のブロックを示す。デバイスはプログラム１１０を含み、これらのプログラムは保護された環境で実行されるためのものであり、これらのプログラムの信頼性のチェックは、保護されたソフトウェア用署名鍵１０３を使用してこれらのプログラムに関連して記憶されるデジタル署名をチェックすることで行うことができる。また、これらのプログラムを内部で使用するための公開鍵１１１を、これらのプログラムに記憶しておいてもよく、この場合これらの公開鍵を、プログラムのロードに関連して、保護された環境のランダムアクセスメモリ３.２にロードする。さらにデバイスは保護されていない環境で実行するためのプログラム１１２を含み、ソフトウェア署名鍵１０４に対応する秘密鍵を用いてこれらのプログラムにデジタル署名しておく。テスト環境設定１１３が、テストに関連して使用することができる鍵１１５および１１６についての情報を含む。テスト環境設定には、サイトＲ＆Ｄコントロール公開鍵１０９に対応する秘密鍵を用いてデジタル署名する。また、デバイスに含まれる個々のデバイス識別情報１１４に、デバイス固有鍵１０２に対応する秘密鍵を使用してデジタル署名する。
【００２０】
図１ａの図において、実線の矢印は様々なデータを検証するのに使用する鍵（信頼性チェックのチェーン）を示す。例えば、デバイス固有鍵を、保護されたソフトウェア用署名鍵１０３、ソフトウェア署名鍵１０４、およびソフトウェアテスト署名鍵１０５を検証するのに使用する。これに対応して、ハッシュ値１０６をデバイス固有鍵１０２の有効性（整合性）を検証するのに使用することができる。
【００２１】
また、公開鍵ヘッダ１０１は、該ヘッダに含まれるデータを認証することができるようにデジタル署名される。
【００２２】
上述の公開鍵を用いてチェックすることができるデータは、デバイス１および／またはプログラムの製造段階で公開鍵に対応する秘密鍵を用いて公知の方法で署名されることが好ましい。秘密鍵に対応する公開鍵が署名またはデータの暗号化にではなく認証のみに使用される場合は、秘密鍵をデバイスまたはプログラム自体に記憶させる必要はない。
【００２３】
図１ｂは、対称鍵に関するデバイス１の鍵階層を示す。対称鍵は、知られているような方法で、同一の鍵を用いてデータを暗号化または署名したり、署名を復号化または検証したりするという事実に基づいて使用される。したがって、そのような対称鍵は部外者に開示してはならない。認証鍵１０８を用いて、例えば、所定のデバイス１でのみ使用するための保護されたアプリケーション１１０において回路を認証することができる。回路固有内部鍵１０７が回路固有乱数であることが好ましく、また、該鍵は情報が保護された環境の外部に記憶されるときに、信頼性および整合性を確保するために使用されるものとする。回路に関する情報を基に回路固有内部鍵１０７を形成し、異なる回路用には異なる鍵であるものとする。保護された環境で実行できるプログラム１１０の各々は、プログラム内部でのみ使用するための一つ以上のアプリケーション固有鍵１１９を伴うこともできる。それに加え、アプリケーション間鍵１２０をプログラム用に形成することもでき、該鍵は二つのプログラム間の通信に使用されるものとする。このようなアプリケーション間鍵は、該鍵を使用することになっているプログラムのそれぞれに記憶される。
【００２４】
各プログラムは、各アプリケーションを識別するために、アプリケーション作成元ＩＤおよびアプリケーションＩＤを少なくとも備えていることが好ましい。これらの識別情報を、秘密鍵を用いて識別情報を基に計算されたハッシュ値としてアプリケーションに記憶することが好ましい。この方法において、ハッシュ値の認証性は、秘密鍵に対応する公開鍵でチェックすることができる。
【００２５】
プログラムに使用可能な鍵１１９、１２０は、例えば、データの暗号化および復号化、データのデジタル署名、デジタル署名の信頼性のチェック、などに使用することができる。プログラムは、生成した鍵を開示しても基本鍵の秘密が危険にさらされないような方法で、一つの対称基本鍵から複数の鍵を形成することができる。このように、プログラムは複数の異なる目的のために同一の鍵を使わずに、異なる目的のためには異なる鍵を生成することが有益である。
【００２６】
本発明による解決策において、アプリケーション固有鍵１１９およびアプリケーション間鍵１２０は、ソフトウェアのテストのための鍵の使用可能性を示す情報、すなわちセキュリティレベルを備える。このセキュリティレベルは、プログラムが用いる全ての鍵が同一の方法で処理されるようにプログラム固有であってもよいし、あるいは、この情報は、異なる鍵が同一のプログラム内部にあっても異なる方法で処理され得るように鍵固有であってもよい。本発明の有益な実施例による解決策において、第１のセキュリティレベルおよび第２のセキュリティレベルが決定され、第１のセキュリティレベルは低セキュリティレベルであり、第２のセキュリティレベルは高セキュリティレベルである。極めて高い信頼性を有することおよび完全に秘密に保たれることを目的とする鍵用に設定するセキュリティレベルは高セキュリティレベルであり、したがって、この鍵をテストに関連して使用することはできない。このような鍵は、通常モードとテストモードとで異なる値を有する。その他の場合において、セキュリティレベルは第１のセキュリティレベルに設定される。このような鍵は、通常モードおよびテストモードの両方で同じ値を有する。セキュリティレベルは、例えば、１ビットの値で示すことができ、したがって値は０または１であり得る。プログラムのコンパイラがこのセキュリティレベルをプログラムに、プログラム全体を対象とするようにも、または各鍵用に別々にも記憶することができる。
【００２７】
以下、ソフトウェアのテストに関連する鍵の使用について説明する。デバイス１の電源投入に関連して、デバイス１に記憶され、始動されるオペレーティングシステムの認証性を検証することが好ましい。この動作は、例えば、オペレーティングシステムに記憶されているデジタル署名をソフトウェア署名鍵１０４でチェックすることによって行う。チェックの結果、オペレーティングシステムの認証性が示されれば、オペレーティングシステムは始動することができる。このときに、デバイス１にテストモードへの移行が知らされる。テスト担当者がデバイス１のインターフェース８を用いて、どのプログラムをテスト用に始動させるかを示すことが好ましい。この情報を基に、プログラムインストールサービスが、このプログラムに対してアクセス権が付与されているかどうかをチェックする。アクセス権が未付与であった場合、プログラムインストールサービスは、アクセス権取得サービスにアクセス権取得が必要である旨を伝える。アクセス権は、例えば、以下の方法で取得される。デバイス１はデバイスの製造元のサーバ（図示せず）またはそれに類するものに、テストが実行されるデバイス１に関する情報および前記アクセス権が付与されるプログラムに関する情報を含むメッセージを送る。デバイスの情報は、デバイスＩＤといったデバイスの識別情報データ、ならびにテストされるプログラムの製作元に関する情報を少なくとも含む。デバイスの製造元のサーバにおいて、受け取られたメッセージからのデバイスＩＤを検査し、このＩＤを基にデバイス１に関する情報およびプログラムの製作元に関する情報をサーバのデータベースから検索する。この情報は、例えば、デバイス固有鍵１０２を含み、この鍵によって、デバイス１においてのみ復号化できるような形式でデータを暗号化することができる。プログラムの製作元のデータは、どのような種類のアクセス権を前記製作元のプログラムに付与することができるかを示す情報を含む。これらの権利は、例えば、デバイスの製造元とプログラムの製作元との間の合意によって決まるものであり得る。
【００２８】
デバイス１においてプログラムのテストを行うことが許可され得る場合、アクセス権を付与するメッセージがデバイス１に伝送される。デバイス１において、受け取ったアクセス権付与のメッセージを検査し、必要に応じて、デバイスの認証性および整合性を検証する。アクセス権付与のメッセージは、少なくとも以下の情報を含むと有益である。プログラムで使用することを許可される機能に関する情報を含むアクセス権パラメータ（アクセス権ベクトル）である。これらの機能は、例えば、ＳＩＭカードの取り扱いに関連する機能、特定のオペレーティングシステム機能、ユーザインターフェース機能、あるいはこれらに類する機能を含む。さらに、アクセス権付与のメッセージは、前記メッセージが関連するプログラムの識別情報を含む。したがって、ソフトウェアロードプログラム１０.２が、起こり得るアクセス権の拡張／制限を正しいプログラムに割り当てることができる。この段階で、プログラムに付与されたアクセス権が認識され、これによりプログラムを始動することができ、決められたアクセス権の範囲内でプログラムの機能を制御することができる。
【００２９】
テストを行うとき、例えば保護されたブロックのテスト接続３.５が作動し、このときテスト接続の接続線（図示せず）を用いて保護されたブロック３内部の信号を見つけ出すことができる。これにより、保護されたブロック３で実行されるプログラムの手順をトレースし、プログラムのデバッグを行うことができるようになる。少なくとも二つの使用可能なテストモードを備えていることが好ましい。一つは通常のソフトウェアのテスト用モードであり、もう一つは保護されたソフトウェアのテスト用モードである。しかし、テストモードを作動させる前に、先ず前記デバイス１においてテストを行うことが許可されているかどうかをチェックする。これは、テスト環境設定１１３に含まれる使用され得るテストモードに関する情報をチェックすることによってわかる。
【００３０】
通常のソフトウェアのテスト用モードにおいて、プログラム署名鍵１０４および対応するテスト鍵１１６を用いる。保護されたソフトウェアのテスト用モードにおいて、保護されたソフトウェアに署名するための鍵１０３の代わりに対応するテスト鍵１１５を用いる。これらのテスト鍵１１５、１１６を、例えば、テスト環境設定１１３に記憶する。
【００３１】
プログラムのテストを始動する段階で、本発明の効果的な実施例による方法において以下のステップを採用する。テストされるプログラムをデバイスの通常のメモリ４に記憶しておくことが好ましい。また、このプログラムにはデジタル署名が備えられている。テストされるプログラムのデジタル署名用に、上述のテスト鍵１１５および１１６に対応する秘密鍵が使用されている。
【００３２】
デバイス１がテストモードのとき、保護されたブロックのランダムアクセスメモリ３.２へのプログラムのロードが始動する。ロードプログラム１０.２を保護されたブロックの読み取り専用メモリ３.１に記憶する。ロードプログラム１０.２は、プログラムが始動する前に、ロードされるプログラムの認証性をソフトウェアテスト署名鍵１０５で検証する。さらに、プログラムに関連する鍵のセキュリティレベルをチェックする。一つの鍵がテストに使用不可能であることをセキュリティレベルが示す場合、この鍵に対応するテスト鍵を、テスト中にプログラムで使用できるように設定する。しかし、セキュリティレベルが、この鍵はテストにも使用可能であることを示す場合、この鍵を通常通りテストに使用することもできる。
【００３３】
上述の種類の構成において、テスト担当者は、第２の値、すなわち高いセキュリティレベルに設定されたセキュリティレベルを有するような鍵の内容を見つけ出すことはできない。これは、これらの鍵はテストを行っている状態では使用されず、代わりにテスト鍵が使用されるためである。
【００３４】
実際のアプリケーションでは、テスト機能の多様な実装方法が存在し得る。例えば、通常モードおよびテストモードをデバイス用に規定することができる。したがって、テストモードにおいて、全てのプログラムがテストモードで動作し、全ての重要な鍵が対応するテスト鍵に置き換えられる。この実施例において、鍵を秘密に保つことを考慮する必要がある全てのプログラムに、テストモードに関する情報を伝送することが好ましい。これらのプログラムは秘密に保っておく鍵をテスト鍵に置き換えることができる。
【００３５】
テスト機能はまた、プログラム固有の方法で実装することもでき、このときテストされる一つまたは複数のプログラムのみをテストモードに設定することが好ましい。この場合、その他のプログラムは通常通りに動作することができる。その結果、この実施例において、プログラムのテストはその他のプログラムに影響を与えることはなく、テストが行われているという点を除いては、デバイス１は必要に応じて通常通りに使用できる。実用面において、このようなプログラム固有テスト機能は、例えば、以下の方法で実装できる。オペレーティングシステムの保護されたカーネルあるいはそれに類するものが、テスト対象であるプログラムを前記デバイス１においてテストすることが許可されているかどうかを検査する。このカーネルあるいはそれに類するものの動作の重要な部分は、テスト状態にあってもテスト機器によって見つけられることはない。テストが許可されている場合、カーネルはテストされるプログラムをテストモードに設定する。これに対応して、テストの後、カーネルはプログラムを通常モードに設定するか、あるいはプログラムを終了させることもできる。
【００３６】
上述のプログラム固有テストの選択肢では、テストモードにあるプログラムについて他のプログラムに知らせる必要がある場合もある。このことは、テスト状態で秘密鍵を秘密にしておくことが保証できない場合に必要となる。したがって、通常モードにあるプログラムはこの鍵をテスト鍵で置き換えるか否かを決めることができる。
【００３７】
また、プログラムへの通常のアクセス権がデバイス１で受け取られているかまたは設定されている限り、プログラムがテストモードにあるようにもテスト機能を実装することができる。
【００３８】
本発明による方法はソフトウェアによって大部分を実装することができる。この場合プログラムコマンドのセットを生成してこの方法の機能を実行する。これらのプログラムコマンドは、知られているような方法でメモリ３.１、メモリ４、ＣＤ−ＲＯＭ、デジタル汎用ディスクなどの記憶手段に記憶することができる。
【００３９】
本発明は上に提示された実施例のみに限定されず、添付の特許請求の範囲の範囲内で変更することができることは明らかである。
【図面の簡単な説明】
【００４０】
【図１ａ】デバイスの鍵の処理階層を簡略に示す図である。
【図１ｂ】デバイスの鍵の処理階層を簡略に示す図である。
【図２】本発明の有益な実施例によるデバイスに実装されるソフトウェアの実行環境の構成を略図で示す図である。
【図３ａ】本発明の好適な実施例によるデバイスを略ブロック図で示す図である。
【図３ｂ】本発明の有益な実施例によるデバイスの保護されたブロックを略ブロック図で示す図である。
【図１ａ】
0004417952.tif 000002
【図１ｂ】
0004417952.tif 000003
【図２】
0004417952.tif 000004
【図３ａ】
0004417952.tif 000005
【図３ｂ】
0004417952.tif 000006