(57)【要約】【課題】複数の子セキュアカウンタが、親セキュアカウンタによってセキュアされる、マルチプレクシングされたセキュアカウンタを提供すること。【解決手段】子カウンタが、親カウンタ値及び署名と共にストアされる。子カウンタをリードする前に、署名をベリファイし、ストアされた値を親セキュアカウンタの現在の値と比べて検査する。ベリファイが成功した場合には、子セキュアカウンタを使用することができる。子カウンタをインクリメントするためには、署名をベリファイし、ストアされた値を、親セキュアカウンタの現在の値に対して検査する。ベリファイが成功した場合に、親カウンタ及び子カウンタがインクリメントされ、データがもう一度署名される。【選択図】　　　　図２
2004038968.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの第２レベルカウンタをインプリメントする方法であって、第１レベルカウンタが第１レベルカウンタ値を供給し、第１レベルカウンタ値と前記少なくとも１つの第２レベルカウンタ値とを備えたデータが、該データのベリファイ情報と共に、ストアされる方法において、
前記少なくとも１つの第２レベルカウンタのうちの１つの第２レベルカウンタのためのリードコマンドに応答し、少なくとも１つのファイルのセキュリティをベリファイし、前記少なくとも１つの第２レベルカウンタの値を返すステップ
を備えたことを特徴とする方法。
【請求項２】
請求項１において、トラステッドエンティティは、ベリファイ可能な署名を用いてデータに署名することができ、
前記データのベリファイ情報は、前記トラステッドエンティティからの前記データの署名を備えた
ことを特徴とする方法。
【請求項３】
請求項２において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記署名をベリファイすることを特徴とする方法。
【請求項４】
請求項１において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記ストアされた第１レベルカウンタ値が前記第１レベルカウンタの現在の値に対応することをベリファイすることを特徴とする方法。
【請求項５】
請求項１において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記少なくとも１つのファイルのセキュリティのベリファイが、成功でない場合に、エラーメッセージを返すことを特徴とする方法。
【請求項６】
少なくとも１つの第２レベルカウンタをインプリメントする方法であって、第１レベルカウンタが第１レベルカウンタ値を供給し、該第１レベルカウンタ値と、前記少なくとも１つの第２レベルカウンタとを備えたデータが、前記データのベリファイ情報と共にストアされ、
前記少なくとも１つの第２レベルカウンタのうちの特定の第２レベルカウンタのためのインクリメントコマンドに応答し、前記少なくとも１つのファイルのセキュリティをベリファイするステップであって、前記特定の第２レベルカウンタの値をインクリメントするステップであり、前記少なくとも１つの第１レベルカウンタの値をインクリメントするステップであり、前記第１レベルカウンタ値と、前記インクリメントされた特定の第２レベルカウンタ値とを備えたデータを、該データのベリファイ情報と共に、前記少なくとも１つのファイル内にストアするステップ
を備えたことを特徴とする方法。
【請求項７】
請求項６において、トラステッドエンティティは、ベリファイ可能署名を用いてデータに署名することができ、
前記データのベリファイ情報は、前記トラステッドエンティティからの前記データの署名を備えた
ことを特徴とする方法。
【請求項８】
請求項７において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記署名をベリファイすることを特徴とする方法。
【請求項９】
請求項７において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記ストアされた第１レベルカウンタ値が前記第１レベルカウンタの現在の値に対応することをベリファイすることを特徴とする方法。
【請求項１０】
請求項７において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記少なくとも１つのファイルのセキュリティの前記ベリファイが成功でない場合にエラーメッセージを返すことを特徴とする方法。
【請求項１１】
少なくとも１つの第２レベルカウンタをインプリメントする方法であって、第１レベルカウンタが第１レベルカウンタ値を提供し、該第１レベルカウンタ値と、前記少なくとも１つの第２レベルカウンタ値とを備えたデータが、前記データのベリファイ情報と共にストアされる方法において、
新第２レベルカウンタを追加する要求に応答し、前記第１レベルカウンタ値と前記新第２レベルカウンタとを備えたデータを、ベリファイ情報と共に、少なくとも１つのファイルにストアするステップ
を備えたことを特徴とする方法。
【請求項１２】
請求項１１において、前記新第２レベルカウンタを追加する要求に対する応答は、
前記第１レベルカウンタ値の値をインクリメントし、
前記インクリメントされた第１レベルカウンタ値と、前記新第２レベルカウンタとを備えたデータを、ベリファイ情報と共に、前記少なくとも１つのファイルにストアする
ことを特徴とする方法。
【請求項１３】
少なくとも１つの第２レベルカウンタをインプリメントし、第１レベルカウンタが第１レベルカウンタ値を提供するシステムにおいて、
前記第１レベルカウンタ値と、前記少なくとも１つの第２レベルカウンタとを備えたデータを、前記データのベリファイ情報と共に、少なくとも１つのファイルにストアする手段と、
前記少なくとも１つの第２レベルカウンタの特定の１つの第２レベルカウンタのためのリードコマンドに応答する手段であって、前記少なくとも１つのファイルのセキュリティをベリファイし、前記少なくとも１つの第２レベルカウンタの値を返す手段と、
前記少なくとも１つの第２レベルカウンタの特定の１つの第２レベルカウンタのためのインクリメントコマンドに応答する手段であって、前記少なくとも１つのファイルのセキュリティをベリファイし、前記特定の第２レベルカウンタの値をインクリメントし、前記第１レベルカウンタの値をインクリメントし、前記第１レベルカウンタと、前記インクリメントされた特定の第２レベルカウンタ値とを備えたデータを、前記データのベリファイ情報と共に、前記少なくとも１つのファイル内にストアする手段と
を備えたことを特徴とするシステム。
【請求項１４】
請求項１３において、トラステッドエンティティは、ベリファイ可能署名を用いてデータに署名することができ、
前記データのベリファイ情報は、前記トラステッドエンティティからの前記データの署名を備えた
ことを特徴とするシステム。
【請求項１５】
請求項１４において、前記少なくとも１つのファイルのセキュリティをベリファイする手段は、前記署名をベリファイする手段を備えたことを特徴とするシステム。
【請求項１６】
請求項１３において、前記少なくとも１つのファイルのセキュリティをベリファイする手段は、前記ストアされた第１レベルカウンタ値が前記第１レベルカウンタの現在の値に対応することをベリファイする手段を備えたことを特徴とするシステム。
【請求項１７】
請求項１３において、前記少なくとも１つのファイルのセキュリティをベリファイする手段は、前記少なくとも１つのファイルのセキュリティのベリファイが成功でない場合にエラーメッセージを返す手段を備えたことを特徴とするシステム。
【請求項１８】
請求項１３において、前記少なくとも１つの第２レベルカウンタをインクリメントする手段は、前記第１レベルカウンタに１を加算する手段を備えたことを特徴とするシステム。
【請求項１９】
請求項１３において、前記少なくとも１つのファイルは、前記少なくとも１つの第２レベルカウンタのそれぞれについて１つのファイルを備えたことを特徴とするシステム。
【請求項２０】
請求項１３において、前記新第２レベルカウンタを追加する要求に応答する手段であって、前記第１レベルカウンタ値と、前記新第２レベルカウンタ値とを備えたデータを、ベリファイ情報と共に、前記少なくとも１つのファイルにストアする手段をさらに備えたことを特徴とするシステム。
【請求項２１】
請求項２０において、前記新第２レベルカウンタを追加する要求に応答する手段は、
前記第１レベルカウンタの値をインクリメントする手段と、
前記インクリメントされた第１レベルカウンタ値と、前記新第２レベルカウンタ値とを備えたデータを、ベリファイ情報と共に、前記少なくとも１つのファイルにストアする手段と
を備えたことを特徴とするシステム。
【請求項２２】
少なくとも１つの第２レベルカウンタをインプリメントするコンピュータ可読媒体であって、第１レベルカウンタが第１レベルカウンタ値を提供するコンピュータ可読媒体において、
前記第１レベルカウンタ値と、前記少なくとも１つの第２レベルカウンタ値とを備えたデータを、前記データのベリファイ情報と共に、少なくとも１つのファイルにストアするアクトと、
前記少なくとも１つの第２レベルカウンタの特定の１つの第２レベルカウンタのためのリードコマンドに応答するアクトであって、前記少なくとも１つのファイルのセキュリティをベリファイし、前記少なくとも１つの第２レベルカウンタの値を返すアクトと、
前記少なくとも１つの第２レベルカウンタの特定の１つの第２レベルカウンタのためのインクリメントコマンドに応答するアクトであって、前記少なくとも１つのファイルのセキュリティをベリファイし、前記特定の第２レベルカウンタの値をインクリメントし、前記第１レベルカウンタの値をインクリメントし、前記第１レベルカウンタ値と、前記インクリメントされた特定の第２レベルカウンタ値とを備えたデータを、前記データのベリファイ情報と共に、前記少なくとも１つのファイル内にストアするアクトと
をパフォームする命令を備えたことを特徴とするコンピュータ可読媒体。
【請求項２３】
請求項２２において、トラステッドエンティティは、ベリファイ可能署名を用いてデータに署名することができ、
前記データのベリファイ情報は、前記トラステッドエンティティからの前記データの署名を備えた
ことを特徴とするコンピュータ可読媒体。
【請求項２４】
請求項２３において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記署名をベリファイすることを備えたことを特徴とするコンピュータ可読媒体。
【請求項２５】
請求項２２において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記ストアされた第１レベルカウンタ値が前記第１レベルカウンタの現在の値に対応することをベリファイすることを特徴とするコンピュータ可読媒体。
【請求項２６】
請求項２２において、前記少なくとも１つのファイルのセキュリティをベリファイすることは、前記少なくとも１つのファイルのセキュリティのベリファイが成功しない場合にエラーメッセージを返すこと特徴とするコンピュータ可読媒体。
【請求項２７】
請求項２２において、前記少なくとも１つのファイルは、前記少なくとも１つの第２レベルカウンタのそれぞれについて１つのファイルを備えたことを特徴とするコンピュータ可読媒体。
【請求項２８】
請求項２２において、前記アクトは、新第２レベルカウンタを追加する要求に応答し、前記第１レベルカウンタ値と、前記新第２レベルカウンタ値とを備えたデータを、ベリファイ情報と共に、前記少なくとも１つのファイルにストアすることを特徴とするコンピュータ可読媒体。
【請求項２９】
請求項２８において、前記新第２レベルカウンタを追加する要求に対する応答は、
前記第１レベルカウンタ値の前記値をインクリメントし、
前記インクリメントされた第１レベルカウンタ値と、前記新第２レベルカウンタ値とを備えたデータを、ベリファイ情報と共に、前記少なくとも１つのファイルにストアする
ことを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、カウンタに関し、具体的には、第２レベルセキュアカウンタ（ｓｅｃｕｒｅ　ｃｏｕｎｔｅｒ）をインプリメントする方法でのセキュアカウンタの使用に関する。
【０００２】
【従来の技術】
コンピュータシステムには、通常は、持続型ストレージ（ｐｅｒｓｉｓｔｅｎｔ　ｓｔｏｒａｇｅ）が含まれている。持続型ストレージとは、そのストレージに電源が供給されていない時でも、内容が保存されるストレージである。磁気ストレージは、通常は、本来、不揮発性であるが、半導体メモリ（例えば、ダイナミックＲＡＭおよびスタチックＲＡＭ）は、通常は、揮発性である。
【０００３】
持続型ストレージは、ステート（ｓｔａｔｅ）情報を維持するのに使用することができる。例えば、オーディオ素材に対する権利をコントロールする権利マネジメントアプリケーションでは、ユーザが、あるオーディオファイルを何回聞くことができるかに関する情報を、ステート情報に含めることができる。使用されると、その度に、使用回数に関するステート情報が、権利マネジメントアプリケーションによって変更されることになる。このステート情報は、権利マネジメントアプリケーションがラン（ｒｕｎ）していないかインアクティブである時、及びコンピュータシステムがオフの時であっても、維持される。他のコンテキストにおいても、同様にして、ステート情報を使用して、持続的（ｐｅｒｓｉｓｔｅｎｔ）に情報がストアされる。
【０００４】
ステート情報は、感知可能（ｓｅｎｓｉｔｉｖｅ）データをストアすることができるので、そのような情報は、データを変更しようとするアドバーサリ（ａｄｖｅｒｓａｒｙ）から保護しなければならない。権利マネジメントコンテキストにおいて、アドバーサリは、例えば、ステート情報を変更して、オーディオファイルの使用を無制限に許可させようとすることができる。
【０００５】
ステート情報をセキュア（ｓｅｃｕｒｅ）する１つの方法は、暗号化を使用するものである。仮にステート情報が変更される度に、トラステッドパーティ（ｔｒｕｓｔｅｄ　ｐａｒｔｙ）が当該ステート情報に署名する場合には、検出されない限り、ステート情報を変更することができない。当該ステート情報を使用する前に、当該ステート情報を検査して、当該ステート情報がこのトラステッドパーティによって署名されたことを確認することができる。
【０００６】
これに関する問題は、ロールバック（ｒｏｌｌｂａｃｋ）の問題である。アドバーサリは、署名されたステート情報のバージョンをセーブすることができるから、この署名されたステート情報のバージョンが新バージョンと置換されたとき、この新バージョンを除去し、この新バージョンを、セーブされている旧バージョンと置換することができる。デジタル権利の例においては、このアドバーサリは、当該オーディオファイルのユーザにプレイ（ｐｌａｙ）が残っていないことを示すステート情報を、プレイが残っていることを示す旧ステート情報と、置換することができる。このようにして、アドバーサリは、コンテンツへアクセスすることができる。
【０００７】
このロールバック問題を防止するためには、セキュアカウンタを使用することができる。セキュアカウンタとは、アドバーサリがデータを変更できないようにセキュアにデータ（カウンタ値）を保持し、要求があったときに、２つのオペレーションをパフォームすることができるカウンタをいう。このセキュアカウンタは、カウンタ値について報告することができ、カウンタ値をインクリメントすることができる。このセキュアカウンタに対するオペレーションとしては、これらのオペレーションに制限されるので、このセキュアカウンタのセキュリティがより簡単に保証される。仮にユーザか、又はセキュアカウンタを含むコンピュータシステムが、例えば、セキュアカウンタに特定の値をセットできない場合には、アドバーサリも、それを行うことができない、のが普通である。
【０００８】
セキュアカウンタを使用してステート情報を保護するためには、ステート情報が署名されるとき、カウンタ値がインクリメントされ、カウンタ値のコピーが、ステート情報にアペンド（ａｐｐｅｎｄ）され、しかも署名される。ステート情報が使用されるに先立ち、当該ステート情報の署名がベリファイされ、その上、現在のカウンタ値が検査され、上記ステート情報にアペンドされ署名されたカウンタ値と、比較される。仮に当該署名がベリファイされ、アペンドされたカウンタ値が現在のカウンタ値と一致する場合に限って、当該データが使用される。このようにして、ロールバックを防止することができ、セキュリティを強化することができる。
【０００９】
このロールバック防止方法には、保護される各データに対して１つのセキュアカウンタを必要とする。このセキュアカウンタが、第１データをセキュアするため、セキュアカウンタが使用されるとき、そのカウンタ値が、当該データにアペンドされ、しかも署名される。当該データのセキュリティを検査するため、当該署名がベリファイされ、当該セキュアカウンタのカウンタ値が、現在の実際のカウンタ値かどうか検査される。仮に第２データも同一のセキュアカウンタを使用してセキュアされる場合には、第１データが修正されると、これに伴いこのセキュアカウンタがインクリメントされることになり、これにより第２データのベリファイが失敗する。というのは、当該セキュアカウンタのカウンタ値が、第２データと共にストアされているため、当該セキュアカウンタのカウンタ値が、最早、現在の実際のカウンタ値と等しくない、からである。
【００１０】
１つの可能なソリューションは、セキュアされるデータに対応するカウンタをハードウェアでインプリメントすることである。しかし、ハードウェアであるという点で、コストが高くなることは明らかである。加えて、セキュアカウンタの数を増やすほど、セキュアカウンタをハードウェアでインプリメントするのも複雑になるから、セキュリティが妨害される虞がある。
【００１１】
【発明が解決しようとする課題】
そこで、当技術分野においてこれまでに満たされていないニーズに適正に対処しこのニーズを満足させるハードウェアセキュアカウンタを増すことなく、２つ以上のデータセットに対するセキュリティを提供する方法に対するニーズがある。
【００１２】
【課題を解決するための手段】
本発明は、マルチプレクシングされたセキュアカウンタのシステム及び方法を提供するものであり、このシステム及び方法により、１つの既存の親セキュアカウンタから、複数の子セキュアカウンタを作成することができる。この子セキュアカウンタの各値は、この親セキュアカウンタの値と共にストアされる。これら２つの値が、トラステッドエンティティによって署名される。子セキュアカウンタの個数を、一緒にストアすることができる。例えば、この子セキュアカウンタの全ての値と、この親セキュアカウンタの値を、連結（ｃｏｎｃａｔｅｎａｔｅ）することができ、この連結のための署名を作成することができる。
【００１３】
子セキュアカウンタから値をリードするため、当該署名をベリファイし、当該親セキュアカウンタのためのストアされた値を、当該親セキュアカウンタの実際の値と比較検査する。仮にこのベリファイが成功した場合であって、この親セキュアカウンタのためのストアされた値が、この親セキュアカウンタの実際の値と等しい場合には、この子セキュアカウンタの値は、真正であって、「ロールバック」された値ではない、と推定される。
【００１４】
１つの特定の子セキュアカウンタの値をインクリメントするために、その特定の子セキュアカウンタの値を、この親セキュアカウンタの値と同様にインクリメントする。この特定の子セキュアカウンタの新値が、この親セキュアカウンタの新値と共にストアされ、トラステッドエンティティによって署名される。他の全ての子セキュアカウンタの値も、この親セキュアカウンタの新値と共にストアされ、トラステッドエンティティによって署名されなければならない。
【００１５】
このようにして、複数のセキュアカウンタがセキュアに提供されるが、これには、複数のセキュアカウンタを別々に提供するのに必要なハードウェアオーバヘッドはない。
【００１６】
本発明の他の特徴を次に説明する。
【００１７】
本発明によるマルチプレクシングされたセキュアカウンタをインプリメントするシステム及び方法を、添付図面を参照して説明する。
【００１８】
【発明の実施の形態】
概要
第１セキュアカウンタに対して、追加の複数のセキュアカウンタ（「子」又は「第２レベル」のセキュアカウンタ）が提供されている。各子セキュアカウンタのために使用される値は、第１（「親」又は「第１レベル」又は「ベース」）セキュアカウンタからリードされた値と共に、ストアされる。この値は、トラステッドエンティティ（ｔｒｕｓｔｅｄ　ｅｎｔｉｔｙ）によって署名される。
【００１９】
複数の子セキュアカウンタのうちの１つ子セキュアカウンタのための値をリードするため、当該署名をベリファイし、親セキュアカウンタのためのストアされた値を親セキュアカウンタの実際の値と比較しなければならない。仮に当該署名がベリファイされ、親カウンタのためのストアされた値が親カウンタの実際の値と一致する場合には、子セキュアカウンタのためのリードされた値を使用することができる。
【００２０】
複数の子セキュアカウンタのうちの１つのセキュアカウンタに対する値を変更するため、署名をベリファイしなければならず、ストアされた親カウンタを検査しなければならない。一度これが成功すると、この親セキュアカウンタをインクリメントする。当該子セキュアカウンタに対する新値が、他の全ての子セキュアカウンタに対する値と、新親カウンタ値と共にストアされ、これら値が署名される。
【００２１】
コンピューティング環境の例
図１は、本発明をインプリメントすることができる適正なコンピューティングシステム環境１００の例を示す。このコンピューティングシステム環境１００は、適正なコンピューティング環境の１つの例にすぎず、本発明の使用の範囲、又は本発明の機能を制限するものではない。また、本発明は、例に過ぎないコンピューティング環境１００内にあるコンポーネントのどれに対しても、又はこれらコンポーネントを組み合わせたものに対しても、依存しないし要求しない。
【００２２】
当業者にとって当然のことであるが、コンピュータその他のクライアント装置又はサーバ装置を、コンピュータネットワークの一部としてディプロイ（ｄｅｐｌｏｙ）することができるか、又は分散コンピューティング環境でディプロイすることができる。この点、本発明に係るコンピュータは、任意の数のメモリ又はストレージユニットを有し、ストレージユニット又はボリュームに現れる任意の数のアプリケーション及びプロセスを有する。これらは、本発明と協働して使用することができる。本発明は、サーバコンピュータ及びクライアントコンピュータであって、リモートストレージ又はローカルストレージを有するものが、ネットワーク環境又は分散コンピューティング環境でディプロイされる環境に、適用することができる。本発明は、リモートサービス又はローカルサービスと協働して情報を生成し受信し送信するため、プログラミング言語機能と、解釈能力と、実行能力とを有するスタンドアローンコンピューティング装置にも適用することができる。
【００２３】
本発明は、多数の他の汎用又は専用コンピューティングシステム環境又は構成と共にオペレートすることができる。周知のコンピューティングシステム、コンピューティング環境、及び／又はコンピューティング構成であって、本発明と共に使用するのに適している例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブル民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータが含まれるとともに、上記のシステム又は装置のうちの任意のものを含む分散コンピューティング環境、等々が含まれるが、これらに限定されるものではない。本発明は、コンピュータ実行可能命令、例えばコンピュータによって実行されるプログラムモジュールの一般的なコンテキストで説明することができる。一般的に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等であって、特定のタスクをパフォームするか、特定の抽象データ型をインプリメントしたものが含まれる。本発明は、通信ネットワークその他のデータ伝送媒体を介してリンクされているリモートプロセシング装置によって、タスクがパフォームされる分散コンピューティング環境においても実施することができる。分散コンピューティング環境においては、プログラムモジュール及び他のデータは、ローカル及びリモートのコンピュータ記憶媒体であって、メモリ記憶装置を含むものに位置させることができる。分散コンピューティングによれば、コンピューティング装置とコンピューティングシステムの間で直接交換することにより、コンピュータリソース及びサービスのシェアリング（ｓｈａｒｉｎｇ）が容易になる。これらリソース及びサービスには、情報の交換、キャッシュストレージ、及びファイルをディスクスにストアすることが含まれる。分散コンピューティングにおいては、ネットワーク接続が利用されるから、クライアントは、エンタプライズ全体の利益のため、集約させたパワーをレバレッジ（ｌｅｖｅｒａｇｅ）することができる。この点、種々の装置が、アプリケーション、オブジェクト、又はリソースであって、本発明に係る技術を利用できるものを有することができる。
【００２４】
図１を説明する。本発明をインプリメントしたシステムの例には、コンピュータ１１０の形態の汎用コンピューティング装置が含まれる。コンピュータ１１０の構成要素には、プロセシングユニット１２０、システムメモリ１３０が含まれるとともに、システムメモリを含む種々のシステム構成要素をプロセシングユニット１２０に結合するシステムバス１２１が含まれるが、これらに限定されるものではない。このシステムバス１２１は、幾つかのタイプのバス構造であって、メモリバス又はメモリコントローラと、ペリフェラルバスと、任意のバスアーキテクチャを使用するローカルバスとを含むバス構造とすることができる。例を挙げると、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ　Ｓｔａｎｄａｒｄ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バスと、ＭＣＡ（Ｍｉｃｒｏ　Ｃｈａｎｎｅｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ）バスと、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ　ＩＳＡ）バスと、ＶＥＳＡ（Ｖｉｄｅｏ　Ｅｌｅｃｔｒｏｎｉｃｓ　Ｓｔａｎｄａｒｄｓ　Ａｓｓｏｃｉａｔｉｏｎ）ローカルバスと、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ　Ｃｏｍｐｏｎｅｎｔ　Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（メザニンバスともいう。）とが含まれるが、これらに限定されるものではない。
【００２５】
コンピュータ１１０には、典型的には、種々のコンピュータ可読媒体が含まれる。コンピュータ可読媒体は、コンピュータ１１０によってアクセスできる全ての利用可能な媒体とすることができ、コンピュータ可読媒体には、揮発性及び不揮発性の媒体と、リムーバブル及びノンリムーバブルの媒体とが含まれる。例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を備えるが、これらに限定されるものではない。コンピュータ記憶媒体には、揮発性及び不揮発性で、リムーバブル及びノンリムーバブルの媒体であって、情報、例えばコンピュータ可読命令、データ構造、プログラムモジュールその他のデータを記憶するための方法又は技術でインプリメントされた媒体か含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（ｄｉｇｉｔａｌ　ｖｅｒｓａｔｉｌｅ　ｄｉｓｋｓ）その他の光学ディスク記憶媒体、磁気カセット、磁気テープ、磁気記憶媒体その他の磁気記憶装置、あるいは所望の情報をストアするために使用することができる媒体であって、コンピュータ１１０によってアクセスできる他の全ての媒体が含まれるが、これらに限定されるものではいない。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュールその他のデータであって、変調データ信号、例えば搬送波その他のトランスポートメカニズムで搬送されるものを具現化したものであり、この通信媒体には、情報供給媒体が含まれる。「変調データ信号」とは、１つ以上の特性セットを有する信号であって、情報を信号でエンコードするような方法で変化する信号を意味する。例を挙げると、通信媒体には、ワイヤード媒体、例えばワイヤードネットワーク又は直接ワイヤード接続が含まれ、ワイヤレス媒体、例えばアコースティック、ＲＦ、赤外線その他のワイヤレス媒体が含まれるが、これらに限定されるものではない。上記のものを任意に組み合わせたものも、コンピュータ可読媒体の範囲内のものである。
【００２６】
システムメモリ１３０には、揮発性メモリ及び／又は不揮発性メモリの形態のコンピュータ記憶媒体、例えばＲＯＭ（ｒｅａｄ　ｏｎｌｙ　ｍｅｍｏｒｙ）１３１及びＲＡＭ（ｒａｎｄｏｍ　ａｃｃｅｓｓ　ｍｅｍｏｒｙ）１３２が含まれている。コンピュータ１１０内の要素の間での情報の転送、例えば起動中における情報の転送を助ける基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ　ｉｎｐｕｔ　ｏｕｔｐｕｔ　ｓｙｓｔｅｍ）１３３が、典型的には、ＲＯＭ１３１にストアされる。ＲＡＭ１３２には、プロセシングユニット１２０により即時にアクセス可能であり、及び／又はプロセシングユニット１２０によって現在オペレートされている、データ及び／又はプログラムモジュールが含まれてるのが、典型的である。例として、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、及びプログラムデータ１３７を示すが、これらに限定されるものではない。
【００２７】
コンピュータ１１０には、他のリムーバブル／ノンリムーバブルの揮発性／不揮発性コンピュータ記憶媒体を含めることもできる。図１は、ノンリムーバブル不揮発性磁気媒体との間でリード及びライトする磁気ディスクドライブ１５１と、リムーバブル不揮発性磁気ディスク１５２との間でリード及びライトするハードディスクドライブ１４１と、リムーバブル不揮発性光ディスク１５６、例えばＣＤ　ＲＯＭその他の光媒体との間でリード及びライトする光ディスクドライブ１５５を示すが、これらは例にすぎない。他のリムーバブル／ノンリムーバブルの揮発性／不揮発性のコンピュータ記憶媒体であって、オペレーティング環境例で使用することができるものには、磁気テープカセット、フラッシュメモリカード、ＤＶＤ（ｄｉｇｉｔａｌ　ｖｅｒｓａｔｉｌｅ　ｄｉｓｋｓ）、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭ、等々が含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は、典型的には、インタフェース１４０のようなノンリムーバブルメモリインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１及び光ディスクドライブ１５５は、典型的には、インタフェース１５０のようなリムーバブルメモリインタフェースによってシステムバス１２１に接続されている。
【００２８】
図１に示したドライブ及びそれに関連するコンピュータ記憶媒体であって上述したものは、コンピュータ１１０に対する、コンピュータ可読命令、データ構造、プログラムモジュール、及び他のデータを記憶するものである。
【００２９】
図１において、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、及びプログラムデータ１４７をストアするためのものとして図示されている。次のことに留意されたい。すなわち、これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、及びプログラムデータ１３７と、同一のもの又は異なるもののいずれかとすることができる。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、及びプログラムデータ１４７については、少なくともこれらが異なるものであることを示すため、異なる符号を付してある。ユーザは、コマンド及び情報を、入力装置、例えばキーボード１６２と、ポインティングデバイス１６１、いわゆるマウス、トラックボール、又はタッチパッドというものと、を介して、コンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信用パラボラアンテナ、スキャナ、等々を含めることができる。これら及び他の入力装置は、しばしば、システムバスに結合されているユーザ入力インタフェース１６０を介して、プロセシングユニット１２０に接続されているが、他のインタフェース及びバス構造、例えばパラレルポート、ゲームポート、又はＵＳＢ（ｕｎｉｖｅｒｓａｌ　ｓｅｒｉａｌ　ｂｕｓ）によって接続することができる。モニタ１９１その他のディスプレイ装置も、ビデオインタフェース１９０のようなインタフェースを介して、システムバス１２１に接続されている。コンピュータには、モニタに加えて、スピーカ１９７及びプリンタ１９６のような他のペリフェラル出力装置も含めることができ、これらのペリフェラル出力装置は、出力ペリフェラルインタフェース１９５を介して接続することができる。
【００３０】
コンピュータ１１０は、リモートコンピュータ１８０のような１つ以上のリモートコンピュータへの論理接続を使用して、ネットワーク環境においてオペレーションすることができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置その他の一般的なネットワークノードとすることができ、リモートコンピュータ１８０には、典型的には、コンピュータ１１０に関して上述した要素の多数又は全てが含まれるが、図１にはメモリ記憶装置１８１のみを図示してある。図１に示した論理接続には、ＬＡＮ（ｌｏｃａｌ　ａｒｅａ　ｎｅｔｗｏｒｋ）１７１及び（ＷＡＮ（ｗｉｄｅ　ａｒｅａ　ｎｅｔｗｏｒｋ）１７３が含まれるが、他のネットワークを含めることもできる。このようなネットワーキング環境は、オフィス、ｅｎｔｅｒｐｒｉｓｅ−ｗｉｄｅコンピュータネットワーク、イントラネット、及びｔｈｅ　Ｉｎｔｅｒｎｅｔにおいてありふれたものである。
【００３１】
コンピュータ１１０は、ＬＡＮネットワーキング環境で使用されると、ネットワークインタフェース又はネットワークアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ１１０には、典型的には、モデム１７２その他の手段であって、ｔｈｅ　ＩｎｔｅｒｎｅｔのようなＷＡＮ１７３を介する通信を確立するものが含まれる。モデム１７２は、内蔵又は外付けとすることができるが、ユーザ入力インタフェース１６０その他の適正な機構を介して、システムバス１２１に接続することができる。ネットワーク化された環境においては、コンピュータ１１０に関して図示したプログラムモジュール、又はその一部を、リモートメモリ記憶装置にストアすることができる。例として、図１に、メモリ装置１８１に駐在するものとして、リモートアプリケーションプログラム１８５を示すが、これに限定されるものではない。当然、図示のネットワーク接続は、例にすぎず、コンピュータ間で通信リンクを確立する他の手段を、使用することができる。
【００３２】
マルチプレクシングされたセキュアカウンタのインプリメント
本発明の一実施形態によれば、親セキュアカウンタがマルチプレクシングされて、少なくとも１つの子セキュアカウンタが提供される。親セキュアカウンタには、値をセキュアに保持するメモリが含まれ、親セキュアカウンタは、リード（ｒｅａｄ）コマンド及びインクリメントコマンドを受ける。リードコマンドによって、親セキュアカウンタが、メモリにストアされた値を返す。インクリメントコマンドによって、親セキュアカウンタは、メモリにストアされた値をインクリメントする。
【００３３】
好ましい実施形態においては、セキュアカウンタ（親セキュアカウンタ又は子セキュアカウンタのいずれか）のインクリメントによって、セキュアカウンタの前の値に１が加算される。しかし、代替実施形態においては、インクリメントによって、セキュアカウンタの値を他の形で変更することができる。セキュアカウンタが有用になるためには、セキュアカウンタの連続する新値が、一意であるか、少なくともまれなもの（ｒａｒｅ）でなければならない。そうでなければ、ストアされたカウンタ値を現在のカウンタ値と比較検査するとき、ロールバックその他のタンパリング（ｔａｍｐｅｒｉｎｇ）が行われた可能性がある場合であっても、これらのカウンタ値が一致する可能性がある。
【００３４】
図２に示すように、本発明の一実施形態によれば、ファイル２００に、子カウンタ値Ｄ１からＤｎ２１０が、親カウンタ値Ｃ２２０と共にストアされる。子カウンタ値２１０と親カウンタ値Ｃ２２０が、トラステッドエンティティ（ｔｒｕｓｔｅｄ　ｅｎｔｉｔｙ）によって署名され、署名証明書２３０に含まれる。本発明の他の実施形態によれば、ファイル２００は、異なるフォーマットを有することができる。それぞれが１つ以上の子カウンタ値、親カウンタ値、及び署名をストアする複数のファイルを使用することができる。一実施形態においては、子カウンタ値ごとに別々のファイルが存在する。
【００３５】
好ましい実施形態においては、子セキュアカウンタに対して２つのオペレーションをパフォームすることができる、すなわち、（１）子セキュアカウンタの値をベリファイすることができ、（２）子セキュアカウンタの値をインクリメントすることができる。一実施形態においては、これらのオペレーションが、ハードウェア又はソフトウェアによってインプリメントすることができるトラステッドエンティティへの要求を介して、パフォームされる。セキュリティを維持するため、トラステッドエンティティの署名が、セキュアされなければならず、親セキュアカウンタが、セキュアされなければならない。しかし、カウンタ値を含むファイル２００は、セキュアにストアされる必要がない。このファイルが変更された場合は、署名を検査することによって、その変更を検出することができる。ロールバック攻撃を試みることができるが、その場合には、アドバーサリによって、ファイルの前バージョンが、ファイルの現在のバージョンと置換される。この場合、署名はベリファイされるが、親カウンタ値が、ストアされた親カウンタ値と一致せず、したがって、このロールバックを検出することができる。
【００３６】
子セキュアカウンタのリード
子セキュアカウンタＤｍをリードするためには、図３に示すように、署名をベリファイしなければならない（３１０）。署名のベリファイが成功した場合に（３２０）、実際の親カウンタ値を、ストアされた親カウンタ値と比較する（３３０）。署名のベリファイが成功しなかった場合には、子カウンタのリードが失敗する（３４０）。実際の親カウンタ値が、ストアされたカウンタ値と等しい場合（３５０）には、ストアされた子カウンタ値Ｄｍが有効である（３６０）。実際の親カウンタ値が、ストアされた親カウンタ値と等しいくない場合には、子カウンタのリードが失敗する（３４０）。
【００３７】
他の実施形態においては、署名検査（３１０）が、親カウンタ値検査（３３０）の後又はこれと同時に行なわれる。
【００３８】
子セキュアカウンタのインクリメント
子セキュアカウンタＤｍをインクリメントするためには、図４に示されているように、子セキュアカウンタのリードと同一の検査を行わなければならない。署名をベリファイしなければならない（４１０）。署名のベリファイが成功した場合（４２０）に、実際の親カウンタ値を、ストアされた親カウンタ値と比較する（４３０）。署名のベリファイが成功した場合には、子カウンタインクリメントが失敗する（４４０）。実際の親カウンタ値が親のストアされたカウンタ値と等しくない場合（４５０）には、子カウンタインクリメントが失敗する（４４０）。
【００３９】
実際の親カウンタ値がストアされた親カウンタ値と等しい場合（４５０）には、ストアされた子セキュアカウンタＤｍが有効である。カウンタ値Ｄｍの値を、インクリメントする（４６０）。親セキュアカウンタＣの値をインクリメントする（４７０）。子セキュアカウンタＤｍの新値と、全ての他の子セキュアカウンタ（Ｄ１からＤｍ−１までと、Ｄｍ＋１からＤｎまで）の旧値と、親セキュアカウンタＣの新値とに、署名する（４８０）。
【００４０】
新カウンタ値の追加
新子セキュアカウンタを追加するためには、署名されストアされた親カウンタ値を検査する。タンパリングが検出されない場合に、親カウンタ値をインクリメントする。新子セキュアカウンタを、前から存在する子セキュアカウンタ及び親カウンタ値と共にストアする。親カウンタ値及び子カウンタ値をストアするファイルに、署名する。カウンタ値を、同様にして、削除することができる。
【００４１】
上述したように、本発明の一実施形態においては、それぞれが１つ以上の子カウンタ値と、親カウンタ値と、署名とをストアする複数のファイルを使用することができる。あるファイルに１つの子カウンタ値だけが含まれる場合には、その子セキュアカウンタを、そのファイルを削除することによって削除することができる。本発明の別の実施形態によれば、新子カウンタ値を作成し、それを現在のカウンタ値と連結（ｃｏｎｃａｔｅｎａｔｅ）し、得られた連結に署名することによって、セキュアカウンタを作成することができる。
【００４２】
むすび
本明細書にマルチプレクシングされたセキュアカウンタのシステム及び方法。上述したように、本発明の実施形態を、種々のコンピューティング装置とネットワークアーキテクチャに関して説明したが、複数のセキュアカウンタを使用することが望ましい全てのコンピューティング装置又はコンピューティングシステムに、その基礎となる概念を適用することができる。したがって、本発明に係る複数のセキュアカウンタを使用する技法を、種々の応用例及び装置に適用することができる。例えば、本発明に係る技法を、コンピューティング装置のオペレーティングシステムに適用することができ、また、かかる技法は、当該コンピューティング装置上の個別のオブジェクトとして、別のオブジェクトの一部として、サーバからのダウンロード可能なオブジェクトとして、装置又はオブジェクトとネットワークとの間の「仲介役」として、分散オブジェクト、等々として、供給することができる。名前及び例は、本明細書においては、種々の選択肢を表すものとして選択されたが、これらの名前及び例に、限定されるものではない。
【００４３】
本明細書で説明した種々の技法は、ハードウェア又はソフトウェアと協働させてインプリメントすることができ、あるいは、適正な場合に、ハードウェア及びソフトウェアを組み合せたものと協働させてインプリメントすることができる。したがって、本発明の方法及び装置、あるいはある態様又はその態様の部分は、有形の媒体、例えばフロッピディスク（登録商標）、ＣＤ−ＲＯＭ（登録商標）、ハードドライブその他のマシン（ｍａｃｈｉｎｅ）可読記憶媒体に具現化されたプログラムコード（すなわち命令）の形をとることができる。ここで、プログラムコードがマシン、例えばコンピュータにロードされ、このマシンによって実行されると、当該コンピュータは、本発明を実施する装置となる。プログラマブルコンピュータにおいてプログラムコードを実行する場合に、このコンピューティング装置には、一般的に、プロセッサ、このプロセッサが可読な記憶媒体（揮発性及び不揮発性のメモリ及び／又は記憶要素を含む）、少なくとも１つの入力装置、及び少なくとも１つの出力装置が含まれる。本発明に係る技法を使用できる１つ以上のプログラムであって、例えばデータ処理ＡＰＩ等を使用するプログラムは、コンピュータシステムと通信するため、高水準プロシージャ（ｐｒｏｃｅｄｕｒｅ）指向プログラミング言語、又は高水準オブジェクト指向プログラミング言語でインプリメントするのが、好ましい。しかし、当該プログラムは、必要であれば、アセンブリ言語又は機械語でインプリメントすることができる。いずれにせよ、当該言語は、コンパイル言語、又はインタプリタ言語とすることができ、しかもハードウェアでインプリメントしたものと組み合わせることができる。
【００４４】
本発明に係る方法及び装置は、プログラムコードの形態で具現化された通信を介して実施することができ、かかる通信においては、伝送媒体、例えば電気配線又はケーブリング、光ファイバを介して、伝送されるか又は他の形態の伝送が行なわれるから、プログラムコードが受信され、マシン、例えばＥＰＲＯＭ、ゲートアレイ、ＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ　ｌｏｇｉｃ　ｄｅｖｉｃｅ）、クライアントコンピュータ、ビデオレコーダ等にロードされて実行されると、上記実施形態において述べた信号処理機能を有する受信側マシンは、本発明を実施する装置となる。汎用プロセッサにインプリメントされると、当該プログラムコードは、当該汎用プロセッサと組み合わされて、本発明の機能をインボークするためにオペレートする一意の装置を提供する。加えて、本発明とともに使用されるストレージ技法は、例外なく、ハードウェアとソフトウェアを組み合せたものとすることができる。
【００４５】
以上、本発明を、種々の図面の好ましい実施形態に関連して説明したが、当然、他の類似する実施形態を使用することができ、あるいは、本発明から逸脱せずに、本発明の同一の機能を実行するために説明された実施形態に対して修正又は追加を行うことができる。例えば、本発明に係るネットワーク環境の例を、ピアツーピアネットワーク環境のようなネットワーク環境のコンテクストで説明したが、本発明がこれに限定されないことは、当業者にとって当然のことであり、また、本明細書において説明したような方法は、コンピューティング装置又はコンピューティング環境、例えば、ゲーミングコンソール、ハンドヘルドコンピュータ、ポータブルコンピュータ等であってワイヤード（ｗｉｒｅｄ）又はワイヤレス（ｗｉｒｅｌｅｓｓ）のものに適用することができ、さらに、通信ネットワークを介して接続され、しかもネットワークを介してインタラクト（ｉｎｔｅｒａｃｔ）されたコンピューティング装置に適用することができることは、当業者にとって当然のことである。さらに、これは強調すべきことであるが、特にワイヤレスネットワーク化された装置の数が激増するにつれて、ハンドヘルド装置オペレーティングシステムと、他のアプリケーションに特化されたオペレーティングシステムとを含むコンピュータプラットフォームが予想される。さらにまた、本発明は、複数のプロセシングチップ又は装置でインプリメントすることができ、同様に、複数の装置に亘って記憶（ｓｔｏｒａｇｅ）することができる。したがって、本発明は、単一の実施形態に限定されず、請求の範囲に従って解釈すべきである。
【図面の簡単な説明】
【図１】本発明の態様をインプリメントすることができるコンピューティング環境の例を示すブロック図である。
【図２】本発明の一実施形態に係るカウンタファイルを示すブロック図である。
【図３】本発明の一実施形態において、マルチプレクシングされたカウンタを用いて子カウンタ値をリードする流れ図である。
【図４】本発明の一実施形態において、マルチプレクシングされたカウンタを使用して、子カウンタのカウンタ値をインクリメントする流れ図である。
【符号の説明】
１１０　コンピュータ
１２０　プロセシングユニット
１２１　システムバス
１３０　システムメモリ
１３１　ＲＯＭ
１３２　ＲＡＭ
１３３　ＢＩＯＳ
１３４　オペレーティングシステム
１３５　アプリケーションプログラム
１３６　他のプログラムモジュール
１３７　プログラムデータ
１４０　インタフェース
１４１　ハードディスクドライブ
１４４　オペレーティングシステム
１４５　アプリケーションプログラム
１４６　他のプログラムモジュール
１４７　プログラムデータ
１５０　インタフェース
１５１　磁気ディスクドライブ
１５２　リムーバブル不揮発性磁気ディスク
１５６　リムーバブル不揮発性光ディスク
１６０　ユーザ入力インタフェース
１６１　ポインティングデバイス
１６２　キーボード
１７０　ネットワークインタフェース
１７１　ＬＡＮ
１７２　モデム
１７３　ＷＡＮ
１８０　リモートコンピュータ
１８１　メモリ装置
１８５　リモートアプリケーションプログラム
１９０　ビデオインタフェース
１９１　モニタ
１９５　出力ペリフェラルインタフェース
１９６　プリンタ
１９７　スピーカ
【図１】
2004038968.tif 000003
【図２】
2004038968.tif 000004
【図３】
2004038968.tif 000005
【図４】
2004038968.tif 000006