Gt technology(j)-201305
- 2. ハッシュ関数
! GuardTimeの技術は、ハッシュ暗号関数に基づいています。
2
! ハッシュ関数は、暗号的
に安全な一方向の処理を
行います。任意サイズの
データを入力し、ユニーク
な固定長ビット列を出力し
ます。
入力データ
ハッシュ関数
ハッシュ値
イメージを表示できません。メモリ不足のためにイメージを開くことができないか、イメージ
が破損している可能性があります。コンピューターを再起動して再度ファイルを開いてくださ
い。それでも赤い x が表示される場合は、イメージを削除して挿入してください。
AXSJ76SNWCRVRVLF
FAONRDNZG4VUSU2
HAS7DJWZR2U
一方向
不可逆
イメージを
表示できま
せん。メモ
リ不足のた
めにイメー
ジを開くこ
とができな
いか、イメ
! 出力はハッシュ値、
メッセージダイジェ
スト或いはフィン
ガープリントなどを
呼ばれます。
- 3. ハッシュツリー
! ハッシュツリーは、複数のハッシュ値を入力し、繰り返しハッシュ関数を実行し、一
つのルートハッシュを生成します。
3
! 上図で、ハッシュツリーのリーフノードとして、8つのハッシュ値を持っています。
! x1
から
x8
は入力ハッシュ (リーフノー
ド)
! h()はハッシュ関数
! |
は文字列の結合
Note:
h(x1|x2)
≠
h(x2|x1)
Data
Item
- 4. ハッシュチェーン
! 上図の例では、 x3
のオーナーは {x4,
x12,
x58}
と連結の順番を示す “位
置ビット” {1,0,1}
を持ちます。これを使い、ルートハッシュを再生成し確か
にx3
が計算に使われていたことを証明します。
4
! ハッシュチェーンは、ツリー上の
あるリーフハッシュからルート
ハッシュを生成するため必要と
なる情報です。
- 5. 分散ハッシュツリー
! GuardTime
は毎秒グローバル分散
ハッシュツリーを生成し破壊します。
! ツリーは、階層的に離れた場所に設置
されたノード「アグリゲーター」を使って
構築します。
! 各アグリゲーターは、非同期で処理を
行います。子ノードからハッシュ値を受
け取り、ハッシュツリーを生成し、複数
の親ノードにルートハッシュを送ります。
5
! アグリゲーターは、ステートレスで仮想マシンや専用ハードウエア上で稼働します。
! 理論上、毎秒264まで入力できます。
- 6. キーレス署名
! 顧客のアプリケーションが、署名す
るデータのハッシュ値(青丸)をツ
リーに送ります。
! 顧客が受け取ったキーレス署名に
は、ハッシュ値(赤丸)と位置ビット
で構成されるハッシュチェーンを含
んでいます。この情報でトップルー
トハッシュ値を再生成することが出
来ます。
! GuardTimeシステムでは、このハッ
シュチェーンをローカルハッシュ
チェーンと呼んでいます。
6
- 7. カレンダー
! 分散ハッシュツリーのルートハッシュ値(サービスを開始してから毎秒一
つづつ生成される)を、「カレンダー」と呼ぶ公表データベースに保管しま
す。
7
- 8. 公表
! カレンダーハッシュ値は、定期的に集約し「公表コード」と呼ぶハッシュ値を生成し、電子的に
公表するとともに世界で配布される媒体に物理的に公表します。全ての署名は、署名した後
発行されるどの「公表コード」にトレースすることが出来ます。
! 公表は毎月行います。公表コードはフィナンシャルタイムズのマーケット版に掲載されます。幅
広く、信頼できるメディアに掲載されていることが、GuardTimeの信用根拠(トラストアンカー)と
なります。
8
- 9. サービスの実装
! 顧客は署名サーバを経由し
てGuardTimeのサービスをイ
ンタラクティブに利用します。
! プライベートサーバー:
顧客の
ファイアウオールの後ろに実
装します。
! パブリックサーバー:
GuardTimeが運用します。
! 署名サーバは署名と検証
サービスの両方を提供します。
9
- 10. 署名サービス
! 顧客は、署名するデータの
ハッシュ値を送ると、最初の
集約が行われ、ルートハッ
シュ値が複数のアグリゲータ
に送られます。
! 署名サーバがアグリゲータ
の一つから応答を受け取っ
たら、署名をアプリケーショ
ンに戻します。
10
- 11. 完全性の証明 I
! まず最初に、署名から取出したヒストリーハッシュチェーンを使ってグ
ローバルルートハッシュ値を再生成することで、完全性を証明します。
! これは次の様に表わすことが出来ます。
! 検証するデータのハッシュ値(x3)を再生成します。
! 署名からヒストリーハッシュチェーン(x4,
x12,
and
x58),
{1,0,1}を取り出します。
! 計算:
x34=h(x3|x4),
x14=h(x12|x34),
xroot=h(x14|x58)
11
- 12. 完全性の証明 II
! グローバルルートハッシュ値が算出されば、カレンダーのヒストリー
ハッシュチェーンを使って、公表コードを再計算できます。
下図で、ヒストリーハッシュチェーンは赤線、ハッシュ値は赤丸で示されます。
12
! GuardTime
は、検証時に
GuardTimeサービスがなくで
も、オフラインで独立して検
証できるツール(MicrosoW
Excel
等)を提供します。
- 14. 時刻の証明
14
1
ステップ
合成
ハッシュ
合成ハッシュ
の方向
グローバルルー
トハッシュの時刻
公表時刻
0
12
1
4
0
0+8=8
12-‐8=4
2
3
1
8
4-‐1=3
3
2
0
8+2=10
3-‐2=1
4
1
1
10
1-‐1=0
120トップルートハッシュ時刻
2
3
4
8 10
ルートハッシュからハッシュチェーンの情
報を使って、グローバルルートハッシュ
(緑ドット)の時刻を計算します。
• 合成されたハッシュが左から合成され
ていれば、左のバイナリーツリーの秒数
をグローバルルートハッシュ時刻に加算、
公表時刻から差し引きます。
• 逆にハッシュが右から合成されている
場合、公表時刻から1を差し引きます。
- 15. データ源の証明
! アグリゲーションサーバの階層は、
階層上の位置を示します。
! 各アグリゲータノードは、親ノード
のハッシュツリーで、名前と論理
的な位置を与えられます。
! この情報は、署名の中に埋め込
まれ、各署名に次のような識別子
を提供します:
15
! 認証サーバーと別途接続することにより、ユーザレベルの証明を提供すること
が出来ます:
Na,onalAggregator:StateAggregator:CompanyName:UserName
Na,onalAggregator:StateAggregator:CompanyName
- 17. 冗長性
! 各アグリゲータは、複数の親ノードを持
ち、リクエストは全ての親に送ります。
! 最初のリスポンスが採用され、後は破棄
されます。
! これにより、ネットワークやサーバに障
害があった場合、自動的に迂回します。
! システム上のボトルネックはありません。
17
- 18. コアクラスター
! 最上位のアグリゲーターをコアクラスター
と呼びます。
! アベイラビリティを確保する為に、複数の
最上位アグリゲーターが必要です。しかし、
毎秒1ルートハッシュ値だけがカレンダー
に送られます。
! 「バイザンチンジェネラル」に類似する問
題は、独自に開発したコアサーバ間の通
信プロトコルで解決されます。
! 各コアは、原子時計を持ち他のコアと同
期しています。
! 時計の精度は、どのユーザでもリアルタイ
ムに監査出来ます。
18