(57)【要約】【課題】複数のベンダがサポートする規格を有するＩＣカード、メモリカードなどの記憶装置において、ソフトウェアの実行を許可させるライセンスを各ベンダーが簡単に、安全な形式でインストールできる【解決手段】情報処理装置によりソフトウェアの実行を許可するための記憶装置において、記憶装置は、ソフトウェアライセンスを保持するようにし、ソフトウェアライセンスには、記憶装置の製造者の識別データと認証鍵とを含める。また、ソフトウェアの内部に暗号鍵を設け、ソフトウェアを実行するときには、ソフトウェアの内部の暗号鍵により、ソフトウェアライセンスを読み出して、記憶装置の製造者の識別データとソフトウェア内部の暗号鍵とにより認証鍵を生成し、読み出された認証鍵と生成された認証鍵とを比較し、ソフトウェアの実行を許可する。【選択図】        図１
2005215945.tif 000002
【特許請求の範囲】
【請求項１】
電子機器（１３０）が搭載される電子システム（１８０）中で該電子機器（１３０）を動作させるソフトウエア（１９０）を該ソフトウエア（１９０）の使用ライセンスのない状態では非動作とさせるために、
上記ソフトウエア（１９０）中のソフトウエア秘密鍵と上記ソフトウエア（１９０）の使用ライセンスを有するセカンドベンダーの識別情報とを用いて、上記ソフトウエア（１９０）の使用ライセンスを有する上記セカンドベンダーに該セカンドベンダーが製造する他の電子機器（１５０）中にインストールされる電子機器認証情報（認証データ、認証鍵）を高セキュリティ化スクランブルを用いて生成し、この生成された該電子機器認証情報を上記セカンドベンダーにインターネットを介して発信し、
上記電子機器（１３０）又は上記他の電子機器（１５０）が搭載される上記電子システム（１８０）へ上記ソフトウエア秘密鍵をインターネットを介して配信することで、上記電子機器（１８０）内で上記ソフトウエアは受信した上記ソフトウエア秘密鍵を上記電子機器認証データとの間の相関関係を調べて所定の相関関係が得られない場合には、上記他の電子機器（１５０）は上記ソフトウエアの使用ライセンスがないとするようにして上記ソフトウエアの上記他の電子機器(１５０)を用いた動作を禁止することを可能とする情報発信方法。
【請求項２】
情報処理装置によりソフトウェアの実行を許可するための記憶装置において、
前記記憶装置は、前記ソフトウェアの実行を許可するためのソフトウェアライセンスに関する情報を保持し、
前記ソフトウェアライセンスに関する情報は、前記記憶装置の製造者の識別データと認証鍵とを含み、前記ソフトウェアの内部に暗号鍵が設けられており、
前記ソフトウェアを実行するときには、前記ソフトウェアの内部の暗号鍵により、前記ソフトウェアライセンスに関する情報を読み出して、前記記憶装置の製造者の識別データとソフトウェア内部の暗号鍵とにより認証鍵を生成し、読み出された認証鍵と生成された認証鍵とを比較し、ソフトウェアの実行を許可することを特徴とする記憶装置。
【請求項３】
前記ソフトウェアは、前記記憶装置を用いた処理をおこなうことを特徴とする請求項２記載の記憶装置。
【請求項４】
前記ソフトウェアライセンスに関する情報は、ソフトウェアの機能を表す認証データを含み、さらに、その認証データを加えて認証鍵を生成することを特徴とする請求項２記載の記憶装置。
【請求項５】
前記ソフトウェアは、ソフトウェアに関する情報を記述した秘密コードを含み、さらに、その秘密コードを加えて認証鍵を生成することを特徴とする請求項２記載の記憶装置。
【請求項６】
前記記憶装置は、その記憶装置の製造者の識別データを保持し、この保持された記憶装置の製造者の識別データと、読みだされた前記記憶装置の製造者の識別データとを比較し、ソフトウェアの実行を許可することを特徴とする請求項２記載の記憶装置。
【請求項７】
情報処理装置により実行されるソフトウェアのソフトウェア実行方法において、
記憶装置に、ソフトウェアライセンスに関する情報を書き込むステップと、
ソフトウェアの内部に設けられる暗号鍵と前記ソフトウェアライセンスに関する情報の一部とにより、第１の認証鍵を一方向演算により生成するステップと、
前記記憶装置に、前記第１の認証鍵をソフトウェアライセンスに関する情報として書き込むステップと、
前記情報処理装置に前記ソフトウェアの内部に設けられる暗号鍵を含むソフトウェアを供給するステップと、
前記情報処理装置において前記記憶装置を装着して、前記ソフトウェアを実行するときに、前記ソフトウェアの内部に設けられる暗号鍵により、前記記憶装置に書き込まれた前記ソフトウェアライセンスに関する情報を読出すステップと、
前記ソフトウェアの内部に設けられる暗号鍵と前記ソフトウェアライセンスに関する情報の一部とにより、第２の認証鍵を一方向演算により生成するステップと、
前記ソフトウェアライセンスに関する情報として読み出された第１の認証鍵と、生成された前記第２の認証鍵とを比較し、判定するステップと、
前記第１の認証鍵と前記第２の認証鍵とを判定するステップの結果に従って、前記ソフトウェアの実行を許可するステップとを有することを特徴とするソフトウェア実行方法。
【請求項８】
前記ソフトウェアライセンスに関する情報に、前記記憶装置の製造者を識別する製造者の第１の識別データを含むことを特徴とする請求項７記載のソフトウェア実行方法。
【請求項９】
前記記憶装置に、その記憶装置の製造者を識別する製造者の第２の識別データを書き込むステップと、
前記ソフトウェアライセンスに関する情報として読み出された前記製造者の第１の識別データと、前記製造者の第２の識別データとを比較し、判定するステップと、
前記製造者の第１の識別データと、前記製造者の第２の識別データと判定するステップの結果に従って、前記ソフトウェアの実行を許可するステップとを有することを特徴とする請求項８記載のソフトウェア実行方法。
【請求項１０】
前記ソフトウェアの内部の暗号化鍵は、秘密鍵であって、前記ソフトウェアは、前記秘密鍵と対となる公開鍵を含む証明書データを含み、
前記ソフトウェアライセンスは、前記ソフトウェアの機能を表す認証データを含み、
前記認証鍵を生成するステップは、前記秘密鍵と前記証明書データと前記認証データを利用して生成されることを特徴とする請求項７記載のソフトウェア実行方法。
【請求項１１】
情報処理装置に記憶装置を用いた処理を許可するためのライセンスであって、前記記憶装置内に格納されるライセンスを生成するためのライセンス生成装置において、
前記情報処理装置は、前記ライセンスの前記記憶装置を製造する製造者を識別するための識別データと、前記記憶装置を用いた機能を表すための認証データに対し、一方向演算をおこなって認証鍵を生成して、その認証鍵により記憶装置を用いた処理を許可するか否かの判定をおこなう装置であって、
このライセンス生成装置は、
前記記憶装置を製造する製造者を識別するための識別データと、前記記憶装置を用いた機能を表すための認証データに対し、一方向演算をおこなう認証鍵生成部と、
前記識別データと、前記認証データと、前記認証鍵生成部によって得られた認証鍵とを含む前記ライセンスを生成するライセンス生成部とを備えるライセンス生成装置。
【請求項１２】
情報処理装置に記憶装置を用いた処理を許可するための記憶装置を製造するための記憶装置製造装置において、
前記情報処理装置は、前記ライセンスの前記記憶装置を製造する製造者を識別するための識別データと、前記記憶装置を用いた機能を表すための認証データに対し、一方向演算をおこなって認証鍵を生成して、その認証鍵により記憶装置を用いた処理を許可するか否かの判定をおこなう装置であって、
この記憶装置製造装置は、
前記情報処理装置に前記記憶装置を用いた処理を許可するためのライセンスを、前記記憶装置に格納する第１の格納処理部と、
前記記憶装置を製造する製造者を識別するための第１の製造者識別データを、前記記憶装置に格納する第２の格納処理部とを備え、
前記ライセンスは、前記記憶装置を製造する製造者を識別するための第２の製造者識別データと、前記記憶装置を用いた機能を表すための認証データと、前記第２の識別データと前記認証データに対して一方向演算をおこなった結果得られた認証鍵とを含むことを特徴とする記憶装置製造装置。
【請求項１３】
情報処理装置に記憶装置を用いた処理を許可するための記憶装置において、
前記情報処理装置に前記記憶装置を用いた処理を許可するためのライセンスを記憶する第１の記憶領域と、
前記記憶装置を製造する製造者を識別するための第１の製造者識別データを記憶する第２の記憶領域と、
前記情報処理装置からの指示に従って、前記第１の記憶領域から前記ライセンスを読み出して、前記情報処理装置へ送出し、前記情報処理装置からの指示に従って、前記第２の記憶領域から前記第１の製造者識別データを読み出して、前記情報処理装置へ送出する処理部とを備え、
前記ライセンスは、前記記憶装置を製造する製造者を識別するための第２の製造者識別データと、前記記憶装置を用いた処理の機能を記述するための認証データと、前記第２の識別データと前記認証データに対して一方向演算をおこなった結果得られた認証鍵とを含み、
前記情報処理装置は、前記ライセンスの第２の製造者識別データと、前記認証データに対し、一方向演算をおこなって、認証鍵を生成して、その認証鍵により記憶装置を用いた処理を許可するか否かの判定をおこなうことを特徴とする記憶装置。
【請求項１４】
記憶装置を用いた処理を実行するための情報処理装置において、
前記記憶装置を製造する製造者を識別するための製造者識別データと、前記記憶装置を用いた処理の機能を表すための認証データと、前記製造者識別データと前記認証データに対して一方向演算をおこなった結果得られた第１の認証鍵とを含むライセンスを、前記記憶装置から読み出し、
前記ライセンス内の前記識別データと前記認証データに対して前記一方向演算をおこなう演算部と、
前記演算部によって得られた第２の認証鍵と、前記第１の認証鍵を比較する比較部と、
前記比較部の比較結果に応じて、前記記憶装置を用いた処理を実行する実行部とを備える情報処理装置。
【請求項１５】
前記記憶装置を製造する製造者を識別するための他の製造者識別データを、前記記憶装置から読み出し、
前記比較部の比較結果に応じて、前記他の識別データと前記ライセンス内の前記製造者識別データとを比較する他の比較部とを備え、
前記実行部は、前記他の比較部の比較結果に応じて、前記記憶装置を用いた処理を実行する請求項１４記載の情報処理装置。
【請求項１６】
前記演算部は、
前記ライセンスを前記記憶装置から読み出すために用いた秘密鍵データと、前記秘密鍵データと対の公開鍵データを含む証明書データの一部に基づいて、データＡを生成し、
前記ライセンス内の前記製造者識別データと前記認証データに基づいて、データＢを生成し、
前記データＡと前記データＢに対して前記一方向演算をおこない、データＣを生成し、
前記秘密鍵データと前記証明書データの他の一部に基づいて、データＤを生成し、
前記データＣと前記データＤに対して前記一方向演算をおこない、前記第２の認証鍵を生成することを特徴とする請求項１５記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの実行を許可する記憶装置に係り、ＩＣカード、メモリカードなどの小型な記憶装置を使用するプログラムの認証処理に用いて好適なソフトウェアの実行を許可する記憶装置に関する。
【背景技術】
【０００２】
インターネットの普及などにより、有用なソフトウェアやコンテンツが瞬時に世界中に配布できるようになってきた。このような状況下では、不正な使用を防止し、ソフトウェアやコンテンツの作成者の著作権を保護することが重要になってくる。
【０００３】
コンテンツの利用を制限する手段としては、例えば、特許文献１に示されているように利用制限情報をコンテンツに付与し、この情報を元に制限する手法が知られている
【０００４】
【特許文献１】特開２００２−１９７０６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ＩＣカード、メモリカードのようなセキュリティ機能付き記憶装置は、ＩＳＯ等の規格に基づいて製造されているが、その機能は発行者毎に独自なものであり、価格もサービスの種類に応じて決定されている。
【０００６】
しかし、ＩＣカード、メモリカードは発行者毎の独自性が強いことから、メモリカードは数多く流通していながらも、カードの統一化、アプリケーションレベルの互換性が十分にできていないという背景がある。
【０００７】
仮にある統一規格により定められたセキュリティ機能が、製造メーカー間の互換性を保障する形でＩＣカード、メモリカード等に実装された場合、利用者およびアプリケーション開発者は、カード共通のセキュリティ機能を利用して、多目的の統一カードや、製造者を問わず利用できるアプリケーションの開発が可能になる。
【０００８】
このような機能を持つＩＣカード、メモリカードは、互換性が高くなるため製造者を問わず利用することが可能になるものの、製造者毎にオプションで追加されるメモリカード機能の相違から特定のカードに利用を制限したい場合や、製造業者が自社カードの拡販のために用意したアプリケーションを、他の製造者のカードで利用させたくない、あるいは、有償で利用させたい場合が発生するものと考えられる。しかしながら、現状こういった仕組みに適合できるシステムは存在していない。
【０００９】
本発明は、上記問題点を解決するためになされたもので、複数のベンダがサポートする規格を有するＩＣカード、メモリカードなどの記憶装置において、ソフトウェアの実行を許可させるライセンスを各ベンダーが簡単に、安全な形式でインストールできる仕組みを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の記憶装置には、記憶装置の製造者のＩＤとソフトウェアライセンスが格納される。そして、記憶装置を利用して、ソフトウェアを実行しようとする端末に、ソフトウェア秘密鍵を含んだソフトウェアを配布する。ソフトウェアを実行する際には、ソフトウェアライセンスは、記憶装置を使用する端末では、配布されたソフトウェア秘密鍵によりセキュアに読み出される。また、ソフトウェア秘密鍵とソフトウェアライセンスの一部のデータにより認証鍵を生成し、読み出されたソフトウェアライセンスの中の認証鍵と比較して矛盾がなく、かつ、記憶装置の製造者のＩＤと読み出されたソフトウェアライセンスの中の製造者のＩＤが一致するときに、ソフトウェアの実行を許可する。
【発明の効果】
【００１１】
本発明は、上記問題点を解決するためになされたもので、複数のベンダがサポートする規格を有するＩＣカード、メモリカードなどの記憶装置において、ソフトウェアの実行を許可させるライセンスを各ベンダーが簡単に、安全な形式でインストールできる仕組みを提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明に係る一実施形態を、図１ないし図１０を用いて説明する。
【００１３】
先ず、図１を用いて本発明に係る記憶装置を用いたソフトウェアライセンスの仕組みの概要について説明する。
図１は、本発明に係る記憶装置を利用したライセンスの運用の仕組みを表す図である。
【００１４】
製造者１２０ 、製造者１４０、製造者１６０は、それぞれある共通規格に基づいた記憶装置（例えば、メモリカード、ＩＣカード）を生産するメーカである。この共通規格では、製造者毎に異なる製造者ＩＤ、識別データが割り振られており、各製造者は、このＩＤ番号を記憶装置に設定した状態で出荷する。ここで共通規格とは、同一のコマンドレベルのインターフェースで利用可能となるセキュリティ機能を実装し、その製造において一定のセキュリティ評価を要するような規格である。このような共通規格としては、ＭｕｌｔｉＭｅｄｉａＣａｒｄ（ＭｕｌｔｉＭｅｄｉａＣａｒｄは、Infenion Technology AG社の登録商標である）やＳＤ（Secur Digital）カード、メモリースティック（メモリスティックはソニーの登録商標である）といったメモリカード規格や、ＭＯＰＡＳＳ規格等が該当する。
【００１５】
発行者１００は、各製造者からこれら装置を購入し販売する中間業者である。発行者１００は、特定の製造者のカードを発行する機関でもよいし、複数の製造者から発行されたカードを統一的に販売する機関でもよい。また、以下に述べる製造者毎に異なるオプション機能を顧客目的に応じて選択したり、そのライセンス管理を請け負う機関であってもよい。この製造者毎に異なるオプション機能は、アプリケーションソフトウェアにより実現される機能である。
【００１６】
顧客１８０は、発行者１００より供給を受けた製品（１３０、１５０、１７０）を利用する。記憶装置１３０、１５０、１７０は基本機能は等価であり、この等価な基本機能に基づきアプリケーションソフトウェア製造者は、記憶装置を利用するアプリケーションソフトウェアを製造し、顧客１８０は、このアプリケーションソフトウェアを利用することができる。
【００１７】
上記のような記憶装置を用いたシステムを提供する場合には、製造者（１２０、１４０、１６０）が他の製造者と製品を差別化する目的で、アプリケーションソフトウェアを用意する場合が考えられる。これには独自の暗号演算ライブラリや、ＰＣ等の認証ソフト、ＨＤＤ等の記憶装置内のデータを暗号化するソフト等が該当する。また、価格や入手性の観点からゲーム機等で記憶装置のセキュリティ機能を利用したいが、自社のライセンスを持ったカードに利用を限定したい場合等も考えられる。さらに、発行者がカードの機能をライセンスにより制限することで、価格差を発生させたい場合が考えられる。
【００１８】
本実施形態は、こういった課題に対処するための製造者ＩＤとライセンスを用いた認証方式に関するものである。
【００１９】
共通規格により製造される記憶装置は、製造者毎に独自のＩＤが与えられており、各製造者は製品に、このＩＤを含ませて出荷する。この製造者のＩＤは、書き換え不可能なＲＯＭ（Read Only Memory）に格納されるのが望ましい。
【００２０】
ここでアプリケーションソフトウェアが、このＩＤに基づいて利用の可否を定めるならば、特定の製造者に利用を特定することが可能になる。ただし、この仕組みにはＩＤの読み出しに特にセキュリティ上の制限がかかっていないため認証が容易であるものの、インターフェース上のデータの改ざんにより他者製品の成りすましもまた容易であるという問題点がある。
【００２１】
そこで、このＩＤ読み出しのためのコマンド群とは別に、認証によりライセンスを読み出すコマンド群を定義すれば、ライセンスの改ざんおよび盗聴を防止しながらアプリケーションの利用制限を可能とすることができる。通常、ＩＣカードはカード内に複数のカードアプリケーションを実装でき、その一機能としてこの仕組みを実装することは困難ではない。また、著作権保護機能を持つメモリカードは、ライセンスを管理する機構を既に有することから、このライセンス運用システムを応用することは困難ではない。
【００２２】
以下の説明では、Ｓｅｃｕｒｅ  ＭｕｌｔｉＭｅｄｉａＣａｒｄ（以下ＳＭＭＣと略す。ＳＭＭＣはケータイｄｅミュージックコンソーシアムの商標であり、ＵＤＡＣ−ＭＢと呼ばれるメディアベースの超流通コンテンツ配信規格に準拠したカードである）の著作権保護システムを例にとり、ライセンス運用システムの説明をおこなうことにする。
【００２３】
本実施形態では、図１に示されるように、製造者１２０は、自社の記憶装置１３０の拡販のためにソフトウエア１９０を製造し、顧客１８０に、ＣＤ−ＲＯＭのようなメディア、Ｗｅｂサイト等を通じて提供するものとする。ソフトウエア１９０には利用許可判定モジュール３１０が組み込まれており、ソフトウエア利用時に記憶装置を認証する。
【００２４】
ソフトウェアは、例えば、ノートＰＣ、ＰＤＡなどのような端末装置（情報処理装置）により実行される。
【００２５】
次に、図２を用いて記憶装置の内部構成について説明する。
図２は、記憶装置の内部構成を表す図である。
【００２６】
上述のように記憶装置１３０、１５０、１７０は、基本機能として等価な仕組みを有しているが、必要とされる機能に応じて、メモリ４７０やメモリ４８０やＩＣチップ４９０が実装されていない構成をとってもよい。図では代表例として記憶装置１３０を示している。
【００２７】
記憶装置１３０は、インターフェース４５０、メモリ４７０、メモリ４８０、コントローラチップ４６０と、ＩＣチップ４９０から構成される。
【００２８】
インターフェース４５０は、外部との信号とをやり取りする部分であり、データ、コマンド、レスポンス、電源、グランド、クロックおよびチップセレクト信号等が入出力可能である。
【００２９】
コントローラチップ４６０は、インターフェース４５０から入力されたコマンドとデータに基づき所定の演算をおこない、メモリ４７０、メモリ４８０、ＩＣチップ４９０にデータを格納したり、メモリチップ上のデータを読み出した後に所定の演算をおこない、インターフェース４５０にデータを出力したり、メモリ４７０、メモリ４８０、ＩＣチップ４９０にデータを書き戻す。
【００３０】
また、コントローラチップ４６０は、後に説明する認証およびデータ保護のための暗号化をおこなう暗号処理モジュール４４０を有している。
【００３１】
メモリ４７０は、認証の必要なく操作できるメモリであり、製造者ＩＤ４７５が格納される。一方、メモリ４８０は、認証を通じて操作できるようになるメモリであり、ソフトウェアライセンス４８５（単に「ライセンス」とも記すことにする）が格納される。このライセンスとは、図１に示されるソフトウエアライセンス１５４と等価なデータである。
【００３２】
また、ＩＣチップ４９０は、認証を通じて操作でき、かつ高度な耐タンパ性（不正行為、海賊行為などに対する耐性）を持ち、ライセンス４９５が格納される。
【００３３】
また、コントローラチップ４６０は、暗号処理モジュール４４０を、これはＩＣチップ上に実装しておいてもよく、また、コントローラとは別チップで実装されていてもよい。またメモリ４７０、メモリ４８０、ＩＣチップ４９０は、それぞれコントローラチップと一体形成されていてもよく、別チップ構成であってもよい。またメモリ４８０は、メモリ４７０よりも高い耐タンパ性を有することを期待されており、メモリ４７０がコントローラチップ４６０とは別構成である場合にも、メモリ４８０に関してはコントローラと同チップ上に構成されていたり、暗号処理モジュール４４０を利用して暗号化して格納されていることが望ましい。ＩＣチップはＩＳＯ７８１６規格に準拠した電気的および物理的な攻撃に対する耐タンパ性を有していることが望ましい。
【００３４】
また、メモリ４８０とＩＣチップ４９０にライセンスが一つづつ格納されているが、メモリ４８０とＩＣチップ４９０の一方のみ持つ構成でもよい。
【００３５】
記憶装置１３０は、規格によって定められたコマンドシーケンスの他に、その構成に応じてＩＤ読み出し手順４１０、ライセンス読み出し手順４２０、ライセンス読み出し手順４３０を有している。これらの手順を利用することにより、ＩＤ４１５、ライセンス４２５、ライセンス４３５を読み出すことができる。これらは、規格によって定められたコマンドシーケンスを拡張する形で実装されていてもよいし、まったく別のコマンド群により実装されていてもよい。ただし、ここでＩＤ４１５、ライセンス４２５、ライセンス４３５は、発行者もしくは製造者のみが書き換え可能な形で実装されていることが望ましい。
【００３６】
次に、図３ないし図６を用いて本発明の記憶装置のライセンスに関連する処理について説明する。
【００３７】
先ず、図３ないし図５を用いて本発明の記憶装置によりライセンスを許可するときの処理について説明する。
図３は、利用許可判定モジュール３１０の手順を示したフローチャートである。
図４は、ライセンス検証処理の手順を示したフローチャートである。
図５は、認証鍵生成処理の手順を示したフローチャートである。
【００３８】
利用許可判定モジュール３１０は、図１に示したソフトウェア１９０の一部として、端末装置（情報処理装置）上で動作するプログラムであり、ソフトウエアの実行時に動作する。
【００３９】
ただし、利用許可判定モジュール３１０は、図２に示したコントローラチップが実行する暗号処理モジュール４４０の一部として実装されてもよい。
【００４０】
また、既にこのモジュールが実行済みであり、利用許可が与えられているならば、アプリケーションソフトウェアの要件に従い、利用許可判定モジュール３１０を実行しなくてもよい。
【００４１】
先ず、利用許可判定モジュール３１０は、アプリケーションソフトウェアにより開始されると（３１１）、最初にＩＤ読み出し処理をおこなう。ＳＭＭＣでは、ＭＭＣの基本命令の一つであるＳＥＮＤ＿ＣＩＤ命令を実行し、ＣＩＤ（Card Identification）を読み出し、その中に含まれるＭＩＤ（Manufacture ID）を参照する（３３０）。
【００４２】
次に、利用許可判定モジュールは３１０は、ＩＤがソフトウエアによってサポートされているものか否かを判断する（３１２）。もし、サポートされているＩＤと、上記のＭＩＤが一致しているならば、利用許可の設定をおこなう（３１４）。ただし、機能群毎に認証をおこない、その有効性を判定するような利用をおこなう場合には、既に読み込んだＩＤをソフトウエアがキャッシュしていてもよい。また、その機能群への認証が、ＩＤの一致だけでは不十分であるなら、ＩＤ読み出し処理のあと、ＩＤの判定を省略し、ライセンス読み出し処理を実行する経路を有していてもよい。
【００４３】
手続き３１２においてＩＤが一致していない場合、利用許可判定モジュール３１０はライセンス読み出し処理をおこなう（３４０）。
【００４４】
ＳＭＭＣでは、ＵＤＡＣ−ＭＢ（ＵＤＡＣ−ＭＢは、ＵＤＡＣ−ＭＢコンソーシアムの登録商標である）規格に基づくセキュアな通信方式を用いて記憶装置から端末装置（情報処理装置）上のモジュールに盗聴のおそれなくデータの受け渡しを可能とするプロトコルを実装している。
【００４５】
この仕組みは、端末装置上のモジュールがＳＭＭＣに公開鍵暗号方式の公開鍵証明書を送付し、ＳＭＭＣはこの公開鍵証明書を証明書発行者の公開鍵で検証することで有効性を確認し、これが有効であると判断されると、証明された公開鍵を利用して擬似乱数生成器から生成された共通鍵暗号の鍵である第１セッション鍵を暗号化して端末装置に送る。端末装置は暗号化されたデータを受け取ると、これを公開鍵暗号方式の上記公開鍵に対応する秘密鍵で復号し、第１セッション鍵を取り出す。次に、第１セッション鍵で擬似乱数生成器から生成された共通鍵暗号の鍵である第２セッション鍵を暗号化し、ＳＭＭＣに送付する。ＳＭＭＣは、このデータを第１セッション鍵で復号し第２セッション鍵を取り出すと、この第２セッション鍵でライセンスを暗号化し、端末装置に送付する。端末装置は第２セッション鍵でこのデータを復号することで安全にライセンスを獲得できる。手続き３４０はこういった盗聴の恐れのないプロトコルを用いて記憶装置からライセンスを読み出す処理である。
【００４６】
これはＳＭＭＣのみではなく、ＳＤカードやＩＣカードを用いても同等の処理が可能である。
【００４７】
さらに、利用判定モジュールは、実行可能な一つまたは複数のライセンス読み出し手続きを有していてもよく、また優先的にどれを用いるかは、ソフトウエアが指定してもよいし、予め所定の順番を定めていてもよい。また手続きは、最初に指定された一つが失敗することで、失敗としてもよいし、複数のライセンス読み出し処理を実装している場合には、利用可能なすべての認証が失敗した段階で失敗と判定してもよい。
【００４８】
ライセンスの読み出しが成功した場合には（３４０）、端末装置がライセンスの検証処理をおこなう（３５０）。ライセンス検証処理３５０の詳細については、次に、図４のフローチャートを用いて説明する。
【００４９】
利用許可判定モジュール３１０は、ライセンス検証処理３５０の結果に基づき、ライセンスの有効か否かの判定を行う（３１６）。ここで有効であると判断された場合には、アプリケーションソフトウェアの利用許可の設定をおこない（３２０）、そうでない場合には不許可の設定をおこなう（３１８）。
【００５０】
処理が成功した場合には、その結果を呼び出し元のソフトウエアに報告し（３２２）、そのソフトウェアは利用可能になる。
【００５１】
また、利用判定モジュール３１０は、一度ライセンスで認証が成功したカードのＣＩＤを記憶しておき、その後の処理においては、ライセンスを読み出すことなくＣＩＤの比較のみでアプリケーションを有効としてもよい。また、ＣＩＤに含まれるデータのうちにシリアル番号が登録してあるものの場合には、上記の製造者のＩＤの検証の代わりに記憶装置のシリアル番号を用いて認証を行ってもよい。また製造者ＩＤの検証とシリアル番号の検証を両方おこなってもよい。これは後に応用例（２）として説明する。
【００５２】
このようにして認証をおこなった場合、記憶装置１３０は、ソフトウエアの製造元から供給された記憶装置であり、ソフトウエアは利用許可判定モジュール３１０によりライセンスの認証がおこなわれたことになるため、ソフトウェアが利用許可された状態になる。
【００５３】
次に、図４のフローチャートを用いてライセンス検証処理の詳細について説明する。
【００５４】
端末装置は、ライセンス読み出し処理で用いた証明書データと秘密鍵データをセキュアに格納している。証明書データは、秘密鍵と対となる公開鍵を含むデータであり、秘密鍵の有効性を判断するためのデータである。ライセンス検証処理３５０はこれらのデータを参照してライセンス検証処理をおこなう。なお、ライセンス検証処理で用いるライセンスは予め生成され、記憶装置１３０に格納しておく必要があるが、これは後ほど、図６のフローチャートにより説明する。
【００５５】
ライセンス検証処理３５０が、実行されると（３５１）、認証鍵生成処理３８０を実行する。認証鍵生成処理３８０の詳細は、後に図５のフローチャートにより説明する。
【００５６】
そして、認証鍵生成処理３８０が生成した認証鍵の下位１０バイトが、ライセンス読み出し処理３４０で読み出した認証鍵２９０と一致しているか否かを確かめる（３６２）。なお、認証鍵の下位１０バイトでなくとも、認証鍵の生成時と整合性を取れており、セキュリティが確保されていれば、認証鍵の任意の一部または全部を検証に用いることができる。
【００５７】
一致していない場合には、ライセンスの無効を設定する（３６４）。一致している場合には、次に、ＩＤ２７０と、ＩＤ読み出し処理３３０で読み出したＩＤと一致しているか否かを確かめる（３６６）。一致していない場合には、ライセンスの無効を設定する（３６８）。そして、一致している場合には、ライセンスの有効を設定する（３７０）。処理が終了すると、利用許可判定モジュール３１０にもどる（３７２）。
【００５８】
次に、図５のフローチャートを用いて認証鍵生成処理について詳細に説明する。
【００５９】
認証鍵生成処理３８０は、実行されると（３８１）、秘密鍵データと証明書データの一部の排他的論理和を計算する（３５２）。証明書データの一部とは、証明書データのあるオフセット以降のデータの全体または一部を、ハッシュ演算または暗号演算（共に、一方向性演算による演算）することにより計算されたデータである。このデータを仮にデータＡと呼ぶ。
【００６０】
次に、ライセンスに含まれるＩＤ２７０と認証データ２８０を結合し、さらに秘密コードを連結する（３５４）。このデータを仮にデータＢと呼ぶ。またデータの連結の仕方は単にバイトデータとして並べるだけでもよいし、ＸＯＲなどの演算により連結してもよい。ここで、秘密コードとは、利用許可モジュールが定める固有のデータである。例えば、この固有データとして製造者や発行者等の情報を埋め込んでおくことで、生成されるデータＢをより推測困難にする効果を有する。また、認証データ２８０は、この仕組みにより利用可能となる機能の区分を示しており、その利用はアプリケーションに依存する。以下、連結の方法は任意の手法で実装してもよい。
【００６１】
次に、データＡとデータＢを連結し、ＳＨＡ−１による演算をおこなう（３５６）。このとき生成されたデータを仮にデータＣと呼ぶ。ここでＳＨＡ−１は、一方向演算のアルゴリズムの一種であり、ＭＤ５やＳＨＡ−２５６等の他の一方向演算アルゴリズムを用いて実装されていてもよい。一方向演算とは、順方向の演算は簡単であるが、逆方向の演算が困難であるような演算である。
【００６２】
次に、秘密鍵データと証明書データの一部の排他的論理和をとる（３５８）。このとき生成されたデータを仮にデータＤと呼ぶ。そして、データＣとデータＤを連結し、ＳＨＡ−１による演算をおこなう（３６０）。このとき生成されたデータを仮にデータＥと呼ぶことにする。
【００６３】
認証鍵生成処理３８０は、データＥを元のモジュールに返す
これらの処理は、ライセンスの改ざんを防止するためにおこなうものである。
【００６４】
そして、上記ＵＤＡＣ−ＭＢ規格を用いた本発明の実装方法では、ソフトウェア１９０の内部には、ソフトウェア秘密鍵を有し、記憶装置１３０には、公開鍵を有することになる。そして、ライセンスを読出すときの通信路におけるデータの安全性を確保するために、通信時にソフトウェア秘密鍵を用いて暗号化して送信している。
【００６５】
しかしながら、ライセンスの安全性を確保する処理は、以上の方法のみならず、様々な方法が考えられる。
【００６６】
上記の方法の代わりに先に述べたライセンス読み出し処理に用いる秘密鍵とは、異なる秘密鍵を用いてライセンスを暗号化しておき、それを対応する公開鍵で復号して判定するという手法も考えられる。すなわち、公開鍵方式により予めライセンスを暗号化しておく方法である。暗号化処理の分野では既知の通り、公開鍵暗号方式は、秘密鍵と公開鍵を対にして、暗号処理と複合処理の場面に応じて、それらを使い分ける方式である。
【００６７】
このように予めライセンスを暗号化しておく場合には、元データと、暗号化データを用意する必要があり、通常、必要なデータ量が増大するという問題がある。また、公開鍵演算のアルゴリズムは計算量が大きく、実際に利用する際には高速な演算器を搭載する必要が生じる。本実施形態で説明した方法は、ＳＨＡ−１をベースとした演算であるため計算量が公開鍵暗号を利用した方法に比べて軽微であり、また、検証のために用いる認証データ２９０を任意のバイト長とすはることができるため、公開鍵を利用する方式よりも実用性が高い。ただし、ソフトウエアを実行する端末装置が高速な演算器を有しており、ライセンス長が特に問題とならないならば、公開鍵暗号方式を利用して、ライセンスの検証処理をおこなってもよい。
【００６８】
また、ソフトウェアの暗号鍵と記憶装置のライセンスの暗号鍵を一致させる共通鍵方式を用いてもよい。
【００６９】
次に、図６を用いてライセンス生成処理について説明する。
図６は、ライセンス生成処理の手順を示すフローチャートである。
【００７０】
図１に示されるように、製造者１４０の記憶装置１５０は、上記の仕組みによりそのままでは、ソフトウエア１９０によって利用できないが、製造者１２０よりライセンスを受けることで利用可能となる。製造者１４０は、製造者１２０と利用許可の契約を結ぶ。このとき製造者１４０は、製造者１２０に製造者１４０のＩＤを告げ、製造者１２０は、製造者１４０用のソフトウエアライセンス１５４を、生成して供給する（１４５）。
【００７１】
図６に示されるように、ライセンス生成処理５１０が、実行されると（５１２）、製造者１２０は、ソフトウエアライセンス１５４にサポートしたい製造者のＩＤ２７０を含める（５１４）。
【００７２】
次に、認証データ２８０に、ソフトウエアライセンス１５４でサポートする機能を設定する（５１６）。
【００７３】
次に、図５に示した認証鍵生成処理３８０を実行する。ここでは、ソフトウェアの秘密鍵が用いられるが、このソフトウェアの秘密鍵は、ソフトウェアの内部にも保持されるようにする。
【００７４】
次に、得られたデータのうち下位１０バイトを認証鍵としてソフトウエアライセンス１５４に設定する（５１８）。このデータのうち下位１０バイトとは、必ずしも必須のものではなく、ソフトウエア側の認証鍵による検証処理が一致しているならば、ソフトウエアライセンスに含める認証鍵データの長さを変えてもよい。ただし短くなると、総当りによる攻撃が容易となるため、１０バイトより長いデータであることが望ましい。そして、一連の操作が終わると処理を終了する（５２０）。
【００７５】
このとき作られるソフトウエアライセンス１５４は、それぞれのデータがどんな性質のものかを示すタグデータと、長さを示すデータを伴っていることが望ましい。また、特に必要なければ、認証データを設定しなくてもよい。
【００７６】
製造者１４０は記憶装置１５０内にソフトウエアライセンス１５４を認証を通じて読み出し可能な情報を格納して供給することで、ソフトウエア１９０によって利用可能となる。この契約をおこなっていない製造者１６０の記憶装置１７０は、ソフトウエア１９０は利用可能な状態にはならない。
【００７７】
ＳＭＭＣのライセンスは、端末装置を媒介にしてネットワークを通じてダウンロードできるため、カード発行後にダウンロードできるような仕組みであってもよいし、製造時に書込み禁止とし、ライセンスを変更できない形で供給してもよい。
【００７８】
次に、図７ないし図１０を用いて記憶装置の製造からソフトウェア利用までの手順を、製造者、発行者、顧客毎に説明する。
【００７９】
図７ないし図１０は、記憶装置の製造からソフトウェア利用までの手順を、製造者、発行者、顧客毎に示した図である。
図７は、発行者１００が、製造者１２０の記憶装置１３０および製造者１６０の記憶装置１７０を発行する場合を表している。
【００８０】
製造者１２０は、記憶装置１３０を製造し（６１０）、発行者１００に委託する（６１２）。このときの流通の形式としては、発行者１００が製造者１２０の記憶装置１３０を買い取る形でも良いし、委託販売をおこなう形でもよいし、発行者１００が発行したことを示すセキュリティ情報を記憶装置１３０に格納の後に製造者１２０が販売する形でもよいし、別の組織が販売する形態でもよい。
【００８１】
また、発行者１００を介さずに、製造者１２０が直接または他の組織を通じて記憶装置１３０を販売する形態であってもよい。以下の発行者１００による発行および入手の手続きも同様である。顧客１８０は、記憶装置１３０を購入する（６１４）。ただし、後に述べるソフトウエアの販売やサービスによる収入が見込める場合などは、記憶装置１３０を無償で提供しても良いし、貸与する形式であってもよく、この際の課金の有無は問わない。以下の顧客１８０による記憶装置の購入についても同様である。そして、製造者１２０はソフトウエア１９０の製造および提供をおこなう（６１６）。この際、ソフトウエア１９０に利用許可判定モジュール３１０を組み込んでおく。顧客は、このソフトウエア１９０を入手する（６１８）。この入手の手段は、インターネットまたはＣＤ等の媒体による無償提供であっても良いし、有償での販売であってもよい。また、予め記憶装置１３０に格納された状態で提供されてもよい。ソフトウエアは顧客が利用するシステムで実行可能なものであり、また、記憶装置を接続可能なものとする。例えば、記憶装置がＵＳＢメモリの形状を持つ場合には、ＵＳＢ端子が既に備わっているか、拡張により装着可能であることが望ましい。このような状況の下で、顧客がソフトウエア１９０を実行すると、利用許可判定モジュール３１０は、記憶装置１３０でソフトウエア１９０が実行可能か否かを判定する（６２０）。この場合、記憶装置のＩＤ１３２は、ソフトウエア１９０に登録されたものであるため（６２２）、ソフトウエア１９０は、利用可能となる（６２４）。
【００８２】
また、図７の下部に示されているのは、他の製造者１６０により記憶装置１７０が製造され（６２６）、発行者１００により発行され（６２８）、顧客１８０により購入される場合である（６３０）。このとき同じソフトウエア１９０を、記憶装置１７０を用いて利用しようとした場合（６３２）、記憶装置１７０のＩＤ１７２がソフトウエア１９０に登録されていないために（６３４）、ソフトウエア１９０を利用することはできない（６３６）。
【００８３】
次に、図８に示されるのは、製造者１４０が記憶装置１５０を製造し（７１２）、製造者１２０からライセンスの供給を受け（７１４）、それを記憶装置１５０に格納して（７１６）、発行者１００を通じて発行する場合である（７１８）。この場合には、顧客は図７の手順と同様に、製造者１２０の製造したソフトウエア１９０を入手し（７２２、７２４）、記憶装置１５０を用いて利用することができる（７２６、７２８、７３０）。また、このライセンスの格納は、発行者１００がおこなってもよい。発行者１００は記憶装置１５０を入手すると（７３２）、発行者１００は製造者１２０にソフトウエアライセンスの発行を要求する。このとき製造者１２０は、発行者１００に割り当てられたＩＤでソフトウエアライセンスを作成する。ただし、発行者１００のＩＤは、製造者のＩＤと性質が異なる。このため、それが製造者のＩＤを示すことを認証データ２８０に登録し。かつ、ソフトウエア１９０は認証データに基づきソフトウエアライセンスを解釈できる仕組みであることが望ましい。またこのとき、製造者ＩＤと同様に、発行者のＩＤについても記憶装置１５０より読み出せる仕様であることが望ましい。この条件の場合、発行者１００は、本来だとソフトウエア１９０によりサポートされていない記憶装置１５０をソフトウエアライセンスを格納することにより（７３６）、ソフトウエア１９０で利用可能とすることができるようになる（７３８、７４０、７４２、７４４）。
【００８４】
次に、図９に示されるのは、製造者１２０が製造した記憶装置１３０を（８１２）、発行者１００が入手し（８１４）、発行者１００が製造したソフトウエアを、その利用のためのソフトウエアライセンスを記憶装置１３０に格納することにより、同じ記憶装置１３０であっても発行者１００が発行した記憶装置１３０を用いた場合にのみ利用可能とすることができる（８１４、８１６、８１８、８２０、８２２、８２４、８２６、８２８、８３０）。この場合、別の発行者８００が同様に製造者１２０から記憶装置１３０を入手し、発行した場合（８３２）、同じ製造者から発行された記憶装置１３０であっても、発行者８００の発行した記憶装置１３０にはソフトウエアライセンスが格納されていないため、ソフトウエア１９０の利用はできない（８３４、８３６、８３８、８４０）。
【００８５】
次に、図１０に示されるのは、アプリケーションソフトウェア製造者９００が、製造者１２０が製造した記憶装置１３０が、販売された後に、その記憶装置に対してソフトウエアライセンスを発行することでアプリケーションソフトウェア製造者９００が製作したソフトウエア１９０を利用可能とする場合である。顧客１８０は、発行者１００により発行された記憶装置１３０を購入する（９１４，９１６）。この場合、記憶装置１３０はまだソフトウエアライセンスを有していない状態である。したがって、顧客１３０は記憶装置１３０を利用するソフトウエア１９０をアプリケーション製作者から入手の後に（９１８、９２０）、実行を試みても利用許可は与えられない（９２２、９２４、９２６）。そこで、顧客１８０は、アプリケーション製作者９００にソフトウエアライセンスを要求する。アプリケーション製造者９００は、顧客の記憶装置の持つ情報（製造者ＩＤ、記憶装置シリアルナンバー等）を基にソフトウエアライセンスを製造する（９２８）。アプリケーション製造者は、記憶装置１３０との間でネゴシエーションが可能な手段でソフトウエアライセンスを発行し（９３０）、顧客１８０はこれを購入して記憶装置１３０に格納する（９３２，９３４）。この手段は、記憶装置１３０のみが解読可能な状態で暗号化されて送られてもよいし、記憶装置とアプリケーション製造者の間で、セキュアなセッションを構築した後に配信する仕組みであってもよい。ここでのセキュアとは盗聴及び改ざんが困難なデータの受け渡し状態を意味する。ＳＭＭＣの場合、証明書で通信相手を認証する仕組みを持つため、セキュアにライセンスを格納可能である。この方法によりソフトウエアライセンスを格納した記憶装置を利用するときに、ソフトウエア１９０は利用可能となる（９３６，９３８，９４０）。ここで、このようなダウンロードの仕組みでライセンスを供給する行為者は、アプリケーションソフトウェア製造者のみでなく、発行者１００であってもよく、また製造者１２０であってもよい。
【００８６】
また図７ないし図１０で説明したプロトコルを、ソフトウエア１９０はすべて実装する必要はない。システムの要件にあわせたもののみを実装すればよい。
【００８７】
このような手順を経ることにより、アプリケーションソフトウェアは、記憶装置に格納された権限に基づき、その機能の一部または全部に利用制限を設けることが可能となり、また同時に記憶装置側の機能の一部または全部への利用制限としても作用する。
【００８８】
このシステムの応用例として以下のようなものが考えられる。
（１）ＩＣカードのようなセキュリティモジュールは、ＰＫＣＳ＃１１、ＣＳＰ、ＰＣ／ＳＣ等のライブラリソフトの構築に多くの費用がかかる。これらセキュリティモジュールを販売するメーカは、アプリケーション製造メーカに提供するか、特定の発行者向けに提供するかの戦略を選択することが予想される。ここで特定の発行者向けにライブラリソフトを提供する場合、このシステムを利用して契約していない他社に対してライブラリを利用させないようにすることが可能となる。
（２）上記の例において、アプリケーション製造メーカではなく、個人に対してライブラリ等を提供する場合も考えられる。この際、製造者のＩＤではなく、カードのシリアル番号を利用する。例えば、記憶装置を購入した個人は、ライブラリを利用するために、ライブラリを販売元から購入する。このとき、個人は購入したカードのシリアル番号を告げ、ライブラリ製造元はこのシリアル番号をベースにライセンスを製造する。製造したライセンスはセキュア通信を利用してカードに格納される。アプリケーションはカードのシリアル番号とライセンスを読み出した後に、これが正しい場合には認証を成功とする。
【図面の簡単な説明】
【００８９】
【図１】本発明に係る記憶装置を利用したライセンスの運用の仕組みを表す図である。
【図２】記憶装置の内部構成を表す図である。
【図３】利用許可判定モジュール３１０の手順を示したフローチャートである。
【図４】ライセンス検証処理の手順を示したフローチャートである。
【図５】認証鍵生成処理の手順を示したフローチャートである。
【図６】ライセンス生成処理の手順を示すフローチャートである。
【図７】記憶装置の製造からソフトウェア利用までの手順を、製造者、発行者、顧客毎に示した図である（その一）。
【図８】記憶装置の製造からソフトウェア利用までの手順を、製造者、発行者、顧客毎に示した図である（その二）。
【図９】記憶装置の製造からソフトウェア利用までの手順を、製造者、発行者、顧客毎に示した図である（その三）。
【図１０】記憶装置の製造からソフトウェア利用までの手順を、製造者、発行者、顧客毎に示した図である（その四）。
【符号の説明】
【００９０】
１００…発行者、１２０…製造者、１３０…記憶装置、１５４…ソフトウエアライセンス、１８０…顧客、１９０…ソフトウエア、３１０…利用許可判定モジュール、３５０…ライセンス検証処理、４９０…ＩＣチップ。
【図１】
2005215945.tif 000003
【図２】
2005215945.tif 000004
【図３】
2005215945.tif 000005
【図４】
2005215945.tif 000006
【図５】
2005215945.tif 000007
【図６】
2005215945.tif 000008
【図７】
2005215945.tif 000009
【図８】
2005215945.tif 000010
【図９】
2005215945.tif 000011
【図１０】
2005215945.tif 000012