JP2004537062A - 暗号アプリケーションにおける一方向チェーンの効率的計算方法および装置 - Google Patents

暗号アプリケーションにおける一方向チェーンの効率的計算方法および装置 Download PDF

Info

Publication number
JP2004537062A
JP2004537062A JP2002582551A JP2002582551A JP2004537062A JP 2004537062 A JP2004537062 A JP 2004537062A JP 2002582551 A JP2002582551 A JP 2002582551A JP 2002582551 A JP2002582551 A JP 2002582551A JP 2004537062 A JP2004537062 A JP 2004537062A
Authority
JP
Japan
Prior art keywords
chain
value
way
helper
output values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2002582551A
Other languages
English (en)
Other versions
JP4112373B2 (ja
JP2004537062A5 (ja
Inventor
ヤコブソン,ビヨルン,マーカス
Original Assignee
ヤコブソン,ビヨルン,マーカス
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26962351&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2004537062(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by ヤコブソン,ビヨルン,マーカス filed Critical ヤコブソン,ビヨルン,マーカス
Publication of JP2004537062A publication Critical patent/JP2004537062A/ja
Publication of JP2004537062A5 publication Critical patent/JP2004537062A5/ja
Application granted granted Critical
Publication of JP4112373B2 publication Critical patent/JP4112373B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

暗号アプリケーションにおける一方向チェーンおよび他の一方向グラフの連続した値の効率的な計算の技法が開示される。一方向チェーンまたは一方向グラフは、位置i=1,2,…sを有する長さsのチェーンとすることができる。各位置は、それに関連付けられた対応する値νを有する。値νは、所与のハッシュ関数または他の一方向関数hに対して、ν=h(νi+1)により与えられる。長さsの一方向チェーンに対して、例えば、0≦j≦logsについてi=2によって与えられる位置のヘルパ値の初期分布を記憶することができる(12)。一方向チェーンの現在位置における出力値νの所与の1つは、チェーンの現在位置と終点との間における一方向チェーンの別の位置についての事前に記憶された第1のヘルパ値を利用して計算することができる(14)。所与の出力値の計算後、ヘルパ値の位置は、その後の出力値の計算を容易にするために調整される(16)。この一方向チェーンの出力値の生成に関連する記憶計算積は、複雑度O((log s))を有することが有利である。

Description

【技術分野】
【0001】
[発明の分野]
本発明は、包括的には暗号の分野に関し、詳細には、例えば、暗号化、復号、デジタル署名、メッセージ認証、ユーザおよびデバイスの認証、マイクロペイメントなどの暗号アプリケーションにおける一方向チェーンおよび他のタイプの一方向グラフの連続値を計算する技法に関する。
【0002】
[優先権主張]
本出願は、発明者Bjorn Markus Jakobssonの名前で2001年4月16日に出願された「Method and Apparatus for Efficiently Representing and Computing One-Way Chains」という発明の名称の米国仮出願第60/284,001号の優先権を主張する。この仮出願の開示は、参照により本明細書に援用される。
【0003】
[発明の背景]
一方向関数は、値xを与えると、値y=f(x)を計算できるが、特定の一方向関数のみがいわゆる「トラップドア」を有する場合に、トラップドアが知られていないと、yを与えても、値xを計算することが計算上不可能な関数fである。上記状況において、値xは、関数fに関してyのプリイメージ(pre-image)と呼ばれ、値yは、関数fに関してxのイメージと呼ばれる。一方向関数の例として、周知のSHA−1ハッシュアルゴリズムおよびMD5ハッシュアルゴリズムといったハッシュ関数、ならびにメッセージ認証コード(MAC(message authentication code))を生成する関数が含まれる。これらの一方向関数および他の一方向関数のさらに詳細な内容については、A.J. Menezes等著の「Handbook of Applied Cryptography」CRC Press, 1997を参照されたい。この文献は、参照により本明細書に援用される。
【0004】
多くの暗号アプリケーションでは、いわゆる一方向チェーンを計算することが望ましい。これは、νi−1=f(ν)となるような値ν…νの列である。より詳細には、gを、ハッシュチェーンまたは他の一方向関数hの出力のサイズの入力を関数hの入力のサイズに写像する関数とすると、νi−1=f(g(ν))となる。特に、当業者に周知のように、gは、適度な長さにするための情報の切り捨て、適度な長さにするための情報の付け足し、または他の同様の写像関数とすることができる。ハッシュ関数が受け付けるように、hが、任意の長さの入力を受け付ける関数である場合に、関数gを使用する必要はないことも知られている。あるいは、このような状況のgは、恒等関数であると言うことができる。関数gは、必要ならば、一方向関数hの機能に適切に組み込まれていると理解することができるので、本明細書で使用される表記を簡単にするために、関数gの潜在的な使用は、明示的には示されない。
【0005】
また、チェーンの異なるステップに対して異なる関数を使用できることにも留意すべきである。ここで、チェーンの「ステップ」とは、前のチェーン値からの所与のチェーンの出力値の生成をいう。同様に、さまざまなステップへの補助入力を認めることができる。説明を簡単にするために、これらの特定の変形は、本明細書では明示的に記述されないが、当業者は、一方向チェーンが、これらの変形または他の変形を使用して構成できることを認識するであろう。
【0006】
上述したタイプの一方向チェーンは、値νから開始し、その値から、νに一方向関数を適用することによりνs−1を計算し、次に、νs−1に一方向関数を適用することによりνs−2を計算するということを繰り返すことにより計算することができる。値yは、チェーンの次の「リンク」で、一方向関数の入力として使用されるので、これは、上記値y=f(x)の計算の一般的な場合である。このようなチェーンを使用する1つの重要な理由は、時間を表すためである。例えば、一方向チェーンν…νが、第1の関係者によって終点の値νから計算されて、チェーン値νが、第2の関係者に与えられると、第1の関係者は、連続したプリイメージν、νなどを第2の関係者に示すことによって、「時間をインクリメント」することができる。第2の関係者は、単独では、νからこれらの連続したプリイメージを計算することができないことに留意されたい。しかしながら、プリイメージνを与えると、第2の関係者は、ν=f(ν)であるかどうかをチェックすることによって、そのプリイメージの正確さを検証することができる。νについて、この検証は2つのステップを有する。第1のステップではνが計算され、第2のステップではνが計算されて既知の値νと比較される。
【0007】
一方向チェーンの別の既知の使用は、マイクロペイメントアプリケーションにおける金銭または他の支払いメカニズムを代表するものである。例えば、第1の関係者が、一方向チェーンを生成して、例えばチェーンの終点νのデジタル署名を介して一方向チェーンを銀行によって認証させると、第1の関係者は、νを明らかにすることによって1単位の支払いを第2の関係者に支払うことができる。第2の関係者は、この値を銀行に使って、その資金を得ることができる。第1の関係者は、νを明らかにすることによって第2の単位を第2の関係者に支払うことができ、以下同様である。この簡単な例は、支払い先が単一の場合にのみ適用できることに留意されたい。
【0008】
また、一方向チェーンは、MACを有するメッセージの信憑性を検証する鍵の計算にも使用される。これについては、A. Perrig等著の「Efficient and Secure Source Authentication for Multicast」Proceedings of Network and Distributed System Security Symposium NDSS 2001, February 2001、A. Perrig等著の「Efficient Authentication and Signing of Multicast Streams over Lossy Channels」Proc. of IEEE Security and Privacy Symposium SP 2000, May 2000、およびA. Perrig等著の「TESLA: Multicast Source Authentication Transform」Proposed IRTF draft, http://paris.cs.berkeley.edu/~perrigを参照されたい。これらの文献のすべては、参照により本明細書に援用される。このアプローチでは、デバイスは、メッセージおよびその対応するMACを第1の時間間隔の間に計算してブロードキャストし、次に、後の時間間隔の間に鍵を公開することになる。受信者は、鍵が公開された後にMACを検証することができ、送信者のみが、MACがブロードキャストされた時点の鍵を知ることができた者であるという知識に基づいて、メッセージの信憑性を信頼することになる。鍵は、その鍵にハッシュ関数を適用して、その結果を、同じチェーン、したがってその送信者に関連付けられた最新でない方の鍵と比較することにより検証される。
【0009】
これらのアプリケーションおよび他のアプリケーションにおける一方向チェーンの従来の使用は、連続したチェーン値を出力するために、それらの値を記憶しなければならないか、または計算しなければならないという点で、重大な欠点に苦しんでいる。それらの値が、計算を行うことなく記憶装置から直接出力される場合には、関係者は一般に、値のすべてを記憶しなければならない。あるいは、値が必要に応じて計算される場合には、関数fが、関係者がトラップドアを知っているかまたはトラップドアの使用を望むトラップドア関数でないと仮定して、関係者は、この関数fを繰り返し適用することにより、終点νから所与の値を計算しなければならない。計算を行うことなく記憶する場合には、関係者は、チェーンの長さsに比例した記憶装置、換言するとO(s)の記憶装置を使用する必要がある。ここで、O()は、「オーダ(on the order of)」を示す。必要に応じて計算する場合には、第1の関係者は、O(s)の計算を使用する必要がある。
【0010】
従来の一方向チェーンの計算に関連するこの過度の記憶計算積は、例えば携帯電話、スマートカード、携帯情報端末(PDA(personal digital assistant))または他のタイプの無線デバイスまたはポータブルデバイスといった、いわゆる「軽量」の処理デバイスにおいて特に問題である。これらのデバイスは、多くの場合、少なくとも部分的にこのようなデバイス内のバッテリ電力を使用することから、一般に、記憶リソースまたは計算リソースが制限されている。他の例として、いわゆる「スマートダスト(smart dust)」または「ダストコンピュータ(dust computer)」が含まれる。これは、地震や軍の調査の目的で大きなエリアを集合的にカバーするために使用することができる非常に小さな計算デバイスをいう。
【0011】
これらの場合および多くの他の場合において、従来の一方向チェーンの計算に関連する記憶コストまたは計算コストは、標準的な暗号技法をこのようなデバイスで実施することを困難にするか、または不可能にする。
【0012】
したがって、上記記憶コストおよび計算コストを十分に削減し、これにより、暗号技法の効率性を改善して、軽量の処理デバイスでこのような技法の実施を可能にするように、一方向チェーンおよび他の一方向グラフの連続したプリイメージの値を計算する改良された技法に対する要求が存在する。
【0013】
[発明の概要]
本発明は、一方向チェーンおよび他の一方向グラフの連続値の効率的な計算の方法および装置を提供することにより、上述した要求を満たす。本発明の一態様によると、ヘルパ値が、チェーン値の生成に関連する記憶計算積を十分に削減する方法で配置され、利用される。より詳細には、記憶計算積は、本発明の技法を使用して、上述した従来のアプローチのようにチェーンの長さs自体のオーダ、すなわちO(s)ではなく、チェーンの長さsの対数の2乗のオーダ、すなわちO((log s))となるように削減される。
【0014】
本発明の例示の実施の形態では、一方向チェーンは、位置i=1,2,…sを有する長さsのチェーンであり、各位置は、それに関連付けられた対応する値νを有し、値νは、特定のハッシュ関数または他の一方向関数hに対して、ν=h(νi+1)により与えられる。長さsの一方向チェーンに対して、例えば、0≦j≦logsについてi=2によって与えられる位置のヘルパ値の初期分布を記憶することができる。一方向チェーンの現在位置における出力値νの所与の1つは、チェーンの現在位置と終点との間における一方向チェーンの別の位置についての事前に記憶された第1のヘルパ値を利用して計算することができる。所与の出力値の計算後、ヘルパ値の位置は、その後の出力値の計算を容易にするために調整される。
【0015】
本発明の別の態様によると、一方向チェーン内のヘルパ値の初期分布におけるヘルパ値のそれぞれはペグ(peg)に対応し、このペグは、ヘルパ値に加えて、それに関連付けられた他の情報を有する。この他の情報には、チェーンにおける目的地の位置、優先度指示子、および状態が含まれ得る。出力値の所与の1つの計算において、ペグの1つまたは2つ以上のものは、一方向チェーンにおける新しい位置に再配置され、再配置されたペグのいずれに対しても、新しいヘルパ値が計算される。
【0016】
ペグの再配置プロセスは、チェーンの各位置iに対して、対応する出力値νを計算できるように、かつ、あらゆるペグを、指定された計算バジェット内で再配置できるように構成されることが好ましい。例えば、例示の実施の形態で一方向チェーンに利用されるペグの個数は、
【数3】
Figure 2004537062
によって近似的に与えることができる。ここで、s=2σは、チェーンの長さである。指定された計算バジェットは、バジェット
【数4】
Figure 2004537062
によって近似的に与えることができる。より具体的な数値例として、σ=31、s=231=2.147×10である場合に、バジェットbは15になり、これは、各チェーン値を計算するのに、最大15回のハッシュ関数の適用が必要となることを示す。この例では、n=36個のペグが必要とされる。これらのペグのそれぞれは、周知のSHA−1ハッシュ関数の使用を仮定すると、ヘルパ値を記憶するための20バイトに加えて、状態情報の記憶用に追加の8バイトを使用して実施することができる。この結果、全体で36×(20+8)=1008バイトの記憶装置が必要とされる。この例の一方向チェーンが、毎秒1つのチェーン値の出力を必要とするアプリケーションで実施されると、そのチェーンは、68年より長く持ちこたえることになる。
【0017】
[発明の詳細な説明]
本明細書では、本発明は、特定の例の一方向チェーンを使用して説明される。しかしながら、本発明の技法は、他のタイプの一方向チェーン、例えばトラップドアを有するまたは有さない他のタイプの一方向関数を使用して構成されるチェーンに、より広く適用できることが理解されるべきである。上記で示したように、チェーンの異なるステップに対して異なる関数を使用することもできるし、ステップの1つまたは2つ以上のものへの補助入力を認めることもできる。その上、本発明の技法は、直線状のチェーン値の列というよりもむしろ、木の形状または他のグラフの形状に配置された値の列にも適用することができる。さらに、図示されて説明される特定の例示の実施の形態は一例にすぎず、所与のアプリケーションの特定の必要性に適応するように再構成できるか、そうでなければ変更できる。
【0018】
本明細書で使用される用語「一方向関数」は、一例として、プリイメージからイメージを計算する方が、イメージからプリイメージを計算することよりも十分に効率的である任意の関数を含むが、これに限定されるものでないことを意図している。例えば、イメージからプリイメージを計算する逆計算の関数は、計算的に高価であるか、不可能であるか、またはそうでなければ計算を行うのが困難である。
【0019】
本明細書で使用される用語「チェーン」は、一般に、値の直線状の列だけでなく、複数の枝を有し、各枝がそれ自体、値の直線状の列に対応し得る木構造またはグラフ構造も含むように解釈されることを意図している。
【0020】
用語「一方向チェーン」は、少なくとも1対の値が、一方向関数を介して相互に関連するチェーンをいう。
【0021】
図1は、本発明の技法を利用した効率的な方法で連続値の列を計算することができる一方向チェーンの一例を示している。この例の一方向チェーンは、総数としてs個の要素を含む一方向チェーンを仮定している。各要素は、チェーンの対応する位置に関連付けられる。チェーンの最初の要素は、位置1の要素であり、本明細書ではチェーンの始点ともいう。チェーンの最後の要素は、本明細書ではチェーンの終点ともいい、位置sの要素である。ここで、sは、チェーンの範囲または長さを示す。位置i=1,2,…sのそれぞれには、図示するような対応する値νが関連付けられる。この例の一方向チェーンは、値νが、所与の関数hに対して次の式、
ν=h(νi+1
によって与えられるように構成される。ここでhは、ハッシュ関数または別のタイプの一方向関数を意味することができると理解されるべきである。このように、一方向チェーンの所与の現在の値νは、関数hをチェーンの次の値に適用することにより計算される。ここで、この文脈における用語「次」は、値νi+1をいう。上記に示したように、位置sの終点の値から開始してチェーンの各値を計算することは、過度に計算集約的(computation intensive)であり、チェーンに沿った各値の記憶は、過度に記憶集約的(storage intensive)である。この問題は、上記「軽量の」処理デバイス、すなわち、限られた計算リソースまたはメモリリソースを有するデバイスでは悪化する。
【0022】
例示の実施の形態における本発明は、図1の一方向チェーンの所与の値νの計算効率を改善する技法を提供する。本発明によると、いわゆるヘルパ値(helper value)が、チェーン値の生成に関連する記憶計算積(storage-computation product)を十分に削減する方法で配置されて利用される。より詳細には、記憶計算積は、上述した従来のアプローチにおけるようなチェーンの長さそのもののオーダではなく、チェーンの長さの対数の2乗のオーダとなるように、本発明の技法を使用して削減される。
【0023】
本発明の導入として、まず、図1のチェーンの先頭に近い要素の値を計算したい場合を仮定する。チェーンに沿った値が記憶されていない場合には、計算は、チェーンの長さsに比例した作業量だけ必要となる。ヘルパ値が、値が計算される現在のチェーンの要素からある距離dに導入されると、その値の計算コストは、d−1のハッシュ関数の値の評価になる。そして、計算される次の値のコストは、d−2のハッシュ関数の値の評価になる。しかしながら、1つのヘルパ値のみが使用されると仮定すると、ヘルパ値に一旦到達すると、次の値のコストは、チェーンの終点に到達するコストとなる。この簡単な例では、d=s/2、すなわち、ヘルパ値が、チェーンの中点に位置する場合に、総コストが最小になる。
【0024】
1つではなく2つのヘルパ値が使用される場合には、全区間を3つの等しい長さの区間に分割することができる。この場合に、次の要素の計算コストの上限は、s/3個のハッシュ関数の評価コストになる。記憶および計算の他のさまざまな線形結合も可能である。例えば、s≫100の長さsのハッシュチェーンの100番目ごとの値を記憶する場合に、最悪の場合にも、O(s/100)の記憶装置しか必要とされず、O(100)の計算しか必要とされない。ここで、本明細書で上述したように、O()は、「オーダ」を示す。しかしながら、記憶計算積S×Cは、まだ、チェーンの長さsに比例する。すなわち、S×CはO(s)である。ここで、Sは、必要とされる記憶量を示し、Cは、1つの出力値につき必要とされる最悪の場合の計算量を示す。
【0025】
全区間が、2つの等しい長さの区間に分割され、次に、これら2つのうちの最初のものが、それ自体2つに分割されると、初期計算コストの上限は、s/4個のハッシュ関数の評価コストになる。この低い初期コストは、全区間の最初の半分に当てはまり、その後、次の要素すなわち終点への距離は、s/2となる。しかしながら、再配置の操作を実行するのに十分な計算リソースが残っていると仮定して、最初のヘルパ値に到達するとすぐに、最初の中点または全体の中点と終点との間の新しい中点にそのヘルパ値を再配置した場合には、s/4個の上限を維持することができる。ここで、3つのヘルパ値が存在する場合には、より多くの値を再配置することになるが、個数の増加により区間の長さが減少するので、計算の上限は、各要素について減少することに留意されたい。約log s個のヘルパ値を使用すると、この場合、値が計算される要素ごとに、2つの位置からの最大距離にヘルパ値が存在するので、ヘルパ値の利点が最大になる。
【0026】
図2Aは、上述した本発明によるヘルパ値の初期分布を示している。これらのヘルパ値は、本明細書では、一般に「ペグ」とも呼ばれるが、所与のペグは、その特定のヘルパ値だけでなく、後にさらに詳述するように、一定の追加情報も含むことができる。したがって、各ペグは、それに関連付けられた単一のヘルパ値を有するとみなすことができ、そのヘルパ値は、ペグの位置におけるチェーン値νである。図2Aの線図では、図1の長さsのハッシュチェーンのヘルパ値の初期分布が示され、ヘルパ値、すなわちペグは、位置s、s/2、s/4、s/8などに決定される。より詳細には、ペグは、次の位置、
0≦j≦logsに対して、i=2
に最初に置かれる。位置2で開始するこれらのペグに加えて、一般に、少数の追加ペグを含めることが望ましい。これは、計算プロセスにおいて任意の特定のペグに到達し、その結果、そのペグが再配置に利用可能となる前に、このプロセス中、すぐにペグの移動を開始できるようにするためである。必要なペグの総数は、O(log s)である。
【0027】
図2Aと共に説明し記述した特定の初期ペグ配置は、一例にすぎないことが理解されるであろう。上記で与えた例の初期配置と類似した他の初期の場所にペグを置くことが可能である。例えば、初期の位置i=2+1にペグを置くことができるし、それ以外に、記憶と計算との異なるトレードオフを提供するように、ペグを最初に置くことができる。例えば、上記例のように、区間を2つの等しい長さの部分に分割する代わりに、各区間を3つの等しい部分に分割し、次に、3つのうちの1つを3の部分にさらに分割するということを繰り返すことができる。この結果、記憶コストは追加されることになるが、計算コストは減少する。他のタイプの区間の分割も、本発明を実施する際に使用することができる。
【0028】
動作中、図1の一方向チェーンのチェーン値νは、通常、一度に1つずつ計算されて出力される。1つの値は、各時間間隔iについて計算されて出力される。図2Aと共に記述したペグは、この計算を容易にする。より詳細には、各時間間隔iの間、その間隔に対する値νが出力され、ペグの1つまたは2つ以上が、その後の計算を容易にするために再配置される。ペグの再配置プロセスは、各間隔iについて、必要な出力値νおよび適切な再配置を、O(log s)でもある所定のバジェット(budget)内で求めることができることを確実にする。
【0029】
図2Bは、本発明によるハッシュチェーンの計算プロセスの流れ図である。ステップ10では、チェーンの終点および始点が決定される。このステップは、終点の値をランダムに選択し、所望の長さに達するまで、適切なハッシュ関数を繰り返し適用することによって始点の値を計算することにより実施されてもよい。ステップ12では、初期のペグの位置が決定され、対応するヘルパ値が計算される。次に、ステップ14では、このプロセスは、ペグのうちの1つの現在位置以外の位置の所与のチェーン値を出力する。この出力は、適切なヘルパ値、すなわち所与のチェーン値の位置にチェーンの終点方向において最も近いヘルパ値を使用して、そのチェーン値を計算することにより行われる。所与のチェーン値が出力された後、ステップ16は、ペグが再配置されて、新しいヘルパ値が計算されることを示している。図2Bのプロセスのより詳細な例については後述する。
【0030】
所与のペグの再配置は、新しい場所におけるそのペグの対応するヘルパ値νの計算を必要とする。新しい場所におけるヘルパ値の計算コストは、関連付けられたペグが移動される距離に比例する。したがって、新しいペグが位置iの既存のペグの上に置かれ、その後、位置i−jに移動されると、そのコストは距離jに比例する。同様に、ペグが位置iに位置する場合(別のペグがこの位置に存在しようがしまいが)、そのペグを位置i−jに移動するコストも距離jに比例する。これらの双方の場合における距離jは、位置iの値から位置i−jの値を計算するのに必要な一方向関数の評価数に対応する。
【0031】
しかしながら、例示の実施の形態で最小化されるコストメトリックは、計算だけではなく、前述した記憶計算積S×Cがある。ここでSは、必要とされる記憶量を示し、Cは、1つの出力値につき必要とされる最悪の場合の計算量を示す。これは、その新しい場所から出力される値が計算されるのと同様に、新しい場所におけるヘルパ値が、新しい場所から次の既知の値のハッシュ関数の評価を繰り返すことにより得られるからである。このような値の個数を増加させて、これにより、それらの値の間の距離を減少させることにより、ヘルパ値を再配置するコストを明らかに下げることができるが、本明細書で記述される結果は、一般に、上記記憶計算積の観点で評価されることになる。
【0032】
バジェットは、計算されて出力される各値νに対して割り当てられることが好ましい。バジェットは、要素ごとの計算の上限に対応する。ハッシュチェーンの各位置について、適切な値νを計算して出力しなければならないので、現在のチェーンの要素の計算が、このバジェットにアクセスする最も高い優先度を有する。残りのあらゆるバジェットは、ヘルパ値の計算に割り当てられる。
【0033】
好都合なことに、これらのヘルパ値は、高い優先度のヘルパ値と低い優先度のヘルパ値とに分割することができる。例示の実施の形態では、高い優先度のヘルパ値は、一般に、すでに相対的に小さな区間に再配置されて、現在の要素の近くに位置するのに対して、低い優先度のヘルパ値は、これとは逆に、一般に、より大きな距離をおいて現在の要素からより遠くに位置する。低い優先度のヘルパ値には、現在の要素が計算されて、高い優先度のヘルパ値がそれらの必要な分を使い果たした後、すなわちそれらのそれぞれの目的地に到達した後に残っている上記バジェットの低い優先度のヘルパ値の部分のみが割り当てられる。
【0034】
3つ以上の優先レベルを有することも可能である。本明細書に記述される例示の実施の形態は2つの優先レベルを利用するが、現在の位置までの要素の距離に基づいて、所与のレベル内で要素にさらに優先度をつける。この優先度は、距離が増加するに伴い減少する優先度である。ここで、現在の位置は、値がちょうど出力されたばかりか、または、これからちょうど出力されるチェーンの位置に対応する。
【0035】
図2Bと共に上記に示したように、チェーンの計算プロセスの初期化段階またはセットアップ段階の間、チェーンの終点の値νはランダムに選択することができ、所望の始点は、繰り返されるハッシュ関数の評価により得ることができる。この機能は、ハッシュチェーンの要素の連続値νを後に計算して出力することになるデバイスよりも計算の制限が少ないデバイスによって実行することができる。あるいは、同じデバイスを、ハッシュチェーンの初期化と出力νの生成との双方に使用することができる。また、初期化は、図2Aに示すような上記ペグの初期配置も含むことが好ましい。したがって、各ペグは、位置および位置に関連付けられたヘルパ値を有することになる。ここで、所与のペグの位置に対するペグの値は、終点の値νまたは終点の方向におけるヘルパ値のハッシュ関数の繰り返し適用により得られる。
【0036】
次に、処理デバイスおよび対応するシステムの実施態様の一例について、図3および図4をそれぞれ参照して記述する。その後、例示の実施の形態の特定の一方向チェーンの計算プロトコルをより詳細に記述する。
【0037】
図3は、本発明による一方向チェーンの計算プロセスの少なくとも一部を実施するのに使用することができる一例の処理デバイス100を示している。この例における処理デバイス100は、プロセッサ102、メモリ104、ネットワークインタフェース106、および1つまたは2つ以上の入出力(I/O)デバイス108を含む。デバイス100は、軽量の処理デバイスに対応していてもよい。軽量の処理デバイスとしては、例えば、携帯電話、スマートカード、携帯情報端末(PDA)、ダストコンピュータ、ビデオカメラ、調査デバイス、動き検出器(motion detector)、熱検出器、あるいは他のタイプの無線デバイスまたはポータブルデバイス、あるいはこれらのデバイスまたは他のデバイスの一部または組み合わせといったものである。プロセッサ102は、本発明による一方向チェーン計算プロトコルの少なくとも一部を実施するために、メモリ104に記憶された1つまたは2つ以上のソフトウェアプログラムを実行する。例えば、プロセッサ102は、1つまたは2つ以上の他の情報源から所与のチェーンの始点および終点を受信して、本明細書で記述された方法で連続したチェーン値νを計算するように構成することができる。また、プロセッサ102は、上記に示したように、終点の値νをランダムに選択して、この終点から始点を計算するように構成することもできる。
【0038】
図4は、複数のクライアントデバイス110−1、110−2、…110−Nを組み込んだ一例のシステム構成を示している。各クライアントデバイスは、ネットワーク112を介して1つまたは2つ以上のサーバデバイス114−1、114−2、…114−Mに接続することができる。クライアント110またはサーバ114の1つまたは2つ以上のものは、図3のデバイス100として実施することもできるし、同様の要素の配置を使用して実施することもできる。このタイプのシステム構成では、一方向チェーン値は、クライアント110の1つまたは2つ以上のものによって生成されて、サーバの1つまたは2つ以上のものに送信することもできるし、その逆も行うことができる。また、当業者に明らかなように、図4のさまざまな要素間の他のタイプの通信も、本発明の技法を使用して可能である。
【0039】
図3および図4に示す要素の特定の配置は一例にすぎず、本発明の範囲を決して限定するものとして解釈されるべきでないことは、強調されるべきである。本発明は、処理デバイス(複数可)内のプロセッサおよび関連付けられたメモリといった要素の特定の実施態様に関係なく、プロセッサおよび関連付けられたメモリを有する任意のタイプの処理デバイス(複数可)を使用して、すべてまたは部分的に実施することができる。
【0040】
次に、本発明による一方向チェーン計算プロトコルの第1の例示の実施の形態について記述する。このプロトコルの例は正確であり、チェーンの長さやチェーンの特定の値に関係なく、正確な値が出力されることを示すことができることを意味する。また、この例は完全でもあり、これは、計算が、指定された計算の制限を越えることなく実行可能であることを意味する。
【0041】
この実施の形態では、ハッシュチェーンHは、例えば図1と共に上述した列のような値の列{ν,…,ν,…ν}によって与えられる。ここでνは、{0,1}から一様にランダムに選択された値であり、ν=h(νi+1)である。また、ここでh:{0,1}→{0,1}は、例えば上記SHA−1ハッシュ関数またはMD5ハッシュ関数といったハッシュ関数であるか、または、プリイメージからイメージを計算する方が、イメージからプリイメージを計算するよりも十分に効率的な別のタイプの一方向関数もしくは他の関数である。この実施の形態では、鍵がかけられた関数を使用することも可能であるが、関数hは公に計算可能、すなわち公開情報のみにアクセスして計算可能であると仮定される。なお、鍵がかけられた関数を使用する場合には、入力の一部は、一般に公開されない。値νはチェーンの始点であり、値νはチェーンの終点であり、範囲sはチェーンの長さ、例えば、生成される連続した要素の個数を示す。この実施の形態では、σ>2の整数に対してs=2σと仮定される。他のチェーンの長さが所望される場合には、所望される長さより大きな上記形式の最小値としてsを選択することができる。
【0042】
バジェットbは、出力されるハッシュチェーンの1つの要素につき許容される計算単位の個数として定義される。ここで、ハッシュ関数の評価のみがカウントされ、プロトコルの実行に関連付けられた他の計算ステップはカウントされない。これは、1つのハッシュ関数の評価を実行する計算労力は、1つの要素につき残っている作業をはるかに上回ることからして妥当である。
【0043】
各ヘルパ値およびチェーンの終点は、ペグpに関連付けられる。各ペグpは、チェーン内の位置と、位置に関連付けられた値とを有する。positionをペグの位置とすると、その値は、νpotitionである。さらに、各ペグは、目的地(そのペグが進んでいる位置)、優先度(高または低)、および活動ステータスまたは状態(フリー(free)、レディ(ready)、アクティブ、到着(arrived))に関連付けられる。
【0044】
この実施の形態では、変数nが、使用されるペグの個数を示すために使用される。必要とされる記憶量は、1つのペグにつき必要とされる量のn倍に、プロトコルの実行に必要とされる量を加えたものである。
【0045】
上述したタイプのセットアップ段階を実行した後、この実施の形態の計算プロトコルは、νから開始し、最小のバジェットおよび最小数のペグを使用して、要素ごとに、ハッシュチェーンHを構成する値の列を生成する。プロトコルは、必要とされるバジェット
【数5】
Figure 2004537062
を有し、
【数6】
Figure 2004537062
個のペグを使用する。ここで、上述したように、s=2σは、ハッシュチェーンHの要素数である。
【0046】
ペグが、現在の出力に対応する位置に置かれている場合には、このペグは、「到達された」と言われ、この時に、そのペグはフリー状態に入る。フリー状態にあるすべてのペグには、セットアップされてプロトコルの完全性を保証するガイドラインに従って、新しい位置、目的地、状態、および優先度が割り当てられる。これらのガイドラインについては後述する。
【0047】
各ステップでは、適切なハッシュチェーン値、すなわち現在のハッシュチェーン値が、計算されて出力される。次に、残っているあらゆるバジェットが、最も低い位置の値を有するペグ、すなわち始点に最も近いペグから開始して、アクティブな高優先度のペグに割り当てられる。まだ残っているあらゆるバジェットは、アクティブな低優先度のペグに割り当てられる。これにより、計算結果が、必要な時に利用可能であることが保証される。
【0048】
いくつかのペグが同じ優先レベルを有する場合には、現在の位置に対して最小の距離を有するペグが選択される。この方法で、距離に基づいて異なる優先度を割り当てることができるが、簡単にするために、2つのレベルが使用され、所与のレベル内の優先順位付けは、現在の位置に対する距離に基づいて行われる。
【0049】
高優先度のペグは、3つ以上の区間をカウントする場合にのみ、現在の値の後、最初の区間の「遠端」から開始される。高優先度のペグは、アクティブな低優先度のペグよりも低い位置においては、アクティブな状態のみが許容され、それ以外は、フリー状態に維持される。これは、高優先度のペグが、利用可能なバジェッドのあまりにも多くを取り過ぎないことを確実にするためである。すなわち、これは、高優先度のペグが、それらの目前のタスクを完了する場合に、高優先度のペグを、低優先度のペグの利益にまで遅らせる。
【0050】
低優先度のペグは、次のペグが到達される前に完了できないような位置、すなわちそれら低優先度のペグの目的地に到着できないような位置から開始される。このように、1つのアクティブな低優先度のペグは、あらゆる残りの計算単位を取り込むのに十分であるので、一時に1つのアクティブな低優先度のペグのみが必要とされる。このアクティブな低優先度のペグに加えて、1つの「バックアップ」の(レディ状態にある)低優先度のペグが存在することが好ましい。このバックアップの低優先度のペグは、前にアクティブなペグがその目的地に到達するとすぐにアクティブにされる。ペグが到達されると、その優先度は、バックアップの低優先度のペグが現在存在しない場合には低に設定される。それ以外は高優先度のペグにされる。これらの規則により、アクティブなペグがその目的地に到達した直後であっても、残りの計算単位を消費する低優先度のペグが常に存在することが保証される。
【0051】
この例示の実施の形態の初期化段階は、次の通りである。上記に示したように、終点νが{0,1}から一様にランダムに選択される。ここでkは、この実施の形態では、160に設定されるものと仮定されるが、他の値を使用することもできる。列H={ν,…,ν,…,ν}は、ハッシュ関数hの繰り返し適用により計算される。ここで、ν=h(νi+1)であり、1≦i<sである。
【0052】
σ=logsに対して1≦j≦σのペグpは、次のように初期化される。
position(位置)を2に設定する。
destination(目的地)を2に設定する。
value(値)をν に設定する。
status(ステータス)を到着(arrived)に設定する。
【0053】
残りのσ<j≦nのペグpは、それらのステータスがフリーに設定される。すべてのペグの情報は、所望の出力列を生成するデバイス上に記憶される。このデバイスは、範囲または長さsと共に、0に設定されたcurrent(現在)および0に設定されたbackup(バックアップ)の一対のカウンタも記憶する。初期化段階の終わりに、対(startpoint(始点),current)=(ν,0)が出力され得る。
【0054】
以下では、1≦j≦nのペグpは、最も低い目的地の値が先頭にされて、それらペグの目的地によりソートされた状態で保持され、目的地を割り当てられていないペグは、ソートされたリストの最後に現れるものと仮定する。その結果、(現在の位置から)到達される次のペグは、常にpとなる。ペグのステータスが任意の点において変更されると、その変更された項目は、このソートされたリストの適切な箇所に挿入される。表記LP(低優先度(low priority)の簡略表記)は、アクティブな低優先度のペグの別名として使用される。したがって、LP.positionは、これがどのペグの番号に対応するかとは関係なく、アクティブな低優先度のペグの現在位置である。同様に、BUは、バックアップの低優先度のペグをいい、BU.positionは、バックアップの低優先度のペグの現在位置である。
【0055】
以下のプロトコルは、上記に示した方法で、ハッシュチェーンを計算するために実行される。このプロトコルの各繰り返しにより、次のハッシュチェーン値が生成されて出力される。プロトコルは、placeHPおよびplaceLPの2つのルーチンを利用する。これらのルーチンは、それぞれ高優先度のペグと低優先度のペグとに値を割り当てる。これらのルーチンについては後にも記述する。
1.availbleをbに設定する。 (残りのバジェットを設定する)
2.currentを1つ増加する。 (currentは出力値の位置である)
3.currentが奇数の場合、以下の処理を実行する。 (この位置にペグは存在しない)
h(p.value)を出力する。 (計算および出力する)
availableを1つ減少させる。
currentが奇数でない場合、以下の処理を実行する。 (この位置にペグが存在する)
.valueを出力する。 (値を出力し、ペグの状態をフリーに設定する)
.statusをフリーに設定する。
currentがsに等しい場合には、停止する。 (列の最後の値)
4.すべてのフリーなペグpに対して、以下の処理を実行する。 (フリーなペグを再割り当てする)
backupが0である場合、以下の処理を実行する。 (必要とされる低優先度のbackup)
.priorityを低に設定する。
.statusをレディに設定する。
BUをpに設定する。
backupを1に設定する。
backupが0でない場合、以下の処理を実行する。
placeHP(p)を呼び出す。 (それを高優先度にする)
5.ペグをソートする。
6.jを1に設定する。 (最初のペグ)
7.availble>0である間、以下の処理を実行する。
availableを1つ減少させる。 (残りのバジェットを1つ減少させる)
.positionを1つ減少させる。 (ペグを移動する)
.valueをh(p.value)に設定する。 (その値を計算する)
.positionとp.destinationが等しい場合、以下の処理を実行する。 (ペグに到着)
.statusを到着に設定する。
.priorityが低である場合、以下の処理を実行する。 (低優先度のペグに到着)
LPをBUに設定する。 (backupは低優先度になる)
backupを0に設定する。
placeLPを呼び出す。 (新しい低優先度のペグをアクティブにする)
ペグをソートする。
jを1つ増加する。 (次のペグ)
8.ペグをソートする。
9.1に進む。 (次の要素)
【0056】
次に、ルーチンplaceLPについて記述する。まず、placeLPの呼び出し中、変数に割り当てられる値の列をどのように計算できるかについて記述する。列全体ではなく、1つだけのこのような割り当てがどのように計算されるかについては、後述する。スタック空間の使用を最小にするアプローチについても記述する。placeLPルーチンの望ましい機能は、低優先度のペグの次の始点を、関連付けられた目的地と共に計算することである。
【0057】
以下では、説明を簡略化し、さまざまなチェーンの長さに均一性を提供するために、「正規化された」位置が使用される。正規化された位置から実際の位置を得るには、正規化された位置に値λを乗算すればよい。ここで、λは、bをバジェットとすると、2bより小さくない2の最小の累乗である。したがって、b=4、λ=8に対して、(4,8,6,8,16,12,10,12,16,14,16)から開始する正規化された始点の列は、(32,64,48,64,128,96,80,96,128,112,128)の列に対応する。同様に、目的地の点およびペグの始点とペグの目的地との間の距離は、正規化された表現で記述される。
【0058】
時間の経過につれて、ペグはチェーンの適切な位置に置かれる。このような位置のそれぞれは、その終点が他のペグおよび/または現在位置に対応する区間内に存在する。上記例示の実施の形態では、所与のペグは、区間を、2つの等しい大きさの区間に分割する。その後、その結果の部分が再び分割される。チェーンの始点の最も近く、すなわち現在位置に最も近く、かつ、この現在位置とチェーンの終点との間に位置する区間を選択することにより、常に最も大きな部分が分割され、等しい大きさの区間の間の関係が崩れる。
【0059】
区間の最初の分割は、木のルートと関連付けて見ることができる。ルートの子は、最初の分割の結果生じた2つの区間の分割、および、それらのそれぞれの分割による子に対応する。リーフは、区間の最小の分割に対応する。木の各ノードによって、始点、距離、および目的地が関連付けられる。ここで、目的地は、始点と距離との差である。
【0060】
高さjの木のルートの始点は、start=2j+1である。木における高さiのノードの距離は、dist=2i−1である。したがって、ルートの距離は2j−1であり、木のリーフはすべて、正規化された距離dist=1を有する。任意のノード(および特にルート)の目的地destは、その始点と距離との差、すなわちdest=start−distである。最後に、左の子の始点は、その親の目的地の値parent.destであるのに対して、右の子については、その親の始点の値parent.startである。
【0061】
深さ優先探索(左の子は、常に右の子より先にトラバースされる)を実行することから得られるstartおよびdestの割り当てのシーケンスについて考察する。そのシーケンスは、関連付けられた初期区間、すなわち分割前の区間に対応する割り当てのシーケンスである。さらに、このような木からなる「森」をトラバースすることから得られるこのような割り当てのシーケンスを考察する。ここで、最初の木は高さ1を有し、各木は、その先行する木よりもレベルが1つだけ高くなっている。そのシーケンスは、正規化された割り当てに必要とされるシーケンスである。
【0062】
placeLPの各呼び出しにより、まず、上述した列からのすべてについて、このような正規化された値の対が計算され、次に、これらの値がλと乗算されて、その結果が返される。したがって、各呼び出しでは、次のような設定が行われる。
LP.priorityを低に設定する。
LP.statusをアクティブに設定する。
LP.positionをλ startに設定する。
LP.destinationをλ destに設定する。
【0063】
λ start>sになるとすぐに、低優先度のペグはもはや必要なくなるので、割り当ては実行されない。placeLPのあらゆる呼び出しは、呼び出し後、割り当てを行うことなくリターンする。
【0064】
ルーチンplaceLPは、その列の第i番目の要素が、アクティブにされる第i番目の低優先度のペグの、ハッシュチェーンH上の開始位置および目的地の対に対応する要素の列を生成する。その始点は、ハッシュチェーン上にすでに置かれているペグの始点に対応し、その目的地は、この同じペグと、現在のポインタの方向における最も近いペグとの中点に対応する。始点と目的地との間の距離は、移動するペグに利用可能な、1つの要素あたりのバジェットの少なくとも2倍である。これにより、低優先度のペグは、別のペグがアクティブにされる前に、その目的地に到達しないことが保証される。
【0065】
高優先度のペグの次の場所を計算するルーチンは、上記と類似しており、その主な相違は、(1)実際の値と正規化された値とが一致すること、および、(2)森の中の木が、高さlogλに到達した後、それらの木が成長を停止することである。
【0066】
このように、第i番目の木の開始位置は、i≦logλについてはstart=2i+1であり、i>logλについてはstart=λ(i−logλ)である。すでに述べたように、左の子の始点は、その親の目的地の値parent.destであるのに対して、右の子については、その親の始点の値parent.startである。木における高さiのノードの距離は、dist=2i−1である。すでに述べたように、目的地は、その始点と距離との差、すなわちdest=start−distである。
【0067】
どの割り当てが行われる前にも、start≦LP.position、すなわち、当該割り当てが、アクティブな低優先度のペグの前方の位置に対するものであることが検証される。これが、そうではない場合には、この点に対する割り当ては行われず、この比較は、ルーチンの次の呼び出しで再度実行される。そうでない場合には、このルーチンで、以下の割り当てがペグpに対して行われる。
.priorityを高に設定する。
.statusをアクティブに設定する。
.positionをstartに設定する。
.destinationをdestに設定する。
【0068】
次に、ルーチンplaceHPについて記述する。このルーチンは、その列の第i番目の要素が、アクティブにされる第i番目の高優先度のペグの対(start,dest)に対応する要素の列を生成する。その始点startは、ハッシュチェーン上にすでに置かれているペグの始点に対応し、目的地destは、この同じペグと、現在のポインタの方向における最も近いペグとの間の中点に対応する。始点は、現在のポインタとアクティブな低優先度のペグとの間の点であって、可能な限り現在のポインタに近い点として選択される。その結果、始点と目的地との間の距離は、少なくとも2となる。
【0069】
次に、上述したplaceLPルーチンおよびplaceHPルーチンの記憶の複雑度に関連したいくつかの問題を検討する。当業者に容易に理解されるように、上述した処理を容易にするには、メモリスタックを使用することができる。あるいは、作業空間を保存するために、スタックを使用せずに、必要なときに最初から状態を再計算する解決法を選ぶこともできる。ある変数は木の高さを記憶し、別の変数はルートからの(深さ優先探索を使用した)ステップ数を記憶する。さらに、変数は、start、dist、およびdest用に必要とされる。これらの値を計算するために、処理を行う者は、(それぞれの時に)それらの始点の割り当てから開始して、次に、必要とされるルートからのステップ数を導き出す木のトラバースに従ってそれらの割り当てを変更する。これは、上記のように、それぞれの割り当てに従って行われる。これらの操作のいずれも、いかなるハッシュ関数の評価も必要としないことに留意すべきである。
【0070】
placeLPの最大の木の高さは、2σ−λの正規化された始点および2σの始点に対応するので、この高さはσ−logλ−1となる。したがって、この変数は、
【数7】
Figure 2004537062
ビットを必要とする。placeHPでは、最大の高さはlogλとなり、
【数8】
Figure 2004537062
ビットの記憶装置を必要とする。最大の高さの木は、placeLPについては2σ−log2λ−1−1個のノードを有し、placeHPについては2λ−1個のノードを有する。したがって、そのルートからの距離は、σ−logλ−1で表すことができ、それぞれλビットで表すことができる。最後に、最後の3つの変数に割り当てることができる最大値は2σであるので、それら3つの変数の最大値は、それらのそれぞれ1つにつきσビットである。これらの変数は、計算における状態のみを保持するので、各ルーチンにつき一組を有する必要はない。
【0071】
したがって、placeLPおよびplaceHPの記憶の必要量は、4σ+logσ+λ−1ビット未満である。これは、ペグの記憶の必要量に比べると小さく見える。ペグは、値を記憶するのに160ビットを必要とし、残りの状態情報、例えばカウンタなどに(チェーンの長さに応じて)ある少ないビット数を必要とする。特に、σビットは、位置および目的地のそれぞれに必要とされる。この実施の形態では、全体で約
【数9】
Figure 2004537062
ビットが必要とされる。
【0072】
長さs=2σ、バジェット
【数10】
Figure 2004537062
および
【数11】
Figure 2004537062
のn個のペグの一方向チェーンについて検討する。セットアップ段階から特定の要素までのバジェットの合計は、当該要素における累積バジェットと呼ばれる。
【0073】
より具体的な数値の例として、σ=31、s=231=2.147×10である場合に、バジェットbは15になり、これは、各チェーン値を計算するのに、最大15回のハッシュ関数の適用が必要となることを示す。この例では、n=36個のペグが必要とされる。これらのペグのそれぞれは、周知のSHA−1ハッシュ関数の使用を仮定すると、ヘルパ値を記憶するための20バイトに加えて、状態情報の記憶用に追加の8バイトを使用して実施することができる。なお、SHA−1ハッシュ関数は、FIPS PUB 180-1、「Secure Hash Standard, SHA-1」、www.itl.nist.gov/fipspubs/fip180-1.htmに記述されており、これは、参照により本明細書に援用される。この結果、全体で36×(20+8)=1008バイトの記憶装置が必要とされる。この一方向チェーンが、毎秒1つのチェーン値の出力を必要とするアプリケーションで実施されると、そのチェーンは、68年より長く持ちこたえることになる。
【0074】
上記に示したように、この例示の実施の形態における一方向チェーンの計算プロトコルは、完全性の性質を示す。bのバジェット制約およびnの記憶制約を有するプロトコルがハッシュ列の第j番目の値νを出力する場合に限り、かつ、そのプロトコルが、要素j−1で成功した場合に、そのプロトコルは要素jで成功すると言うことができる。そのプロトコルは、要素1では自動的に成功すると言われる。要素1は、セットアップ段階に対応し、例示の実施の形態では、セットアップ段階において、計算および記憶の点に関して厳しい制約が加えられていない。
【0075】
プロトコルが、チェーンの範囲または長さs=2σ、バジェット
【数12】
Figure 2004537062
および
【数13】
Figure 2004537062
個のペグについて、2≦j≦sの要素jで成功することを示すことができる。
【0076】
上述したプロトコルは、本発明の現在の好ましい実施の形態である。このプロトコルの1つの可能な変形の例を以下に記述する。当業者は、他の数多くの変形も可能であることを認識するであろう。
A.開始
1.νを選択し、tempをνに設定する。
2.上述した方法でνからν…νs−1を計算する。
3.カウンタkをsに設定し、カウンタmをnに設定する。
4.jをkとし、FIX(j)をνとする。
5.kをtrunc(k/2)に設定し(すなわち、2分して端数を切り捨てる)、mをm−1に設定する。
6.k回繰り返す。tempをh(temp)に設定する。
7.k>1の場合には、4に進む。
8.currentを1に設定する。
【0077】
上記開始プロセスは、場所s,s/2,s/4,…2にペグを配置する。したがって、一般に、この開始プロセスは、好ましい実施の形態と共に記述した図2Aの初期ペグセットアップに対応する。上記に示したように、ペグは所与のデバイス用に計算されて記憶される。この計算は、補助デバイスによって実行されてもよいが、必ずしもそうする必要はない。所与のデバイスが、上述した方法で初期化されるとすぐに、一方向チェーンの計算プロセスが実施される。このプロセスは次のようになる。
B.演算
1.currentを1つ増加する。availableをbに設定する。
2.p.currentとp.positionとが等しい場合には、p.valueを出力する。次に、この値pを、placeHPルーチンまたはplaceLPルーチンのうち、必要とされるいずれか一方に従って再配置する。
3.そうでない場合には、最小のp.positionを有するpについて、tempをpに設定する(好ましい実施の形態では、ソートによりこのpは常にpである)。次に、以下のものを、temp.positionがcurrentと等しくなるまで繰り返す。
availableを1つ減少させる。
temp.positionを1つ減少させる。
temp.valueをh(temp.value)に設定する。
4.移動させる次のペグを選択する。好ましい実施の形態では、すでに2つの優先度が存在する。ここで優先度は、(1)最も近い値が次の回にあるべき場所にない場合(すなわちp.destinationとp.positionとの差がbより大きい場合)には当該最も近い値に与えられ、そうでない場合には(2)最も大きなpositionを有する値に与えられる。これは、優先度の割り当ての最適な戦略ではないが、多くのチェーンで受け入れることができることに留意すべきである。
5.選択されたペグpを次のように移動させる。
.positionを1つ減少させる。
.valueをh(p.position)に設定する。
6.p.positionとp.destinationとが等しい場合には、p.statusを到着に設定する。
7.availableを1つ減少させ、available>1である場合には、4に進む。
【0078】
上記計算プロセスは、好ましい実施の形態の計算プロセスのステップ1〜8に対応し、生成される各チェーン出力値に対して繰り返される。上記に示したように、例示のプロトコルの他の数多くの変形を使用して、本発明の技法を実施することができる。
【0079】
上述した例示の一方向チェーンの計算プロトコルは、従来の技法を上回る大きな利点を提供する。より詳細には、上記プロトコルは、従来の技法を使用している場合のO(s)ではなく、チェーンの長さの対数の2乗のオーダ、すなわちO((log s))の記憶計算積を有する。本発明の一方向チェーンの計算は、例えばデジタル署名、メッセージ認証、ユーザおよびデバイスの認証、ならびにマイクロペイメントといった数多くの暗号アプリケーションでの使用に適している。そして、その記憶および計算の効率の良さにより、これらおよび他の暗号アプリケーションを軽量デバイス上で実施することが可能となる。
【0080】
一例として、公に検証可能な署名を生成するのに、本発明でなければ一方向チェーン計算に基づく従来の技法が使用されることになるが、本発明によれば、この本発明を使用して、特に効率的な方法で生成することができる。その結果、署名は、従来のMerkleの署名およびLamportの署名よりもはるかに効率的に生成される。Merkleの署名およびLamportの署名は、一般に、従来の署名の中で最も効率的なものに含まれると考えられており、L. Lamport著の「Constructing Digital Signatures from a One Way Function」、SRI International Technical Report CSL-98 (Octorber 1979)、およびR. Merkle著の「A digital signature based on a conventional encryption function」、Proceedings of Crypto '87にそれぞれ記述されている。これらの文献の双方とも、参照により本明細書に援用される。
【0081】
より詳細には、本発明のデジタル署名のアプリケーションは、上記引用したA. Perrig等の参考文献に記述されたものと類似の技法を利用することができる。この場合、受信側の関係者は、メッセージ認証コード(MAC)が別の関係者から受信されるとすぐに、従来のタイムスタンプ技法を使用して、そのMACにタイムスタンプを付け、その後、対応する鍵が受信されるとすぐに、MACを検証する。ここで、この鍵は、ハッシュチェーンにより計算された値である。その後、第3者は、鍵およびタイムスタンプが、メッセージおよびMACと共に与えられると、MACの正確さと、鍵が公開された時刻より前にMACが受信された事実とを検証することができる。これは、バインドしたデジタル署名(binding digital signature)を構成する。
【0082】
また、本発明は、安全なログインアプリケーション、例えば、パスワードは1度しか使用されないので、そのパスワードがログインセッション中またはログインセッション後に危険にさらされるかどうかは問題にならないアプリケーションにも使用することができる。特に、パスワードとして、νから開始するハッシュチェーンの連続した値を使用することができる。
【0083】
図4のシステムを参照して、このような安全なログインプロセスは、次のようにして実施することができる。クライアント110−1が、パスワードを使用してサーバ114の組にログインしたいものと仮定する。このパスワードは、ネットワーク112上を、暗号化されるか、または暗号化されないで送信される。クライアント110−1は、攻撃者が、送信された所与のパスワードを再利用することを防止したい。したがって、そのパスワードは、本明細書で記述した方法で、ハッシュチェーン上の値として生成される。その結果、チェーン値νが最初のパスワードとして送信され、2番目のパスワードとしてνが送信され、以下同様である。別のクライアント110またはサーバ114のうちの特定の1つであり得る別の関係者は、クライアント110−1を、サーバ114により登録し、次に、クライアント110−1による最初のログインの試みが行われる前に、クライアント110−1にハッシュチェーンの終点値νを、任意の付加的な登録情報を加えて送信する。所与のログインの試みにおいて、クライアント110−1は、識別情報、登録情報、適切なチェーン値ν、νなど、および多くのログインの試みがどのように実行されたかを識別するカウンタ、または、そうでなければどのチェーン値が送信されたかを指定するカウンタをサーバ114に送信する。ログインの試みが、本来的にタイムベースである場合には、そのカウンタは、暗黙的なものとすることができる。この特定の適用のさらに詳細な内容については、L. Lamport著の「Password authentication with insecure communication」、Communications of the ACM, 24(11):770-772, November 1981を参照されたい。この文献は、参照により本明細書に援用される。
【0084】
本発明は一般に、一方向チェーンの計算を利用するあらゆるアプリケーションに役立つ。本発明が一方向チェーンの計算プロセスの記憶および計算の効率を十分に改善するのと同程度に、本発明は、一方向チェーンの計算を必要とするあらゆるアプリケーションの効率を改善する。本発明は、1つまたは2つ以上の一方向チェーン値を計算できるあらゆるタイプの処理デバイスに実施することができる。
【0085】
上記に示したように、本発明は、木の形状または他のタイプのグラフの形状の要素の配置に適用することができる。このような配置は、上記で与えた「チェーン」の一般的な定義の範囲内に含まれる。次に、本発明の技法の木構造またはグラフ構造への適用を説明する2つの例を提供する。これは、アップデート戦略をこの適用および特定の木トポロジーまたはグラフトポロジーに適するように変更する問題にすぎず、それ以外の原理は、上述したものと同じ状態で維持されることに留意されたい。
【0086】
例1:木構造。このような構造では、終点の値νは、木のルートノードに対応する。表記を簡単にするために、このノードをRと呼ぶことにする。V1およびV2をRの2つの子とし、V11およびV12をV1の2つの子とする。同様にして、木のすべてのノードに名前を付けることができる。本発明が上記のような2分木だけでなく、任意のファンアウトの頂点を有する木にも関することは、当業者に明らかであろう。sを木の高さとする。ルートに関連付けられた値はR.valであり、ランダムに選択されてもよい。Vx.valをノードVxに関連付けられた値とする。ここで、xは例えば「1112」などの特定のパスを示す。次に、Vxの第1の子の値はVx1.val=h(Vx.val,1)であり、Vxの第2の子の値はVx2.val=h(Vx.val,2)である。当業者によって理解されるように、他の割り当てが同様に選択されてもよい。これから、ノードVx1またはVx2に関連付けられた値を与えると、その親Vxに関連付けられた値を決定することは、その祖先の1つに関連付けられた値の知識がなければ実行不可能であることが分かる。ここで、木のリーフのある部分を既知であるとし、ペグを木のいくつかの頂点に配置する。例えば、1つのペグが、位置V1に配置されると仮定する。これにより、V1を祖先とするノードのすべての高速化した計算が可能となる。木の他方の半分にあるノードの値を計算するには、Rに上って行かなければならない。その代わりに、ペグを「オールワン」パス上において、ルートからリーフへの中間に配置してもよい。これにより、木のより小さな部分ではあるが、より速い速度で、その部分の高速化した計算が可能となる。第2のペグは、木の別の部分に配置することができる。例えば、第2のペグは「オールワン」パス上において、第1のペグとリーフとの間の半分の距離に配置することができる。これにより、この第2のペグより下のノードの計算がさらに高速化され、第1のペグより下であるが、第2のペグより下ではないパス上の他のノードを多少高速に計算することが可能になる。さらに別のノードをさらに計算することができるが、ルートからパスを完全にたどる必要がある。次に、ノードが計算されるとすぐに、次のアクセスの確率分布に従ってペグを再配置することができる。したがって、木のある部分のアクセスが、木の第2の部分のアクセスの可能性をより高くする場合には、1つまたは2つ以上のペグをこの部分に再配置することができる。これは、上述した例示の実施の形態について言えば、指定された優先順位付けに従って任意の利用可能なバジェットを使い、祖先の値からなる連続した一方向イメージとして新しい値を計算することにより行われる。
【0087】
例2:2つの結合したチェーン。2つの結合したチェーンが存在する状況について考察する。各チェーンは、それ自身の終点を有し、チェーン値のうちのあるわずかな一部は、それらの対応するチェーン値の関数であるだけでなく、他方のチェーン値の関数でもある。異なるチェーンは異なる一方向関数を使用してもよく、入力の異なる部分で動作してもよいことに留意されたい。したがって、この状況は、非循環有向グラフ(DAG(directed acyclic graph))の特定の形状を記述し、他のこのような例を構成できることが当業者によって理解されるであろう。単純な場合には、一方のチェーンの終点から距離iにあるそのチェーンのすべての要素を、その祖先(そのチェーンの要素i−1)と、他方のチェーンの終点からその距離にある他方の要素(他方のチェーンの要素i−1)との双方の関数とすることができる。これらのチェーンのそれぞれの長さをsとし、ペグが、チェーンのうちの一方の始点から距離s/2、s/4、s/8などに置かれ、他方のチェーンにはペグが置かれていないと仮定する。これらのチェーンは連結されているので、一方のチェーンのすべての値の効率的な計算を可能にすることにより、他方のチェーンのすべての値も計算することができる。当業者によって理解されるように、任意の個数のチェーンをこのようにして連結することができ、本発明の技法を利用して、出力値の効率的な計算を可能にすることができる。
【0088】
本明細書で記述された例示的な一方向チェーンの計算技法は、本発明の動作を説明することを意図したものであり、したがって、本発明を任意の特定の実施の形態または複数の実施の形態の群に限定するものと解釈されるべきではないことは、再度強調されるべきである。例えば、特定のタイプの一方向チェーンを使用して説明したが、上記に示したように、本発明は他のタイプの一方向関数に適用でき、木や他のタイプのグラフなどの他の形状の要素の配置に適用できる。さらに、使用された特定の個数のヘルパ値、それらの初期分布、ならびに、対応するペグを計算および所与のチェーン値の出力に基づいて再配置する方法は、代替的な実施の形態では変更することができる。添付の特許請求の範囲の範囲内のこれらおよび他の数多くの代替的な実施の形態は、当業者に明らかであろう。
【図面の簡単な説明】
【0089】
【図1】連続的な出力値が本発明の技法を利用した効率的な方法で計算され得る一例の一方向チェーンを示す図である。
【図2A】本発明の例示の実施の形態の記憶されるヘルパ値の初期セットアップの例を示す図である。
【図2B】本発明による一例の一方向チェーンの計算プロセスの流れ図である。
【図3】本発明が全体的にまたは部分的に実施され得る例示の処理デバイスの簡略したブロック図である。
【図4】本発明の一例のネットワークベースの実施の形態を示す図である。

Claims (22)

  1. 少なくとも1つの始点および少なくとも1つの終点を有する一方向チェーンの1つまたは2つ以上の出力値を生成する方法であって、
    前記チェーンの現在位置と前記終点との間における前記一方向チェーンの別の位置についての事前に記憶された第1のヘルパ値を利用して、前記一方向チェーンの前記現在位置における前記出力値の所与の1つを計算するステップと、
    前記チェーンの前記現在位置と前記終点との間における前記チェーンの新しい位置についての少なくとも第2のヘルパ値であって、前記出力値の別の1つのその後の計算を容易にするのに利用可能である、第2のヘルパ値を計算するステップと、
    を含む一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  2. 前記一方向チェーンは、単一の始点および単一の終点を有する、複数の値からなる直線状のチェーンを含む、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  3. 前記一方向チェーンは、複数の始点および複数の終点の少なくとも1つを有する木構造またはグラフ構造を含む、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  4. 前記一方向チェーンは、位置i=1,2,…sを有する長さsのチェーンを含み、各位置は、それに関連付けられた対応する値νを有し、該値νは、所与の一方向関数hに対して、
    ν=h(νi+1
    により与えられる、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  5. 前記関数hは、ハッシュ関数を含む、請求項4に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  6. 前記一方向チェーンの前記出力値の生成に関連する記憶計算積は、sを前記チェーンの長さを示すものとした場合に、複雑度O((log s))を有する、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  7. 指定された空間からランダムに終点の値を選択して、該選択した終点の値に対する一方向関数の繰り返し適用によって前記始点を計算することにより、前記一方向チェーンの前記終点および前記始点を求めるステップをさらに含む、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  8. 前記一方向チェーンのヘルパ値の初期分布(distribution)を記憶するステップをさらに含み、前記ヘルパ値は、sを前記チェーンの長さとした場合に、
    0≦j≦logsに対して、i=2
    によって与えられる位置に存在する、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  9. 特定のヘルパ値を、そのヘルパ値に対応する前記チェーンの位置の前記出力値として出力するステップをさらに含む、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  10. 少なくとも1つの指定された条件が満たされる場合に、前のヘルパ値の記憶位置を新しいヘルパ値によって上書きするステップをさらに含む、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  11. 前記指定された条件は、前記チェーンの前記前のヘルパ値の位置が到達されるとき、または、該前のヘルパ値に対応するペグが新しい位置に再配置されるときに満たされる、請求項10に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  12. 前記一方向チェーン内のヘルパ値の初期分布における前記ヘルパ値のそれぞれはペグに対応し、該ペグは、それに関連付けられた前記ヘルパ値に加えて他の情報を有し、前記出力値の所与の1つの計算において、前記ペグの1つまたは2つ以上のものは、前記一方向チェーンにおける新しい位置に再配置され、該再配置されたペグのいずれに対しても、新しいヘルパ値が計算される、請求項1に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  13. 前記ペグの再配置プロセスは、前記チェーンの各位置iに対して、対応する出力値νを計算できるように、かつ、1つまたは2つ以上のペグを、指定された計算バジェット内で再配置できるように構成される、請求項12に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  14. 所与のペグに関連付けられた前記追加情報は、前記チェーンにおける目的地の位置、優先度、および状態を含む、請求項12に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  15. 前記優先度は、少なくとも高優先度および低優先度を含む複数の優先レベルの1つとすることができる、請求項14に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  16. ペグは、前記チェーンにおける前記現在位置からの距離に基づいて、前記優先レベルの所与の1つの中でさらに優先順位付けされる、請求項15に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  17. 前記状態は、フリー状態、レディ状態、アクティブ状態、および到着状態の1つとすることができる、請求項14に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  18. 前記一方向チェーンに利用されるペグの個数は、以下の数式、すなわち、
    Figure 2004537062
    によって近似的に与えられ、上記数式において、s=2σは、前記チェーンの長さである、請求項12に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  19. 前記指定された計算バジェットは、以下の数式、すなわち、
    Figure 2004537062
    によって近似的に与えられ、上記数式において、s=2σは、前記チェーンの長さである、請求項13に記載の一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
  20. 少なくとも1つの始点および少なくとも1つの終点を有する一方向チェーンの1つまたは2つ以上の出力値を生成する装置であって、
    メモリと、
    該メモリに結合されたプロセッサと、
    を備え、
    該プロセッサは、前記チェーンの現在位置と前記終点との間における前記一方向チェーンの別の位置についての前記メモリに事前に記憶された第1のヘルパ値を利用して、前記一方向チェーンの前記現在位置における前記出力値の所与の1つを計算するように動作可能であり、かつ、前記チェーンの前記現在位置と前記終点との間における前記チェーンの新しい位置についての少なくとも第2のヘルパ値であって、前記出力値の別の1つのその後の計算を容易にするのに利用可能である、第2のヘルパ値を計算するように動作可能である、
    一方向チェーンの1つまたは2つ以上の出力値を生成する装置。
  21. 少なくとも1つの始点および少なくとも1つの終点を有する一方向チェーンの1つまたは2つ以上の出力値を生成する1つまたは2つ以上のプログラムを記憶するマシン読み取り可能媒体であって、前記1つまたは2つ以上のプログラムは、実行されると、
    前記チェーンの現在位置と前記終点との間における前記一方向チェーンの別の位置についての事前に記憶された第1のヘルパ値を利用して、前記一方向チェーンの前記現在位置における前記出力値の所与の1つを計算するステップと、
    前記チェーンの前記現在位置と前記終点との間における前記チェーンの新しい位置についての少なくとも第2のヘルパ値であって、前記出力値の別の1つのその後の計算を容易にするのに利用可能である、第2のヘルパ値を計算するステップと、
    を実行する、マシン読み取り可能媒体。
  22. 一方向チェーンの1つまたは2つ以上の出力値を生成する方法であって、
    前記チェーンの指定された位置についての記憶された1つまたは2つ以上のヘルパ値を利用して、前記一方向チェーンの出力値を計算するステップと、
    前記出力値の所与の1つの計算後に、前記ヘルパ値の1つまたは2つ以上を再配置するステップであって、それによって、前記出力値の別の1つのその後の計算を容易にする、再配置するステップと、
    を含む、一方向チェーンの1つまたは2つ以上の出力値を生成する方法。
JP2002582551A 2001-04-16 2002-04-15 暗号アプリケーションにおける一方向チェーンの効率的計算方法および装置 Expired - Lifetime JP4112373B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28400101P 2001-04-16 2001-04-16
US09/969,833 US7404080B2 (en) 2001-04-16 2001-10-03 Methods and apparatus for efficient computation of one-way chains in cryptographic applications
PCT/US2002/011658 WO2002084944A1 (en) 2001-04-16 2002-04-15 Methods and apparatus for efficient computation of one-way chains in cryptographic applications

Publications (3)

Publication Number Publication Date
JP2004537062A true JP2004537062A (ja) 2004-12-09
JP2004537062A5 JP2004537062A5 (ja) 2005-12-22
JP4112373B2 JP4112373B2 (ja) 2008-07-02

Family

ID=26962351

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002582551A Expired - Lifetime JP4112373B2 (ja) 2001-04-16 2002-04-15 暗号アプリケーションにおける一方向チェーンの効率的計算方法および装置

Country Status (5)

Country Link
US (8) US7404080B2 (ja)
EP (1) EP1389376B9 (ja)
JP (1) JP4112373B2 (ja)
CA (1) CA2444405C (ja)
WO (1) WO2002084944A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826687B1 (en) * 1999-05-07 2004-11-30 International Business Machines Corporation Commitments in signatures
US6701434B1 (en) * 1999-05-07 2004-03-02 International Business Machines Corporation Efficient hybrid public key signature scheme
US7404080B2 (en) 2001-04-16 2008-07-22 Bjorn Markus Jakobsson Methods and apparatus for efficient computation of one-way chains in cryptographic applications
CN1535440A (zh) * 2001-04-27 2004-10-06 麻省理工学院 用于微支付交易的方法和系统
US7340611B2 (en) * 2003-01-28 2008-03-04 Microsoft Corporation Template-driven XML digital signature
US7730518B2 (en) * 2003-07-31 2010-06-01 Emc Corporation Method and apparatus for graph-based partition of cryptographic functionality
GB2423220B (en) * 2005-02-11 2009-10-07 Ericsson Telefon Ab L M Method and apparatus for ensuring privacy in communications between parties
US8887309B2 (en) * 2005-08-23 2014-11-11 Intrinsic Id B.V. Method and apparatus for information carrier authentication
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US9137012B2 (en) * 2006-02-03 2015-09-15 Emc Corporation Wireless authentication methods and apparatus
US8613698B2 (en) * 2006-07-10 2013-12-24 Mcneil-Ppc, Inc. Resilient device
US8166487B2 (en) 2007-10-01 2012-04-24 Research In Motion Limited Application associating based on cryptographic identification
US8607057B2 (en) * 2009-05-15 2013-12-10 Microsoft Corporation Secure outsourced aggregation with one-way chains
WO2011066152A1 (en) 2009-11-25 2011-06-03 Aclara RF Systems Inc. Cryptographically secure authentication device, system and method
KR101697238B1 (ko) * 2010-08-26 2017-01-17 삼성전자주식회사 영상 처리 장치 및 방법
WO2013054701A1 (ja) * 2011-10-14 2013-04-18 株式会社日立製作所 データの真正性保証方法、管理計算機及び記憶媒体
US8972715B2 (en) * 2012-07-13 2015-03-03 Securerf Corporation Cryptographic hash function
US9172698B1 (en) * 2012-10-12 2015-10-27 Ut-Battelle, Llc System and method for key generation in security tokens
US20170063530A1 (en) * 2013-08-13 2017-03-02 Michael Stephen Fiske NADO Cryptography with Key Generators
CN104901931B (zh) 2014-03-05 2018-10-12 财团法人工业技术研究院 证书管理方法与装置
CZ28571U1 (cs) * 2015-05-04 2015-08-31 Jan Bednář Systém pro certifikaci elektronické pošty
WO2017009915A1 (ja) * 2015-07-10 2017-01-19 富士通株式会社 機器認証システム、管理装置及び機器認証方法
US11354666B1 (en) 2016-05-26 2022-06-07 Wells Fargo Bank, N.A. Smart dust usage
WO2018006072A1 (en) 2016-06-30 2018-01-04 Clause, Inc. Systems and method for forming, storing, managing,and executing contracts
JP6828181B2 (ja) * 2017-10-11 2021-02-10 日本電信電話株式会社 k−匿名化装置、方法及びプログラム
US11568505B2 (en) * 2017-10-18 2023-01-31 Docusign, Inc. System and method for a computing environment for verifiable execution of data-driven contracts
US11699201B2 (en) 2017-11-01 2023-07-11 Docusign, Inc. System and method for blockchain-based network transitioned by a legal contract
WO2020051540A1 (en) 2018-09-06 2020-03-12 Clause, Inc. System and method for a hybrid contract execution environment
WO2020167448A1 (en) * 2019-02-14 2020-08-20 Carnegie Mellon University Method and apparatus for establishing a software root of trust on an untrusted computer system
US11314935B2 (en) 2019-07-25 2022-04-26 Docusign, Inc. System and method for electronic document interaction with external resources

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309569A (en) 1979-09-05 1982-01-05 The Board Of Trustees Of The Leland Stanford Junior University Method of providing digital signatures
DE3533587A1 (de) 1985-09-20 1987-04-16 Schubert & Salzer Maschinen Verfahren und vorrichtung zum wiederanspinnen einer offenend-friktionsspinnvorrichtung
US4881264A (en) 1987-07-30 1989-11-14 Merkle Ralph C Digital signature system and method based on a conventional encryption function
US5016274A (en) 1988-11-08 1991-05-14 Silvio Micali On-line/off-line digital signing
US5432852A (en) 1993-09-29 1995-07-11 Leighton; Frank T. Large provably fast and secure digital signature schemes based on secure hash functions
US5434919A (en) * 1994-01-11 1995-07-18 Chaum; David Compact endorsement signature systems
US5537475A (en) 1994-02-01 1996-07-16 Micali; Silvio Efficient digital signature algorithm and use thereof technical field
DE4411450C1 (de) * 1994-04-01 1995-03-30 Daimler Benz Ag Fahrzeugsicherungseinrichtung mit elektronischer Nutzungsberechtigungscodierung
US7600129B2 (en) 1995-10-02 2009-10-06 Corestreet, Ltd. Controlling access using additional data
US8171524B2 (en) 1995-10-02 2012-05-01 Corestreet, Ltd. Physical access control
US5717757A (en) 1996-08-29 1998-02-10 Micali; Silvio Certificate issue lists
US8732457B2 (en) 1995-10-02 2014-05-20 Assa Abloy Ab Scalable certificate validation and simplified PKI management
US7827401B2 (en) 1995-10-02 2010-11-02 Corestreet Ltd. Efficient certificate revocation
US6097811A (en) * 1995-11-02 2000-08-01 Micali; Silvio Tree-based certificate revocation system
US5717758A (en) 1995-11-02 1998-02-10 Micall; Silvio Witness-based certificate revocation system
US6487658B1 (en) 1995-10-02 2002-11-26 Corestreet Security, Ltd. Efficient certificate revocation
US7353396B2 (en) 1995-10-02 2008-04-01 Corestreet, Ltd. Physical access control
US7337315B2 (en) 1995-10-02 2008-02-26 Corestreet, Ltd. Efficient certificate revocation
US5666416A (en) 1995-10-24 1997-09-09 Micali; Silvio Certificate revocation system
US6766450B2 (en) 1995-10-24 2004-07-20 Corestreet, Ltd. Certificate revocation system
US5793868A (en) 1996-08-29 1998-08-11 Micali; Silvio Certificate revocation system
US7716486B2 (en) 1995-10-02 2010-05-11 Corestreet, Ltd. Controlling group access to doors
US5604804A (en) 1996-04-23 1997-02-18 Micali; Silvio Method for certifying public keys in a digital signature scheme
US8015597B2 (en) 1995-10-02 2011-09-06 Corestreet, Ltd. Disseminating additional data used for controlling access
US6292893B1 (en) 1995-10-24 2001-09-18 Silvio Micali Certificate revocation system
US8261319B2 (en) 1995-10-24 2012-09-04 Corestreet, Ltd. Logging access attempts to an area
US6301659B1 (en) 1995-11-02 2001-10-09 Silvio Micali Tree-based certificate revocation system
US9230375B2 (en) 2002-04-08 2016-01-05 Assa Abloy Ab Physical access control
US6026379A (en) 1996-06-17 2000-02-15 Verifone, Inc. System, method and article of manufacture for managing transactions in a high availability system
US5751812A (en) * 1996-08-27 1998-05-12 Bell Communications Research, Inc. Re-initialization of an iterated hash function secure password system over an insecure network connection
US6341273B1 (en) * 1997-03-26 2002-01-22 British Telecommunications Public Limited Company Electronic coin stick with potential for future added value
JP3810575B2 (ja) 1999-03-04 2006-08-16 三菱電機株式会社 相関ルール抽出装置、および記録媒体
AU6097000A (en) 1999-07-15 2001-02-05 Frank W Sudia Certificate revocation notification systems
EP1075108A1 (en) 1999-07-23 2001-02-07 BRITISH TELECOMMUNICATIONS public limited company Cryptographic data distribution
AU6620000A (en) 1999-08-06 2001-03-05 Frank W Sudia Blocked tree authorization and status systems
US7404080B2 (en) 2001-04-16 2008-07-22 Bjorn Markus Jakobsson Methods and apparatus for efficient computation of one-way chains in cryptographic applications
EP1627488A4 (en) 2003-05-13 2008-06-04 Corestreet Ltd EFFICIENT AND SECURE DATA ACTUALITY SYSTEMS
WO2005001653A2 (en) 2003-06-24 2005-01-06 Corestreet, Ltd. Access control
WO2005010685A2 (en) 2003-07-18 2005-02-03 Corestreet, Ltd. Controlling access to an area
KR20060097131A (ko) 2003-11-19 2006-09-13 코아스트리트 리미티드 분산 위임 인증 경로 획득 및 검증
US20050154878A1 (en) 2004-01-09 2005-07-14 David Engberg Signature-efficient real time credentials for OCSP and distributed OCSP
CA2872032A1 (en) 2004-01-09 2005-08-04 Corestreet, Ltd. Signature-efficient real time credentials for ocsp and distributed ocsp
US7205882B2 (en) 2004-11-10 2007-04-17 Corestreet, Ltd. Actuating a security system using a wireless device
GB2423220B (en) 2005-02-11 2009-10-07 Ericsson Telefon Ab L M Method and apparatus for ensuring privacy in communications between parties
US7706778B2 (en) 2005-04-05 2010-04-27 Assa Abloy Ab System and method for remotely assigning and revoking access credentials using a near field communication equipped mobile phone
US7725709B2 (en) 2005-09-09 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Methods for secure and bandwidth efficient cryptographic synchronization
US9137012B2 (en) 2006-02-03 2015-09-15 Emc Corporation Wireless authentication methods and apparatus
US8099603B2 (en) 2006-05-22 2012-01-17 Corestreet, Ltd. Secure ID checking
US8074271B2 (en) 2006-08-09 2011-12-06 Assa Abloy Ab Method and apparatus for making a decision on a card
US7266693B1 (en) 2007-02-13 2007-09-04 U.S. Bancorp Licensing, Inc. Validated mutual authentication
US9769164B2 (en) 2009-10-29 2017-09-19 Assa Abloy Ab Universal validation module for access control systems
WO2011066152A1 (en) 2009-11-25 2011-06-03 Aclara RF Systems Inc. Cryptographically secure authentication device, system and method
US9023015B2 (en) 2013-02-01 2015-05-05 Covidien Lp Laparoscopic instruments, attachable end effectors and methods relating to same
US9614682B2 (en) 2014-04-11 2017-04-04 Guardtime IP Holdings, Ltd. System and method for sequential data signatures
US10447479B2 (en) 2015-02-20 2019-10-15 Telefonaktiebolaget Lm Ericsson (Publ) Method of providing a hash value for a piece of data, electronic device and computer program

Also Published As

Publication number Publication date
US20190005250A1 (en) 2019-01-03
US8086866B2 (en) 2011-12-27
US8516262B2 (en) 2013-08-20
US7404080B2 (en) 2008-07-22
US9514314B2 (en) 2016-12-06
WO2002084944A1 (en) 2002-10-24
CA2444405C (en) 2012-12-11
US10083308B2 (en) 2018-09-25
EP1389376B1 (en) 2016-11-16
EP1389376B9 (en) 2017-03-15
US20030009666A1 (en) 2003-01-09
US20090172418A1 (en) 2009-07-02
US8990576B2 (en) 2015-03-24
CA2444405A1 (en) 2002-10-24
JP4112373B2 (ja) 2008-07-02
EP1389376A1 (en) 2004-02-18
US9747458B2 (en) 2017-08-29
US20170337385A1 (en) 2017-11-23
US20170046522A1 (en) 2017-02-16
US20120303969A1 (en) 2012-11-29
US20130311787A1 (en) 2013-11-21
EP1389376A4 (en) 2006-11-15
US20150154408A1 (en) 2015-06-04

Similar Documents

Publication Publication Date Title
JP4112373B2 (ja) 暗号アプリケーションにおける一方向チェーンの効率的計算方法および装置
Alwen et al. High parallel complexity graphs and memory-hard functions
Schröder et al. Verifiable data streaming
Shu et al. Blockchain-based decentralized public auditing for cloud storage
WO2018211446A1 (en) Cryptographic key-generation with application to data deduplication
CN109525403B (zh) 一种支持用户全动态并行操作的抗泄露公开云审计方法
CN110263584B (zh) 一种基于区块链的数据完整性审计方法和系统
WO2010137508A1 (ja) 署名装置、署名検証装置、匿名認証システム、署名方法、署名認証方法およびそれらのプログラム
Schöder et al. VeriStream–a framework for verifiable data streaming
Huang et al. Elastic resource allocation against imbalanced transaction assignments in sharding-based permissioned blockchains
US20110206201A1 (en) Method of generating a cryptographic key, network and computer program therefor
Xu et al. EPBC: Efficient public blockchain client for lightweight users
CN112613601B (zh) 神经网络模型更新方法、设备及计算机存储介质
Akinyele et al. Machine-generated algorithms, proofs and software for the batch verification of digital signature schemes
Akleylek et al. Novel Postquantum MQ-based signature scheme for Internet of things with parallel implementation
CN115906149A (zh) 基于有向无环图的kp-abe及区块链的用户数据可信共享方法
CN114691044A (zh) 一种区块链网络中基于深度强化学习的云存储公开审计方法
CN114362962A (zh) 区块链工作量证明生成方法
CN112637203A (zh) 一种大数据流验证方法及系统
Vijayakumaran An introduction to bitcoin
Wang et al. Blockchain-Based Unbalanced PSI with Public Verification and Financial Security
Blockchains Elastic Resource Allocation Against Imbalanced Transaction Assignments in Sharding-Based
Jin et al. Research on MapReduce-based cloud storage batch auditing
Blundo et al. A distributed implementation of the certified information access service
Yu et al. Provable Data Possession Scheme based on Homomorphic Hash Function in Cloud Storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071017

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080409

R150 Certificate of patent or registration of utility model

Ref document number: 4112373

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110418

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120418

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120418

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130418

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140418

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250