説明

デジタル署名及び認証のためのシステム及び方法

【課題】被認証者装置側に何らの演算ユニットをも要求することなく、公開キーの認証、又は、デジタル署名を行うためのメカニズムを提供する。
【解決手段】認証とデジタル署名を行うためのシステム及び方法は、読出しによってそのコンテンツが破壊されるデータの秘密アレイを格納したリードワンスメモリユニットと、暗号化されたアレイと、暗号化アレイを単一の公開キーに対して証明するツリーデータと、公開キーの証明書とを格納した通常のメモリとを備えており、その公開キーと証明書を被認証者装置へ送信し、リードワンスメモリユニット内において、署名された要求を、秘密アレイから受信する。認証システムは、それを暗号化してその結果を暗号化アレイの一のデータと比較することによりチェックし、そして、暗号化アレイが公開キーに対して、ツリーデータを利用して確認する。最後に、認証者装置は、公開キーが信頼できるか否かをチェックする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、非常に制限された計算能力でも、又は、全く計算ユニットがなくても、公開キー暗号化システムを利用し、装置やデジタルコンテンツの署名を安全に認証する方法及び装置に関する。
【背景技術】
【0002】
認証は、海賊行為、未認証のコピー又は偽造を取り締まるため、重要な役割を担っている。かかる認証は、例えば、パスポートの所有者を認証し、又は、反偽造を目的とした無線通信可能なチップを埋設した安全なパスポートにも採用されており、そこでは、認証用チップが製造物の出所を認証する。加えて、著作権で保護されたデジタルメディアは、海賊行為などの未認証行為を防止するため、DRM (digital right managements)として知られる認証用トークンを含んでいる。その結果、それらを支える機器(CD、DVD、メモリカード、その他の同様なメモリ装置)は、しばしば、認証メカニズムを備えている。最後に、認証は、競合者が製品をリバースエンジニアリングすることを防止し、かつ、製品を安価に大量生産すためにも有用である。例えば、競合者によって製造された再充填用(リフィル)キットや偽のカートリッジの使用を防止するため、認証用チップをプリンターカートリッジに装着することもできる。
【0003】
認証は、被認証装置(prover)がその特定のための証拠を認証装置(verifier)に提示すプロトコルから構成されている。通常、認証装置は、被認証装置だけが解決可能な要求(チャレンジ:challenge)を送付する。この要求が対称キー暗号法に依っている場合には、被認証装置及び認証装置は共通の秘密キーを共有しており、それに対し、公開キー暗号法の場合には、被認証装置だけが秘密キーを所有し、そして、どの認証装置も、被認証装置によって提供される要求の解を確認(チェック)することが出来る。
【0004】
RFIDチップは、近い将来、認証のための手段として利用されることが期待されているが、しかしながら、現在の技術では、タグ情報、即ち、無線送信を利用して暗号化せずに送信される固有のID番号の記録に利用されているだけである。それ故、送信周波を受信することが出来る何者も、そのタグ情報を知り、その後に、そのクローンを作ることができる。対称キー暗号法に基づくプロトコルを利用することは、被認証装置と認証装置との交信を暗号化することが可能であることから、より良い解決である。しかしながら、秘密キーが被認証装置と認証装置とで共有されることから、認証装置が不誠実であり又は信用を落とした場合には、ID詐欺が発生し得る。加えて、殆どのシナリオでは、一の認証装置が多くの被認証装置を認証しなければならず、それ故、ただ一の認証装置が信用を落とすと、全ての秘密キーが明かされ、そして全ての被認証装置も同様に信用を落とすこととなる。それに加え、反偽造システムの枠内では、認証装置は、個別の製品ではなく、製品ラインの全体を認証可能にすべきである。製品ラインが数百万のユニットからなる場合、その全てのキーを格納することは法外である。この場合、一見して、各ユニットに対して一の秘密キーを有する代わりに、全ラインに対して一のキーを備えるようにすることは、より良いアイデアではある。しかしながら、不幸にも、唯一つのユニットが危険になると、製品の全ラインの信用が危なくなってしまうこととなる。
【0005】
それに代え、公開キー暗号システムが、特に、デジタル署名が、認証の目的のために利用することができる。認証装置はランダムなメッセージを、その秘密キーを利用してメッセージに署名した被認証装置に送信する。そして、認証装置は、秘密キーではなく、被認証装置の公開キーだけを用いて署名を認証することによって、被認証装置の身元を確認することができる。公開キー暗号法に基づく認証システムでは、認証装置は被認証装置の秘密キーを知らないことから、認証装置が被認証装置を装うことができないという利点を有している。加えて、公開キーインフラストラクチャーを利用することにより、製品ラインの認証が容易に可能となる。即ち、被認証装置は、要求にデジタル的に署名し、そして、その公開キーと共に、認証局装置(certificate authority)によって署名され、被認証装置の秘密キーのデジタル署名を含んだ被認証装置の公開キーのための証明書(certificate)を提供する。そこで、認証装置は、被認証装置の身元を確認するために、両方の署名を認証することができる。かかるアプローチは、個別ユニットの公開キーではなく、証明のための認証手段(例えば、全製品ラインのための単一の公開キーであり、この公開キーは製造会社から得られる。)を格納しなければならないという認証装置への格納要求を取り除くだけではなく、簡単な取り消し機構をも含んでいる。ある被認証装置の秘密キーの信用が失われた場合には、当該被認証装置の公開キーは、全ての認証装置にするブラックリスト内へ送ってもよい。
【0006】
【特許文献1】米国特許第5,032,708号
【非特許文献1】フィアット アモス、シャミール アディ「如何にしてあなた自身を証明するか;特定及び署名問題への実用的解決」CRYPTO 1986: 186-194
【非特許文献2】メルクレ C. ラルフ「認証されたデジタル署名」CRYPTO 1989: 218-238
【発明の開示】
【発明が解決しようとする課題】
【0007】
公開キー暗号法及びデジタル署名を基礎とする認証システムは、以下の問題点を有している。即ち、デジタル署名を構成するため、被認証装置は何らかの演算能力を有しなければならない。最も典型的なデジタル署名のスキームでは、相当な演算能力が要求される。しかしながら、認証メカニズムから見て有用であろう多くのプラットホームは、強力な演算ユニットを備えてはおらず、むしろ、しばしば、演算ユニットを全く備えていない、即ち、それらは純粋なメモリユニットである。例えば、CD、DVD、SDカードやその他のメモリカードなど、着脱式のメモリ媒体は、CPUを備えておらず、メモリだけで構成されている。それ故、かかるプラットホームは、公開キー暗号法を基礎とする認証方法から利益を受け取ることが出来ない。
【0008】
特許文献1には、ヒューズを備えて一回書替え可能な(read-once)アレイを利用し、被認証装置側で演算を行うことなく認証を実現するための発明が開示されている。しかしながら、当該文献の発明では、確認装置によって提供される応答を証明するため、認証装置には、秘密キーを格納することが要求されることから、基本的には、対称キー認証プロトコルとなる。
【0009】
従って、本発明の目的及び利点は、上記特許に記載された発明の目的及び利点に加え、確認装置側には何らの演算ユニットを要求することなく、公開キーの認証、又は、デジタル署名のメカニズムを提供することにある。更なる目的及び利点は、以下の記載及び図面を考慮することにより明らかとなろう。
【課題を解決するための手段】
【0010】
被認証装置(prover)は、秘密データを格納した特別のメモリユニットである、所謂、リードワンスメモリユニットを備えている。このユニットによって格納されたデータは、アレイ状に配置された幾つかの対 (Ui, Di) から構成されており、そこでは、各対内の二つのエレメントの一方だけが読み出す(取り出す)ことができる。対 (Ui, Di) の一のエレメントが読み出された後には、当該対全対がメモリから消去される。
【0011】
リードワンスメモリ(read-once memory)に加え、被認証装置は、対 (Ui, Di) を被認証装置の公開キーに対して証明するための認証データを格納するための他のメモリユニットをも備えている。同ユニット上には、被認証装置は、その公開キーとその証明書とを格納している。デジタルデータに署名を行なった場合、又は、認証プロトコルにおける要求に応答した場合には、被認証装置は、幾つかの対における一方のエレメントUi 又はDiを明かし、その読み出しに伴って破壊する。明かされるエレメントの選択は、署名又は要求のビットに従って行われる。加えて、被認証装置は、明かされたエレメントのための認証データを提供する。
【発明の効果】
【0012】
明かされたエレメントUi 又はDiは、被認証装置の公開キーに対して認証を行い、そして、公開キーは認証されていることから、被認証装置は、まさに、データを明かしそして転送する(取り出す)だけで、いかなる演算もなしに、自身を証明し又はデータを署名することができる。その結果、当該メモリユニットにより、場合によっては簡単なメモリコントローラによって、被認証装置は、認証、又は、デジタル署名の発生、又は、公開キーの認証を達成するために使用可能な、強力な公開キー暗号化技術を利用することが可能となる。
【発明を実施するための最良の形態】
【0013】
以下、本発明の実施の形態について、添付の図面を参照しながら、詳細に説明する。
【実施例1】
【0014】
まず、実施例1として、メモリだけのプラットホームによる公開キー認証、及び、デジタル署名のためのシステムについて、以下に説明する。
【0015】
この第1の実施例において、システムは、ネットワークにより接続された、少なくとも3つの個別のエレメントにより構成されており、即ち、少なくとも1つの被認証装置(prover)と、少なくとも1つの認証装置(verifier)と、そして、認証局装置(Certificate Authority)とから構成されている。認証局装置の役割は、被認証装置のメモリ内に格納されたデータを起動し、被認証装置のための証明書を発行することである。それに加え、認証局装置は、信用を失った認証装置のブラックリストを維持し、そして、ブラックリストを定期的に全ての認証装置へ伝送する。
【0016】
このシステムにおいては、公開キーインフラストラクチャー(public-key infrastructure)を利用することによって、いかなる被確認装置も、いかなる認証装置によって認証することができる。このシステムは、以下の3つのパラメータを有する。
被認証装置によって署名されるべき要求(チャレンジ)のサイズである安全性パラメータ「n」。
被認証装置によって署名することができる署名の数である有用性パラメータ「p」
ハッシュ関数「H」及びその出力サイズ「h」
【0017】
まず、認証システムについて、添付の図1を参照しながら詳細に説明する。
このシステムは、メモリだけのプラットホームであり、少なくとも一の被認証装置(prover)101と、少なくとも一の認証装置(verifier)121と、そして、認証局装置(Certificate Authority)141とから構成されている。被認証装置101、認証装置121及び認証局装置141は、ネットワーク161によって接続されている。被認証装置101は、入出力インターフェース102と、リードワンスメモリユニット(read-once memory unit)103と、リードオンリーメモリユニット(read-only memory unit)105と、そして、リードライトメモリユニット(read-write memory unit)106とから構成されている。認証装置121は、入出力インターフェース122と、演算ユニット132と、そして、メモリユニット(memory unit)部131とを備えている。認証局装置141は、入出力インターフェース142と、演算ユニット(computation units)152と、そして、メモリユニット(memory units)151とを備えている。
【0018】
被認証装置101と認証装置121は、認証プロトコルに携わることができ、そこでは、認証装置121はランダムな要求(random challenge)164を被認証装置101へ送り、そして、被認証装置101は、要求のデジタル署名163によって応答する。署名が正しい場合には、認証は成功である。認証局装置141の役割は、被認証装置101のメモリユニットを初期化データ(initialization data)162で満たし、そして、被認証装置101の公開キーの証明書を発行することである。加えて、この認証局装置141は信用を失った公開キーのブラックリスト126を維持しており、このリストは、ネットワーク161に接続されている全ての認証装置121に送信される。
【0019】
次に、被認証装置について、添付の図2を参照しながら詳細に説明する。
被認証装置101は、いかなるCPUをも備えておらず、メモリユニット103、105、106と入出力インターフェース102とで構成されている。そのリードワンスメモリユニット103は、p個の秘密アレイ104、即ち、A0,…,Ap-1を格納しており、ここで、一のアレイに格納されたデータは、一の認証にだけ使用することできる。その結果、被認証装置101は、限られた回数だけ、即ち、p回しか認証することが出来ない。各秘密アレイ104は、hビットの2n個のデータブロック、U0…Un-1、D0…Dn-1から構成されている。リードオンリーメモリユニット105は、アレイのインデックス(0<=i<=p-1)、及び、データブロックのインデックス(0<=j<=n-1)、そして、データブロックのライン(D 又はU)によってアドレスされる。
【0020】
アレイAi 内のあるデータブロックUj を読み出す際には、データブロックUi が入出力インターフェース102へ送られ、そして、Uj とUj の両者が削除される。同様に、Dj を読み出す際には、Uj とUj の両者が削除されることとなり、それ故、リードワンスメモリ(read-once memory)の名前のように、そのメモリ内容(memory contents)は読み出しに伴って破壊される。
【0021】
被認証装置101は、アクティブアレイを選択するために使用するインデックス(0<=i<=p-1)と共に、カウンター(計数器)107をその内部に格納したリードライトメモリユニット(read-write memory unit)106を備えている。アレイAi が一の認証に使用され、かつ、そのデータが完全に消された後に、カウンター107の値がi+1でアップデートされる。
【0022】
最後に、被認証装置101は、リードオンリーメモリユニット105を備えており、そこでは、データは何の制限もなく自由にアクセスすることが出来る。このリードオンリーメモリユニットユニット105は、被認証装置101を一意に(uniquely)特定する特定番号112と、被認証装置101の公開キー108と、認証局装置141により発行された公開キー108のための証明書109と、2p-1個のデータブロック(T1…T2p-1)を含むデータツリー110と、そして、p個の暗号化アレイ111(即ち、C0…Cp-1)とを格納している。各暗号化アレイは2n個のデータブロック(U0…Un-1及びD0…Dn-1)を含んでおり、そこでは、暗号化アレイCi からの一のデータブロック(Uj 又は Dj)は、ハッシュ関数Hで暗号化されたアレイAi からのデータブロック(Uj 又は Dj)に対応しており、即ち、Ci[Dj] = H(Ai[Dj]) and Ci[Uj] = H(Ai[Uj]) となっている。例えば、ハッシュ関数HはMD5であり、即ち、認証装置121のハッシュ関数と同じハッシュ関数であってもよい。暗号化アレイ111及びデータツリー110は、リードワンスメモリ103内の秘密アレイ104からのデータブロックが被認証装置101の公開キー108であることを、後に説明するメカニズムによって証明するために使用することも出来る。
【0023】
次に、認証装置121と認証局141について、添付の図3を参照しながら説明する。
認証装置121は、幾つかの演算ユニット、即ち、CPU128を備えており、そして、可能であれば、任意サイズの入力Xのためにハッシュ値(H(X))を演算することの可能な暗号用のコプロセッサ129を備えてもよい。例えば、このハッシュ関数は、良く知られたMD5であっても、又は、他の如何なるハッシュ関数であってもよい。なお、ここで、ハッシュ関数が任意長の入力データをhビットの固定長の出力へマッピングする機能を有していることが留意される。MD5の場合、ハッシュ出力サイズは=128ビットである。加えて、認証装置は、ランダムな要求164を発生するための乱数発生器130をも備えている。
【0024】
認証装置121は、また、被認証装置101、認証局装置141、又は他の装置と通信ネットワーク161を介して通信するための入出力インテーフェース122を備えている。最後に、認証装置121はメモリユニットを、即ち、一時的データを格納するための揮発性メモリ123と、そして、プログラム127と共に、しかもまた認証局装置141の公開キー125とブラックリスト126をも格納する不揮発性メモリ129とを備えている。ブラックリストは、信用が落ちたことが知られた全ての公開キーを含んでおり、そして、ソフトウェアのアップデート中に新たなブラックリストを伝送する認証局装置141によって、アップデート(更新)される。
【0025】
認証局装置141は、基本的には、認証装置121と同一の幾つかの構成要件を、即ち、入出力インターフェース142と、CPU148と、ハッシュ値149を演算するためのコプロセッサと、乱数発生器150と、認証局装置の公開キー125とブラックリスト126とプログラム147とを格納するための不揮発性メモリ144と、そして、揮発性メモリ143とを備えている。加えて、認証局装置141は、そのプライベートキー146を不揮発性メモリ144内に格納しており、そして、デジタル署名及び証明書を発生するための演算用コプロセッサ153を備えてもよい。認証局装置141の役割は、被認証装置の秘密アレイ104のための初期化データ134と共に、暗号化アレイ111とツリーデータ110をも発生することである。加えて、認証局装置141は、被認証装置の公開キー108の証明書を発行することもできる。最後に、認証局装置141は、全ての信用が失われた公開キーによってブラックリスト126を維持する。即ち、信用の失われたチップが認証を行なうのを防止するため、被認証装置121のソフトウェアのアップデート中に、そのブラックリスト126が全ての認証装置121へ伝送する。
【0026】
続いて、認証プロトコルについて、添付の図4を参照しながら詳細に説明する。
被認証装置101は、ステップ211において認証装置121へ送られる認証要求によって、認証プロトコルを開始することができ、この認証要求には、被認証装置の公開キー108、証明書109、カウンター値107、そしてID 112を含んでいる。カウンター(値)は、未だ使用されていないアレイAi のインデックスに対応している。
【0027】
次に、ステップ221では、認証装置121は、公開キー108が、信用を失ったキーのブラックリスト126内に存在するか否かを確認し、当該公開キーがブラックリスト内にある場合には、認証は失敗する。もしも公開キーがブラックリスト内にない場合には、認証装置121は、ステップ222において証明書を認証する。この証明書は、認証局装置141によって署名された、被認証装置の公開キー108のデジタル署名を含んでいる。証明書が有効でない場合には、認証は失敗する。証明書が有効である場合には、認証装置121は、ランダムなnビットのメッセージ164を送信する。このメッセージは、認証プロトコルの要求(challenge)であり、そして、被認証装置101によって署名されなければならい。
【0028】
その後、被認証装置101は、アレイAi 104内のデータブロックをアクセスすることによって要求に署名し、そこでの「i」はステップ211において送信されたカウンター(計数値)であり、「U0 又は D0」は要求の「0」ビットに依存し、「U1 又は D1」は要求の「1」ビットに依存しており、そして、このことは「n-1」ビットまで同様である。加えて、被認証装置101は、対応する暗号化されたデータブロックからの暗号化されたアレイCi 111と、アレイAi 104からの、データブロックを証明するデータツリー110からのエレメントとを公開キー108へ送信する。被認証装置101により認証装置121へ送信された署名163は、アレイAiとCi、、そして、ツリーデータからのデータブロックにより構成される。
【0029】
署名を受信すると、認証装置121は、ステップ241において、Ci からの暗号化されたデータブロックとツリーデータとを利用して、アレイAiからのデータブロックが公開キー108に対して認証していることをチェックすることによって、署名を認証する。署名が有効でなければ認証は失敗であり、他方、署名が有効であれば認証は成功となる。最後に、ステップ253では、認証装置121が、認証の結果(成功又は失敗)、認証装置の公開キー、及び、被認証装置101により利用されたインデックスを含む、プロトコルのログを書き込む。
【0030】
次に、メモリの初期化について、添付の図5を参照しながら、以下に詳細に説明する。
使用される前、被認証装置101のメモリユニットは、適切なデータによって初期化されなければならず、即ち、リードワンスメモリユニット103は、その秘密アレイAi 104内に秘密のデータブロックを格納し、暗号化アレイ111は、秘密データブロックの暗号化された値を格納し、ツリー110は、ハッシュ関数Hと対で組み合わされた暗号化されたデータブロックと、ある固有のID番号と組み合わされたツリーT1の根(ルート:図8を参照)から演算された公開キー108とから構成されている。被認証装置101は、基本的には、メモリユニットから構成されており、それ自身による初期化によって、要求される演算を実行することはできず、その代わり、全ての演算は、認証局装置141によって外部で実行される。認証局装置141により演算された初期化データ134は、単に、ネットワーク161を介して、被認証装置101へ送信され、そして、被認証装置のメモリユニット上に格納される。
【0031】
最初に、ステップ301〜322では、署名数pとメッセージ長nを入力し、秘密アレイ104がランダムデータブロック(random data block)によって初期化される。即ち、ブロックAi[U0]とAi[D0]が、そして、同様にして、Ai[Un-1]、Ai[Dn-1]までが、乱数発生器ユニット(random number generator unit)150を利用した認証局装置141によって発生されたランダムデータで充たされる。その後、暗号化されたアレイ111の対応するブロックが、ハッシュ関数で処理された秘密ブロックで充たされ、Ci[U0]=H(Ai[U0])、Ci[D0]=H(Ai[D0])となり、そして、同様にハッシュ関数ユニット149を使用して、Ci[Un-1]=H(Ai[Un-1])、Ci[Dn-1]=H(Ai[Dn-1])となる。再び述べると、それらの演算は認証局装置141によって実行される。即ち、一旦、全てのブロックデータが準備され、ネットワーク161を介して、認証局装置から被認証装置101へ転送されることとなる。
【0032】
秘密アレイ104と暗号化されたアレイ111とが充たされた後に、ツリーデータが初期化されなければならない。最初に、ツリーのp枚(個)の葉Tp… T2p-1が認証局装置141によって準備され、そして各葉は一の暗号化されたアレイに関連付けられる。より詳細には、ステップ332において、暗号化されたアレイCi内に格納された2n個のデータブロックが連鎖状に繋げられ、そして、ハッシュ関数モジュール149によって処理される。
Ti+p = H( Ci[U0] || Ci[D0] || Ci[U1] || Ci[D1] || … || Ci[Un-1] || Ci[Dn-1] ),
ここで、X||Yは2つのビットストリングの連鎖を示す。今、ツリーの葉Tp… T2p-1が準備されると、ツリーの残りのノードは、ステップ342において演算することができる。実際、ツリー内の残りのノードは、そのノードの二つの子供をハッシング(hashing)することによって簡単に演算することができる。即ち、ノードTi は2人の子供T2i とT2i+1 を有しており、それ故、ブロックTi の値は、ハッシュ関数モジュール149により演算されて、H(T2i||T2i+1)となる。しかしながら、このようなツリーの準備は、後に認証用トークンを発生するには不便であり、それ故、ツリーブロックの全ての対は交換され、即ち、ステップ352において、T2i はT2i+1 で、そして T2i+1 は T2i で置き換えられる。一旦、全てのツリーブロックが処理されると、それらは、ネットワーク161を介して、認証局装置141から被認証装置101へ転送される。
【0033】
それから、ステップ353では、被認証装置101の公開キー108が、ツリーT1の根と被認証装置101を一意に特定する特定(ID)番号112とから演算される。例えば、このID番号は、製品IDとすることができ、又は、被認証装置101が或るデジタルコンテンツを格納している場合には、そのデジタルコンテンツのビット値とすることもできる。いずれの場合でも、公開キーは、H(T1||ID)と定義され、そして、リードオンリーメモリユニット105内に格納される。その後、認証局装置141は、公開キー108の証明書109を発行し(ステップ354)、この証明書は当該公開キーのデジタル署名を含んでおり、被認証装置101へと送信される。証明書109はリードオンリーメモリユニット105内に格納される。最後に、リードライトメモリユニット106内のカウンター107が「0(零)」に初期化される。
【0034】
次に、署名の発生について、添付の図6を参照しながら、詳細に説明する。
認証処理では、ステップ231(図4を参照)において、ランダム要求164の署名163が被認証装置101によって発生されることが留意される。以下においては、この認証がいかにして発生されるかについて説明する。ランダムな要求はn 個のビット(m=(m0 …mn-1)2)から構成され、そして、ネットワーク161を介して認証装置121から被認証装置101へ送信される。要求を受けた後、被認証装置101は、カウンター107の値を明らかにし(図4において「i」で示す)。このカウンターは、秘密アレイAi の一つと、対応する暗号化されたアレイCiとを初期化する。それから、要求mのビットmj がスキャン(走査)され、そして、ステップ421〜424において、2n個の署名ブロック、即ち、S0,0, S0…Sj,0、Sj,1…Sn-1,0、Sn-1,1が発生される。ここで、各署名ブロックは、秘密アレイAi 104、又は、暗号化されたアレイCi 111の一方から、取り出される。この署名を発生する(「取り出す」)ためには、被認証装置101は、単に、それらのアレイ104及び111からデータを選択し、そして、明らかにするだけであり、何らの演算も必要とはしない。より詳細には:
− メッセージビットmj が0の場合、ステップ422において、署名ブロック(Sj,0,Sj,1)は(Ai[Uj], Ci[Dj])となり、
− メッセージビットmj が1の場合、ステップ423において、署名ブロック(Sj,0,Sj,1)は(Ci[Uj], Ai[Dj])となる。
両ステップ422と423において、Ai[Uj] 及び Ai[Dj]の一方だけが署名163内に転送されることに留意。しかしながら、リードワンスメモリ103の特性によれば、それらは両者とも破壊されている。本技術(発明)の特徴点は、一のメッセージビットに対して、唯だ一の秘密データブロックが明かされることであり、即ち、署名の後においても秘密データブロックの一方は秘密に保たれることから、Ai[Uj] 又は Ai[Dj]のいずれか一方、そして、署名は偽造されることがないことである。
【0035】
(Sj,0,Sj,1) のための値が選択された後、ツリーテーブル110からlog2(p)個のブロックが選択されなければならず、ここでlog2(p)とは、最も近い整数に丸められた(四捨五入された)、署名数pの2の対数(logarithm in base 2)である。選択されるべき最初のツリーブロックは、ステップ432において、j=p+i としたP0=Tjであり、それから、log2(p) 個のツリーブロックが選択されるまで、jは反復的に二つに分離される。最後に、ステップ433において、署名(S0,0 ,…, Sn-1,1, P0, …, Plog2(p)-1) 163が、ネットワークを介して認証装置121へ送信される。
【0036】
次に、署名の認証について、添付の図7を参照しながら、以下に詳細に説明する。
ランダムな要求164の署名を演算し終わった後、被認証装置101は認証装置121へ署名163を送り返す。この時点において、ステップ241(図4を参照)では、認証装置121は、n-ビットの要求(m=(m0…mn-1)2)164の署名(S0,0,…,Sn-1,1, P0,…,Plog2(p)-1) 163を認証しなければならない。以下に、この署名を如何にして認証するかについて説明する。
【0037】
署名(S0,0,…,Sn-1,1, P0,…,Plog2(p)-1)の入力(ステップ521)後、まず、ステップ522と523では、認証装置121は、暗号化されたアレイCi111の全てのデータブロックを再演算(re-compute)し、ここで「i」は、ステップ211における認証プロトコルの開始において認証装置へ送信されたカウンター107(の値)である。より詳細には、要求ビットm0,…,mn-1がスキャンされ、そして、mjが零(0)であれば、ステップ522において、ハッシュ関数モジュール129を用いてC'j,0がH(Sj,0)として演算され、ここで、C'j,1には署名block Sj,1が付与される。実際、もしも要求ビットmjが零(0)であれば、ステップ422では、署名ブロックSj,0 と Sj,1が、それぞれ、Ai[Uj] 及び Ci[Dj]として選択されている。それ故、ステップ231において被認証装置により正しく発生されていれば、C'j,0はCi[Uj]と等しく、C'j,1はCi[Uj]と等しい筈である。同様に、要求ビットmjが1であれば、署名ブロックSj,0はC'j,0へコピーされ、そして、C'j,1にはH(Sj,1)が設定される。
【0038】
全ての対(C'j,0, C'j,1)が準備されると、ステップ531において、ツリーデータブロックT'が演算される。実際には、全てのC'j,bの値が連鎖され、そして、ステップ531においてハッシュ関数H 129によりハッシュ(hash:細分化)される。
T'=H( C'0,0 || C'0,1 || C1,0 || C1,1 || … || Cn-1,0 || C'n-1,1 )
【0039】
もしもステップ231において署名が認証装置によって正しく発生されていれば、T'の値は、ツリーデータ110からのツリーブロックの値、即ち、署名の発生においてステップ432(図6を参照)で選択されたP0の兄弟(sibling)と一致する筈である。それ故、このノードは、ツリー110における親ノード(parent node)を演算するため、署名ブロックP0と組み合わせてもよい。より詳細には、ステップ532において、カウンター「i」は「i+p」に設定され、ここで、カウンター「i」107の値は、ステップ211において公開キーや証明書と共に被認証装置101から受信されている。もしも「i」が偶数であれば、ステップ552において、T' はハッシュ関数モジュール129を用いてH(T' || P0)にアップデートされ、他方、奇数であれば、ステップ553において、T' はH(P0 || T') にアップデートされる。さて、署名が正しく発生された場合には、T'は、署名ブロックP1の兄弟でもある先のT' と P0との親ノードを含んでいる筈である。次に、P1, P2, … ,Plog2(p)-1に対しても同じ手順が繰り返され、そして、各繰り返しの後には、T' の値はいずれかのツリーデータブロックの値と一致する筈であり、毎回、根に1レベルづつ近づくこととなる(図8の根T1)。最後に、T' は根T1の値を含んでおり、そして、ステップ555では、被認証装置101の公開キー108は、演算H(T'||ID)によって再演算することができ、ここでIDは被認証装置101の特定番号112である。もし公開キーが演算H(T'||ID)の結果と一致すれば、署名はステップ562において署名は受容され、他方、一致しなければ、ステップ563において拒否される。
【0040】
続いて、上述した認証システムにおけるデータ構成の一例について、添付の図8を参照しながら、以下に詳細に説明する。
【0041】
図8は、p=128個の署名が署名され、そして、要求がn=4 ビットを有している場合、データがどのようにして組織されるかについて示す。128個の秘密アレイA0,…,A127、そして、128個の対応する暗号化されたアレイC0,…,C127が存在する。各アレイは8個のデータブロックU0, U1, U2, U3、及び、D0, D1, D2 と D3、そして、Ci[Uj] = H(Ai[Uj])と、同様に、Ci[Dj] = H(Ai[Dj])とを有している。データの初期化において使用されたハッシュ関数がMD5とすると、h=128であり、各データビットも同様に128個のビットを有している。
【0042】
ツリーデータ110の葉T128,…,T255は、最初に以下のように演算される。
T128+i=H(Ci[U0]|| Ci[D0]|| Ci[U1]|| Ci[D1]|| Ci[U2]|| Ci[D2]|| Ci[U3]|| Ci[D3])
例えば、
T154=H(C26[U0]|| C26[D0]|| C26[U1]|| C26[D1]|| C26[U2]|| C26[D2]|| C26[U3]|| C26[D3]).
である。
【0043】
次に、親ノードを二つの子供に細分化する(hashing)演算、即ち、Ti = H(T2i||T2i+1) を行う。例えば、T77=H(T154||T155)となる。しかしながら、ツリー内の全てのノードが演算された後、T255 から下にT1まで、署名の発生を促進にするため、ノードが二づつ、即ち、T2 はT3と、T4 はT5 と交換され、以下同様である。最後に、T154 と T155とが交換される。
【0044】
128ビットからなる8個のデータブロックと共に、128個の秘密アレイがあり、それ故、リードワンスメモリユニット103は、16キロバイトの容量を有する。同様に、128ビットからなる8個のデータブロックと共に128個の暗号化されたアレイがあり、そして、128ビットからなる255個のツリーノードがあり、それ故、それらのエレメントを格納するため、リードオンリーメモリユニット105は20キロバイトを要求する。しかしながら、それに加え、リードオンリーメモリユニット105は、また、公開キー108とその証明書109をも格納しなければならない。
【0045】
さて、署名の発生について説明する。カウンター107が26に設定されると、署名を発生するため、アレイA26 とC26が アクティブとなる。例えば、署名に対する4-ビットの要求をm=(1001)2とする。最初のビットは「1」であり、それ故、対応する署名ブロックはC26[U0],A26[D0]である。第二のビットは「0」であり、それ故、対応する署名ブロックはA26[U1],C26[D1]となり、以下同様である。最後に、署名要求 (1001)2の最初の部分は、
(S0,0,S0,1, S1,0,S1,1, S2,0,S2,1, S3,0,S3,1) = (C26[U0],A26[D0], A26[U1],C26[D1], A26[U2],C26[D2], C26[U3],A26[D3])
となる。
【0046】
次に、署名の最初のブロックを公開キーに対して認証するため、ツリーからのノードを選択しなければならない。選択されるべき最初のノードは、T155= H(C26[U0]||…|| C26[D3])の兄弟ノード、P0=Tp+26=T154である。次のノードは、ノードT155 と T154の親ノードであるT76の兄弟、P1=T154/2=T77である。この手順がP6=T2となるまで繰り返される。
【0047】
その後、署名の認証について説明する。認証装置101は、最初に公開キー108と、本例ではi=26であるカウンター値107を受信する。署名(S0,0,…,S3,1)を受信し、認証装置121は、ハッシュ関数モジュール129を利用して、暗号化されたアレイC26からの全てのデータブロックを再演算する。最初の要求ビットが「1」であることから、認証装置121は(C'0,0,C'0,1)= (S0,0,H(S0,1)を演算する。「0」である第二の要求ビットを理由に、認証装置121は(C'1,0,C'1,1)= (H(S1,0),S1,1)を演算し、以下同様である。全ての要求ビットが処理された後、認証装置121は以下のアレイを得る:(C'0,0,C'0,1, C'1,0,C'1,1, C'2,0,C'2,1, C'3,0,C'3,1)= (S0,0,H(S0,1), H(S1,0),S1,1, H(S2,0),S2,1, S3,0,H(S3,1)).
【0048】
もしも署名が被認証装置101によって正しく発生されていない場合には、このアレイは暗号化されたアレイC26と同じデータブロックを有する筈である。実際に、(S0,0,S0,1)=(C26[U0],A26[D0])であることが分かっており、それ故、
(C'0,0,C'0,1) = (C26[U0],H(A26[D0])) = (C26[U0],C26[D0])
となる。
【0049】
同様な観測が他の署名ブロックに対しても行われる。認証装置121は暗号化されたアレイを再演算することが出来るが、認証装置121は、被認証装置101から、暗号化されたアレイが本当に最初に暗号化されたアレイと同じであることを、又は、暗号化されたアレイが本物である(authentic)ことを知る途はない。それ故、認証装置121は、公開キー108に対して暗号化されたアレイを認証するため、残りの署名ブロック、即ち、ツリーブロックを使用する。
【0050】
最初に、認証装置121は、ハッシュ関数モジュール129を利用してT'=H(C'0,0,C'0,1, C'1,0,C'1,1, C'2,0,C'2,1, C'3,0,C'3,1) を演算する。もしも署名が正しく発生されていれば、T'はツリーノードT155と同一である筈である(T154 and T155は、データ初期化段階で交換されていることに留意)。認証装置121は、そこで、P0 とT'とを組み合わせ、即ち、最初に、カウンター「i」を 「i+p=154」に設定する。「i=154」であることから、認証装置121は、ハッシュ関数モジュール129によりT'=H(T'||P0)を演算する。実際、もしも署名が正しく発生されていれば、T'=T155 及び P0=T154であり、それ故、T'のアップデートされた値は親ノードT76である筈である。次に、「i」が2によって割り算され、「i=77」となる。「i=77」は奇数であることから、T'=H(P1||T')となる。再度、もしも署名が正しく発生されていれば、T'のアップデートされた値は親ノードT39である筈である。P6までの全てのツリーブロックが利用された後に、もしも署名が正しければ、認証装置121は、ツリーの根、「T'=T1」を演算した筈である。そこから、認証装置121は、単に、H(T'||ID)が公開キー108の値に一致するか否かを確認する。
【0051】
最後に、かかる構成の安全性について議論する。一のメッセージビットmjに対し、対応する署名部分はAi[Uj], Ci[Dj] 又は Ci[Uj], Ai[Dj]である。両方の場合において、秘密ブロックAi[Uj], Ai[Dj]は破壊されており、それ故、それらの一方は未だ明らかになっていないことから、秘密のままである。その結果、そのためには明らかになっていない秘密ブロックを知ることが必要とされることから、異なるメッセージビットが署名されることはない。一例として、もしもメッセージビットがmj=0であれば、mj=1に対する署名の偽造は、例えば、Ci[Dj]=H(Ai[Dj]).のように、Ai[Dj]、を発見することを暗示している。しかしんがら、かかるタスクは、例えば、ある付与されたYに対するプレイメージXを発見するY=H(X)と呼ばれており、ハッシュ関数の特性では、これは実現不可能である。
【0052】
異なるアプローチとして、ツリーの根T1に対して認証を行う秘密アレイA'iを注入しようとする試みも可能である。その場合、ツリーの下部は、本当のツリーとは異なり、例えば、T'i+p <> Ti+pであるが、しかしながら、ある点では、2つのツリーは同じ根を共有することから、同一のものである。これは、あるノードのインデックス「j」に対し、(T'2j,T'2j+1)<>(T2j,T2j+1)ではあるが、しかしながら、T'j=Tjであることを暗示しており、ここでTj=H(T2j||T2j+1) 及び T'j=H(T'2j||T'2j+1)である。例えば、H(X)=H(X')のような値X,X'は、衝突(collisions)と呼ばれており、そして、ハッシュ関数の特性では、かかる衝突を発見することは実現不可能である。それ故、署名を偽造する唯一つの途は、本物の被認証装置101と認証装置121との間の相互作用を観察し、そして被認証装置101から署名を集めることである。次に、認証プロトコルに従事する場合、もしも同じカウンター値「i」であれば、認証装置121は、本物の被認証装置101の場合と同様に、同じ要求を送信し、偽造者は対応する収集された署名を使用することができる。その結果、署名を偽造する確率は1/2nであり、ここで「n」は安全性のパラメータである。もしも要求サイズに対してn=20であれば、この確立は百万回に1回程度以下である。
【0053】
なお、本発明の範囲は、以上に述べた実施例に限定されるものではない。例えば、有用性パラメータpや署名の数、又は、安全性パラメータnや要求のサイズなどのシステムパラメータは、いかなる適切な整数値をも取り得る。高い安全性のシステムのためには、nは大きくなければならず、典型的には、121ビット以上となり、このことが被認証装置101に対して大きな容量を要求することとなる。認証システムを軽量化するためには、例えば、8ビットのように、nを小さくに選択することも出来、その場合、偽造者が書名を偽造する確率として1/256を有することとなるが、これは、スマートカード上でPINコードによって提供される安全性からしても非常に外れたものではなく、或る状況下では、許容可能である。
【0054】
また、ハッシュ関数についても任意に選択することができ、即ち、128ビットの出力サイズを有するMD5でも、又は、SHA1、或いはその他の如何なるハッシュ関数とすることもできる。
【0055】
被認証装置101のメモリユニットは、幾つかの方法で実施することができる。厳密に述べると、メモリユニット105は、リードライトメモリ(read-write memory)を含め、いかなるタイプのメモリであってもよい。それ故、ROM, PROM, EEPROMやフラッシュメモリ(flash memory)、又は、いかなるメモリ補助手段によっても、実施することができる。リードワンスメモリユニット103については、例えば、上記特許文献1に記載されたフューズベースの本当のリードワンスメモリ、又はFeRAMメモリ、又はその他のいかなるリードワンスメモリであってもよく、しかもその機能は、例えばフラッシュメモリであるEEPROMと書込みによってコンテンツを消去するメモリコントローラからなる、標準的なメモリユニットによって実現(エミュレート)することができる。
【0056】
最後に、上記の認証システムを、メッセージ164が発生され、被認証装置101によって署名され、そして、認証装置121によって認証されるデジタル署名システムに変更することは、当業者にとっては簡単なことであろう。
【実施例2】
【0057】
続いて、本発明の実施例2になる、プリンターカートリッジのための認証システムについて、添付の図9を参照しながら、以下に詳細に説明する。
【0058】
このシステムは、認証者チップ121と被認証者チップ101とから構成される。本実施例では、プリンターには認証者チップ121が装着され、他方、インクカートリッジには被認証者チップ101が装着されている。正規のカートリッジは商店で購買することができ、また、競業者によって製造された偽のカートリッジやリフィルキット(再充填用キット)も、また、同様である。それ故、適法なカートリッジは、
− 偽のカートリッジの使用を禁じるため、プリンターに対して認証を行い、そして、
− 再充填が回避される制限された回数だけ、使用されなければならない。
【0059】
カートリッジ101とプリンター121とは直接接触しており、直接接続901を介してデータを交換することができる。交換されるデータは、例えばインクレベルのチェックのような、通常のプリント機能に関するものでもよいが、しかし、要求164や署名163を含めた認証データに関連するものでもよい。
【0060】
プリンター121は、例えばUSBのようなケーブル902を介して、パーソナルコンピュータ911と接続している。パーソナルコンピュータ911には、例えばUSBやLANコネクタ、メモリユニット913や演算ユニット914、あるいは幾つかの周辺機器やユニットと共に、入出力インターフェース912が装着されている。ケーブル902を介して、パーソナルコンピュータ911は、印刷要求や通常の印刷機能に関するいかなるデータをも送信することは可能であるが、しかしながら、ブラックリスト126を提出することも可能である。実際、パーソナルコンピュータ911はインターネットを介して認証局装置(Certificate Authority)に接続されており、認証局装置は、ファームウェアやソフトウェアのアップデート版をパーソナルコンピュータ911を介してプリンター121へ送信し、そして、同時に、アップデートされたブラックリストを送信することもできる。
【0061】
認証局装置141は、インターネット903に接続されたウェブサーバーであり、プリンター会社により運営されている。最初の実施例の場合とは異なり、認証局装置141とカートリッジ101との間には永続的で直接的な接続はなく、それ故、データの初期化を遠隔から実行することは出来ない。代わりに、カートリッジのメモリユニット103と105と106は、カートリッジが製造される際に初期化される。その際、カートリッジを物理的に認証局装置141に接続し、又は好ましくは、多くのカートリッジの秘密アレイ104を漏出してしまう安全性侵害から回避するため、インターネットに接続されていない専用のコンピュータへ接続してもよい。
【0062】
プリンター121とカートリッジ101とは自律的であり、そして認証は、外部のいかなるネットワークにアクセスすることなく実行することができ、特に、プリンター121はインターネット903又は認証局装置141への永続的で直接的な接続を必要とはしない。単に、ローカルに格納された認証局装置141の公開キー125を使用するだけで、プリンター121は、上記の実施例1に記載した認証メカニズムによって、適法なカートリッジを認証することができる。認証は、プリンター会社の安全性ポリシーに従って、定期的な時間間隔で実行してもよい。例えば、印刷要求の度に、起動時(booting time)に、又は、毎日行ってもよい。認証に失敗した場合にプリンターがどのように振舞うかについても、また、プリンター会社の安全性ポリシーによって決定される。一の可能性として、プリンターが印刷要求を数分間だけ拒否することも考えられる。それ故、安全パラメータが非常に高いものでなくとも、例えば、n=8ビットの要求でも、実際上、1/256の偽造確率となるが、もしもプリンターが、認証に失敗した場合に略1分間だけアイドリング状態になるものとすれば、偽のカートリッジを使用した場合には、その有用性が大幅に損なわれることとなる。
【0063】
この実施例2では、安全性パラメータは、メッセージサイズに対してn=8ビットであり、ハッシュ関数は、出力サイズh=128ビットによるMD5であり、署名の数はp=1024個である。
【0064】
この場合、リードワンスメモリは、秘密アレイ104のための略260キロバイトのデータを格納し、これに対し、リードオンリーメモリは、暗号化されたアレイ111のための260キロバイトとツリーデータ110のための32キロバイトが必用となる。公開キー108は、正に1つのハッシュ値であり、それ故、16バイトであり、証明書は1024ビットのRSA署名であってもよく、それ故、128バイトであり、そして、ID 112は4バイトで符号化された製品番号である。リードオンリーメモリには、合計300キロバイト以下の容量が要求される。最後に、カウンター107は1024までを計数するためのカウンターであり、リードライトメモリの2バイトを占有する。
【0065】
リードワンスメモリユニット103は後にその詳細について議論するが、リードオンリーメモリユニット105はPROMとして、リードライトメモリユニット106はEEPROMとして実施されている。入出力インターフェース102については、シリアルデータ入出力ピン921、電力供給ピン922、接地ピン923、及びクロックピン924からなる単純なコネクタである。
【0066】
次に、リードワンスアレイについて、添付の図10を参照しながら詳細に説明する。
秘密データブロックUj 及び Djを格納する秘密アレイAi 104は、認証メカニズムの心臓部である。一対のアレイ (Uj,Dj) が一回だけ使用されることから、データはアクセスされた後には消去される。本実施例2では、このリードワンスメモリは、ヒューズ1021によって実現されており、より詳細には、一のヒューズが一のデータビットを格納している。ヒューズは二つの状態、即ち、ビット値「0」に対応する溶融状態と、ビット値「1」に対応する非溶融状態とを有している。加えて、電流がヒューズをと通過して流れると、ヒューズは溶融し、そして、対応するビットは値「0」に回復不可能に設定される。
【0067】
さて、秘密アレイ104について詳細に説明する。各アレイAiは二つの入力信号、即ち、 8-ビットの要求164とクロック信号931とを有している。各アレイは、また、一の出力である、署名163の一部を有している。8-計数カウンター1002は「0」から「8」への計数を行い、その出力はマルチプレクサ1001とデマルチプレクサ1003とを制御する。マルチプレクサ1001は、カウンター1002の値によって8個の要求ビットの一つを選択し、例えば、「1」により要求のビット「1」が選択される。デマルチプレクサ1003は、入力Vcc信号1005を、カウンター128の値に従って、128ビットのメモリセル1011 U0,…,U7の一つへ、そして、128-ビットのメモリセル1012 D0,…,D7の一つへ伝播する。例えば、「1」ではVccをU1 と D1へ伝播する。各メモリセルUj 又は Djは128 ビットを格納し、そして、128 個のヒューズ1021を含んでおり、溶融状態のヒューズはビット値「0」を、他方、非溶融状態のヒューズはビット値「1」を格納している。
【0068】
カウンター1002がメモリセルUjの内の一と、メモリセルDjの内の一とを起動することに留意のこと。両メモリセルは、それらの128-ビットのメモリコンテンツをマルチプレクサ1004へ転送する。カウンター1002は、また、要求ビットmjの一を選択することに留意。この要求ビットの値がマルチプレクサ1004へ転送され、Uj 又は Djのいずれか一方を選択するために利用され、もしも要求ビットがmj=0であれば、署名の一部はUjとなり、そして、要求ビットがmj=1であれば、署名の一部はDjである。
【0069】
次に、一のメモリセルU0 1011について記載するが、他のセルも基本的には同じである。もしもカウンター1002が「0(零)」であれば、入力Vcc は、閉スイッチとして動作する128個のトランジスタ1022の全てに転送される。もしも、或る一のトランジスタに対し、対応するヒューズ1021が溶融していれば、抵抗1023の左右側の電圧は非零である。即ち、インバータ1024の右側は、ビット値「0」に対応した電圧「0」を有する。
【0070】
他方、もしもヒューズ1021が溶融していなければ、抵抗1023の右側が接地信号に接続し、その抵抗の右側の電圧は零(0)となる。即ち、インバータ1024の右側が、ビット値「1」に対応する電圧Vccを有する。しかしながら、この場合、電流がヒューズ1021を通して流れ、これがある時間の後にヒューズを溶融し、そして、対応するビットデータが回復不可能に零(0)に設定される。即ち、データは、それをアクセスした後は、常に消去されることとなる。
【0071】
もしも最初に、入力Vccがデマルチプレクサ1003によって128個のトランジスタへ転送されていなければ、それらは全て開スイッチとして動作し、そして、全トランジスタの右側の電圧は零(0)となり、それ故、メモリセルU0は、デマルチプレクサ1003によって起動されるまで、そのメモリコンテンツを伝送することはない。
【0072】
しかしながら、本発明の範囲は、以上に述べた実施例に限定されるものではなく、特に、他の応用のための同様なシステムとして利用することもできる。例えば、第2の実施例において記載された認証システムは、交換部品のコンプライアンスを認証するために使用することもできる。典型的な例としては、ラップトップコンピュータ用のバッテリであり、即ち、多くのラップトップコンピュータのユーザは、そのラップトップコンピュータに適合していないバッテリの交換によるラップトップコンピュータの破損を経験している。ここに記載された認証システムを利用することによれば、ラップトップコンピュータの製造者は、製品に適合しかつ安全に使用することができるラップトップコンピュータ用のバッテリに対し、デジタルの証明書を発行することが可能となる。そして、勿論、ここに記載された認証システムは、異なる安全性や有用性パラメータ、異なるハッシュ関数、そして、異なるメモリサポート(memory supports:メモリ支援)によっても実施され得る。
【実施例3】
【0073】
続いて、本発明の実施例3として、メモリカード上のデジタルコンテンツのためのDRM について、以下に説明する。
【0074】
即ち、この第3の実施例では、本発明がいかにしてメモリサポートとして、特に、SDカード等のフラッシュメモリに基づくカード上に格納されたデジタルコンテンツを保護するために使用することができるかを示す。デフォルト状態では、メモリのタイプによってこのリードワンスアクセス(一回だけの読出アクセス)を支援することは出来ないことから、簡単なメモリ制御装置によりその機能を実現(emulate)しなければならず、即ち、ある特定のメモリセグメントを読み出した際には、その読み出されがコンテンツは破壊される。
【0075】
この第3の実施例として、ビデオゲームコンソールとビデオゲームに適用した例を、以下、添付の図11を参照しながら詳細に説明する。
【0076】
この第3の実施例では、被認証装置は、その上にソフトウェアを、典型的には、ビデオゲーム1126を搭載したメモリカードである。このビデオゲーム1126は、認証装置、即ち、ビデオゲームコンソール121によって実行されることができる。ビデオゲームとコンソールとは直接接続1101され、メモリカードは、データピン1121、電源供給ピン1122、クロックピン1123、そして接地ピン1124を含む幾つかのピンを備えている。フラッシュメモリ部1127へのアクセスは、アクセス権を制御するメモリコントローラ1125により管理され、即ち、暗号化されたアレイ、ツリーデータ、公開キー、及び証明書を格納しているメモリセグメント105は読出しだけの(read-only)リードオンリーアクセスを有し、カウンターを格納しているメモリセグメント106は、読出し/書込み(read-write:リードライトアクセス)機能を有し、そして、秘密アレイを格納しているメモリセグメント103は一度だけの読出し(read-once:リードワンスアクセス)機能を有しており、そして、秘密アレイは読み出された後にメモリ制御装置1125によって削除される。加えて、メモリコントローラ1125は、図4にも記載したように、署名の発生(signature generation)231をも実行する。上述の実施例と同様に、要求に署名するには、アクセスを行い、そして、場合によっては、メモリを削除することが必要となる。
【0077】
ビデオゲームコンソールには、通常の周辺機器と、そして、演算ユニット132とメモリユニット131とを含んだユニットとが備えられている。入出力インターフェースは、ビデオゲームメモリカード101との接続と共に、インターネット1103との接続を、例えば、WiFiインターフェースを利用することにより制御する。このコンソールの主要な目的は、メモリカード101上に格納されたゲームソフトウェア1126を実行することである。
【0078】
認証局装置141は、ビデオゲーム会社により管理されたウェブサーバーである。このウェブサーバーは、コンソール121上でプレイされることが許可されたビデオゲームのための証明書を発行することができ、そして、信用を失い、そして、その秘密アレイがハッカーにより暴かれた特定のメモリカード101の、公開キーのブラックリスト126を維持している。コンソール121は、インターネット1103への永続的な接続は行わず、時々、ソフトウェアやファームウェアのアップデートのためにインターネットへアクセスする。その時、ブラックリスト126が認証局装置141によって接続されている全てのコンソール121へ伝送される。
【0079】
ビデオゲームメモリカード101がコンソール121に差し込まれると、ゲームデータ1126がコンソールへ伝送される。かかるシナリオにおいては、ゲームデータ1126は、メモリカード101の特定手段ID 112でもある。メモリカード101の公開キーは、H(T1||ID)として規定されていることから、ゲームデータはビデオゲームコンソール121によって認証することができる。本発明の目的は、認証されていないソフトウェアがコンソールによって実行されることを防止することであり、署名データ163によって、ゲームデータ1126は、実施例1に記載された認証プロトコルの結果に応じ、実行可能か否かが特定される。その結果、認証プロトコルに失敗した場合には、ウィルスや非合法なコピーなどの悪意あるコードは、ビデオゲームコンソール上で実行できなくなる。更に、ビデオゲーム会社により管理される認証局装置141は、コンソール121上でプレイ可能なビデオゲームを開発することが出来る第三者であるゲームデベロッパーに対し、認証局装置のプライベートキー146をかかる第三者に明らかにすることなく、証明書を発行することができる。
【0080】
この第3の実施例では、安全性パラメータは、要求のサイズに対してn=32ビットであり、それ故、署名を偽造する確率は、四百万又はそれ以上に対して約1回である。認証が数回にわたって失敗した場合、コンソールは、ビデオゲーム会社の安全ポリシーに従って反応すべきである。例えば、メモリカードの公開キー108をブラックリスト126に加えるようにしてもよく、そして、他のコンソールのブラックリストをアップデートするため、通知を認証局装置141へ送信するようにしてもよい。有用性パラメータは、p=65,536として選択されており、よって、一の特定のビデオゲームは65,536回プレイすることが出来る。最後に、ハッシュ関数は、h=128 ビットとしたMD5である。この場合、リードワンスメモリセグメント103には67メガバイト、リードオンリーメモリセグメントセグメント105には69メガバイト、そしてリードライトセグメント106には2バイトの容量が必要となる。
【0081】
なお、本発明の範囲は、以上に述べた実施例に限定されず、異なるパラメータ、例えば、SHA1のような異なるハッシュ関数、又は、例えばEEPROMやその他のタイプのメモリによって、同様の機能を実現することは簡単であろう。加えて、実施例3において記載されたシステムは、他の目的のためにも容易に使用することでき、特に、このシステムによれば、例えば映画や音楽などの如何なるタイプのデジタルコンテンツもデジタル的に署名できる。加えて、認証装置121は、ポータブルオーディオプレーヤ、モバイルフォン、又は、パーソナルコンピュータに限定されることなく、いかなるタイプの電子デバイスによっても実現することができる。
【実施例4】
【0082】
最後に、本発明をRFIDチップによる反偽造システムに適用した実施例4について、以下に詳細に説明する。
【0083】
従来のRFID タグは、暗号化モジュールを搭載しておらず、それ故、認証や反偽造への適用には十分ではない。かかるプラットホーム上で暗号化アルゴリズムが実施されていなことには、二つの主な理由がある。まず、最初に、暗号化への適用には大量のエネルギーを消費し、その一方で、受動的なタグは、非常に低い電力設定でも動作する。第2に、殆どのRFIDタグはメモリだけを備えており、製造コストを可能な限り低く維持するために、演算ユニットを備えていない。
【0084】
この第4の実施例では、実施例1で述べた認証メカニズムの長所をいかにして取り出すか、即ち、リードワンスメモリユニット(read-once memory unit)を、通常リードワンスアクセス(read-once access)機能を実現するFeRAMメモリによって実現するかについて示す。
【0085】
まず、反偽造システムについて、添付の図12を参照しながら、以下に詳細に説明する。
ブランド物や高額な製品にとって、偽造は大きな争点となっており、そこでは、暗号化やデジタル署名が、確実に寄与することできる。この第4の実施例の典型的なシナリオとは、税関における管理であり、そこでは、RFIDチップ101を備えた疑わしい品目を検査するために、関税職員がRFIDリーダ(RFID reader)121を使用するというものである。RFIDチップは、認証プロトコルと連動しており、品目の信頼性を証明し、それに対して、偽造された製品は、それ自身を証明することに失敗した時に検出される。RFIDチップは、検査品目の製造者(以下、会社と呼ぶ)によって製造され、初期化される。会社は認証局の役割を演じ、認証局の公開キー125を関税職員に配布するが、しかしながら、例えばリーダ121が悪意のユーザによって占拠された場合など、情報の漏洩を回避するために、認証局のプライベートキー146は秘密に保たれる。
【0086】
RFIDチップ101は、会社により、製造された製品に取り付けられ、そのチップは、アンテナ1201と、そして、所定周波数の無線波を捕らえることができ、磁気誘導を利用して無線波を電気信号に変換するトランスポンダー(応答機)1202とを備えている。トランスポンダーで変換された電気信号は、リーダ121からの情報を伝送し、同時に、チップ101によって電源としても利用される。受信した信号を後方散乱することによって、トランスポンダー1202とアンテナ1201とは、データをリーダ121に送り返すことが出来る。それ故、リーダ121とRFID チップ101 とは、近距離通信技術を利用し、無線ネットワークにより接続されている。
【0087】
メモリコントローラ1203 は、FeRAM (ferromagnetic Random Access Memory)によって実現される記憶部1204へのアクセスを制御する。FeRAMは、本来、リードワンスメモリ(read-once memory)であり、そのデータは、実施例3の場合とは異なって、読み出しによって破壊されることから、メモリコントローラ1203は、データを明示的に消去する必要はない。それ故、メモリコントローラの役割は、単に、アクセス制御を実現し、そして、図6の署名発生手順を実施することである。ここで再び、署名とは、正にデータを選択することであり、何らの演算も必要ない。
【0088】
FeRAMは、フラッシュメモリに似た特性を備えた不揮発性のメモリであり、しかも幾つかの利点を備えており、即ち、低電力消費で、そして、書込/消去サイクル(write/erase cycles)の数が大きいことである。FeRAMは、現在、幾つかのRFIDの応用に使用されている。FeRAMユニット1204 は少なくとも3つのメモリセグメントを有する。リードオンリーセグメント(read-only segment)105 はID 112、公開キー108とその証明書109、ツリーデータ110、そして、暗号化されたアレイ111を格納している。リードライトセグメント(read-write segment)106はカウンター107 を、そして、リードワンスセグメント(read-once segment)103 は秘密アレイ104を格納している。その性質上、FeRAM はリードワンス(read-once)であることから、メモリセグメント103のリードワンス特性(read-once functionality)を実現するための如何なるメカニズムも必要としない。しかしながら、リードオンリーセグメント105とリードワンスセグメント106に格納されたデータは、読み出しによって破壊されることから、データは、メモリコントローラ1203内において実現されるメカニズムによって再生(refresh)されなければならない。
【0089】
チップ101とリーダ121とは、図4に示すように、認証プロトコルを実行することができ、そこでは、リーダ121はランダムな要求164をチップ101へ送信し、チップは要求の署名163によって応答する。リーダとしては、RFID チップ101と通信し、そして、失敗した場合には関税職員が適切な対応を取ることが出来るように、認証プロトコルの結果を表示するための近距離通信技術が搭載されたPDAでもよい。加えて、信用が失われた製品の公開キーを含んだ、会社からのアップデートされたブラックリスト126を得るために、リーダは定期的にインターネット1212へ接続してもよい。しかしながら、リーダが可動性(mobile)である場合には、必ずしもインターネットへ継続的には接続しておらず、それ故、チップ101とリーダ121との間の認証プロトコルは、いかなる外部干渉も、或いはインターネット1212への接続もなく、実行することが可能である。
【0090】
この第4の実施例では、安全性パラメータは、要求のサイズに対し、n=16ビットとして選択され、そして、有用性パラメータとしては、p=256個の署名である。それ故、一製品は、その寿命内において、最多の場合には256回、認証をすることが出来、そして、署名は1/216=1/65,536の無視可能な確率でしか偽造することが出来ない。ハッシュ関数にはSHA1を使用し、それ故、ハッシュ出力サイズはh=160ビットであり、これによれば、FeRAM ユニット1204のための330キロバイトの容量が必要となる。
【0091】
本発明の範囲は以上に述べた実施例に限定されることなく、上述したシステムは、電子パスポートに限らず、製品の追跡(product tracking)、電子財布(electronic wallets)、又は電子定期券(electronic commuter pass)などの他のシナリオにも適用することができる。異なるハッシュ関数や異なるパラメータを使用することもでき、システムは、フラッシュメモリやEEPROMのような種々のメモリサポートを利用して実現することができる。
【図面の簡単な説明】
【0092】
【図1】本発明になる認証システムのハードウェア構成を示す図である。
【図2】本発明の被認証者装置のハードウェア構成を示す図である。
【図3】本発明の認証者装置のハードウェア構成を示す図である。
【図4】本発明の認証システムにおける認証プロトコルの流れを示すフロー図である。
【図5】本発明の認証システムにおける初期化の流れを示すフロー図である。
【図6】本発明の認証システムにおける署名発生の流れを示すフロー図である。
【図7】本発明の認証システムにおける署名認証の流れを示すフロー図である。
【図8】本発明の認証システムの適用例を示す図である。
【図9】本発明の第2の実施例である、認証システムをプリンターカートリッジの認証システムに適用した場合のハードウェア構成を示す図である。
【図10】上記システムにおけるリードワンスアレイのハードウェア構成を示す図である。
【図11】本発明の第3の実施例であるメモリカード上のデジタルコンテンツのためのDRMのハードウェア構成を示す図である。
【図12】本発明の第4の実施例である反偽造システムのハードウェア構成を示す図である。
【符号の説明】
【0093】
101…被認証者装置、121…認証者装置、141…認証局装置、161…ネットワーク、102、122、142…入出力インターフェース、103…リードワンスメモリユニット、105…ROMユニット、106…RWMユニット、131、151…メモリユニット、132…演算ユニット。

【特許請求の範囲】
【請求項1】
強力な演算ユニットを備えてはおらず、又は、演算ユニットを全く備えていないプラットホームにおいてデジタル署名を発生するための暗号化システムであって、
(a)入力メッセージを受信するための第1の手段と、
(b)秘密データを格納するための第1の記憶部と、
(c)暗号化されたデータ、認証データ、及び、公開キーを格納するための第2の記憶部と、
(d)カウンターを格納した第3の記憶部と、
(e)前記入力メッセージのデジタル署名を送信するための第2の手段とを備えており、
前記デジタル署名は、前記秘密データから取り出されたデータと共に、前記暗号化されたデータ、及び、認証データを備えていることを特徴とする暗号化システム。
【請求項2】
請求項1に記載した暗号化システムにおいて、前記秘密データは、複数の秘密アレイによって組織され、前記秘密アレイは複数の秘密データブロックを格納し、そして、前記秘密ブロックは対によって組織されており、前記秘密データブロックの一つだけが前記対の状態でアクセス可能であり、そして、両秘密データは前記対内のエレメントを読み出すことにより破壊されることを特徴とする暗号化システム。
【請求項3】
請求項1に記載した暗号化システムにおいて、前記第1の記憶部はヒューズのアレイであり、そして、所定の数のヒューズが前記第1の記憶部にアクセスすることにより吹き飛ばされることを特徴とする暗号化システム。
【請求項4】
請求項2に記載した暗号化システムにおいて、更に、メモリコントローラを備えており、そして、前記メモリコントローラは、前記第1の記憶部をアクセスすることにより、所定の数の前記秘密データブロックを消去することを特徴とする暗号化システム。
【請求項5】
請求項4に記載した暗号化システムにおいて、前記第1の記憶部はフラッシュメモリユニットであることを特徴とする暗号化システム。
【請求項6】
請求項4に記載した暗号化システムにおいて、前記第1の記憶部はEEPROMメモリユニットであることを特徴とする暗号化システム。
【請求項7】
請求項4に記載した暗号化システムにおいて、前記第1の記憶部はFeRAMメモリユニットであることを特徴とする暗号化システム。
【請求項8】
請求項2に記載した暗号化システムにおいて、前記暗号化されたデータは複数の暗号化されたアレイに組織され、当該暗号化されたアレイは複数の暗号化されたデータブロックを格納しており、そして、前記暗号化されたデータブロックは、暗号化処理ユニットにより暗号化された前記秘密アレイからの前記秘密データブロックを格納することを特徴とする暗号化システム。
【請求項9】
請求項8に記載した暗号化システムにおいて、前記暗号化処理ユニットはハッシュ関数ユニットであることを特徴とする暗号化システム。
【請求項10】
請求項9に記載した暗号化システムにおいて、前記認証データは、複数のノードを格納したツリー状の組織されており、前記ツリーの葉は、前記ハッシュ関数ユニットによって更に暗号化されたノードを格納しており、そして、前記ツリー内の親ノードは、前記ハッシュ関数ユニットによって暗号化された所定の数の子ノードを格納しており、そこでは、前記公開キーが前記ツリーの根から導出されていることを特徴とする暗号化システム。
【請求項11】
公開キー認証システムであって、
(a)前記請求項1に記載した暗号化システムと、
(b)認証部とを備えており、当該認証部は、
(1)乱数メッセージを発生するための乱数発生部と、
(2)前記乱数メッセージを送信するための第1の手段と、
(3)デジタル署名を受信するための第2の手段と、
(4)前記デジタル署名を認証するための第3の手段とを備え、
前記暗号化システムが前記メッセージのデジタル署名を発生し、そして、前記デジタル署名が正しく認証されると、前記認証ユニットにより証明されることを特徴とする公開キーの認証システム。
【請求項12】
デジタル署名を発生するための方法であって、
(a)秘密データと、暗号化されたデータを、認証データと、そして、公開キーとを格納するための手段を提供し、
(b)入力メッセージを受信し、
(c)前記秘密データから秘密データブロックを取り出し、
(d)前記暗号化されたデータから暗号化されたブロックを取り出し、
(e)前記認証データから認証データブロックを取り出し、
(f)カウンターを更新し、
(g)前記入力メッセージのデジタル署名を送信するステップを備えたものにおいて、
前記デジタル署名は、前記取り出された秘密データブロックと、前記取り出された暗号化されたデータブロックと、そして、前記取り出された認証データブロックとを備えていることを特徴とするデジタル署名の発生方法。
【請求項13】
前記請求項12に記載した方法において、前記秘密データブロックを取り出すステップは、更に、
(a)前記取り出された秘密データブロックを消去し、
(b)各取り出された秘密データブロックに対し、少なくとも一の他の秘密データブロックを消去するステップを含んでいることを特徴とするデジタル署名の発生方法。
【請求項14】
前記請求項12に記載した方法において、前記秘密データブロックを取り出すステップは、更に、
(a)前記入力メッセージの1ビットをスキャンし、
(b)前記秘密データ内の秘密データブロックの対にアクセスし、
(c)前記ビットが零(0)であれば前記対における一の秘密データを明かし、そして前記ビットが1であればその他の秘密データを明かし、
(d)前記秘密データの前記対を消去し、
(e)前記入力メッセージの全てのビットに対して上記のステップを繰り返し、
もって、前記デジタル署名は明かされた秘密データブロックを含んでいることを特徴とするデジタル署名を発生方法。
【請求項15】
前記請求項12に記載した方法において、前記暗号化されたデータは、暗号化関数によって、前記秘密データから全ての秘密データブロックを暗号化することにより、初期化されることを特徴とするデジタル署名の発生方法。
【請求項16】
前記請求項15に記載した方法において、前記暗号化関数はハッシュ関数であることを特徴とするデジタル署名の発生方法。
【請求項17】
前記請求項16に記載した方法において、前記認証の初期化は、
(a)前記ハッシュ関数によって所定の数の暗号化されたデータブロックをハッシングすることにより、葉ノードを演算し、
(b)前記先のステップにおいて演算された所定の数のノードをハッシングすることにより、少なくとも一の新たなノードを演算し、
(c)一のノードが残るまで、上記のステップ(b)を繰り返し、もって、
前記デジタル署名方法の公開キーが、前記初期化方法によって演算された最後のノードから導出されていることを特徴とするデジタル署名の発生方法。
【請求項18】
公開キー認証方法であって、
(a)ランダムなメッセージを発生し、
(b)前記ランダムメッセージのデジタル署名を、前記請求項12に記載した方法により発生し、
(c)前記デジタル署名を認証し、もって、
前記デジタル署名が正しく認証された場合、認証が成功することを特徴とする公開キーの認証方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2009−171292(P2009−171292A)
【公開日】平成21年7月30日(2009.7.30)
【国際特許分類】
【出願番号】特願2008−7849(P2008−7849)
【出願日】平成20年1月17日(2008.1.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】