JP2016509443A - より低いエントロピーを有する入力レコードについて追加的セキュリティをもたらす検証システム及び方法 - Google Patents

より低いエントロピーを有する入力レコードについて追加的セキュリティをもたらす検証システム及び方法 Download PDF

Info

Publication number
JP2016509443A
JP2016509443A JP2015558371A JP2015558371A JP2016509443A JP 2016509443 A JP2016509443 A JP 2016509443A JP 2015558371 A JP2015558371 A JP 2015558371A JP 2015558371 A JP2015558371 A JP 2015558371A JP 2016509443 A JP2016509443 A JP 2016509443A
Authority
JP
Japan
Prior art keywords
value
hash
digital
record
input
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.)
Pending
Application number
JP2015558371A
Other languages
English (en)
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
Application filed by ガードタイム アイピー ホールディングス リミテッド, ガードタイム アイピー ホールディングス リミテッド filed Critical ガードタイム アイピー ホールディングス リミテッド
Publication of JP2016509443A publication Critical patent/JP2016509443A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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/3247Cryptographic 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 involving digital signatures
    • H04L9/3257Cryptographic 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 involving digital signatures using blind signatures
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/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
    • H04L9/3242Cryptographic 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 involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/3263Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3265Cryptographic 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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2145Inheriting rights or properties, e.g., propagation of permissions or restrictions within a hierarchy

Landscapes

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

Abstract

デジタルレコードのための認証システムは、デジタル署名が付されることのできる最上位ルートハッシュ値(xroot)を計算するハッシュツリー構造(2000、3000、4000、5000、6000)を有する。乱数又は疑似乱数(rnd)がデジタルレコードのハッシュ値と共にハッシュされ、これがブラインディングマスク(mi)として作用して、比較的低エントロピーなデジタルレコードにおいても認証システムをセキュアなものにする。再計算パスにおける兄弟ハッシュ値及び疑似乱数が与えられている局面において、ハッシュツリーを通しての再計算によって同一のルートハッシュ値が計算された場合、候補デジタルレコードは検証されたものとみなされる。【選択図】図1

Description

関連出願の相互参照
本願は、2013年2月22日に出願された米国仮特許出願第61/768,386号の優先権を主張する。
本願発明は、他のレコードの内容について何らの情報を漏出させずに、デジタルレコードセット中の任意のものが変更されていないかを検証するシステム及び方法に関する。
デジタル世界はイベントによって規定されており、これらの多くはログされているかログされることができる。例えば、コンピュータシステムの文脈においては、syslogを「コンピュータデータロギングについての標準仕様として用いることができる。この仕組みは、メッセージを生成するソフトウェアを、これらを格納するシステム及びこれらをリポート及び分析するソフトウェアから分離する。Syslogは、コンピュータシステム管理及びセキュリティ監査に用いることができ、並びに、一般的な情報的分析及びメッセージデバッギングにも用いることができる。これは広範な装置(プリンタ及びルータ等)及び様々なプラットフォーム上のレシーバによってサポートされている。このため、多くの異なるタイプのシステムからのログデータを中央レポジトリに統合するためにsyslogを用いることができる」(http://en.wikipedia.org/wiki/Syslog)。
Rainer Gerhards氏によって開発されたRsyslogは、syslogを拡張したものであり「IPネットワーク内にてログメッセージを転送するためにUNIX(登録商標)又はUNIXライクなコンピュータシステム上で用いられるオープンソースソフトウェアユーティリティとしたものである。これは基本的なsyslogプロトコルを実装して、内容フィルタリングとリッチフィルタリング機能性と柔軟な構成オプションとでそれを拡張し、TCPを伝送に用いる等の重要な特徴を追加する」(http://en.wikipedia.org/wiki/Rsyslog)。
このようなログは「実在的」なコンピュータシステムについてだけでなく仮想化されたコンピュータ(「仮想マシン」、VMともいう。)についても維持されることができ、VM自体のシステムや状態に関しての変化をイベントとしてログすることができる。もちろん、イベントはコンピュータに限定されるものではない。別の例としては、電話会社は、音声・テキスト・ネットワーク通信に関しての交信を含む加入者の電話のあらゆる使用をログし、多くの場合タイムトラッキングも含まれ、用途は請求目的に限られない。つまり、デジタル形式にて記録・格納できる任意の活動は、ログすることができる(ロガブルな)イベントとしてみなされることができる。
様々な類いのレコードにデジタル署名を付す方法に関しては、多種の周知な方法がある。ロガブルなイベントは、単体的又は集合的に、このようなレコードとして処理され及び適当なものとして署名されることができ、後に提示されるに際してこれらのイベントのログ又は個別的に署名された何らかのサブセットが、署名されたものに完全に一致することについての一定程度の確実性を提供することができる。もっとも、1つのあり得る問題としては、イベントログ又は他のデータセットに含まれるデータが許容できない程に低いエントロピーを示す場合、即ち想定され得る入力データの幅が限定的すぎるか過度に「秩序化」されている場合が考えられ、例えばデータの取り得るバリエーションが比較的少数であったり、あるエントリを与えられた場合について特定のエントリが出現する確率が比較的高いものとなったりする場合がある。したがって、全てのあり得る一般的なドキュメント又はデジタルレコードの母集団は、網羅的な(全ての可能性を試みる態様の)分析の成功を阻む程に膨大であるものの、イベントが対象となる場合には、これが真とはいえない又は多くのユーザが望む信頼度にてこれが証明できないことがある。分布可能範囲が十分に小さいがために、網羅的な「ブルートフォース」攻撃が、任意のデータ署名スキームの何もなければ本来備わっていたであろうはずのセキュリティの突破に成功してしまうというこのような性質を、システムイベントログが多くの場合有し得る。もちろん、一般的な高エントロピー環境下でも、追加的で証明可能なセキュリティについての確証性は、いつでも望ましいことである。
様々な情報システムからのログが、従来以上に証拠として用いられるようになってきている。この傾向下においては、ログデータの維持及び提示に関しての要件も増加している。完全性(integrity)及び信憑性(authenticity)、即ちログ内の情報が改ざんされていない又は別のものと丸ごと差し替えられていないことについての確証は明確な要件であり、特にログデータが、紛争解決に用いられる場合、法的手続や税務調査等の証拠として提出される場合、マイグレーションを境に仮想マシンが変更されていないことについて確証を与えるために用いられる場合、金融取引についての証拠を提供するために用いられる場合、電話使用量を検証する場合等においてはそうであるといえる。情報システムは自己の全てのアクティビティを逐次的にログするがために、多くの場合、紛争に関するトランザクションの詳細事項内にはログ内の他の情報が散在していることになる。無関係なイベントの機密性を保持するためには、署名されたログから一部のレコードのみを抽出してなおその完全性を証明できるようにすることが望ましい。上述のことから、ログ署名スキームに関しての次の設計目標の全部又は少なくとも一部について対応する必要がある:
・ ログ全体の完全性を検証できるようにして検出不能な態様でのレコードの追加、削除、変更ができなくなるようにすること。
・ ログ内の他の任意のレコードの内容について何らの情報を漏出させずに、任意のレコードの完全性を証明可能とすること。
・ 署名プロセスは、時間及び領域の両面で効率的にすること。(理想的には、処理オーバーヘッドがレコード毎についての小さい定数的なものとなり、格納オーバーヘッドがログ毎についての小さい定数的なものとなる。)
・ 抽出プロセスは、時間及び領域の両面で効率的にすること。(理想的には、ログの大きさとの関係で亜線形時間にて、任意のレコードについて小さい定数的なサイズの完全性証明を抽出できるようにする。)
・ 検証プロセスは時間の面で効率的にすること。(理想的には、検証されるのがログ全体であるか又は単一のレコードであるかを問わずに、被検証データのサイズについて線形時間で実行される。)
米国特許第7,698,557号明細書 米国特許第8,347,372号明細書 米国特許第8,312,528号明細書
本願発明は、システムに入力されてシステムによって署名された後に、デジタル入力レコードのセットが変更されていないことを検証するためのシステム及び方法に関する。網羅的な攻撃の成功率が許容可能な水準を超える程に可能入力の母集団が小さい場合、即ち入力レコードのエントロピーが許容不可能な程に低い場合において、本願発明は追加的なセキュリティ機構を提供することによって特に役立つ。入力レコードが次のようなものの場合において先述の状況が多々として妥当する:コンピュータシステム(物理的及び仮想的なものの両方を含む)、電話や他の通信装置、コンピュータ制御マシンやプロセス等についてのシステムログや他のイベントログ等の類いのイベントログである場合。もっとも、本願発明は、強化されたセキュリティが望まれる任意の状況において用いることができ、ある者が検証可能としたい高エントロピーデータも対象に含まれる。
本願発明の様々な特徴を説明するために下記において用いられる主たる例はsyslog、rsyslog、Windows(登録商標)イベントログ等についてのものである。既述のように、これらは特に関連のある状況ではあるものの、それでもなお例示にすぎない。
検証ツリー構造内へのブラインディングマスクの算入を示す図である。 カノニカル2分木を示す図である。 カウンターモードでの本願発明の実施形態を示す図である。 一般化されたデジタルレコード検証・署名インフラストラクチャの様々なレイヤーを示す図である。 検証インフラストラクチャを、異なるレイヤー内で保持及び演算される様々なデータ及び演算構造とともに示す図である。 デジタル署名及び署名を用いて行う認証値の再計算を示す図5についてのサブセットを示す図である。 永続的なトラストフリー認証フィーチャを作成する公開を示す図である。 再計算によって行われるシステム独立な認証を可能とするためのデジタル署名の拡張を示す図である。
データモデル
本願発明の実施形態は、上述の目的ほぼ全てを達成するデジタルデータ署名スキームを提供し、一部の選択された実装例では効率性目的に関して幾ばくかのトレードオフは生じるものの一般的にはこれがセキュリティ目的を害するには至らない。イベントログをセキュアかつデジタル的に署名することとの関係で、純粋に例示的な観点から本願発明の特徴が以下説明され、本願明細書の別の箇所でも述べているように署名すべき他のタイプの入力レコードについても本願発明を用いてセキュリティを増強することができる。
ログを生成するコンピュテーショナルプロセスは原理的には無期限的に実行され続けることができるため、抽象的客体としてのログは明確に定義された始点と終点を有することを要さない(がもちろんこれを有することもできる)。下記においては、例示として、ログはブロックの順序立てられたシーケンスとしてモデル化される。つまり各ブロックは有限個数のレコードの順序立てられたシーケンスである。例えば図1では、ログ100は、イベントのシーケンス… e(k-l), e(k), e(k+l), ..., e(k+5) ...を含むものとして示されている。極めて簡略化された例としては、e(k+l) - e(k+4)はブロックB1にグループ化されているものとして示されている。殆どの実際的状況においては、各ブロックは4件を遙かに超えるエントリを含むことができ、千件単位や百万件単位のオーダーとされることができるが、一般性を失わずに図示を容易化するためにB1は4件のみのエントリを有するものとして図中で示されている。システム設計者は、本願発明の特定の実装例について適切なブロックサイズを如何にして選択するかを知っている。
多くの実用的なロギングシステムはこのように機能し、例えばsyslogの場合には出力が定期的にローテーションされるログファイルに送られる。最も素直な戦略は、各ログブロックを単位として署名を付するというものであり、ブロック全体の処理に関する要求の全てを充足するが、ブロック内の残余の事項全てを露見させずに個別のレコードの完全性を証明することを不可能とする。もう一つの戦略として、各レコードに個別的に署名を付するというものが考えられるが、署名を付するというオペレーションがかなり大きな消費を伴うオペレーションであり署名のサイズが典型的なログレコードのサイズをたやすく超えてしまうため、必然的に処理及びストレージの両面で高いオーバーヘッドを伴い、さらに重要なことには、レコード及びそれについての署名に対しての削除はこのスキームでは通常検知されないため、ログ全体の完全性を包括的に保証することもできない。
上記の不十分な戦略両方に対しての改良としては、ログブロック内の各レコードについてのハッシュ値を算出して、そしてレコード自体ではなくハッシュ値のシーケンスに対して署名を付することが考えられる。この戦略は、ログブロック全体の完全性を保証し、各レコードに対して個別的に署名を付するのに比してオーバーヘッドを著しく低下させ、また、単一のレコードが証拠として必要とされた場合にログブロック全体を引き渡す必要性をなくするが、レコードについての証明のサイズはブロックサイズに対して依然線形であり、忙しいシステムにおいてブロックサイズはたやすく数百万レコードにも及ぶ。
本願発明は、処理すべきブロックのサイズを定義するための特定の方法に依存するものではない。1つのありふれたかつ自然な選択肢は、本願でも例示されているように、ブロックを特定の件数のエントリを有するものとして定義することである。この選択肢の1つの利点は、望まれるのであれば処理又はインデキシングが簡易に行える任意の件数、例えば2の累乗等、にブロックサイズを設定することができるという点にある。別の選択肢は、特定の時間インターバルにおいて生じる全てのエントリをブロックとして定義することである。さらに別の選択肢としては、特定のイベントをトリガとして定義して、1以上の開始イベント(例えば、仮想マシンのマイグレーション、選定されたプロセスの実行への切り替え、入出力要求等)の発生によって新規のブロックを開始して、また、任意の終了イベントの発生によって該ブロックを終結して処理することもできよう。熟練したプログラマはさらに他の選択肢をも知っており、例えば複数の選択ルールを伴うそれや、数値的及び時間的な制限及び/又はトリガをいずれも組み合わせるそれ等が含まれる。
より汎用的なデジタルレコードに関する入力セットに適用するために設計された本願発明の実装例では、任意の既知の方法を用いてそれらを不明瞭性のない処理用及び署名用のデジタルデータセットとして定義することができる。既述のように、本願発明は、比較的に低エントロピーな入力レコードのセットについての個々の構成要素の検証のために特に有用であるが、より汎用的には、デジタル形式に変換された又は当初からデジタル形式で作成された一般的なドキュメント、保険・財務・法律・医療に関する記録や結果、他の試験データ、SMS電話メッセージ(電話での「テキストメッセージ」)、ハードディスクのサブセット、仮想マシンの全部又は一部の状態を表す1以上のファイル、セキュアに検証を行いたいと考えられる任意の様々な種類のデジタルレコード等の比較的高エントロピーな入力レコードのセットに関しても追加的なセキュリティを提供するのにも用いられることができる。
ブラインディングマスクを伴うマークルツリー
単一のレコードについての証拠のサイズをさらに削減するために、マークルツリー(Merkle tree)データ及び計算構造を用いてレコードをアグリゲートすることができ、同ツリーは2分木であり、そのリーフはレコードのハッシュ値であり、各非リーフノードはその子ノードの値の連結についてのハッシュ値として計算される。このようなマークルツリー構造又は類似のハッシュツリー構造は、(本願発明による適応を伴って)データ署名インフラストラクチャと共に用いられることができる。そして、ハッシュツリーのルートノード内のハッシュ値がデジタル的に署名されることができ、各リーフノードについてはコンパクトな(リーフ数が対数的である)証明であって、リーフ内のハッシュ値が署名されたルートハッシュ値を導出した計算に参加したことが示される証明、を抽出することができる。しかしながら、2つの問題がある。第1の問題は、このようなアグリゲーションスキームのセキュリティが参加証明として許容されるハッシュチェーンの形状について幾つかの制限を課した場合にしか一般的に証明することができない、という問題である。これを達成するために十分な方法としては、ハッシング前に子ノードからの連結ハッシュ値にサブツリーの高さを付加するという方法があり;これによって、検証時に許容されるハッシュチェーンの長さが制限されて、スキームのセキュリティを形式論的に証明できるようになる。
第2の問題は、マークルツリーから抽出された1つのノードに関してのハッシュチェーンが他のノードのハッシュ値を含んでいるということである。強度の高いハッシュ関数については一般的に直接的な逆算を行って連鎖内のハッシュ値をもたらした入力値を推知することはできないが、典型的なログレコードはこのことを成立させるためには不十分なエントロピーしか有さない場合があり、入力のパターンを知る攻撃者であれば、全ての可能性を網羅的に試して連鎖中に実際存在するハッシュ値をもたらす入力を見つけ出してそれによってレコードの内容を知ることができる場合がある。このような類いの情報を有した上での総当たり攻撃を阻止するために、本願発明によれば、好適にはハッシュ値をアグリゲートする前に各レコードに対して十分なエントロピーを有するブラインディングマスクを追加する。
図1は、チェーンドマスキングハッシュツリー(chained masking hash tree)200である計算コンポーネント並びにインターリンク及びブラインディングマスクを有するマークルツリーを用いたログサイニングについての該コンポーネントの使用方法を示し:reciはサインされるべきレコードであり;riはレコードのハッシュ値であり;rndは乱数又は疑似乱数であり;miはブラインディングマスクであり;xiはリーフであり;xa,bはマークルツリーの内部ノードであり;xrootはサインされるべき値である。図示の実施形態においては、各入力レコードreciは各イベント(e(k+1) ... e(k+4))の1つである。代替的な適用例においては、riはアグリゲータからのルートハッシュ値であり、xrootはコアによって計算されたカレンダー値であり、「アグリゲータ」と「カレンダー値」と「コア」という用語は以下において有利なサイニングインフラストラクチャの一例との関係で説明される。
図1は、結果として得られるデータ構造を示し、ハッシングプロセス及びサイニングプロセスは次のように実行されることができる:
・十分に強度のあるハッシュ関数が選択される。
・各ログブロックそれぞれについて好適には一意でランダムな番号rndが生成される。簡潔性のためにすぎないが、厳密に言えば「疑似乱数的」であるにすぎない場合においても番号rndは「乱数的」なものである。後述する再計算用途との関係で番号が保管されている限り、純粋に乱数的な番号をも用いることができるが、多くの場合においてはこれは過度に複雑なこととなる。例えば、図1においては、乱数rndB1は、ブロックB1について生成されたものとして示されている。乱数の生成(より正しく言えば疑似乱数の生成)は周知の手順であり、任意の既知の手法を用いて各イベントブロック毎にrndを生成することができる。計算効率及びセキュリティの観点からは、rndの値は好適にはハッシュ関数の出力と同程度の長さとされて、ログデータ自体と同じ機密性をもって管理され、暗号学的ハッシュ関数に精通している者は自らの具体的な実施形態の要件を充足させる上でrndのサイズをどのように選定すれば良いのかを理解している。
・ブロック内の各レコードreciについて:
− レコードのハッシュ値は、ri= hash(reci)として計算され、ここでreciはレコードの内容である。
− ブラインディングマスクはmi= hash(xi-1 || rnd)として計算され、ここでxi-1は先のレコードのリーフノードからのハッシュ値であり、rndは現在のブロックについて生成された乱数である。所与のブロックにおいて全てのxi-1についてハッシングを行うに際して同一の乱数を用いることの利点としては、セキュリティを実質的に低下させずにストレージと計算量の観点からの負担を著しく減少させることができるという点が挙げられる。ここで、所与のブロックにおいて千件単位あるいは数百万件単位のイベントがあり得ることが想起され、イベント毎に別個の乱数を生成して格納及び関連付けていたのでは無用に時間及び記憶領域を消費することになってしまう。先のレコードが先のログブロックの最終レコードである場合があり、このようなインターブロックリンキングによってログからブロックが削除されていないかについて検証を行うことが可能となる。ログの第1のレコード(第1ブロックの第1レコード)については、存在していないxi-1の代わりにゼロハッシュ値を用いることができる。なお、rndとこのプレースホルダー値とをハッシングする必要は依然として存在する;なぜならば、ハッシングしなければ第1レコードについてのハッシュチェーンがrndの値を漏出させてしまう可能性があり、転じてこれが他のレコードについて総当たり攻撃を行うために利用され得るからである。
− ツリー内のレコードに対応するリーフノードのレベルはli = 1として定義される。
− リーフについてのハッシュ値はxi= hash(mi || ri|| li)として計算される。
・各非リーフノードxa,bについて:
− ノードのレベルはla,b = max (la, lb) + 1として定義され、ここでla及びlbは子ノードのレベルである。
− ノードについての値はxa,b= hash(xa || xb|| la,b)として計算され、ここでxa及びxbは自らの子ノードからのハッシュ値である。最後に、ルートノードxroot内のハッシュ値については上述のようにして署名を付す。
本願発明の特定の側面に関しての様々な例についての本願明細書では、標準的なハッシュ関数表記法が用いられており、異なるハッシュ関数が評価される。したがって、例えば連結(concatenation)を示すのに「||」が用いられる。本願発明は、例示されたハッシング順序を必要とはしていない。例えば、システムは、mi = hash(xi-1 || rnd)に代えてmi = hash(rnd || xi-1)として計算を行うことができ、または、xa,b = hash(xa|| xb|| la,b)に代えてxa,b = hash(xa|| xb || la,b)として計算を行うことができ、本願発明の任意の実装例が選定されたハッシング順序を一貫して用いる限りこのようにできる。なぜなら、典型的にはハッシュ関数について入力値との関係では交換則が成立しないからである。
このようなツリーを構築して署名を付したならば、任意のリーフからルートへのハッシュチェーンを抽出して、署名されたルートハッシュ値をもたらした計算においてそのリーフが関与したことの証拠としてそれを提出することができる。
例えば、rec2それ自体が署名されたログブロックrec2の一部であったということを証明するには、(right; m2); (right; xi); (left; x3,4)とのシーケンス及びルートハッシュ値についての署名が提示される。「真正な」rec2であると銘打ってある入力レコードが提示されたと仮定する。即ちこれは当初においては「候補」である。そして、検証者は以下のように再計算することができる:
そして、新たに計算されたxrootが署名と一致することを検証する。一致する場合、候補入力レコードについては、xrootのセキュリティレベルで検証がされたことになる。そして、xrootがデジタル的に署名されて検証された場合、候補入力レコード自体もこのセキュリティレベルで検証されたことになる。
ここで説明した方法、即ちツリー構造におけるハッシュ計算にブラインディングマスクが追加される方法は、「ソルティング」(“salting”)として知られる手法とは異なるということに留意されたい。後者では、乱数(「ソルト」)が1対1の関係でパスワード/パスフレーズと関連付けられてそしてソルト+パスワードの組合せがハッシュされる。そして、ハッシュ及びソルトが格納される。http://en.wikipedia.org/wiki/Salt_(cryptography) において説明されているように、「ソルトは、大量のパスワードに対してなされるクラッキングにおける辞書攻撃及び総当たり攻撃を格段に遅らせる(しかし、1つのパスワードのみをクラックする場合には妥当しない)。ソルトがない場合、一挙に大量のパスワードをクラッキングする攻撃者は、各パスワードについての推測を1回ずつハッシュして全てのハッシュと比較するだけで済む。要約すれば、ソルティングは単一のパスワード/パスフレーズと(少なくとも格納されているが故にハックされてしまう可能性にさらされているという意味で)既知のソルトとに基づく既知の関数の何らかの出力との1対1の関連付けを典型的に伴うため、ソルティングでは一般的には逆算を遅れさせることができるが、逆算されてしまう可能性がある。ソルト及びハッシュ出力は知られているため、入力データが典型的なパスワードの母集団と比べてより低いエントロピーを有する場合には、総当たり攻撃が許容不能な程度に実施可能なものとなる場合が多くなる。
対照的に、本願発明のハッシング構造では、xi又はxa,bの値から(攻撃者が既に有しているレコードを当然除く)任意の入力レコードに逆算することが実際的に不可能となる。なぜならば、所与のブロック内の全エントリに単一のrndが適用される実装例においても、攻撃者はrnd値へのアクセスを有していないからである。
カノニカル二分木(Canonical Binary Trees)
上記の議論では、マークルツリーの形状を指定していない。リーフの個数が2の累乗であってイーブンな場合には完全な2分木を構築するのが自然と思われるが、他の場合においては適切な形状が必ずしも明らかであるとはいえない。もっとも、唯一の要請は、ツリーを決定性を伴う態様で構築して、署名者が構築したツリーと完全に同一なツリーを検証者が構築できるようにすることである。ただ、実際的な考慮要素としては、個々のレコードの完全性証明を対数的なサイズに留めることを達成すべきであり、このためにはツリーは過度にアンバランスされていないほうが望ましい。したがって、n個のリーフノード(図2ではn=11について図示)を有する構築可能なカノニカル二分木の1例が図2に示されている。図2では、3つの完全ツリー(2重リングのノード)にグループ化された11個のリーフ(1重リングのノード)が、最小限の高さを有する1つのツリー(3重リングのノード)にマージされる。ツリー構築プロセスは次のように行える:
・ リーフノードは左から右へ向かって配される(図中の1重リングのノード)。
・ リーフノードは左から右へ向かって完全な2分木に集約され、依然利用可能なリーフを用いて各ツリーを最大限大きくする(図中の2重リングのノードを追加)。
・ 完全なツリーは左から右へ向かって単一のツリーにマージされ、これは各ステップで2つの最も小さいツリーを結合することを意味する(図中の3重リングのノードを追加)。
カノニカルツリーの有用な性質としては、ツリーの最終的なサイズを予め知らずにして新たなリーフノードが到着するに合わせてオンラインで構築していくことが可能な点と、対数的な個数だけのノード(即ち、これまでに構築してきた完全ツリーのルートノードだけ)をインメモリに格納しておくことで済む点が挙げられる。したがって、ここで概要が示されるスキームを用いるならば、全てのセキュリティ要件は達成され、また、性能要件の殆ども達成される:
・ 最小限で、1つのブロックあたりたったの1つのハッシュ値を(rnd)、署名それ自体に加えて格納することになる。
・ ログを署名するには、1つのレコードあたり3つのハッシングオペレーションと1つのブロックあたり1つの署名オペレーションとが必要となる。
・ ログを検証するには、1つのレコードあたり3つのハッシングオペレーションと1つのブロックあたり1つの署名検証オペレーションとが必要となる。
・ 個別のレコードの完全性の証明を抽出するには、1つのレコードあたり3つのハッシングオペレーションが必要となる。これは、抽出における亜線形性能(sub-linear performance)の望ましいが非本質的な目標に満たないが、後述するように、増大した格納オーバーヘッドの代償を払うことによって実行時間の削減を達成することができる。
・ 個別のレコードの完全性証明としては、(ログブロックのサイズとの関係で)対数的な個数のハッシュ値と1つの署名を引き渡す必要がある。これは形式的には定数サイズとはならないが、実務上では依然十分に小さい。
・ 個別のレコードの完全性証明の検証するためには、対数的な個数のハッシングオペレーションと1つの署名検証オペレーションとで足りる。
参考例としての手順
このセクションでは、例示的な観点においてのみではあるが、ログブロックをアグリゲートすることと、個別のレコードの完全性証明を抽出することと、そのような証明に基づいてレコードを検証することとについての参考例としての手順を提示する。また、増大した格納オーバーヘッドの代償を払うことによって獲得し得る追加的なセキュリティ上の利点又は実行時間についての削減に関しての幾つかの可能なトレードオフについても述べる。これらの参考例としての手順は、本願発明の1つの実装例のそれぞれの機能性を実装するための1つの手法を熟練したプログラマに見せるために含めてあるだけであることを強調する必要がある。このようなプログラマは、本願発明の主要概念から逸脱することなく、詳細事項、データ構造の配置、プログラミング言語の選定等に関して、当然自己の設計的嗜好を有する。
ログレコードのアグリゲーション
手順例1では、署名又は検証のために、レコードについてのブロックについてアグリゲーションを行う。入力に関しての説明はレコードを1, ..., Nと番号付けするが、Nの値は使用されず、手順例はレコードをオンラインで処理するための実装例に容易に用いられることができる。平準化されたレコードあたりの処理時間は定数であり、レコードあたりの実際的な最悪シナリオ時の処理時間はブロック内のレコード数との関係で対数的であり、必要とされる補助ワーキングメモリのサイズについても同じである。
ブロックを署名するには:
・ 新規でランダムな値がrndとして生成される。
・ 現在ブロックのログレコードと、rndと、先のブロックからの最後のリーフハッシュ値とが、手順例1に入力される。
・ 結果として得られたルートハッシュ値が署名され、かつ、このブロックからの最後のリーフハッシュ値が次のブロックにアグリゲーションの対象として渡される。
・ 最低でも、rndとルートハッシュ値についての署名とは事後の検証のため保存されなければならない。
署名されたブロックを検証するには:
・ ログレコードと、署名が付されている間に保存されたrndと、先のブロックからの最後のリーフハッシュ値とが、手順例1に入力される。
・ 改めて再計算されたルートハッシュ値が、保存されている署名と比較して検証される。
厳密に要求はされていないが、実際上、rnd及び署名に加えて、先のログブロックの最後のリーフハッシュ値も好適には保存されるべきである;さもなければ、現在検証のために要求されている入力を得るために、現在ブロックについての検証プロセスで先のブロックについて再ハッシュを行う必要が生じてしまうからである。一貫したストレージポリシーを仮定すると、このためには、転じて、その次の先のブロック等についても再ハッシュを行う必要が生じる。このようなことはもちろん非効率的であるが、より危険なこととしては、いずれかのログブロックにでも損傷が及ぶと、任意の後続のログブロックについて検証を行うことが不可能となってしまうという危険がある。なぜならば、検証のために必要とされる1つの入力がもはや利用不能となってしまうからである。
ネガティブなシナリオをより詳細に検討するに、失敗となった検証から導出される唯一の結論は、ログブロック又は認証データにおいて何かが変更されたという結論である。より正確に変更を検出することが望ましい場合、手順例1によって計算されたレコードハッシュ値ri又はリーフハッシュ値xiを他の認証データと共に保存することもできる。そして、レコードあたりの小さな格納オーバーヘッドの代償の下で、一連のハッシュ値を署名との間で認証して、また、各レコードを自らのハッシュ値との関係で検証することができる。また、レコードハッシュを保存するべき場合、ブラインディングマスクが阻止すべきものである情報を有した上での総当たり攻撃に該レコードハッシュが用いられるのを予防するために、それらはログデータ自体の機密性と同じレベルで保管されるべきであることにも留意されたい。
手順例1 − 署名又は検証のために、レコードについてのブロックについてアグリゲーションを行う
上記について、以下の通り:
Rec1 ... N:入力レコード
rnd:ブラインディングマスクについての初期値
x0:先のブロックの最後のリーフハッシュ(これが第1のブロックである場合、ゼロフィルされる)
{Initialize block: create empty roots list}:{ブロックを初期化:空のルートリストを作成}
R:=空リスト
{Process records: add them to the Merkle forest in order}:{レコードを処理:順番でそれらをマークル森に追加}
{Add xi to the forest as new leaf, update roots list}:{新規のリーフとしてxiを森に追加、ルートリストを更新}
{Finalize block: merge forest into a single tree}:{ブロックを確定:森を1つのツリーにマージ}
root:このブロックの(署名又は検証されるべき)ルートハッシュ
xN:このブロックの最後のリーフハッシュ(次のブロックへのリンキングのためのもの)
ハッシュチェーンの抽出
手順例2では、個別のレコードの完全性を証明又は検証するのに必要なハッシュチェーンを抽出する。核となる手順は手順例1のそれに類似しており、ターゲットレコードに依存するハッシュ値についてトラッキングが行われ、また、該トラッキングに基づいてハッシュチェーンを収集する。
手順例2 − 1つのレコードを検証するためにハッシュチェーンを抽出する
上記について、以下の通り:
Rec1 ... N:入力レコード
pos:ターゲットレコードのブロック内での位置(1 ... N)
rnd:ブラインディングマスクについての初期値
x0:先のブロックの最後のリーフハッシュ(これが第1のブロックである場合、ゼロフィルされる)
{Initialize block}:{ブロックを初期化}
R:=空リスト
C:=空リスト
{Target record not in any level yet}:{ターゲットレコードはどのレベルにも入っていない}
{Process records, keeping track of the target one}:{レコードを処理し、ターゲットとなるものについてはトラッキングを維持}
{Target to be added to right on leaf level}:{リーフレベルでターゲットを右方に追加}
{Moving target to left}:{ターゲットを左方に移動}
{Merging target to right for next level }:{次レベルへ向けてターゲットを右方へマージ}
{Moving target to left}:{ターゲットを左方に移動}
{Finalize block: merge forest into a single tree}:{ブロックを確定:森を1つのツリーにマージ}
{Moving target to right}:{ターゲットを右方に移動}
{Merging target to right for next level}:{次レベルへ向けてターゲットを右方へマージ}
C:レコードからブロックのルートへのハッシュチェーン
上記の手順例での選択肢を適用すると、出力値は一連のトリプルとなる(方向、兄弟ハッシュ、レベル補正)。方向は、着信するハッシュ値と兄弟ハッシュ値との連結順序を意味する。等しくない高さの2つのサブツリーがマージされており下位サブツリーのルートからマージされたツリーのルートへのステップにおいてノードレベル値が1より大きい増分で増える場合を捕捉するために、レベル補正値が含められている。(図2における下位の3重リングノードから上位の3重リングノードへのステップが一例である。)手順例2は手順例1に密接に基づいているため、該手順の性能は似たようなものとなり、ハッシュチェーン抽出における亜線形実行時間の提示された理想には若干届かない。しかし、このことはsyslog統合においては実際の問題とはなり難い。なぜならば、提示すべきレコードを検索することが典型的には線形時間を伴うタスクである以上、証明抽出時間を減少させても合計時間に関して重要な向上はもたらされないからである。もっとも、必要であれば、領域を時間と交換して、レコード毎に2つのハッシュ値を格納するという代償を払って、ハッシュチェーン抽出に関して対数的な実行時間を達成することができる。実際に、マークルツリーのノードの全て(図1において「x」ノードとして示されている)の値が保持される場合、新たなハッシュ計算を伴わずにしてハッシュチェーン全体を抽出することができる。例えば、手順例1においてxi及びRjとして計算される順序で同一サイズの値が、格納される場合、ハッシュ値をインデキシングして定数時間でそれぞれを検索することができる。同様の効果を得るのに他の手法を適用することもできる。
また、この手順例において完全体のログファイルにアクセスする必要があるのは機密性目標においての妥協とはならないことにも留意されたい。なぜならば、抽出プロセスはログファイルの所有者によって実行されることができ、かつ、関連性のあるログレコード及び手順例2で計算されたハッシュチェーンのみが外部の当事者に提供されるからである。
ハッシュチェーンの計算
本願発明の1つのプロトタイプにおいては、手順例3では、入力ハッシュチェーンの抽出元となったマークルツリーのルートハッシュ値が計算される。手順例2で生成されたハッシュチェーン及び対応するログレコードは、通常手順例3に入力され、出力ハッシュ値は署名との関係で検証されてレコードの完全性が証明される。
手順例3 − ハッシュチェーンからルート値を計算する
上記について、以下の通り:
Rec:入力レコード
C:レコードからブロックのルートへのハッシュチェーン
{direction, Sibling hash, Level correction}:{方向、兄弟ハッシュ、レベル補正}
root:このブロックの(署名を用いて検証されるべき)ルートハッシュ
本願発明の一部の実装例では、それぞれのブロックに関連付けられているxroot.値のレベルまで入力イベントを検証できさえすればユーザは満足するであろう。ここで、(望ましいが厳密には要求されていないものの)現在ブロック内の第1の値x1についてのハッシュ値の計算に先の値x0が含まれている場合、xroot..には以前のブロック全てからの情報もエンコードされていることになるという点を想起されたい。少しでも望まれる場合においては、任意の標準的な署名を用いてデジタル的にxroot..に対して署名を付することで十分となる。もっとも、格段により大規模となり得るフレームワークについてもxrootの完全性を担保してさらに高度なセキュリティを提供するデジタル署名方法について後述する。換言すれば、図1及び図2に示した構造100、200内にて個別のイベントを検証できるものの、加えてxroot..について適切な署名システムを選定することによってさらなるセキュリティを提供することができる。
図1及び図2で示されて上記で説明された本願発明の実施形態は、値の連鎖化(chaining)を含み、チェーニングについては先のエントリブロックの最後の値x0から行われ、rndとハッシュされてハッシュ値m1が作成され、今度はそれがr1とハッシュされてx1が提供される。換言すれば、各「m」値からそれに続く「x」値に至り、それに続く「m」等に至る計算の「連鎖」が存在する。これだけが可能な実施形態ではない。例えば図3では、マスキングハッシュツリー計算モジュール200についての「カウンターモード」の実施形態が示されており、mjを計算するに際してはrndに関して先のx値xj-1とのハッシングは行われない。代わりに、各mjは好適には現在ブロックのrndとブロックレコード番号jとのハッシュとして計算される。したがって、mj = hash(rnd || j)である。図1及び図2のチェーンモード実施形態についての説明が与えられれば、熟練したプログラマにとっては、xrootを計算して後にrec値を検証するためのルーチンに加える変更は自明のものとなる。
実装例についての詳細
このセクションでは、syslog又は類似のイベントメッセージを署名するための、本願発明の1つの実施形態についての例に関しての実装方法に関する実際的な考慮事項についての概要を述べる。熟練したプログラマは、他の実装例のための適切な手順をどのようにして選定すれば良いかを知っている。可能な様々な展開シナリオの一例として、ここでの例は、Rainer Gerhards, The Syslog Protocol, RFC 5424, IETF, 2009において述べられているログ収集装置上のテキストファイルに向けられた出力に対して署名することについて専念している。
ログローテーション
ログが順序づけられたブロックのシーケンスとしてモデル化され、そして各ブロックが有限個のレコードの順序づけられたシーケンスであると仮定し、syslog出力が定期的にローテーションされるログファイルに送信される状況は、このモデルの一例であると解釈することができるという点に留意されたい。ここでは該モデルを改良して、物理ブロック(ローテーションされるファイル)を論理ブロック(署名により黙示されるもの)と区別する。なぜならば、ログファイルをローテーションする頻度よりも細かい粒度を用いてレコードに署名するのが多くの場合望ましいからである。実際的な理由から、システムは、ログファイルが複数の署名されたブロックを含むことを許容し得るが、サインされたブロックがファイル境界を跨がってスパンすることを禁止することができる。このため、ログがローテーションされた場合、現在の署名ブロックは常にクローズされており、新規のログファイルの先頭から新規のブロックが開始されることになる。もっとも、先のブロックの最後のレコードから次のブロックの最初のレコードへのハッシュリンクはファイル境界を跨がるが、どのようにファイルがローテーションされていようとログ全体の完全性を検証することが依然可能とされる。
マルチテナント環境におけるレコードレベルでのログサイニング
本願発明はマルチテナント環境におけるレコードレベルでのログサイニングについても実施されることができ、該環境とは、2以上の異なって定義されたエンティティが同一のログにログされるイベントを生成している環境を意味する。このような環境下では、ログの扱いに関して幾つかの一般的な仮定をするのが有用である。第1の仮定は、ログには異なるエンティティからのレコードがインターリービングされており、また、それぞれのテナントに引き渡す前にこれらのログを分離する必要があるということである。第2の仮定は、インターリービングされたログでは、各レコードの出所が明確に決定可能であるということである。この第2の仮定が破られた場合、ログ分離問題については有効な解決策がなくなり、署名分離の問題が不要となる。
マルチテナント局面の1つの性質としては、共通ログをインターリービングされたスレッドのセットに分離することが予め定められていることであるということが挙げられる:任意のログ処理における第1のステップはテナント毎にレコードを分離することであり、その後に各テナントが自己のサブセットに対して何らかのさらなる分析を行うことが想定される。したがって、各スレッドの完全性に加えてログ全体の完全性をも保護する署名メカニズムを提供することが有用となり得る。署名処理のオーバーヘッドが小さいことを考慮すると、1つの可能な解決策としては、各テナントのスレッドを共有ログ内の仮想ログとして捉えて、そして、ログ内の全てのレコードを含むグローバルスレッドに加えて各スレッド内のレコードについてリンキングとサイニングを行うということが考えられる。共通ログのN個のレコードがK個のテナント間でおおよそ等しく分割されていると仮定すると、インメモリで保持されるべきlog(N)サイズのルートリスト及びログ全体について長期的にアーカイブされるべき1つの署名に加えて、サーバは、K個の追加的なlog(N/K)サイズのルートリストを保持して、K個の追加的な署名をアーカイブする必要がある。
テナントの個数を漏出することを代償として、署名の数を1に再度減らすことが可能であり、そのためには、1つの追加的なアグリゲーション層(図1ではツリー中の1つの追加的な「レベル」に対応する)を追加して、K+1個のルートハッシュ値を1つに合体させて、このアグリゲートに関してのアグリゲートたるものだけに署名することができる。そして、レコード自体(及び望む場合にはレコード毎のハッシュ値)を単体のコピーとしてホストで依然保持することができる。(そして、関連のあるレコードについて複製を作成して各テナントに提供することができる。)そして、各テナントは、ログが署名されてから自己のスレッドにおいてレコードが変更されておらず、レコードが追加されておらず、また、レコードが削除されていないことを検証することができる。
そして、既述のように、ツリー構造の最上位値xrootは好適にはデジタル的に署名される。このようなデータに(タイムスタンピングを用いて又は用いないで)署名を付すための適切なスキームは多数存在する。周知かつ公知の極めて多数の方法のうちの3つは、PKCS#7又はOpenPGP署名又はPKI-署名RFC3161タイムスタンプである。
エストニア国タリンのGuardtime ASは、キーを必要としない(デジタル情報の任意のセットとして基本的に定義される)デジタルレコードについての認証を極めて高度な信頼性をもって提供する分散ハッシュツリー構造を含む署名アーキテクチャを開発した。Guardtimeテクノロジについての要約に関しては、例えばhttp://www.guardtime.com/signatures/technology-overview/を参照されたい。また、Guardtimeシステムの特徴は特許文献1、特許文献2及び特許文献3においても開示されている(いずれも発明の名称は「デジタル証明書を生成するシステム及び方法」)。既述のように、本願発明は特定の署名スキームを要するものではないが、Guardtimeシステムについて言及し、そうする理由は、一般的にいえば、同システムの具体的な長所(例えば、高度なセキュリティ、計算効率、実質的に無制限なスケーラビリティ、及びキーを必要としないこと等)及び本願発明の具体的な文脈における具体的な長所に基づく。
分散カレンダーインフラストラクチャを伴う一般的なハッシュツリーベースド検証
図4及び図5に示すように、一般的なGuardtimeインフラストラクチャは複数の異なるレイヤーを有し:幾つかのクライアントシステムを備えるクライアントレイヤー2000と;ゲートウェイレイヤー3000と;1以上のアグリゲーションシステムを含むレイヤー4000と;後において詳述する「コア」を含む最上位レイヤー5000とを有する。図4は、別個かつ明確に区別できるものとして様々なレイヤーを表すが、インフラストラクチャの主要原理についての一部の実装例では、幾つかのレイヤーを統合若しくは省略し、又は、管理上若しくは他の目的のため追加的なレイヤーを追加する必要があり得る。様々なレイヤーが何を行うか説明する以下の記載を参照すれば、システムアーキテクチャ設計に精通した当業者は先のような変更を如何にして行うべきかを明確に理解するであろう。
図4が示しているように、コアレイヤー5000は一般的にはシステムのユーザの全部について共通のものとなり、これに対して下位レイヤー2000、3000、4000は多くの実装例ではユーザのニーズ及び好みに従って固有の構成とされることができる。もっとも、「コア/共通」及び「固有/分散」の区別は絶対的ではなく、一部の実装例では、集中的に管理されているシステムたるコアが下位レイヤーでも使用されている構造及び機能を包含することができる。このインフラストラクチャの1つの利点は、非コアレイヤーにてほぼ無制限のスケーラビリティ及び再構成の可能性をもたらして特定の実装例のニーズの充足を可能とすることである。このために要求されるのは、検証システムにデジタルレコードを入力するため及び登録要求を生成するための共通プロトコルを伴って、それぞれのレイヤーが指定された機能を担うことだけである。
図示された構成において、クライアントはデジタルレコードを準備して検証/署名システムに入力するためのシステムである。図1及び図2に示された本願発明と、上述の本願発明との関係によれば、「クライアント」は、ログ100(又はデジタルレコードの他の入力セットであって、低エントロピーであるか否かを問わないもの)を作成し、かつ、マスキングハッシュツリー200を組み込んで、実装して、評価する、ハードウェア又はソフトウェアのエンティティである。同じハードウェア及び/又はソフトウェアエンティティがログ100及びツリー200を具現化する必要が無いことに留意されたい;例えば、ログ100のシステムと同じシステム内にあるコンポーネントが、ログエントリを、ブラインディングマスクの生成及びマスキングハッシュツリーの評価に関係するアグリゲーション及びハッシュ計算を行う別個のシステムに送信することができる。本願発明の主要例の具体的文脈においては、検証システムのためのデジタル入力レコードはマスキングツリー計算モジュール200によって出力されたxroot値となる。
ゲートウェイレイヤー3000内のゲートウェイは典型的には、クライアントが提出する各デジタルレコードについての登録要求を受信できるように1以上のクライアントと通信可能なサーバ等のコンピュータシステムである。多くの実装例では、ゲートウェイは企業又は何らかの第三者によって管理されたサーバであり、これは、クライアントユーザが所属する組織に知られている若しくは場合によってはクライアントユーザが所属する組織によって管理されているサーバ、又は、インターネット等のネットワークを通じてアクセスされるサーバであってもよい。要するに、一般的にゲートウェイとは、任意の場所に配置されており、かつ、デジタルレコードについての登録要求をクライアントから受信するように構成されている任意のサーバであってもよい。ゲートウェイシステムは同じタイプである必要はなく、むしろ、あるゲートウェイは多数のクライアントを活用する企業内のサーバであることができ、別のゲートウェイは任意のユーザによってオンラインでアクセス可能なサーバであってもよい。もちろん、ゲートウェイは、料金が支払われなければ検証のためのアクセスが許可されないような商業的システムであってもよい。
同様に、アグリゲーションレイヤー4000内のアグリゲータは、それぞれのゲートウェイによって集約された登録要求を受信するように意図されているサーバ等のコンピュータシステムである。所与の実装例のスケール及び設計上の要求に応じて、任意のアグリゲータは、コアの所有者又はゲートウェイ及びクライアントと同じシステムの所有者によって制御されることができ、又は、全く異なるエンティティによって提供されることができ、一部の場合においては特定のクライアントの集合についてアグリゲータ及びゲートウェイを集約することもできる。例えば、1つの設計上の選択肢は、一組のアグリゲータを「コア」システムの一部分として中央システムに含めて、「コアアグリゲータ」を通じて通信することによって下位レベルの非コアアグリゲータが要求を提出するようにできる。そして、待ち時間を減らすために又は管理上の理由から、1以上のアグリゲータをヨーロッパ・北米・アジアの各々に配置する等してコアアグリゲータを地理的に配置することができる。
別の例では、大企業又は政府機関は、自己の専用システムのみを用いてインフラストラクチャを実装してその利点を享受することを望むかもしれない。対極的な事例により近い場面では、「クラウドコンピューティング」を用いてゲートウェイ及びアグリゲータの全てが構成されていることができ、この場合、クライアントレベルのユーザは特定のゲートウェイ若しくはアグリゲータがいったいどこにあるのか又は誰がサーバを管理しているのかについて全く知らないことになる。このインフラストラクチャの利点の1つは、ユーザ及び他者がゲートウェイ又はアグリゲーションレイヤー3000、4000内のシステムを信頼できるか分からない場合であっても、完全に近いセキュリティをもって依然としてデジタル入力レコードを検証できるという点であり;実際には、検証について実質的に完全な信頼性を得るために、コア5000の管理者を信頼する必要はない。
図5は、図4のインフラストラクチャをさらに詳細に示す。具体的には、図5は、認証プロセスにおいて使用される様々なデータ構造を示す。図5では、様々なクライアントが2010-1, ... , 2010-nとして表され;ゲートウェイが3010-1, 3010-2, ... , 3010-mとして表され;(例示的にすぎない)2つのアグリゲータが4010-1, 4010-kとして表される。アグリゲータは通常、コア内の最下位ハッシュツリーノード内に向かって通信を行う。簡素化のため、図5では2つのアグリゲータだけを示している。
後に行われる検証のために登録されるべきデジタルレコードを生成又は入力する任意のタイプのシステムであるクライアントシステム2010−1について検討する。デジタル入力レコードを作成でき、本願発明との関係でクライアントシステムたり得る数多くの物理的システム及びソフトウェアシステムを若干挙げるとすれば次のものが含まれる:物理的な若しくは仮想的なコンピュータ、携帯電話等の通信装置、これら2種類の装置についてのハイブリッド装置、状態変化若しくは他の活動がログされてコンピュータによって管理される他の機械(例えば、フライトデータレコーダ若しくは工業プロセス装置)、及び、純粋なソフトウェア上のエンティティであってログされる活動を伴うもの。
1つの実装例では、検証インフラストラクチャを使用することを望む各クライアントシステムには、デジタル情報を簡便に又は自動的に「上方へ向かって」通信及び提出するためのソフトウェアパッケージ若しくは内部システムルーチンが搭載される。ソフトウェアパッケージは、提出されたデジタルレコードを処理のために適切な形式に変換する何らかのアプリケーションプログラミングインターフェース(API)2014を含むことができる。そして、作成、選定、若しくは何らかの方法によって入力されたデジタルレコード2012は、API2014を介してソフトウェアモジュール2016に送られ、該モジュールはハッシュ関数等の変換関数においてレコード2012からのデジタルデータを少なくとも1つの引数として用いるものである。
イベントログを検証するために設計された本願発明の実装例においては、「クライアント」は典型的にはクライアントシステム自体の内部に存在するルーチンであって、イベントログの全部又は所望の部分を抽出して、これを署名されるべき及び検証されるべき入力レコードとして提出することのできるルーチンである。もっとも、一部の場合においては、イベントログは、イベント又はイベントログを受信又は抽出するシステムから分離されているか或いは遠隔地に置かれていることができる。例えば、これらのイベントは、携帯電話やタブレットコンピュータ等と中央の電話システム若しくは無線ネットワークシステムとの相互作用又はこれらの装置についての他のタイプのシステム状態の変化に関するものであると仮定する。このようなイベント/状態変化には、装置の立ち上げ及びシャットダウン、通話の開始及び終了、SMSメッセージ又は電子メールの送信又は受信、インターネットにアクセスする行為、あるセルラーゾーンから別のセルラーゾーンへの移動、ソフトウェア更新の受信等が含まれる。これらのイベントはサービスプロバイダによって運営される中央交換局においても検出可能であるため、装置上で装置によって行われるロギングに代えて又は加えて、中央局側でロギングして検証システムに入力することができる。
暗号学的ハッシュ関数は、コンピュータサイエンスの多くの分野で極めて周知となっており、それ故ここではさらに詳述しない。このアーキテクチャ内での使用に適した多数あるハッシュ関数のありきたりな分類のごく一例としてはMD2、MD3、MD4、MD5、...関数を含む「メッセージダイジェスト」(MD)ハッシュ関数及び様々な「セキュアハッシュアルゴリズム」ファミリ(SHA-1やSHA-2等)が挙げられる。
xroot値自体はマスキングハッシュツリー200についての評価の結果であるため、多くの実装例では、クライアント内にてこれをさらにハッシングする必要はない。もっとも、インフラストラクチャのデザインプロトコルによっては、追加的な情報を含ませるために、クライアント内での追加的ハッシングが望まれる場合もあり得る。追加的なハッシュ関数2016の引数としてシステム設計者が任意に選択することのできる多くのもののうちのいくつかを挙げれば次のものが含まれる:登録を要求している個人又はエンティティの識別子、使用されている具体的なクライアントシステムの識別子、時間表示、クライアント又は他のシステムの地理的位置に関する情報、又は、登録要求の部分として取り込まれることが望まれている他の任意の情報。入力パラメータの個数に関係なく変換関数2016は一般的に1つの数又はベクトル2018を出力するため、関数2016が知られている限りにおいて再計算による後の認証は成功する(再度のことであり、常にこうなる訳ではないが、必要とされるデータ構造について対応する記録管理が実施されて維持されている限り、より複雑なスキームを用いることもできる)。ゲートウェイと通信して、変換2016の出力を、登録要求を開始するために必要な他の任意のパラメータやデータと共に、インフラストラクチャの上位レイヤーへ要求(REQ)として送信するためのソフトウェアモジュール2020が好適には含まれる。
本明細書において変換関数2016はハッシュ関数であると仮定する。なぜならば、これが最もありふれたかつ効率的な設計上の選択であり、また、ハッシュ関数の性質が非常に良く理解されているからである。また、多数の異なるハッシュ関数が、暗号学やセキュリティ等の分野において市販コンピュータ内で使用されているからである。ハッシュ関数の別の有利な性質としては、該関数によって、2つの異なる入力が同一の出力をもたらす確率が統計的に有意でないものとした上で大量のデジタル情報でさえもより処理しやすいサイズに縮小することができるという点がある。換言すれば、このインフラストラクチャのインフラストラクチャの至るところで多くの周知のハッシュ関数が用いられることが適切となり、通常の設計考慮事項を用いてこれらを選定することができる。もっとも、関数の性質が既知である限り、デジタルレコードを要求としての提出に適した形式に変換する関数は、ハッシュ関数である必要はない。例えば、特に小さなデジタルレコードに関しては、デジタルレコードデータを、その全体又はそのサブセットに関して、単にありのままで送信することがより効率的である場合があり、この場合変換関数を単なる恒等関数としてみることができ、コアシステム管理者によれば、この関数は、適式な登録要求を形成するのに必要であるとされている他の任意の追加的情報を付加することもできる。
2分ハッシュツリーのデータ構造はゲートウェイ3010−2内に図示されている。所与の実装例において要求を形成するのに用いられる任意の他のパラメータ又はデータと共にクライアントからの要求として提出される、変換されたデータセット2018に、最下位レベルノードの各々は対応する。図示のようにデータ構造内のノードの各組によって表された値は親ノードへの入力を形成し、そしてこれが組み合わせた出力値を計算し、例えば自らの「子」ノードからの2つの入力値についてのハッシュとしてこれを計算する。このようにして組み合わされた出力/ハッシュ値の各々は、2つの入力のうちの一方として「祖父母」ノードに提出され、そしてこれが該2つの入力についての組み合わされた出力/ハッシュ値を計算し、ゲートウェイ内のトップノードについて単一の組み合わされた出力/ハッシュ値が計算されるまで以後同様にしていく。
同様に、システム4010−1等のアグリゲータは、ハッシュツリーデータ構造の各ノードについて組み合わされた出力値を計算する計算モジュールを含む。ゲートウェイと同様に、アグリゲータのデータ構造内の各ノードについて計算された値は、自らの「子」ノード2つを入力として用いる。したがって、各アグリゲータは、該アグリゲータより下方のデータ構造内のゲートウェイに要求を提出したクライアント全てのデジタル入力レコードから導出された情報を含むものたるハッシュ関数の適用結果としての最上位の組み合わされた出力値を、最終的に計算する。もちろん可能ではあるが、アグリゲータレイヤー4000は、コアレイヤー5000を担当するシステム管理者と同じ者によって制御されている必要は必ずしもない。換言すれば、要請されるプロトコルに従って実装され、かつ、正しいハッシュ関数(又は所与の実装例で選ばれる任意の他のタイプの関数)が用いられるならば、様々なユーザが選好する任意のタイプのアーキテクチャを用いるようにクライアント、ゲートウェイ及びアグリゲーションレイヤーを構成することができる。
1つの実施形態では、コア5000は統括システムアドミニストレータによって維持及び制御されている。コア内では、各アグリゲータのルートハッシュ値を最下位入力として用いてハッシュツリーデータ構造が計算される。結果として、コア内のハッシュ計算及び構造がアグリゲーション値についてのアグリゲーションをもたらす。したがって、コアは、単一の最上位コアハッシュ値を、各々のツリーノード5001にて、各カレンダー時間インターバルt0, t1, ..., tnにて、計算する。この最上位値はここでは、時間インターバルについての「カレンダー値」又は「現在カレンダー値」と代替的に称する。時間に関しての原点及び粒度はいずれも設計事項であることに留意されたい。
最上位ツリーノード5001は、それに対して下位となるノードについてのツリー構造全体についてのルートノードを表す。後述するように、要求を蓄積し、及び、再計算パラメータを含む署名ベクトル(「データ署名」ともいう。)を生成する次回の期間の終了時に行われる新たな最上位コアハッシュ値の再計算によって、前述の状態は変わる。もっとも、他の構成も可能である。例えば、単一障害点の可能性を減らすため又はなくすためには、下位レベルのルートハッシュ値を含む当時において複数となっているルートハッシュ値の間でアービトレーションを行う及び/又はそれらを集約する機構が含まれる限り、要求を複数のアグリゲータに向かってかつ上方に向かって送信してハッシングを行うことができる。
図5では、ゲートウェイ3010−2内のハッシュツリーノード、アグリゲータ4010−1及びコア5000の特定のものは、「X」でマーキングされている。Xでマーキングされたツリーノードの値及び一連の親ノードで適用されたハッシュ関数についての知識を与えられていれば、クライアント2010−1内の値2018から上方へ様々なツリーパスをトラバースしていけば、最新の最上位コア値5001までに至るツリー構造内の上方において存在する値全てを計算することができるという点に留意されたい。要するに、「Xマーキングされた」値全てを含む署名がデジタルレコード2012に関連付けられている場合であって、ハッシュ関数が既定のもの(当然であるが、同じ関数であっても異なる関数であっても良い)であると仮定した場合、次の条件が充足される場合に限って、全てのツリー構造を通してのハッシュ値の再計算が現在カレンダー値と同じ値をもたらす。即ち、当初のデジタルレコード(特に現在イベントブロックについてのxroot)を表す開始時の入力値がオリジナルと全ての点において同一である場合に限る。デジタル入力レコードについて行われたほんの些細な変更であっても、即ちそれがレコード2012に関連付けられている署名のいずれかの値に関してのたった1ビットの変更であっても、そのような変更はノード5001内のカレンダー値と同一でない再計算カレンダー値をもたらすことになる。また、コア内の各最上位計算値、即ち現在カレンダー値は、現在カレンダー時間インターバル中にシステムに入力された全てのデジタル入力レコードから導出された情報を含むということに留意されたい。
図6は、ノード5001内の値に、即ちシステムの最上部までハッシュツリーパスを再計算するのに必要な情報を含むハッシュツリーノード値を有する、「簡易化された」インフラストラクチャを示す。特定のゲートウェイ、アグリゲータ又はコア内で再計算を行う必要はなく、実際には、デジタルレコード2012についての検証要求を当初提出したクライアント2010−1と同じクライアント内で再計算が行われる必要すらない。各レベルにおける「兄弟」ツリー値を含むベクトル、及び、各親ノードでどのハッシュ関数を用いて計算を行っているかについての知識、が必要な情報の全てである。換言すれば、この情報を有していれば、第三者であっても、再計算を行って、ノード値5001と比較を行い、そしてそれによって、デジタルレコード2012であるとされている任意の表現を認証するか、又は、何らかの差異を検出することができる。
図6では、再計算のために必要な兄弟ハッシュ値は、0から9までナンバリングされている。ノードが時間順で作成され、かつ、選択されたハッシュ関数において順序が意味を有するのならば、各レベルにおいての兄弟がハッシュ構造の「左右」のどちらかにあるかということは意味を有するものとなる。図6に示す例においては、選択された任意の情報と共にデータ署名8000として戻されるベクトル({兄弟値0−1},{オーダービット},{その他})内においては、値のみならず、順序(0:左から,1:右から)も示されている。ここで、2分ハッシュツリー構造を用いることについての1つの利点を見出すことができよう:各レベルにおいて、上方へ向かっての再計算のために必要となる兄弟値は1つだけとなることである。2分木でない構造も可能ではあるが、その場合には演算、ストレージ及びデータ構造において、増大した複雑度を甘受しなければならなくなる。図5及び図6を比較すると、任意の時間インターバルにおけるN個のデジタル入力レコードのセット1つを認証するための計算負荷は、たったのlog2Nに比例するということも分かる。特に、再計算によって認証を行うことを望んでいるクライアント及び後続エンティティに関しては、様々なレイヤーの独立性を向上させるためには、新たなカレンダー値の計算時点毎に、即ち各カレンダー時間インターバルの終了時において、アグリゲータに、又はさらなる下位レイヤーに、あるいはクライアントにまでカレンダー全体を伝達することが有利である。これによって、システムの完全性に関して何ら妥協することなく、計算負荷の委譲及び分散が可能となる。単に現在カレンダー値のみを下方伝達することが可能ではあるが、アグリゲータがカレンダー値についての稼働しているデータベースを維持している場合、カレンダー全体が通常は大きいものではないが故に新たなエントリが計算される都度にカレンダー全体を容易に丸ごと送信することができる。したがって、図4は、システム時間の始まりからのカレンダー値全てを含むデータベース又はファイル(「カレンダー」)6000を示す。これにより、最小限の管理上の負担だけで新たなアグリゲータ、ゲートウェイ及びクライアントがインフラストラクチャに参加できるようになり、デジタルレコードの認証を望むクライアントレベルエンティティよりも高位なレベルを関与させないで任意のデジタルレコードについて再計算及び検証を行うことができるようになる。
コアは、データ署名ベクトル8000を直接クライアント及び/又は他のレイヤーに戻すことができ、あるいは、それを構築するか又は戻り値として「下方へ向けて」伝達することができる。例えば、新たなカレンダー時間インターバルにてコアが現在カレンダー値5001を計算した場合、コアはアグリゲータ4010−kからの兄弟の(Xマーキングされた)最下位コアノード値をアグリゲータ4010−1に戻すことができ、そしてアグリゲータ4010−1はXマーキングされたハッシュ値を下方に向けてゲートウェイ3010−2に戻すことができ、該ゲートウェイは上述の全て及び該ゲートウェイのハッシュツリー構造内にて計算されてXマーキングされたハッシュ値を下方に向けてクライアント2010−1に戻すことができる。換言すれば、ハッシュ計算インフラストラクチャが様々なレイヤー間で(垂直的に)及び各レイヤーにて「水平的に」分散されることができるだけでなく、要求を上方に向けて又は部分的若しくは全体的な署名ベクトルを下方に向けて伝達する責任も分散されることができ、様々な箇所にて同時的に実行されることができる。もちろん、データ署名はそのもととなったデジタルレコードとの関係で一意なため、各クライアント2010−1についての各入力デジタルレコード2012(各時間インターバルにおいては、1つのクライアントが1より多いデジタルレコードを検証のために入力することができるという点に留意されたい)についての署名ベクトルを戻すための手順は、好適にはノード値5001の計算のために値が蓄積された時間インターバル中に受信された全てのデジタル入力レコードについて、複製されるべきである。
図5に示され、本明細書で説明された分散インフラストラクチャの性質は、1つの時間インターバルから次の時間インターバルにわたって静的である必要はないことに留意されたい。むしろ、コアより下位の各コンポーネントは、他のものとは非同期的及び独立的に構築されることができ、デジタルレコードから対応するカレンダー値までの再計算を認証するのに必要なのは、当初の要求を構成した変換関数及び他の値と、ハッシュツリー兄弟値のベクトルと、各計算にて適用されるべきハッシュ関数についての知識とであってこれらが全てである。もちろん、最も単純なケースは全てのレベルで同じハッシュ関数が用いられている場合である。もう少し複雑な選択としては、特定のレベル(例えば、クライアント内、ゲートウェイ内、アグリゲータ内等)における全ての計算に同じハッシュ関数を用いて、レベル間で差異を設けることである。さらに複雑な他の選択は、データ構造及びハッシュ関数計算の分野における当業者によって着想され得るものとしてもちろん実現されることができる。各計算に用いられるハッシュ関数が知られている限り、インフラストラクチャは所与の入力レコードの有効性を検証することができる。
多くの場合、所与の計算インターバルにおいてはクライアントの個数が2の累乗に全く等しくなることの確率は高くはない。全体的に2分ハッシュツリーの構造を維持しながら実際のクライアント数に適応するためには、任意の既知の方法を用いることができる。このことに関しての解決法の1つの例にすぎないが、「欠損している」兄弟ノード値の全てについて既知のダミー値を用いることができる。代替的には、勝ち抜き戦スポーツトーナメントでみられる「bye」の付与に即した態様でハッシュツリーのブランチを調整することもできる。
1つの実施形態では、ゲートウェイ3000は様々なクライアントとの関係でより局地的(ローカル)なものであり、対してアグリゲータはより地域的(リージョナル)なものである。例えば、負荷を分散させるためだけではなく、スループットを増加させるためにも、世界の異なる場所にアグリゲータを配置することができる。図4乃至図6では、クライアントは特定のゲートウェイと関連付けられており、ゲートウェイは特定のアグリゲータと関連付けられているようにみえるが、必ずしもそうではない。むしろ、クライアントからの要求はネットワークを通して提出されることができ、その認証トランザクションに関しては最初に応答したゲートウェイがそのクライアントと関連付けられることができる。同様に、ゲートウェイからの要求はオープンなネットワークに提出されて、最初に接続を確立したアグリゲータによって処理されることができる。アグリゲータ及びゲートウェイを物理的及び論理的に効率的な態様で配置することによって、より良く負荷は分散され遅延時間は減少する。しかし、他の実装例ではこれは望まれていない場合がある。例えば、政府、防衛関係の請負事業者又はインフラストラクチャの全体について厳格なセキュリティ及び厳格な管理を維持したい企業等のエンティティは、インフラストラクチャの全てのレイヤー又はそれらのサブセットの間での関係を制御及び指定することができる。
例として、何らかのエンティティが疑義の対象とされるデジタルレコード、即ち「候補デジタルレコード」がデジタルレコード2012についての同一コピーか否かを検証することを後の時点において希望している事例を検討する。同じ変換関数2016を候補デジタルレコードに適用して、対応するデータ署名8000を用いて上方へ向かって再計算を行うと、エンティティは、当初のデジタルレコードについての登録要求から生じたカレンダー値と完全に同一の値を算出することになる。一部の実装例では、このレベルでの検証で十分とされる。1つのあり得る可能性としては、カレンダーが十分な個数の独立アグリゲータに配信されていると、1つの悪質な主体が何らかのカレンダー値を改ざんしようとした場合、同じカレンダーについての別のコピーと比較する何らかの手順が実装されているのならば、これを検出することができる。
もう1つの例としては、一部の実装例では、ユーザが、コアの管理者によるセキュリティを選択するか又はこれに依存せざるを得ないこととなる。特に、政府機関は、ユーザが政府の管理者を単純に信頼する他ないシステムを実装することができる。これらの場合においては、対応するカレンダー値までの再計算が、十分に信頼できる認証としてみなされることができる。このインフラストラクチャの文脈においては、これは「第1レベル」検証として捉えることができる。このようなシステムが実施され得る1つの仮定的な例としては、次の場合がある:即ち、企業等のシステムがカレンダーを更新した際に毎回自己のカレンダーのコピーを政府機関に提出することを、政府機関が企業や研究所等に義務付ける場合である。これにより、政府が保有することになる真正なカレンダー値に再計算を行うことによって、政府は企業等の記録を監査して与えられた任意のデジタルレコードの信憑性を検証することができる。これは、監査を行う主体(例えば、政府等)との関係で、「カレンダー監査トレイル」を企業等に更新させることを義務付けることを、実際的には意味する。
他の場面でも、最高位レベルのシステム管理者がカレンダーを安全に保管する能力を信用するのであれば、再計算が適切な格納済みカレンダー値になる場合、候補デジタルレコードの信憑性について満足することができる。見方によっては、クライアント又は他の第三者エンティティではなく、これらの場合においてはシステム管理者自身が、候補デジタルレコードの信憑性についての証拠を探しているといえる。したがって、システム管理者は、カレンダーのコピーを保管することに関して自己を信頼することのできる程度と同じ程度まで、再計算及びカレンダー値のセキュリティを信頼することができる。
あるカレンダー時間期間において登録を要求しているレコードのうち、最後のデジタルレコード以外の全てのレコードについては一般的には、そのカレンダー時間インターバル内の他の全ての要求が処理されるのを待たなければ、認証のための再計算を可能とするカレンダー値が利用可能とならない。カレンダー時間インターバルが十分に短いものとされれば、この遅延は許容可能となり得る。遅延の間のセキュリティのレベルを向上させるためには、クライアントが認証登録要求を提出した際にはデータ署名ベクトルのみならず現在のゲートウェイ、アグリゲータさらにはコア等の高位レイヤーシステムによって発行されることのできるキーベースド証明書をも生成して送り返すようにするオプションを実装することもできる。
図7は、基本的カレンダー依存検証プロセスについての拡張であって「第2レベル」検証をもたらす拡張を示しており、これは永続的な検証のための方法であって、キーを必要とせずに、また、コアの管理者さえも含む如何なるエンティティをも信頼することを要さない、方法である。図7では、公開時間インターバルTpにおいて計算されたカレンダー値の全てが、追加的ハッシュツリー構造の入力として用いられ、好適には先のカレンダー値と共に(例えば、マークルツリー構造を用いて)ハッシングされて結合カレンダー値(「公開値」)が計算され、これを何らかの媒体7000に公開のために提出し、これが結合カレンダー値についての変更不能なレコードを形成する。該媒体は例えば新聞やオンラインポスティング等である。ここで、「変更不能」とは、最高に悪質な主体にとっても、たとえそれがコア管理者であったとしても、公表されている値の全ての出現箇所に変更を加えることが実際的には不可能となる、という意味である。「公開」は一般公衆にとってアクセス可能な任意の媒体にて行われている必要はないが、もちろんこのようにすることは信頼された機関の必要性を全くなくする1つの選択肢ではある;むしろ、自前でインフラストラクチャ全てを実装するような、場合によってはクローズドな、大規模組織においては、何らかのセキュアな論理的又は物理的位置に結合カレンダー値についてのデータベース又はジャーナルを保管することが単に選択される場合がある。
分散インフラストラクチャの様々なデータ構造及び手順のおかげで、公開された結合カレンダー値には全体の公開時間インターバルにおける全ての入力デジタルレコードから取得された情報がエンコードされており、図7に示すように現在カレンダー期間についての現在カレンダー値が先のカレンダー値と共にハッシングされており、先のカレンダー値はその前のカレンダー値と共にハッシングされており、以降同様である場合、各公開された結合カレンダー値には、カレンダー時間の開始時t0以降に登録のために提出されたことがあるデジタルレコードの全てからの情報がエンコードされていることとなる。これによってシステム全体の完全性が担保される:過去に登録された1つのデジタルレコードを1ビットでも変えた場合、異なる公開値が計算され、実際の公開値と一致しないことになる。結合署名値(即ち公開値)が公開されると、何らかの署名されたデジタル証明書(該証明書は結合値が公開されるまでの間のセキュリティを向上させるために従来通り提供されることができるが、公開時点においてそれはもはや不要となる)と対応するデジタル入力レコードの署名ベクトルとを一時的に関連付ける必要性は二度と生じることはない;むしろ、データ署名ベクトルとカレンダー値(好適には各アグリゲータに格納されている)とを用いることによって、任意のデジタル入力レコードから上方へ向かって公開値までハッシュ値を再計算していくことができる。そのような再計算において用いられるデジタル入力レコードが公開値との一致をもたらす場合、検査されているデジタル入力レコードが対応する署名ベクトルを当初与えられたデジタル入力レコードと同一であるとの確証を、ハッシュ関数自体の確信度において得ることができる。
図8は、公開値の計算中に得られた値も含むようにした、署名ベクトルについての任意の拡張を示す。先述と同様に、「Xマーキングされた」ノードは、クライアント2010−1からの要求REQに対応するデジタルレコードについての兄弟ハッシュ値である。「C」でマーキングされたカレンダー値を再計算するためには、Xマーキングされた値があれば十分であるが、公開値7000まで上方へ向かって再計算するには、カレンダー値を公開値に変換するためのコア内のデータ構造の内部にある「E」でマーキングされたノード内のハッシュ値が必要となる。したがって、カレンダー期間の最後に、好適にはコアは署名ベクトルを拡張又は強化して従前のようなオーダービットと共に「E」値が含まれるようにする。このような拡張された署名を用いると、任意の当事者は、拡張された署名ベクトルと用いられたハッシュ関数(又は他の関数)についての知識と対応する公開値とを把握している限り、所与のデジタルレコードの真正性を検証することができる。再計算が一致した場合にはデジタルレコードはオリジナルと同一であるということになり、そうでない場合には何かが変更されたことになる。また、任意のデジタルレコードについての受領時刻に関しての順序の変更は、コア内で計算される値及び公開される結合署名値に影響を与えることにも留意されたい。
本願発明はこのスキームについての拡張を伴う:ブラインディングマスクを備える追加的なハッシュノードが乱数又は疑似乱数として生成されて、好適にはコアレイヤーにおけるハッシュ計算に含められ、オプションとしては代替的に若しくは追加的に他のレイヤーにおけるハッシュ計算に含められる。そして、これらの追加的ノード値(ランダムに生成された数)は、他の任意のノード値と同じように、戻されるデータ署名に含められることができ、これにより再計算が可能とされる。
図7では、各公開時間インターバルTp内において8つのカレンダー値が示されている。換言すれば、各公開時間インターバルTp内のカレンダー時間インターバルの個数は、都合の良いことに2の累乗となっている。インターバルの選択の如何によっては、他の実装例ではこうなるとは限らない。例えば、カレンダー値が毎秒生成されるが公開は週に一回(604,800秒)しか行われない場合、マークルツリー構造のリーフノードとしてのカレンダー値の個数は2の累乗とはならない。他のツリーの場合と同様に、このことについては勝ち抜き戦スポーツトーナメントでみられる「bye」の付与に即した態様でツリーのブランチを調整したり、「ダミー」入力を用いたりする等して既知の方法を用いて対処することができる。
カレンダー時間の開始時点からのカレンダー全体についての情報を、公開値にエンコードしておくことが、多くの場合において望ましいこと又は要求されていることとされ得るが、適切な記録管理ルーチンが含まれている限り他の代替的手法をも実施することができる。例えば、マークルツリーに全てのカレンダー値を含めるよりはむしろ、各公開時刻において最近のカレンダー値の全てを、先の時間インターバルのカレンダー値からのランダムなサンプリングと共に、公開計算に含めることができる。これは、含まれるカレンダー値の個数が都合良く2の累乗となるように保証するための手法の一例である。
同様に、一部の場面においては、行政当局はレコードについての証明を、所定の期間、例えば3年、のみ遡って求める場合がある。このような場合、要求される期間中に生成されたカレンダー値のみを含めるのが有利となり得、この場合最新の公開値には関連のあるデジタルレコードのみがエンコードされる。
別の代替案では、システム時刻の開始からの全てのカレンダー値を含む公開値について1度だけ演算を行う。この案は、明確な時間制限又はデジタルレコード制限を伴うプロジェクトにおいて有用であり得る。例えば、訴訟又は取引においては、交換を容易化するために当事者は多くの場合デジタルレコードを「データルーム」に提出する。他の場合と同様に定期的にカレンダー値を生成することができるが、全当事者がデータルームを閉鎖することにつき合意した際に1度だけ公開値について演算を行う(なお、インフラストラクチャのインフラストラクチャについての大規模かつ普遍的にアクセス可能な実装例で行われるほどには頻繁にデジタルレコードが提出されるとは一般的にいえないので、場合によってはより長いカレンダー時間インターバルを伴うことができる。)。公開値は、提出されたデジタルレコードの集合上の「封印」の一種となり、任意の時点でデータルームに提出された任意のデジタルレコードについての再計算及び検証に後において用いられることができる。
公開値を計算するのには、必ずしも図7に示したマークルハッシュツリーデータ構造を用いらなくてもよい。例えば、1つの代案としては、公開時間インターバルにわたる全てのカレンダー値を連結して、疑似乱数と共に全体としてハッシングして拡張されたデータ署名ベクトルの一部とすることができる。他の代案も可能である。
再計算ベクトルについては、各イベント入力e(i)と関連付けて、その値からブラインディングマスクハッシュツリー(図示のケースでは、マークルツリー)の上方へ向かってのxrootまでへの再計算を可能とすることができることに留意されたい。これを如何にして計算モジュール200内で行うかの1例が手順例3である。この例としては、(ツリー構造200についての「ローカルな」データ署名の一種である)ベクトル{(left, m2), (left, x1), (right, x3,4)}が、e(k+2)に対応するrec2と関連付けられていると仮定する。e(k+2)及びこの情報を与えられると、コンポーネント200は、検証エンジンとして機能することとなり、rec2 (e(k+2))をハッシングすることによってr2を計算できるようになる。再計算において用いられるe(k+2)の値が当初においてxrootの計算結果をもたらしたものの値と完全同一である場合に限り、m1||r1をハッシングすることによってx1が得られ、x1||x2をハッシングすることによってx1,2が得られ、そしてx1,2||x3,4をハッシングすることによってxrootが得られる。e(k+2)を検証するためのこの再計算においては任意の他のイベントe(j)の値を知ることは必要ではなく、任意の他のイベント値に逆算しようとする如何なる試みもが実際的に不可能な行為、即ち、ブラインディングマスクのおかげで入力が高エントロピーとなっている1以上のハッシュ関数を遡ろうとする逆算、を要求するということに留意されたい。
本願発明について想定される実装例の多くにおいては通常、各ブロックB内において大量のイベントe(j)が存することになる。方向情報とイベント値e(j)からカレンダー値5001までの要求される兄弟ノード値(全体的インフラストラクチャ内にて異なるハッシュ関数が用いられている場合にはハッシュ関数識別子をも含む値)とを含む完全なデジタル署名ベクトルをコンパイルして関連付けることは可能である。しかし、多くの場合においてこれは許容不能な程に大きなストレージ及び計算負荷を伴い、無用ともいえる。むしろ、好適な実装では、各ブロックについてxroot.値のみをデジタル的に署名して、そしてブロック内のエントリについてxrootまでの再計算を検証するための内部署名ベクトルを維持する。各xroot.がグローバル的に検証された場合、そのレベルまでのエントリのみを検証するだけで足りる。
任意のレイヤー内のシステムが同一のハッシュ関数を適用することは要求されていない。例えば、異なるクライアントシステム内において用いられる変換関数は異なることができる。事後において再計算によってデジタルレコードを認証したいと希望する任意の者が、再計算パス中における各箇所の関数を知っている限り、認証プロセスは正常に動作する。登録要求の準備に関しての入力パラメータとしてハッシュ関数識別子を追加することは、将来のユーザが再計算によってデジタルレコードを正しく認証できるようにする便利な手法たり得る。
本願明細書においては、ハッシュ関数等の様々な関数を適用して値を計算することに言及している。例えば、図5ではクライアント2010−1はこのようなことを行うためのソフトウェアモジュール2016を有するものとして示されている。値の入力及び予めプログラムされた関数に基づいて出力を算出するために必要とされるハードウェア及びソフトウェアモジュールは、もちろん、コンピュータサイエンスの分野において周知である。インフラストラクチャの他のシステム並びにネットワークを経由する通信を含む図示された異なるシステム間の通信のために必要とされるハードウェア及びソフトウェア内には、類似の構造が見出される。

Claims (22)

  1. デジタルレコードをセキュアに認証する方法であって、
    一連のレコードブロックを入力するステップであって、各ブロック(B1)は複数の前記デジタルレコード(rec1, ..., rec4)を備える、ステップと、
    少なくとも1つの実質的にランダムな数(rndB1)を生成するステップと、
    各レコードブロックが:
    入力レコードハッシュ値(r1, ..., r4)を、前記ブロック内の前記デジタルレコードの各々について計算するステップと、
    ブラインディングマスク値(m1, ..., m4)を、前記実質的にランダムな数を入力パラメータとして取るハッシュ関数として計算するステップと、
    各入力レコードハッシュ値について、マスクされたハッシュド入力値(x1, ..., x4)を、前記入力レコードハッシュ値と前記ブラインディングマスク値の対応する1つとについてのハッシュとして計算するステップであって、前記マスクされたハッシュド入力値はハッシュツリーのノードを構成する、ステップと、
    後にアグリゲートされるハッシュツリー値を計算して単一のルートハッシュ値(xroot)を形成するステップ
    とによって特徴付けられる、方法。
  2. 前記ルートハッシュ値に対してデジタル的に署名するステップによってさらに特徴付けられる、請求項1に記載の方法。
  3. 検証フェーズにおいて:
    指定された1つの前記デジタルレコードに対応する候補デジタル入力レコードを受信するステップと、
    前記指定されたデジタルレコードと関連付けられた前記ブラインディングハッシュ値と、前記指定されたデジタルレコードの兄弟ノード値であって前記指定されたデジタルレコードから前記ルートハッシュ値までの前記ハッシュツリー内の計算パス内の兄弟ノード値とを、与えられた上で、前記ルートハッシュ値(xroot)を再計算するステップであって、前記再計算されたルートハッシュ値と当初計算された際に得られた前記ルートハッシュ値とが等しい場合に前記候補デジタル入力レコードは前記対応する当初の入力デジタルレコードと同一であることが検証されたとみなされる、ステップ
    とによってさらに特徴付けられる、請求項1又は請求項2に記載の方法。
  4. 前記ハッシュツリーはマークルツリーであることによって特徴付けられる、請求項1乃至請求項3のいずれか一項に記載の方法。
  5. 前記ブラインディングマスク値(m1, ..., m4)を、前記実質的にランダムな数を片方の入力パラメータとして取り、かつ以前に提出されたデジタルレコードに対応するマスクされたハッシュド入力値を他方の入力パラメータとして取る前記ハッシュ関数として計算するステップであって、前記マスクされたハッシュド入力値についての前記計算は連鎖的にされる、ステップによってさらに特徴付けられる、請求項1乃至請求項4のいずれか一項に記載の方法。
  6. 前記ブラインディングマスク値(m1, ..., m4)を、前記実質的にランダムな数を片方の入力パラメータとして取り、かつ現在ブロック内の前記複数のデジタル入力レコード内の前記デジタル入力レコードの各々の順序に関する位置を指示するカウンターを他方の入力パラメータとして取る前記ハッシュ関数として計算するステップによってさらに特徴付けられる、請求項1乃至請求項4のいずれか一項に記載の方法。
  7. 後にアグリゲートされるハッシュツリー値を計算して単一のルートハッシュ値を形成するステップは、連続して減少する個数のノード値を計算するステップであって、各ノード値は少なくとも2つの下位ノード値と前記ハッシュツリー内における各ノードのレベルを指示するレベル値とについてのハッシュ関数として計算される、ステップによって特徴付けられる、請求項1乃至請求項6のいずれか一項に記載の方法。
  8. 各ブロックについて異なる実質的にランダムな数を計算するステップと、
    同一ブロック内の前記マスクされたハッシュド入力値についてのブラインディングマスク値を計算する際に同一のランダムな数を用いるステップとによってさらに特徴付けられる、請求項1乃至請求項7のいずれか一項に記載の方法。
  9. 前記デジタルレコードは、コンピュータのシステムログエントリ、syslogエントリ若しくはsyslog変形エントリ、rsyslogエントリ、通信装置のログされたイベント、仮想マシンの状態変化、移動体通信装置の状態変化等のシステムイベント(e(k-l), ..., e(k+5))であることによって特徴付けられる、請求項1乃至請求項8のいずれか一項に記載の方法。
  10. 前記デジタル入力レコードは共通ログ内にログされた1より多い個数のエンティティについてのイベントであり、
    前記イベントを、エンティティ毎に識別し、かつ、別個のイベントスレッドにグループ化するステップと、
    各スレッドについて、別個のスレッドルートハッシュ値を計算するステップ
    とによってさらに特徴付けられる、請求項1乃至請求項9のいずれか一項に記載の方法。
  11. 各スレッドルートハッシュ値に対して別個にデジタル的に署名するステップによってさらに特徴付けられる、請求項10に記載の方法。
  12. 前記マスキングハッシュツリー計算コンポーネントは、前記ルートハッシュ値をキーレスな分散ハッシュツリー認証システム(2000、3000、4000、5000)に提出し、前記ルートハッシュ値と関連付けられたデジタル署名を前記キーレスな分散ハッシュツリー認証システムから受信することによって特徴付けられる、請求項2乃至請求項11のいずれか一項に記載の方法。
  13. コアプロセッシングレベル上のコアシステム(5000)にて、各々の非コア最上位プロセッシングレベル(4000)上の少なくとも1つの非コア最上位プロセッシングシステム(4010−1, ..., 4010−k)の各々から、少なくとも1つのデジタル入力レコードのユーザレベルシステムにて計算されるデジタル変換として形成される最下位レベル入力を有する前記キーレスな分散ハッシュツリー認証システムのノード値として非コア下位プロセッシングレベルにて計算される一連の下位レベル結合出力値についてのデジタル結合として形成されて前記ルートハッシュ値を含む現在最上位レベル結合出力値を、受信するステップと、
    前記コアシステム内にて、現在ルートカレンダー値を、前記現在最上位レベル結合出力値及び少なくとも1つの先のルートカレンダー値に関しての関数についてのデジタル結合として、計算するステップと、
    前記最上位レベル結合出力値の少なくともサブセットについての関数として計算された公開出力値を、定期的に計算して、実質的に永続的な態様で公開させるステップと、
    対応するデジタル変換を被験デジタルレコードに適用して、かつ、前記現在カレンダー値の再計算パラメータ及び前記結合カレンダー値を用いて、ツリーデータ構造及びコアを通って上方に向かって前記ノード値を再計算した際に、当初計算時に得られたのと同一の結合カレンダー値が得られた場合に、任意の後続の被験デジタルレコードは対応するデジタル入力レコードとの関係で永続的に認証されたとみなすステップと、
    前記現在カレンダー値のみならず少なくとも1つの先の現在カレンダー値を含む公開期間にわたって計算された複数の現在カレンダー値についての関数として前記結合カレンダー値を、計算するステップ
    とによってさらに特徴付けられる方法であって:
    前記デジタル結合は暗号学的ハッシュであり、
    各デジタル入力レコードについて、前記再計算パラメータは、前記デジタル入力レコードについての前記デジタル変換から前記結合カレンダー値まで方向付けられた前記ツリーデータ構造内のパス内の兄弟ノード値を含み、
    前記再計算パラメータはキーレスであり、遅くとも前記結合カレンダー値の公開時において前記再計算パラメータはデジタル証明書や暗号キー等の任意の信頼権限パラメータから独立しているものとされる、
    請求項12に記載の方法。
  14. 前記スレッドルートハッシュ値を前記単一のルートハッシュ値内にアグリゲートするステップによってさらに特徴付けられる、請求項10に記載の方法。
  15. デジタルレコードをセキュアに認証するシステムであって、
    各々がデジタルレコードを構成する一連のイベント(e(k- l), ..., e(k+5))についてのデジタル表現を含むログ(100)と、
    マスキングハッシュツリー計算コンポーネント(200)であって、該コンポーネントは:
    前記デジタルレコード(reci)を入力し、また、それらをブロック(B1)にグループ化するサブコンポーネントと、
    各レコードブロックについての:
    入力レコードハッシュ値(ri)を、前記ブロック内の前記デジタルレコードの各々について計算するサブコンポーネントと、
    ブラインディングマスク値(mi)を、実質的にランダムな数(rnd)を入力パラメータとして取るハッシュ関数として計算するサブコンポーネントと、
    各入力レコードハッシュ値について、マスクされたハッシュド入力値(xi)を、前記入力レコードハッシュ値と前記ブラインディングマスク値の対応する1つとについてのハッシュとして計算するサブコンポーネントであって、前記マスクされたハッシュド入力値はハッシュツリー計算構造のノードを構成する、サブコンポーネントと、
    後にアグリゲートされたハッシュツリー値を計算して単一のルートハッシュ値(xroot)を形成するサブコンポーネント
    とを含む、コンポーネント
    とによって特徴付けられる、システム。
  16. 前記マスキングハッシュツリー計算コンポーネントは、前記ルートハッシュ値をデジタル署名システム(6000)に提出し、かつ、受信されたデジタル署名(8000)を前記ルートハッシュ値と関連付けるサブモジュールをさらに備えることによって特徴付けられる、請求項15に記載のシステム。
  17. 前記マスキングハッシュツリー計算コンポーネントは、検証フェーズにおいて:
    指定された1つの前記デジタルレコードに対応する候補デジタル入力レコードを受信し、
    前記指定されたデジタルレコードと関連付けられた前記ブラインディングハッシュ値と、前記指定されたデジタルレコードの兄弟ノード値であって前記指定されたデジタルレコードから前記ルートハッシュ値までの前記ハッシュツリー計算構造内の計算パス内の兄弟ノード値とを、与えられた上で、前記ルートハッシュ値を再計算し、前記再計算されたルートハッシュ値と当初計算された際に得られた前記ルートハッシュ値とが等しい場合に前記候補デジタル入力レコードは前記対応する当初の入力デジタルレコードと同一であることが検証されたとみなされる、
    ことによってさらに特徴付けられる、請求項16に記載のシステム。
  18. 前記ブラインディングマスク値を、前記実質的にランダムな数(rnd)を片方の入力パラメータとして取り、かつ以前に提出されたデジタルレコードに対応するマスクされたハッシュド入力値を他方の入力パラメータとして取るハッシュ関数として計算するハッシュ計算サブモジュールであって、前記マスクされたハッシュド入力値についての前記計算は連鎖的にされる、ハッシュ計算サブモジュールによってさらに特徴付けられる、請求項15乃至請求項17のいずれか一項に記載のシステム。
  19. 前記ブラインディングマスク値を、前記実質的にランダムな数を片方の入力パラメータとして取り、かつ現在ブロック内の前記複数のデジタル入力レコード内の前記デジタル入力レコードの各々の順序に関する位置を指示するカウンターを他方の入力パラメータとして取るハッシュ関数として計算するハッシュ計算サブモジュールによってさらに特徴付けられる、請求項17に記載のシステム。
  20. 前記ハッシュツリー計算構造は、連続して減少する個数のノード値を計算することによってアグリゲートされたハッシュツリー値を計算して単一のルートハッシュ値(xroot)を形成するマークルツリーハッシング構造であって、各ノード値は少なくとも2つの下位ノード値と前記ハッシュツリー内における各ノードのレベルを指示するレベル値とについてのハッシュ関数として計算される、ことによって特徴付けられる、請求項15乃至請求項19のいずれか一項に記載のシステム。
  21. 前記デジタルレコードは、コンピュータのシステムログエントリ、syslogエントリ又はsyslog変形エントリ、rsyslogエントリ、通信装置のログされたイベント、仮想マシンの状態変化、移動体通信装置の状態変化等のシステムイベント(e(k-l), ..., e(k+5))であることによって特徴付けられる、請求項15乃至請求項20のいずれか一項に記載のシステム。
  22. キーレスな分散ハッシュツリー認証システム(2000、3000、4000、5000)によってさらに特徴付けられ、前記マスキングハッシュツリー計算コンポーネントは、前記ルートハッシュ値を前記キーレスな分散ハッシュツリー認証システムに提出し、前記ルートハッシュ値と関連付けられたデジタル署名を前記キーレスな分散ハッシュツリー認証システムから受信する、請求項16に記載のシステム。
JP2015558371A 2013-02-22 2014-02-17 より低いエントロピーを有する入力レコードについて追加的セキュリティをもたらす検証システム及び方法 Pending JP2016509443A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361768386P 2013-02-22 2013-02-22
US61/768,386 2013-02-22
US13/902,778 US20140245020A1 (en) 2013-02-22 2013-05-24 Verification System and Method with Extra Security for Lower-Entropy Input Records
US13/902,778 2013-05-24
PCT/EP2014/000429 WO2014127904A1 (en) 2013-02-22 2014-02-17 Verification system and method with extra security for lower-entropy input records

Publications (1)

Publication Number Publication Date
JP2016509443A true JP2016509443A (ja) 2016-03-24

Family

ID=51389490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015558371A Pending JP2016509443A (ja) 2013-02-22 2014-02-17 より低いエントロピーを有する入力レコードについて追加的セキュリティをもたらす検証システム及び方法

Country Status (6)

Country Link
US (1) US20140245020A1 (ja)
EP (1) EP2959631B1 (ja)
JP (1) JP2016509443A (ja)
CN (1) CN105164971A (ja)
AU (2) AU2014221033A1 (ja)
WO (1) WO2014127904A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018523369A (ja) * 2015-06-30 2018-08-16 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ハッシュ木ベースのデータ署名を処理するための方法及び機器
JP2020507866A (ja) * 2017-02-17 2020-03-12 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited データ処理方法およびデバイス
JP2021097392A (ja) * 2019-12-12 2021-06-24 株式会社bitFlyer Blockchain 証明書データをデジタルに利用可能にするための装置、方法及びそのためのプログラム

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150199217A1 (en) * 2014-01-14 2015-07-16 Cisco Technology, Inc. Entropy resource allocation management in virtualized environments
US9854436B2 (en) * 2014-09-25 2017-12-26 Intel Corporation Location and proximity beacon technology to enhance privacy and security
WO2016050285A1 (en) * 2014-09-30 2016-04-07 Telefonaktiebolaget L M Ericsson (Publ) Technique for handling data in a data network
US10498535B2 (en) * 2015-02-16 2019-12-03 Nec Corporation Method and system for verifying information of a data item in a plurality of different data items
US10396995B2 (en) 2015-02-20 2019-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Method of providing a hash value for a piece of data, electronic device and computer program
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
US9967093B2 (en) * 2015-03-25 2018-05-08 Intel Corporation Techniques for securing and controlling access to data
EP3281145B1 (en) 2015-04-10 2019-11-06 Telefonaktiebolaget LM Ericsson (publ) Verification paths of leaves of a tree
US10042782B2 (en) * 2015-06-02 2018-08-07 ALTR Solutions, Inc. Immutable datastore for low-latency reading and writing of large data sets
US10200198B2 (en) 2015-06-11 2019-02-05 PeerNova, Inc. Making cryptographic claims about stored data using an anchoring system
US9864878B2 (en) * 2015-07-27 2018-01-09 International Business Machines Corporation Event log tamper detection
US10303887B2 (en) 2015-09-14 2019-05-28 T0.Com, Inc. Data verification methods and systems using a hash tree, such as a time-centric merkle hash tree
CN105187218B (zh) * 2015-09-30 2018-11-23 谈建 一种多核心基础设施的数字化记录签名、验证方法
US9977918B2 (en) * 2015-09-30 2018-05-22 Robert Bosch Gmbh Method and system for verifiable searchable symmetric encryption
US11263351B2 (en) 2015-11-13 2022-03-01 Telefonaktiebolaget L M Ericsson (Publ) Verification of service access in a communications system
KR101977109B1 (ko) * 2015-11-17 2019-08-28 (주)마크애니 해시함수 기반의 대규모 동시 전자서명 서비스 시스템 및 그 방법
TWI569166B (zh) * 2016-01-05 2017-02-01 精品科技股份有限公司 資料驗證方法
KR101735708B1 (ko) 2016-02-02 2017-05-15 주식회사 코인플러그 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버
KR101772554B1 (ko) * 2016-02-02 2017-08-30 주식회사 코인플러그 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버
WO2017200438A1 (en) * 2016-05-19 2017-11-23 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for handling hash-tree based data signatures
US9785369B1 (en) * 2016-05-23 2017-10-10 Accenture Global Solutions Limited Multiple-link blockchain
US10552138B2 (en) * 2016-06-12 2020-02-04 Intel Corporation Technologies for secure software update using bundles and merkle signatures
CN106130718B (zh) * 2016-06-29 2019-05-21 谈建 一种数字记录的签名数据生成方法和验证方法
US10242065B1 (en) * 2016-06-30 2019-03-26 EMC IP Holding Company LLC Combining merkle trees in graph databases
GB201611948D0 (en) * 2016-07-08 2016-08-24 Kalypton Int Ltd Distributed transcation processing and authentication system
US10841097B2 (en) * 2016-07-08 2020-11-17 Mastercard International Incorporated Method and system for verification of identity attribute information
US20200111555A2 (en) * 2016-07-26 2020-04-09 Bayer Business Services Gmbh Synchronization of hierarchical data
CN106547648A (zh) * 2016-10-21 2017-03-29 杭州嘉楠耘智信息科技有限公司 一种备份数据处理方法及装置
FR3058813A1 (fr) * 2016-11-16 2018-05-18 Stmicroelectronics (Rousset) Sas Stockage dans une memoire non volatile
FR3065552A1 (fr) * 2017-04-24 2018-10-26 Mohamad Badra Procede et systeme d’authentification et de non-repudiation
US10937083B2 (en) 2017-07-03 2021-03-02 Medici Ventures, Inc. Decentralized trading system for fair ordering and matching of trades received at multiple network nodes and matched by multiple network nodes within decentralized trading system
CA3072719C (en) * 2017-08-11 2024-03-12 ALTR Solutions, Inc. Immutable datastore for low-latency reading and writing of large data sets
US10404455B2 (en) 2017-09-01 2019-09-03 Accenture Global Solutions Limited Multiple-phase rewritable blockchain
GB2568453A (en) * 2017-09-14 2019-05-22 Blockpass Idn Ltd Systems and methods for user identity
US10887090B2 (en) * 2017-09-22 2021-01-05 Nec Corporation Scalable byzantine fault-tolerant protocol with partial tee support
WO2019070227A1 (en) 2017-10-02 2019-04-11 Hewlett-Packard Development Company, L.P. DEVICE AUTHENTICATION
WO2019081919A1 (en) * 2017-10-24 2019-05-02 Copa Fin Limited STORING AND VERIFYING DATA
WO2019098873A1 (en) 2017-11-16 2019-05-23 Accenture Global Solutions Limited Blockchain operation stack for rewritable blockchain
CN108809942A (zh) * 2018-05-10 2018-11-13 山东恒云信息科技有限公司 云服务环境中对日志取证实现数据完整性验证的方法
BE1026342B9 (fr) * 2018-06-04 2020-02-04 Worldline Sa Dispositif et procede pour l'identification securisee d'un utilisateur
US10873462B1 (en) * 2018-06-21 2020-12-22 Onu Technology, Inc. Verification of computation by untrusted source
EP3588841A1 (en) * 2018-06-22 2020-01-01 QuBalt GmbH Method and device for executing an authentication scheme
EP3588842A1 (en) * 2018-06-22 2020-01-01 QuBalt GmbH Method and device for executing an authentication scheme
EP3588843A1 (en) * 2018-06-22 2020-01-01 QuBalt GmbH Method and system for executing an information-theoretically secure authentication scheme
US20220078006A1 (en) * 2018-12-31 2022-03-10 Guardtime Sa Verifiable object state data tracking
US10778452B2 (en) * 2019-06-03 2020-09-15 Alibaba Group Holding Limited Blockchain ledger authentication
US10880260B1 (en) 2019-06-19 2020-12-29 Etherweb Technologies LLC Distributed domain name resolution and method for use of same
KR102218297B1 (ko) * 2019-08-01 2021-02-24 주식회사 블룸테크놀로지 원장의 증명 가능 프루닝 시스템
US11201746B2 (en) 2019-08-01 2021-12-14 Accenture Global Solutions Limited Blockchain access control system
EP3846383A1 (de) * 2019-12-30 2021-07-07 QuantiCor Security GmbH Kryptographisches signatursystem
US10846372B1 (en) * 2019-12-31 2020-11-24 Onu Technology Inc. Systems and methods for trustless proof of possession and transmission of secured data
US20210336789A1 (en) * 2020-03-30 2021-10-28 Facebook, Inc. Deterministic sparse-tree based cryptographic proof of liabilities
CN111818074B (zh) * 2020-07-17 2022-08-05 上海朝夕网络技术有限公司 一种基于芯片的分布式网络节点认证方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001011843A1 (en) * 1999-08-06 2001-02-15 Sudia Frank W Blocked tree authorization and status systems
JP2007129507A (ja) * 2005-11-04 2007-05-24 Hitachi Ltd 電子文書の真正性保証方法および電子文書の公開システム
JP2007515890A (ja) * 2003-12-22 2007-06-14 リナックスプローブ株式会社 デジタル証明書を生成するためのシステムおよび方法
JP2008005156A (ja) * 2006-06-21 2008-01-10 Matsushita Electric Ind Co Ltd 情報処理端末および状態通知方法
JP2008527556A (ja) * 2005-01-12 2008-07-24 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 無線周波数識別タグセキュリティシステム
US7502972B1 (en) * 2008-03-16 2009-03-10 International Business Machines Corporation Reducing log entries using hash keys
US20090113109A1 (en) * 2007-10-26 2009-04-30 Vmware, Inc. Using Virtual Machine Cloning To Create a Backup Virtual Machine in a Fault Tolerant System

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2288476A (en) * 1994-04-05 1995-10-18 Ibm Authentication of printed documents.
US7546298B2 (en) * 2001-01-09 2009-06-09 Nextair Corporation Software, devices and methods facilitating execution of server-side applications at mobile devices
US7257711B2 (en) * 2001-11-08 2007-08-14 The Johns Hopkins University Efficient authenticated dictionaries with skip lists and commutative hashing
US7634651B1 (en) * 2005-10-21 2009-12-15 Intuit Inc. Secure data transmission web service
US7705753B2 (en) * 2005-10-22 2010-04-27 Sytex, Inc. Methods, systems and computer-readable media for compressing data
US8943332B2 (en) * 2006-10-31 2015-01-27 Hewlett-Packard Development Company, L.P. Audit-log integrity using redactable signatures
US8819762B2 (en) * 2007-01-31 2014-08-26 Tufin Software Technologies Ltd. System and method for auditing a security policy
US8037145B2 (en) * 2007-09-30 2011-10-11 Symantec Operating Corporation System and method for detecting email content containment
WO2010011342A1 (en) * 2008-07-25 2010-01-28 Brown University Apparatus, methods, and computer program products providing dynamic provable data possession

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001011843A1 (en) * 1999-08-06 2001-02-15 Sudia Frank W Blocked tree authorization and status systems
JP2007515890A (ja) * 2003-12-22 2007-06-14 リナックスプローブ株式会社 デジタル証明書を生成するためのシステムおよび方法
JP2008527556A (ja) * 2005-01-12 2008-07-24 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー 無線周波数識別タグセキュリティシステム
JP2007129507A (ja) * 2005-11-04 2007-05-24 Hitachi Ltd 電子文書の真正性保証方法および電子文書の公開システム
JP2008005156A (ja) * 2006-06-21 2008-01-10 Matsushita Electric Ind Co Ltd 情報処理端末および状態通知方法
US20090113109A1 (en) * 2007-10-26 2009-04-30 Vmware, Inc. Using Virtual Machine Cloning To Create a Backup Virtual Machine in a Fault Tolerant System
US7502972B1 (en) * 2008-03-16 2009-03-10 International Business Machines Corporation Reducing log entries using hash keys

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018523369A (ja) * 2015-06-30 2018-08-16 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ハッシュ木ベースのデータ署名を処理するための方法及び機器
US10482078B2 (en) 2015-06-30 2019-11-19 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for handling hash-tree based data signatures
JP2020507866A (ja) * 2017-02-17 2020-03-12 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited データ処理方法およびデバイス
US11392612B2 (en) 2017-02-17 2022-07-19 Advanced New Technologies Co., Ltd. Data processing method and device
JP2021097392A (ja) * 2019-12-12 2021-06-24 株式会社bitFlyer Blockchain 証明書データをデジタルに利用可能にするための装置、方法及びそのためのプログラム

Also Published As

Publication number Publication date
CN105164971A (zh) 2015-12-16
EP2959631B1 (en) 2019-06-26
EP2959631A1 (en) 2015-12-30
AU2017272163A1 (en) 2017-12-21
WO2014127904A1 (en) 2014-08-28
AU2014221033A1 (en) 2015-09-10
AU2017272163B2 (en) 2019-12-05
US20140245020A1 (en) 2014-08-28

Similar Documents

Publication Publication Date Title
AU2017272163B2 (en) Verification system and method with extra security for lower-entropy input records
Zhu et al. Enabling generic, verifiable, and secure data search in cloud services
CN109829326B (zh) 基于区块链的跨域认证与公平审计去重云存储系统
US10911457B2 (en) Immediate policy effectiveness in eventually consistent systems
Wang et al. Enabling public auditability and data dynamics for storage security in cloud computing
Wang et al. Enabling public verifiability and data dynamics for storage security in cloud computing
EP3031169B1 (en) Document verification with id augmentation
US8719576B2 (en) Document verification with distributed calendar infrastructure
US10200199B2 (en) Strengthened entity identity for digital record signature infrastructure
EP2761487B1 (en) Parameter based key derivation
CN108322306A (zh) 一种基于可信第三方的面向隐私保护的云平台可信日志审计方法
He et al. ROAchain: Securing route origin authorization with blockchain for inter-domain routing
Dong et al. Conifer: centrally-managed PKI with blockchain-rooted trust
CN107347073B (zh) 一种资源信息处理方法
CN116827821B (zh) 基于区块链云应用程序性能监控方法
Chen et al. A remote data integrity checking scheme for big data storage
Chen et al. Ensuring dynamic data integrity with public auditability for cloud storage
Abbdal et al. An Efficient Public Verifiability and Data Integrity Using Multiple TPAs in Cloud Data Storage
Xu et al. A Dynamic Blockchain-Based Mutual Authenticating Identity Management System for Next-Generation Network
Bo A chameleon hash authentication tree optimisation audit for data storage security in cloud calculation
Zaid et al. Blockchain based integrity assurance framework for COVID‐19 information management & decision making at National Command Operation Center, Pakistan
George et al. Safest Secure and Consistent Data Services in the Storage of Cloud Computing
Lin et al. Ldasip: A Lightweight Dynamic Audit Approach for Sensitive Information Protection in Cloud Storage
Hariharan et al. PUBLIC AUDITING USING IDENTITY BASED CRYPTOSYSTEMS ON MULTI-COPY DATA INTEGRITY IN CLOUD.
Spanier et al. Securing Zero Trust Networks: the Decentralized Host-to-Host Authentication Policy Enforcement

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170425

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170725

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180403