SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
Bitcoinの技術的課題の整理と議論
2014.6.2
セコム株式会社 IS研究所
暗号・認証基盤グループ
佐藤 雅史
1
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
Bitcoinの技術的課題の整理と議論
2014.6.2
日本ネットワークセキュリティ協会
電子署名WG サブリーダー
佐藤 雅史
2
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
自己紹介
• 佐藤 雅史 (さとう まさし)
• 普段は主に電子署名屋さんです。
• 標準化とかやっています。
– JIS X 5092:2008 CMS利用電子署名(CAdES)の長期署名プロファイル
– JIS X 5093:2008 XML署名利用電子署名(XAdES)の長期署名プロファ
イル
– ISO 14533-1:2012, Long term signature profiles – Part 1: Long
term signature profiles for CMS Advanced Electronic Signatures
(CAdES)
– ISO 14533-2:2012, Long term signature profiles – Part 2: Long
term signature profiles for XML Advanced Electronic Signatures
(XAdES)
– ISO 14533-3 (計画中)
• 主な活動の場
– JNSA, TBF(Time Business Forum), JIPDEC
3
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの特徴
(簡単なおさらい)
• コイン所有権の移動をトランザクションの履
歴で管理する。
– コインの使用を表明するのに電子署名を用いる。
• トランザクションの存在を証明するためにブ
ロック(台帳のようなもの)を生成しネット
ワーク参加者で共有する。
– ブロック生成者は新しいコインや発生した取引手
数料を獲得できる(マイニング)。
• コイン発行や使用に関してコントロールする
中央の機関は存在しない。
4
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
いきなり余談ですが…
(電子署名屋さんぽいことを…)
5
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
電子署名屋さんから見たビットコイン
• タイムスタンプ
– 第三者的に証明可能な電子データの存在証明。
(ある時間にそのデータが存在した証明)
– よく電子署名と組み合わせて使われる。
• ビットコインはP2P型のタイムスタンプ
6
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
タイムスタンプ技術(1)
~ PKI(公開鍵基盤)方式 ~
7
電子データ
(文書ファイル、画像、etc.)
認証局(CA)
時刻配信
時刻配信局
TimeStamp
2014.6.2
15:00:00
電子データの
ハッシュ値
公開鍵証明書
(TSA証明書)の発行
タイムスタンプ局(TSA)
TSA証明書(公開鍵)を
使ってタイムスタンプの署名
を検証。
公開鍵とペアの秘密鍵を
使って、時刻情報を入れて
ハッシュ値に署名する。
標準規格:RFC 3161, ISO/IEC 18014-2
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
タイムスタンプ技術(2)
~ リンキング方式 ~
8
引用元:https://www.ipa.go.jp/security/pki/093.html
Time-Stamping Authority
標準規格:ISO/IEC 18014-3
ハッシュアルゴリズムが脆弱化しない限り有効。
逆に言えば、ハッシュアルゴリズムの移行が困難。
(ビットコインも同様の問題がある?)
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
タイムスタンプ技術(3)
~ ERS(Evidence Record Syntax)方式 ~
9
h123
h12 h3
h1 h2abc
データグループ2 データグループ3
データ
d3
データ
d2a
データグループ1
データ
d1
データ
d2b
データ
d2a
h2a h2b h2c
hash
hash
hash
hash
hash
hash hash hash
PKI方式
タイムスタンプ局(TSA)
TimeStamp
2014.6.2
15:00:00
ハッシュツリーの頂点に
時刻情報を入れて署名する。
標準規格:RFC 4998, RFC 6283
PKI方式タイムスタンプを用いたリンキングのような仕組み。
ハッシュアルゴリズムの移行ができる。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインのタイムスタンプ
10
従来のタイムスタンプ ビットコインのタイムスタ
ンプ
信頼のモデル 信頼できる第三者機関
が存在する。
中央の機関は存在しない。
多数決による合意。
対象とするデータ 任意の電子データ。
(文書、画像データ、
ログ等)
ビットコインのトランザク
ション(基本的には…)。
ビジネスモデル タイムスタンプ付与者
または検証者への課金。
利用者は無料(minerが獲
得する発掘コインと
Transaction Fee)
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインを用いた存在証明①
~Proof of Existence~
11
http://www.proofofexistence.com/
• 存在証明したい文書のハッシュ値(SHA256)
を作る。
• 文書のハッシュ値とマーカーをビットコイン
トランザクションのOutput Scriptに格納す
る。
 Output Scriptの格納には
OP_RETURNを用いる。
 OP_RETURNの後ろには任意のデータ
(40bytesまで)を入れられる。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインを用いた存在証明①
~Proof of Existence~
12
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインを用いた存在証明①
~Proof of Existence~
13
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインを用いた存在証明②
~Virtual Notary~
14
http://virtual-notary.org/
Cornell University
Computer Science Department
• 存在証明したい文書やWebサイトに対して
X.509属性証明書を発行する。
• X.509属性証明書のハッシュチェーンを作り、
順序関係を担保する。
• ハッシュチェーンの最新状態をTwitterと
ビットコインネットワークに流すことで
第三者証明を可能にする。
• 24時間ごとにビットコイントランザクションの
Output Script(たぶんOP_RETURN)に
その時の最新ハッシュ値を埋め込んで流す。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
本題に入ります
15
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの気になるところ
• ビットコインに対する攻撃
– ビットコインの盗難
– ビットコインの二重使用
– ビットコインの二重取り
(トランザクション展性)
• ブロックチェーンの肥大化
• 暗号アルゴリズムの脆弱化
• etc.
16
今日触れるのは
このあたりのお話
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインを不正に得るには?
• 人様のビットコインを盗む
• 自分のビットコインを不正に増やす
(二重使用)
• 他者から二重取りする
(コイン受領の否認)
17
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの気になるところ
• ビットコインに対する攻撃
– ビットコインの盗難
– ビットコインの二重使用
– ビットコインの二重取り
(トランザクション展性)
• ブロックチェーンの肥大化
• 暗号アルゴリズムの脆弱化
18
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ウォレット盗難の脅威
• PC/デバイスでの管理
– マルウェア感染によるウォレット流出の脅威
– 暗号(パスワード)はかけられるが、キーロガーを
仕掛けられたり、ウォレット取得後にブルート
フォースを掛けられたら…
– ウォレットのバックアップについても注意が必要
• 盗難ではないが、古いバックアップをリストアしてしない新
しい鍵が消失してしまう事故も…
• オンラインサービスでのウォレット管理
– そのサービスに脆弱性があった場合の秘密鍵流出や
不正使用など
– そもそも、そのサービスは信用できるのか?
19
ウォレット(トランザクションの署名に使う秘密鍵)
の管理はとっても大事!
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
オフライン管理による保護①
20
• オンラインPC(ネットワーク接続したトランザクション受信専用
PC)とオフラインPC(ネットワークに接続しない署名専用PC)の
2台に分割して管理する。
• 送金する場合には、オンラインPCで生成したトランザクションデー
タ(署名なし)に対してオフラインPCで署名を行う。トランザク
ションデータはUSBキーを用いて移動させる。
• 専用ウォレット管理ソフト ARMORY
https://bitcoinarmory.com/
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
オフライン管理による保護②
21
• http://www.pi-wallet.com/
• 前述のARMORYをRaspberry Pi
に組み込んだもの
• オフラインウォレットのために別
のPCを用意する必要がなくなる。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの気になるところ
• ビットコインに対する攻撃
– ビットコインの盗難
– ビットコインの二重使用
– ビットコインの二重取り
(トランザクション展性)
• ブロックチェーンの肥大化
• 暗号アルゴリズムの脆弱化
22
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重使用
ホントは自分のコインを使っちゃったんだ
けど、使ったことをみんなに内緒にできれ
ば…
無限に使えるコインができるじゃないか!
23
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
0-confirmation (Fast) payment
におけるコイン二重使用
24
消費者Aの
ノード
ショップBの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード
商品・サービスの提供
ブロック(台帳)への
反映を確認しない。
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Aの支援
ノード
Aの支援
ノード
TX_Xと入力は同じで
出力が異なる
[トランザクションY]
消費者Aが
自分へ送金
TX_Y
TX_X
直接送信
[トランザクションX]
消費者Aが
ショップBへ送金
(参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “,
Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
0-confirmation (Fast) payment
におけるコイン二重使用
25
消費者Aの
ノード
ショップBの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード
商品・サービスの提供
ブロック(台帳)への
反映を確認しない。
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Aの支援
ノード
Aの支援
ノード
TX_Xと入力は同じで
出力が異なる
[トランザクションY]
消費者Aが
自分へ送金
TX_Y
TX_X
直接送信
[トランザクションX]
消費者Aが
ショップBへ送金
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
(参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “,
Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
0-confirmation (Fast) payment
におけるコイン二重使用
26
消費者Aの
ノード
ショップBの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード
商品・サービスの提供
ブロック(台帳)への
反映を確認しない。
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
TX_X
TX_X
Aの支援
ノード
Aの支援
ノード
TX_Xと入力は同じで
出力が異なる
[トランザクションY]
消費者Aが
自分へ送金
TX_Y
TX_X
直接送信
[トランザクションX]
消費者Aが
ショップBへ送金
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
(参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “,
Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
0-confirmation (Fast) payment
におけるコイン二重使用
27
消費者Aの
ノード
ショップBの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード
商品・サービスの提供
ブロック(台帳)への
反映を確認しない。
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
TX_X
TX_X
Aの支援
ノード
Aの支援
ノード
TX_Xと入力は同じで
出力が異なる
[トランザクションY]
消費者Aが
自分へ送金
TX_Y
TX_X
直接送信
[トランザクションX]
消費者Aが
ショップBへ送金
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
ブロック
(台帳)
TX_Y
(参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “,
Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
0-confirmation (Fast) payment
におけるコイン二重使用
28
消費者Aの
ノード
ショップBの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード
商品・サービスの提供
ブロック(台帳)への
反映を確認しない。
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
TX_X
TX_X
Aの支援
ノード
Aの支援
ノード
TX_Xと入力は同じで
出力が異なる
[トランザクションY]
消費者Aが
自分へ送金
TX_Y
TX_X
直接送信
[トランザクションX]
消費者Aが
ショップBへ送金
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
ブロック
(台帳)
TX_Y
TX_Xは反映さ
れていない。
TX_Xは不成立。
(参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “,
Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
0-confirmation (Fast) payment
におけるコイン二重使用
29
消費者Aの
ノード
ショップBの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード
商品・サービスの提供
ブロック(台帳)への
反映を確認しない。
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
TX_X
TX_X
Aの支援
ノード
Aの支援
ノード
Xと入力は同じで
出力が異なる
[トランザクションY]
消費者Aが
自分へ送金
TX_Y
TX_X
直接送信
[トランザクションX]
消費者Aが
ショップBへ送金
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
ブロック
(台帳)
TX_Y
支援ノードが複数
いる方が成功率が
高い
ショップ側の接続
ノードが少ないほ
ど成功率が高い。
防御策:
Incoming 接続
の禁止。
信頼できるノー
ドへの接続。
(参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “,
Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
N-Confirmations
• 0-Confirmationによる取引はリスクを考慮
する必要がある。高額取引には推奨されない。
• トランザクション発生後、N個のブロック生
成を待った後にトランザクションの確認を
行ったほうがよい(N-Confirmations)。
– 例えば、bitcoinオリジナルクライアントでは6
confirmationsが設定されている。
• N-Confirmationsに関する考察
– Analysis of hashrate-based double-
spending, Meni Rosenfeld, Dec 2012
30
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーンのブランチ
31
ブロックチェーンが分岐しても、ビットコインネットワークは最長の
ブロックチェーン(緑のブロック)を受け入れる。
ブロックチェーン
ブロック
1
ブロック
2
ブロック
3
ブロック
4a
ブロック
5
ブロック
6
ブロック
4b
(分岐)
○
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーンのキャッチアップ
32
ブロック
1
ブロック
2
ブロック
3
ブロック
4a
ブロック
5a
ブロック
4b
(分岐)
攻撃者以外の
ブロックチェーン
ブロック
5b
(分岐)
ブロック
6b
(分岐)
攻撃者が生成する
ブロックチェーン
攻撃者が他のノードよりも先にブロック生成を行い、
最長のブロックチェーンを作り出すことができれば、
攻撃者にとって都合の良いブロックを認めさせることができる。
(例えば、自分のコインの2重使用を可能にするトランザクションを含める等)
○
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーン乗っ取りによる
攻撃の成功率
33
(引用元) “Analysis of hashrate-based double-spending”, Meni Rosenfeld
ネットワーク全体における攻撃者の占める
ハッシュレート(計算能力)の比率
攻
撃
の
成
功
率
nはコイン取得者が
実施するconfirmation
(確認するブロック)の数
n=10
n=2
n=8
n=6
n=4
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーン乗っ取りによる
コイン二重使用の成功率
34
(引用元) “Analysis of hashrate-based double-spending”, Meni Rosenfeld
ネットワーク全体における攻撃者の占める
ハッシュレート(計算能力)の比率
攻
撃
の
成
功
率
n=10
n=2
n=8
n=6
n=4
6 confirmationsを行えば
10%の計算力を持った
攻撃者に対して
成功率は0.1%以下になる。
nはコイン取得者が
実施するconfirmation
(確認するブロック)の数
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーン乗っ取りによる
コイン二重使用の成功率
35
(引用元) “Analysis of hashrate-based double-spending”, Meni Rosenfeld
ネットワーク全体における攻撃者の占める
ハッシュレート(計算力)の比率
攻
撃
の
成
功
率
nはコイン取得者が
実施するconfirmation
(確認するブロック)の数
n=10
n=2
n=8
n=6
n=4
攻撃者が50%以上の計算力
を持つとき、nによらず成功
率はほぼ100%となる。
n confirmationsは無力。
51%(>50%)攻撃
nはコイン取得者が
実施するconfirmation
(確認するブロック)の数
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
N-Confirmations
• 0-Confirmationによる取引はリスクを考慮
する必要がある。高額取引には推奨されない。
• トランザクション発生後、N個のブロック生
成を待った後にトランザクションの確認を
行ったほうがよい(N-Confirmations)。
– 例えば、bitcoinオリジナルクライアントでは6
confirmationsが設定されている。
– 51%攻撃が実行されないという前提が必要か
• N-Confirmationsに関する考察
– Analysis of hashrate-based double-
spending, Meni Rosenfeld, Dec 2012
36
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
現在のハッシュレート
(2014.6.1現在)
37
36%
14%
13%
8%
ソース:blockchain.info
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
51%(>50%)攻撃による効果
38
• 二重使用以外にも攻撃者に都合よく仕向け
ることができる。
– 他者のトランザクションのconfirmationを妨
害できる。
– 他者のマイニングを妨害できる。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの気になるところ
• ビットコインに対する攻撃
– ビットコインの盗難
– ビットコインの二重使用
– ビットコインの二重取り
(トランザクション展性)
• ブロックチェーンの肥大化
• 暗号アルゴリズムの脆弱化
39
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
40
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Cの支援
ノード
Cの支援
ノード
コイン引き出し
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
41
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Cの支援
ノード
Cの支援
ノード
TX_Y
[トランザクションY]
TXID: Y
銀行Bから
利用者Aへ送金
TXIDだけを改変。
TX_XとTXID以外は
全く同じ内容。
コイン引き出し
[トランザクションX]
TXID: X
銀行Bから
利用者Aへ送金
※図の都合上、TX_Xを直接送る絵になってます。
TX_X
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
42
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Cの支援
ノード
Cの支援
ノード
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
TX_Y
[トランザクションY]
TXID: Y
銀行Bから
利用者Aへ送金
TXIDだけを改変。
TX_XとTXID以外は
全く同じ内容。
コイン引き出し
[トランザクションX]
TXID: X
銀行Bから
利用者Aへ送金
※図の都合上、TX_Xを直接送る絵になってます。
TX_X
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
43
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
TX_X
TX_X
Cの支援
ノード
Cの支援
ノード
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
TX_Y
[トランザクションY]
TXID: Y
銀行Bから
利用者Aへ送金
TXIDだけを改変。
TX_XとTXID以外は
全く同じ内容。
コイン引き出し
[トランザクションX]
TXID: X
銀行Bから
利用者Aへ送金
※図の都合上、TX_Xを直接送る絵になってます。
TX_X
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
44
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
TX_X
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
TX_X
TX_X
Cの支援
ノード
Cの支援
ノード
TX_YTX_Y
TX_Y
TX_Y
TX_Y
TX_Y
ブロック
(台帳)
TX_Y
TX_Y
[トランザクションY]
TXID: Y
銀行Bから
利用者Aへ送金
TXIDだけを改変。
TX_XとTXID以外は
全く同じ内容。
コイン引き出し
[トランザクションX]
TXID: X
銀行Bから
利用者Aへ送金
※図の都合上、TX_Xを直接送る絵になってます。
TX_X
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
45
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Cの支援
ノード
Cの支援
ノード
コイン届いてないよ?
ブロック
(台帳)
TX_Y
TX_X
(ブロック内のトラン
ザクションIDを確認)
あれ?ブロックに
がないぞ。
再送(別コイン)するわ。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
46
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Cの支援
ノード
Cの支援
ノード
コイン届いてないよ?
ブロック
(台帳)
TX_Y
TX_X
(ブロック内のトラン
ザクションIDを確認)
あれ?ブロックに
がないぞ。
再送(別コイン)するわ。
[トランザクションZ]
TXID: Z
銀行Bから
利用者Aへ送金
TX_Z
TX_Y
TX_Z
両方ゲット!
ウマー!
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
コインの二重取り
47
利用者Aの
ノード
銀行Bの
ノード
一般の
ノード
一般の
ノード
一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード 一般の
ノード
一般の
ノード
一般の
ノード
Cの支援
ノード
Cの支援
ノード
コイン届いてないよ?
ブロック
(台帳)
TX_Y
TX_X
(ブロック内のトラン
ザクションIDを確認)
あれ?ブロックに
がないぞ。
再送(別コイン)するわ。
[トランザクションZ]
TXID: Z
銀行Bから
利用者Aへ送金
TX_Z
TX_Y
TX_Z
両方ゲット!
ウマー!
TX_Xと等価な内容(コインの使用)は記録されているので、
コインの二重使用とは異なる。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
トランザクションIDに対する不正な操作
~トランザクション展性(Transaction Malleability)~
48
バージョン番号
入力トランザクション数
入力トランザクションリスト
…
入力トランザクション
出力トランザクションリスト
出力トランザクション
…
出力トランザクション
出力トランザクション数
ロック時間
入力トランザクション
前の出力トランザクション
の参照
署名スクリプト長さ
署名スクリプト
(署名検証のための命
令コード、署名値)
シーケンス番号
入力トランザクション
トランザクションデータ
ハッシュ関数
(SHA256
×2回)
トランザクションID
(ハッシュ値)
以外の箇所を不正に修正すると署名値が不一致するため、
データ改ざんとして検知される。署名値を変えても検知される。
署名値の内容を変えずに の箇所を微調整できれば、全く異なるハッシュ値
(ID)を生成させることができる(ハッシュ関数の性質)。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
トランザクションIDの改変方法例①
(署名値の操作)
49
入力トランザクション
前の出力トランザクション
の参照
署名スクリプト長さ
署名スクリプト
(署名検証のための命
令コード、署名値)
シーケンス番号
署名スクリプト
署名値の構造:DER(Distinguished Encoding Rules)による符号化
SEQ SEQ長さ INT INT長さ INT値 INT INT長さ INT値
INT INT長さ+00の数 00を挿入+元のINT値
DERでは最短の整数値を用いる。つまり、先頭に00が続くのはNG。
Bitcoinクライアントが使用していたOpenSSLのバグで00を挿入した
データも受け入れてしまっていたようだ。
データの意味を変えずに
書き換える
署名値
署名値をいじるケース
操作命令をいじるケース
操作命令の結果に影響を与えない命令を
挿入する。
例えば、意味のないDROP命令の挿入など。
操作命令
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
トランザクションIDの改変方法例②
(異なる署名値への置換)
50
ECDSA (楕円曲線暗号を用いた署名アルゴリズム)
による署名生成
共通パラメータ ・楕円曲線の関数
・楕円曲線上の点G
・Gの位数n
署名に使う秘密鍵 d
検証に使う公開鍵 Q=d*G
署名値
(署名対象データ:M)
点 k*G=(x1, y1) (k ∈[1, n-1])を決め
て以下を計算。
r = x1 mod n
s = (hash (M) + dr)/k mod n
-k*G=(x1, -y1)を使って
署名値だけ変えられる(これも正しく検証できる)。
署名値
(署名対象データ:M)
k’= -k mod nに置換すれば
r はそのまま
s’ = -s mod n
トランザクション中の署名値をS→S’に置換すれば、署名を無効化せずに、
トランザクションID(ハッシュ値)を変えることができる。
k*G
-k*G
y
x
x1
y1
-y1
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
データ正規化の必要性
51
ハッシュ関数データ
署名
アルゴリズム
(必要に応じて)
データ
正規化
ハッシュ値
や
署名値
一般的にデータに対してハッシュ関数や署名演算をかけるときには、
同じデータに対して出力される値が一意になるようにデータの正規化を行う。
(電子署名屋さんにとっては常識?)
ビットコインはデータ正規化が甘かったのかも(当初は複数の実装がなかったせい?)。
一部のデータ正規化については、オリジナルクライアントは対応済(v0.8, 2013年頃)。
その他の正規化は? オリジナルクライアント以外の実装は???
データのフォーマットが一意になるように
決められたルールのもとにデータを整形する。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの気になるところ
• ビットコインに対する攻撃
– ビットコインの盗難
– ビットコインの二重使用
– ビットコインの二重取り
(トランザクション展性)
• ブロックチェーンの肥大化
• 暗号アルゴリズムの脆弱化
52
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーンの肥大化
53
1年間(2013年6月~)
おおよそ18GBくらい
現在、全ブロックチェーンをダウンロードしようとすると
結構な時間がかかります(数日とか…)
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーンの肥大化
54
全期間(2009年~)
ここ1年くらいの伸びがすごい!
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ブロックチェーンの肥大化への対策
55
• ビットコインネットワーク上でのブロックチェーン
の圧縮が必要?
– すでに検討されている?
• アプリケーションによる必要なトランザクション
データの抽出
– 軽量クライアント用に既に拡張されている。
• Bloom filterを使って自分に関係しそうな(プライバシーへ配
慮)トランザクションデータのみをダウンロードする。
• トランザクションデータを提供するノードへの依存性が高く
なる。
• Multibit, BitCoin Walletでサポート
• 将来、ブロックの蓄積や検証についても分業化が進
む可能性がある?
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの気になるところ
• ビットコインに対する攻撃
– ビットコインの盗難
– ビットコインの二重使用
– ビットコインの二重取り
(トランザクション展性)
• ブロックチェーンの肥大化
• 暗号アルゴリズムの脆弱化
56
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの暗号やハッシュ
57
• 暗号が使われている箇所
– トランザクションへの署名[公開鍵暗号]
– 署名鍵(ウォレット)の保護[共通鍵暗号]
• ハッシュ関数が使われている箇所
– ビットコインアドレス(公開鍵のハッシュ
値)
– トランザクションのハッシュ(ハッシュツ
リー、トランザクションID)
– ブロックチェーン生成(マイニング)
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ビットコインの暗号やハッシュ
58
• 暗号が使われている箇所
– トランザクションへの署名[公開鍵暗号]
– 署名鍵(ウォレット)の保護[共通鍵暗号]
• ハッシュ関数が使われている箇所
– ビットコインアドレス(公開鍵のハッシュ値)
– トランザクションのハッシュ(ハッシュツリー、
トランザクションID)
– ブロックチェーン生成(マイニング)
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
暗号やハッシュが脆弱化すると?
59
• 将来、暗号解読方法の解明や、計算能力の向上、実装
ミスの発覚などによって、使用されている暗号やハッ
シュが弱体化するかも?
• そうなると、次のようなことが可能になるかも?(あ
くまで可能性の話)。
– 秘密鍵の所有者以外の者がウォレットを盗むことなく同じ
秘密鍵を得る(例えば、公開鍵から秘密鍵を作り出すとか
etc.)
– ブロックチェーン上のあるブロックや、一部のトランザク
ションを後から不正に入れ替える
• 暗号/ハッシュの弱体化がすぐにビットコインネット
ワーク崩壊につながるというわけではない。暗号/ハッ
シュの弱体化の内容とその影響度、他のビットコイン
ネットワークのメカニズムと照らし合わせて、実際に
どのようなリスクがあるのか考える必要がある。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
暗号やハッシュの移行は可能か?
60
• ビットコインのプロトコルとソフトウェアを
更新し、単純に新しい暗号/ハッシュアルゴ
リズムに入れ替えることで、その更新以降か
ら生成されるトランザクションやブロックは
より強力な暗号/ハッシュを利用できるよう
になるだろう。
• ただし、その場合、過去に作られたトランザ
クションやブロックは脆弱なままと言える。
– 例えば、過去に放置したままにしているコインの
所有者はどうなるか?
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ハッシュアルゴリズム移行を
考えるときのヒント?
61
引用元:https://www.ipa.go.jp/security/pki/093.html
Time-Stamping Authority
リンキング方式のタイムスタンプ
この形式のタイムスタンプは過去に作られたハッシュ値を新しいハッシュアルゴリズ
ムで再生成するのは事実上困難。
ビットコインのケースにおいても、過去のものをすべて作り直すことは難しいだろう。
どこまで対策すべきなのか、どのようなリスクがあるか検討が必要。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
おわりに
62
• ビットコインは中央の機関に依存しない仕組みで
あるため、それゆえの難しい問題も生じている。
• ビットコインで生じた数々の問題は、開発コミュ
ニティによって解決が試みられてきている。
– それらの問題の中には、ビットコインだけでなく他
のシステム等を考えるうえで参考になるものもある
かも。
• ビットコインのプロトコルも拡張されているので、
決済以外の用途にも使えてくると面白そう。
– 一方で、他の既存のビジネスへの脅威になる恐れ
も?
• 電子署名屋さんとしては、秘密鍵の管理や暗号ア
ルゴリズム移行などに興味があるので、今後もう
少し深掘りして考えてみたい。
Copyright © 2014 SECOM Co., Ltd. All rights reserved.
ご清聴ありがとうございました。
63

Más contenido relacionado

La actualidad más candente

電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)Kindai University
 
ブロックチェーン連続講義 第7回 スマートコントラクト
ブロックチェーン連続講義 第7回 スマートコントラクトブロックチェーン連続講義 第7回 スマートコントラクト
ブロックチェーン連続講義 第7回 スマートコントラクトKenji Saito
 
Bitcoin x javascript
Bitcoin x javascriptBitcoin x javascript
Bitcoin x javascriptYuki Akiyama
 
ブロックチェーン×Io t op用
ブロックチェーン×Io t op用ブロックチェーン×Io t op用
ブロックチェーン×Io t op用Katsuhiro Ishigami
 
徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年Kenji Saito
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)dcubeio
 
ブロックチェーン連続講義 第5回 分散システムのリテラシー
ブロックチェーン連続講義 第5回 分散システムのリテラシーブロックチェーン連続講義 第5回 分散システムのリテラシー
ブロックチェーン連続講義 第5回 分散システムのリテラシーKenji Saito
 
ブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptAsteria Corporation
 
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日Tomoaki Sato
 
ブロックチェーンの実務応用
ブロックチェーンの実務応用ブロックチェーンの実務応用
ブロックチェーンの実務応用Masakazu Masujima
 
金融機関向けブロックチェーン・ビジネス
金融機関向けブロックチェーン・ビジネス金融機関向けブロックチェーン・ビジネス
金融機関向けブロックチェーン・ビジネスHiroshi Shimo
 
OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料
OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料
OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料OpenID Foundation Japan
 
Blockchain - Future Sync Vol5 Slide
Blockchain   -   Future Sync Vol5 SlideBlockchain   -   Future Sync Vol5 Slide
Blockchain - Future Sync Vol5 SlideKenichi Kurimoto
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装Yuto Takei
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造Soichiro Takagi
 
ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門Kenta Fujimoto
 
ブロックチェーンを学ぶ 公開版
ブロックチェーンを学ぶ 公開版ブロックチェーンを学ぶ 公開版
ブロックチェーンを学ぶ 公開版YamashitaKatsushi
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介Orb, Inc.
 

La actualidad más candente (20)

電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
 
ブロックチェーン連続講義 第7回 スマートコントラクト
ブロックチェーン連続講義 第7回 スマートコントラクトブロックチェーン連続講義 第7回 スマートコントラクト
ブロックチェーン連続講義 第7回 スマートコントラクト
 
Bitcoin x javascript
Bitcoin x javascriptBitcoin x javascript
Bitcoin x javascript
 
ブロックチェーン×Io t op用
ブロックチェーン×Io t op用ブロックチェーン×Io t op用
ブロックチェーン×Io t op用
 
徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年徹底サーベイ : デジタル通貨の15年
徹底サーベイ : デジタル通貨の15年
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
ブロックチェーン連続講義 第5回 分散システムのリテラシー
ブロックチェーン連続講義 第5回 分散システムのリテラシーブロックチェーン連続講義 第5回 分散システムのリテラシー
ブロックチェーン連続講義 第5回 分散システムのリテラシー
 
ブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live ppt
 
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
 
ブロックチェーンの実務応用
ブロックチェーンの実務応用ブロックチェーンの実務応用
ブロックチェーンの実務応用
 
金融機関向けブロックチェーン・ビジネス
金融機関向けブロックチェーン・ビジネス金融機関向けブロックチェーン・ビジネス
金融機関向けブロックチェーン・ビジネス
 
OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料
OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料
OpenID Bizday #9 - 山崎重一郎氏 プレゼン資料
 
Payment channel入門
Payment channel入門Payment channel入門
Payment channel入門
 
Blockchain - Future Sync Vol5 Slide
Blockchain   -   Future Sync Vol5 SlideBlockchain   -   Future Sync Vol5 Slide
Blockchain - Future Sync Vol5 Slide
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造
 
ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門ビットコインとブロックチェーン入門
ビットコインとブロックチェーン入門
 
ブロックチェーンを学ぶ 公開版
ブロックチェーンを学ぶ 公開版ブロックチェーンを学ぶ 公開版
ブロックチェーンを学ぶ 公開版
 
分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介分散型台帳技術Orb DLTの紹介
分散型台帳技術Orb DLTの紹介
 

Destacado

ビットコインとgoxと円天と
ビットコインとgoxと円天とビットコインとgoxと円天と
ビットコインとgoxと円天と明穂 足立
 
ビットコイン ~ トランザクション展性について
ビットコイン ~ トランザクション展性についてビットコイン ~ トランザクション展性について
ビットコイン ~ トランザクション展性についてJonathan Underwood
 
マルレク特別編:Bitcoinの概要と今後の論点
マルレク特別編:Bitcoinの概要と今後の論点マルレク特別編:Bitcoinの概要と今後の論点
マルレク特別編:Bitcoinの概要と今後の論点Masanori Kusunoki
 
ビットコインスタートアップMTG
ビットコインスタートアップMTGビットコインスタートアップMTG
ビットコインスタートアップMTGTetsuyuki Oishi
 
Bitcoinについて
BitcoinについてBitcoinについて
BitcoinについてTakuya SUMI
 
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)pizyumi
 
Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想Kindai University
 
ビットコインの仕組み
ビットコインの仕組みビットコインの仕組み
ビットコインの仕組みGOTO_A
 
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...健一 茂木
 
ビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンドビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンドKoichiro Wada
 
ブロックチェーン 10から20へ
ブロックチェーン 10から20へブロックチェーン 10から20へ
ブロックチェーン 10から20へSoichiro Takagi
 
ブロックチェーンの整理 27 sep2015
ブロックチェーンの整理 27 sep2015ブロックチェーンの整理 27 sep2015
ブロックチェーンの整理 27 sep2015Yoshimitsu Homma
 
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTechKindai University
 
ブロックチェーン入門〜ただしFinTechを除く〜
ブロックチェーン入門〜ただしFinTechを除く〜ブロックチェーン入門〜ただしFinTechを除く〜
ブロックチェーン入門〜ただしFinTechを除く〜Miki Yutani
 
0528 kanntigai ui_ux
0528 kanntigai ui_ux0528 kanntigai ui_ux
0528 kanntigai ui_uxSaori Matsui
 
女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -Shoko Tanaka
 

Destacado (20)

Bitcoin 2
Bitcoin 2Bitcoin 2
Bitcoin 2
 
ビットコインとgoxと円天と
ビットコインとgoxと円天とビットコインとgoxと円天と
ビットコインとgoxと円天と
 
ビットコイン ~ トランザクション展性について
ビットコイン ~ トランザクション展性についてビットコイン ~ トランザクション展性について
ビットコイン ~ トランザクション展性について
 
マルレク特別編:Bitcoinの概要と今後の論点
マルレク特別編:Bitcoinの概要と今後の論点マルレク特別編:Bitcoinの概要と今後の論点
マルレク特別編:Bitcoinの概要と今後の論点
 
Bitcoinとは何か?
Bitcoinとは何か?Bitcoinとは何か?
Bitcoinとは何か?
 
ビットコインスタートアップMTG
ビットコインスタートアップMTGビットコインスタートアップMTG
ビットコインスタートアップMTG
 
Bitcoinについて
BitcoinについてBitcoinについて
Bitcoinについて
 
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
Bitcoinの個人的勉強ノート 第3版(2015年1月4日)
 
Bitcoinの技術
Bitcoinの技術Bitcoinの技術
Bitcoinの技術
 
Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想Bitcoinのしくみと設計思想
Bitcoinのしくみと設計思想
 
ビットコインの仕組み
ビットコインの仕組みビットコインの仕組み
ビットコインの仕組み
 
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
Ethereumをさわって実感するブロックチェーンハンズオン(新版はここ https://www.slideshare.net/mogiken1/et...
 
ビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンドビットコインの基礎知識と世界的なトレンド
ビットコインの基礎知識と世界的なトレンド
 
ブロックチェーン 10から20へ
ブロックチェーン 10から20へブロックチェーン 10から20へ
ブロックチェーン 10から20へ
 
ブロックチェーンの整理 27 sep2015
ブロックチェーンの整理 27 sep2015ブロックチェーンの整理 27 sep2015
ブロックチェーンの整理 27 sep2015
 
仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech仮想通貨のブロックチェイン技術によるFinTech
仮想通貨のブロックチェイン技術によるFinTech
 
Blockchain入門 20160416
Blockchain入門 20160416Blockchain入門 20160416
Blockchain入門 20160416
 
ブロックチェーン入門〜ただしFinTechを除く〜
ブロックチェーン入門〜ただしFinTechを除く〜ブロックチェーン入門〜ただしFinTechを除く〜
ブロックチェーン入門〜ただしFinTechを除く〜
 
0528 kanntigai ui_ux
0528 kanntigai ui_ux0528 kanntigai ui_ux
0528 kanntigai ui_ux
 
女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -女子の心をつかむUIデザインポイント - MERY編 -
女子の心をつかむUIデザインポイント - MERY編 -
 

Similar a JNSA Bitcoin 勉強会 佐藤 20140602

Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015Toru Yamaguchi
 
エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎Hyperleger Tokyo Meetup
 
FAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのためにFAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのためにNat Sakimura
 
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FinTechLabs.io
 
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」shigeyuki azuchi
 
OAuthのHolder of Key Token
OAuthのHolder of Key TokenOAuthのHolder of Key Token
OAuthのHolder of Key TokenYuichi Nakamura
 
BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」Takahiro Shinagawa
 
IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入 IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入 Hiroshi Takahashi
 
Mk vpp for-containers-vppug
Mk vpp for-containers-vppugMk vpp for-containers-vppug
Mk vpp for-containers-vppugMiya Kohno
 
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月VirtualTech Japan Inc.
 
ディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してKazuhiko Kato
 
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...blockchainexe
 
Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Hyperleger Tokyo Meetup
 
IETF102 Report Authorization
IETF102 Report AuthorizationIETF102 Report Authorization
IETF102 Report AuthorizationKaoru Maeda
 
Resilience Engineering on Kubernetes
Resilience Engineering on KubernetesResilience Engineering on Kubernetes
Resilience Engineering on KubernetesToru Makabe
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbindKaoru Maeda
 

Similar a JNSA Bitcoin 勉強会 佐藤 20140602 (20)

Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
Mobage Connect と Identity 関連技術への取り組み - OpenID Summit Tokyo 2015
 
エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎エンタープライズブロックチェーン構築の基礎
エンタープライズブロックチェーン構築の基礎
 
Ethereumのシャーディング概論
Ethereumのシャーディング概論Ethereumのシャーディング概論
Ethereumのシャーディング概論
 
FAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのためにFAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのために
 
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
 
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
福岡ブロックチェーンエコノミー勉強会Vol.3「Segregated Witness」
 
OAuthのHolder of Key Token
OAuthのHolder of Key TokenOAuthのHolder of Key Token
OAuthのHolder of Key Token
 
Hyperledger Fabric 概説
Hyperledger Fabric 概説Hyperledger Fabric 概説
Hyperledger Fabric 概説
 
BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」
 
IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入 IoTへのブロックチェーンの導入
IoTへのブロックチェーンの導入
 
VIOPS04: DHT/分散ストレージの技術研究と 実証実験
VIOPS04: DHT/分散ストレージの技術研究と 実証実験VIOPS04: DHT/分散ストレージの技術研究と 実証実験
VIOPS04: DHT/分散ストレージの技術研究と 実証実験
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
Mk vpp for-containers-vppug
Mk vpp for-containers-vppugMk vpp for-containers-vppug
Mk vpp for-containers-vppug
 
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
ミドクラ様講演 OpenStack最新情報セミナー 2014年4月
 
ディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指して
 
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...
 
Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​Post-quantum zk-SNARKs on Hyperledger Fabric​
Post-quantum zk-SNARKs on Hyperledger Fabric​
 
IETF102 Report Authorization
IETF102 Report AuthorizationIETF102 Report Authorization
IETF102 Report Authorization
 
Resilience Engineering on Kubernetes
Resilience Engineering on KubernetesResilience Engineering on Kubernetes
Resilience Engineering on Kubernetes
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbind
 

JNSA Bitcoin 勉強会 佐藤 20140602

  • 1. Copyright © 2014 SECOM Co., Ltd. All rights reserved. Bitcoinの技術的課題の整理と議論 2014.6.2 セコム株式会社 IS研究所 暗号・認証基盤グループ 佐藤 雅史 1
  • 2. Copyright © 2014 SECOM Co., Ltd. All rights reserved. Bitcoinの技術的課題の整理と議論 2014.6.2 日本ネットワークセキュリティ協会 電子署名WG サブリーダー 佐藤 雅史 2
  • 3. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 自己紹介 • 佐藤 雅史 (さとう まさし) • 普段は主に電子署名屋さんです。 • 標準化とかやっています。 – JIS X 5092:2008 CMS利用電子署名(CAdES)の長期署名プロファイル – JIS X 5093:2008 XML署名利用電子署名(XAdES)の長期署名プロファ イル – ISO 14533-1:2012, Long term signature profiles – Part 1: Long term signature profiles for CMS Advanced Electronic Signatures (CAdES) – ISO 14533-2:2012, Long term signature profiles – Part 2: Long term signature profiles for XML Advanced Electronic Signatures (XAdES) – ISO 14533-3 (計画中) • 主な活動の場 – JNSA, TBF(Time Business Forum), JIPDEC 3
  • 4. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの特徴 (簡単なおさらい) • コイン所有権の移動をトランザクションの履 歴で管理する。 – コインの使用を表明するのに電子署名を用いる。 • トランザクションの存在を証明するためにブ ロック(台帳のようなもの)を生成しネット ワーク参加者で共有する。 – ブロック生成者は新しいコインや発生した取引手 数料を獲得できる(マイニング)。 • コイン発行や使用に関してコントロールする 中央の機関は存在しない。 4
  • 5. Copyright © 2014 SECOM Co., Ltd. All rights reserved. いきなり余談ですが… (電子署名屋さんぽいことを…) 5
  • 6. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 電子署名屋さんから見たビットコイン • タイムスタンプ – 第三者的に証明可能な電子データの存在証明。 (ある時間にそのデータが存在した証明) – よく電子署名と組み合わせて使われる。 • ビットコインはP2P型のタイムスタンプ 6
  • 7. Copyright © 2014 SECOM Co., Ltd. All rights reserved. タイムスタンプ技術(1) ~ PKI(公開鍵基盤)方式 ~ 7 電子データ (文書ファイル、画像、etc.) 認証局(CA) 時刻配信 時刻配信局 TimeStamp 2014.6.2 15:00:00 電子データの ハッシュ値 公開鍵証明書 (TSA証明書)の発行 タイムスタンプ局(TSA) TSA証明書(公開鍵)を 使ってタイムスタンプの署名 を検証。 公開鍵とペアの秘密鍵を 使って、時刻情報を入れて ハッシュ値に署名する。 標準規格:RFC 3161, ISO/IEC 18014-2
  • 8. Copyright © 2014 SECOM Co., Ltd. All rights reserved. タイムスタンプ技術(2) ~ リンキング方式 ~ 8 引用元:https://www.ipa.go.jp/security/pki/093.html Time-Stamping Authority 標準規格:ISO/IEC 18014-3 ハッシュアルゴリズムが脆弱化しない限り有効。 逆に言えば、ハッシュアルゴリズムの移行が困難。 (ビットコインも同様の問題がある?)
  • 9. Copyright © 2014 SECOM Co., Ltd. All rights reserved. タイムスタンプ技術(3) ~ ERS(Evidence Record Syntax)方式 ~ 9 h123 h12 h3 h1 h2abc データグループ2 データグループ3 データ d3 データ d2a データグループ1 データ d1 データ d2b データ d2a h2a h2b h2c hash hash hash hash hash hash hash hash PKI方式 タイムスタンプ局(TSA) TimeStamp 2014.6.2 15:00:00 ハッシュツリーの頂点に 時刻情報を入れて署名する。 標準規格:RFC 4998, RFC 6283 PKI方式タイムスタンプを用いたリンキングのような仕組み。 ハッシュアルゴリズムの移行ができる。
  • 10. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインのタイムスタンプ 10 従来のタイムスタンプ ビットコインのタイムスタ ンプ 信頼のモデル 信頼できる第三者機関 が存在する。 中央の機関は存在しない。 多数決による合意。 対象とするデータ 任意の電子データ。 (文書、画像データ、 ログ等) ビットコインのトランザク ション(基本的には…)。 ビジネスモデル タイムスタンプ付与者 または検証者への課金。 利用者は無料(minerが獲 得する発掘コインと Transaction Fee)
  • 11. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインを用いた存在証明① ~Proof of Existence~ 11 http://www.proofofexistence.com/ • 存在証明したい文書のハッシュ値(SHA256) を作る。 • 文書のハッシュ値とマーカーをビットコイン トランザクションのOutput Scriptに格納す る。  Output Scriptの格納には OP_RETURNを用いる。  OP_RETURNの後ろには任意のデータ (40bytesまで)を入れられる。
  • 12. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインを用いた存在証明① ~Proof of Existence~ 12
  • 13. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインを用いた存在証明① ~Proof of Existence~ 13
  • 14. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインを用いた存在証明② ~Virtual Notary~ 14 http://virtual-notary.org/ Cornell University Computer Science Department • 存在証明したい文書やWebサイトに対して X.509属性証明書を発行する。 • X.509属性証明書のハッシュチェーンを作り、 順序関係を担保する。 • ハッシュチェーンの最新状態をTwitterと ビットコインネットワークに流すことで 第三者証明を可能にする。 • 24時間ごとにビットコイントランザクションの Output Script(たぶんOP_RETURN)に その時の最新ハッシュ値を埋め込んで流す。
  • 15. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 本題に入ります 15
  • 16. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの気になるところ • ビットコインに対する攻撃 – ビットコインの盗難 – ビットコインの二重使用 – ビットコインの二重取り (トランザクション展性) • ブロックチェーンの肥大化 • 暗号アルゴリズムの脆弱化 • etc. 16 今日触れるのは このあたりのお話
  • 17. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインを不正に得るには? • 人様のビットコインを盗む • 自分のビットコインを不正に増やす (二重使用) • 他者から二重取りする (コイン受領の否認) 17
  • 18. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの気になるところ • ビットコインに対する攻撃 – ビットコインの盗難 – ビットコインの二重使用 – ビットコインの二重取り (トランザクション展性) • ブロックチェーンの肥大化 • 暗号アルゴリズムの脆弱化 18
  • 19. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ウォレット盗難の脅威 • PC/デバイスでの管理 – マルウェア感染によるウォレット流出の脅威 – 暗号(パスワード)はかけられるが、キーロガーを 仕掛けられたり、ウォレット取得後にブルート フォースを掛けられたら… – ウォレットのバックアップについても注意が必要 • 盗難ではないが、古いバックアップをリストアしてしない新 しい鍵が消失してしまう事故も… • オンラインサービスでのウォレット管理 – そのサービスに脆弱性があった場合の秘密鍵流出や 不正使用など – そもそも、そのサービスは信用できるのか? 19 ウォレット(トランザクションの署名に使う秘密鍵) の管理はとっても大事!
  • 20. Copyright © 2014 SECOM Co., Ltd. All rights reserved. オフライン管理による保護① 20 • オンラインPC(ネットワーク接続したトランザクション受信専用 PC)とオフラインPC(ネットワークに接続しない署名専用PC)の 2台に分割して管理する。 • 送金する場合には、オンラインPCで生成したトランザクションデー タ(署名なし)に対してオフラインPCで署名を行う。トランザク ションデータはUSBキーを用いて移動させる。 • 専用ウォレット管理ソフト ARMORY https://bitcoinarmory.com/
  • 21. Copyright © 2014 SECOM Co., Ltd. All rights reserved. オフライン管理による保護② 21 • http://www.pi-wallet.com/ • 前述のARMORYをRaspberry Pi に組み込んだもの • オフラインウォレットのために別 のPCを用意する必要がなくなる。
  • 22. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの気になるところ • ビットコインに対する攻撃 – ビットコインの盗難 – ビットコインの二重使用 – ビットコインの二重取り (トランザクション展性) • ブロックチェーンの肥大化 • 暗号アルゴリズムの脆弱化 22
  • 23. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重使用 ホントは自分のコインを使っちゃったんだ けど、使ったことをみんなに内緒にできれ ば… 無限に使えるコインができるじゃないか! 23
  • 24. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 0-confirmation (Fast) payment におけるコイン二重使用 24 消費者Aの ノード ショップBの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 商品・サービスの提供 ブロック(台帳)への 反映を確認しない。 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Aの支援 ノード Aの支援 ノード TX_Xと入力は同じで 出力が異なる [トランザクションY] 消費者Aが 自分へ送金 TX_Y TX_X 直接送信 [トランザクションX] 消費者Aが ショップBへ送金 (参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “, Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
  • 25. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 0-confirmation (Fast) payment におけるコイン二重使用 25 消費者Aの ノード ショップBの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 商品・サービスの提供 ブロック(台帳)への 反映を確認しない。 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Aの支援 ノード Aの支援 ノード TX_Xと入力は同じで 出力が異なる [トランザクションY] 消費者Aが 自分へ送金 TX_Y TX_X 直接送信 [トランザクションX] 消費者Aが ショップBへ送金 TX_YTX_Y TX_Y TX_Y TX_Y TX_Y (参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “, Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
  • 26. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 0-confirmation (Fast) payment におけるコイン二重使用 26 消費者Aの ノード ショップBの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 商品・サービスの提供 ブロック(台帳)への 反映を確認しない。 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード TX_X TX_X Aの支援 ノード Aの支援 ノード TX_Xと入力は同じで 出力が異なる [トランザクションY] 消費者Aが 自分へ送金 TX_Y TX_X 直接送信 [トランザクションX] 消費者Aが ショップBへ送金 TX_YTX_Y TX_Y TX_Y TX_Y TX_Y (参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “, Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
  • 27. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 0-confirmation (Fast) payment におけるコイン二重使用 27 消費者Aの ノード ショップBの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 商品・サービスの提供 ブロック(台帳)への 反映を確認しない。 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード TX_X TX_X Aの支援 ノード Aの支援 ノード TX_Xと入力は同じで 出力が異なる [トランザクションY] 消費者Aが 自分へ送金 TX_Y TX_X 直接送信 [トランザクションX] 消費者Aが ショップBへ送金 TX_YTX_Y TX_Y TX_Y TX_Y TX_Y ブロック (台帳) TX_Y (参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “, Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
  • 28. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 0-confirmation (Fast) payment におけるコイン二重使用 28 消費者Aの ノード ショップBの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 商品・サービスの提供 ブロック(台帳)への 反映を確認しない。 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード TX_X TX_X Aの支援 ノード Aの支援 ノード TX_Xと入力は同じで 出力が異なる [トランザクションY] 消費者Aが 自分へ送金 TX_Y TX_X 直接送信 [トランザクションX] 消費者Aが ショップBへ送金 TX_YTX_Y TX_Y TX_Y TX_Y TX_Y ブロック (台帳) TX_Y TX_Xは反映さ れていない。 TX_Xは不成立。 (参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “, Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
  • 29. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 0-confirmation (Fast) payment におけるコイン二重使用 29 消費者Aの ノード ショップBの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 商品・サービスの提供 ブロック(台帳)への 反映を確認しない。 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード TX_X TX_X Aの支援 ノード Aの支援 ノード Xと入力は同じで 出力が異なる [トランザクションY] 消費者Aが 自分へ送金 TX_Y TX_X 直接送信 [トランザクションX] 消費者Aが ショップBへ送金 TX_YTX_Y TX_Y TX_Y TX_Y TX_Y ブロック (台帳) TX_Y 支援ノードが複数 いる方が成功率が 高い ショップ側の接続 ノードが少ないほ ど成功率が高い。 防御策: Incoming 接続 の禁止。 信頼できるノー ドへの接続。 (参考) “Two Bitcoins at the Price of One? Double –Spending Attacks on Fast Payments in Bitcoin “, Ghassan O. Karame , Elli Androulaki, Srdjan Capkun
  • 30. Copyright © 2014 SECOM Co., Ltd. All rights reserved. N-Confirmations • 0-Confirmationによる取引はリスクを考慮 する必要がある。高額取引には推奨されない。 • トランザクション発生後、N個のブロック生 成を待った後にトランザクションの確認を 行ったほうがよい(N-Confirmations)。 – 例えば、bitcoinオリジナルクライアントでは6 confirmationsが設定されている。 • N-Confirmationsに関する考察 – Analysis of hashrate-based double- spending, Meni Rosenfeld, Dec 2012 30
  • 31. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーンのブランチ 31 ブロックチェーンが分岐しても、ビットコインネットワークは最長の ブロックチェーン(緑のブロック)を受け入れる。 ブロックチェーン ブロック 1 ブロック 2 ブロック 3 ブロック 4a ブロック 5 ブロック 6 ブロック 4b (分岐) ○
  • 32. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーンのキャッチアップ 32 ブロック 1 ブロック 2 ブロック 3 ブロック 4a ブロック 5a ブロック 4b (分岐) 攻撃者以外の ブロックチェーン ブロック 5b (分岐) ブロック 6b (分岐) 攻撃者が生成する ブロックチェーン 攻撃者が他のノードよりも先にブロック生成を行い、 最長のブロックチェーンを作り出すことができれば、 攻撃者にとって都合の良いブロックを認めさせることができる。 (例えば、自分のコインの2重使用を可能にするトランザクションを含める等) ○
  • 33. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーン乗っ取りによる 攻撃の成功率 33 (引用元) “Analysis of hashrate-based double-spending”, Meni Rosenfeld ネットワーク全体における攻撃者の占める ハッシュレート(計算能力)の比率 攻 撃 の 成 功 率 nはコイン取得者が 実施するconfirmation (確認するブロック)の数 n=10 n=2 n=8 n=6 n=4
  • 34. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーン乗っ取りによる コイン二重使用の成功率 34 (引用元) “Analysis of hashrate-based double-spending”, Meni Rosenfeld ネットワーク全体における攻撃者の占める ハッシュレート(計算能力)の比率 攻 撃 の 成 功 率 n=10 n=2 n=8 n=6 n=4 6 confirmationsを行えば 10%の計算力を持った 攻撃者に対して 成功率は0.1%以下になる。 nはコイン取得者が 実施するconfirmation (確認するブロック)の数
  • 35. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーン乗っ取りによる コイン二重使用の成功率 35 (引用元) “Analysis of hashrate-based double-spending”, Meni Rosenfeld ネットワーク全体における攻撃者の占める ハッシュレート(計算力)の比率 攻 撃 の 成 功 率 nはコイン取得者が 実施するconfirmation (確認するブロック)の数 n=10 n=2 n=8 n=6 n=4 攻撃者が50%以上の計算力 を持つとき、nによらず成功 率はほぼ100%となる。 n confirmationsは無力。 51%(>50%)攻撃 nはコイン取得者が 実施するconfirmation (確認するブロック)の数
  • 36. Copyright © 2014 SECOM Co., Ltd. All rights reserved. N-Confirmations • 0-Confirmationによる取引はリスクを考慮 する必要がある。高額取引には推奨されない。 • トランザクション発生後、N個のブロック生 成を待った後にトランザクションの確認を 行ったほうがよい(N-Confirmations)。 – 例えば、bitcoinオリジナルクライアントでは6 confirmationsが設定されている。 – 51%攻撃が実行されないという前提が必要か • N-Confirmationsに関する考察 – Analysis of hashrate-based double- spending, Meni Rosenfeld, Dec 2012 36
  • 37. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 現在のハッシュレート (2014.6.1現在) 37 36% 14% 13% 8% ソース:blockchain.info
  • 38. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 51%(>50%)攻撃による効果 38 • 二重使用以外にも攻撃者に都合よく仕向け ることができる。 – 他者のトランザクションのconfirmationを妨 害できる。 – 他者のマイニングを妨害できる。
  • 39. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの気になるところ • ビットコインに対する攻撃 – ビットコインの盗難 – ビットコインの二重使用 – ビットコインの二重取り (トランザクション展性) • ブロックチェーンの肥大化 • 暗号アルゴリズムの脆弱化 39
  • 40. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 40 利用者Aの ノード 銀行Bの ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Cの支援 ノード Cの支援 ノード コイン引き出し
  • 41. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 41 利用者Aの ノード 銀行Bの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Cの支援 ノード Cの支援 ノード TX_Y [トランザクションY] TXID: Y 銀行Bから 利用者Aへ送金 TXIDだけを改変。 TX_XとTXID以外は 全く同じ内容。 コイン引き出し [トランザクションX] TXID: X 銀行Bから 利用者Aへ送金 ※図の都合上、TX_Xを直接送る絵になってます。 TX_X
  • 42. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 42 利用者Aの ノード 銀行Bの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Cの支援 ノード Cの支援 ノード TX_YTX_Y TX_Y TX_Y TX_Y TX_Y TX_Y [トランザクションY] TXID: Y 銀行Bから 利用者Aへ送金 TXIDだけを改変。 TX_XとTXID以外は 全く同じ内容。 コイン引き出し [トランザクションX] TXID: X 銀行Bから 利用者Aへ送金 ※図の都合上、TX_Xを直接送る絵になってます。 TX_X
  • 43. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 43 利用者Aの ノード 銀行Bの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード TX_X TX_X Cの支援 ノード Cの支援 ノード TX_YTX_Y TX_Y TX_Y TX_Y TX_Y TX_Y [トランザクションY] TXID: Y 銀行Bから 利用者Aへ送金 TXIDだけを改変。 TX_XとTXID以外は 全く同じ内容。 コイン引き出し [トランザクションX] TXID: X 銀行Bから 利用者Aへ送金 ※図の都合上、TX_Xを直接送る絵になってます。 TX_X
  • 44. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 44 利用者Aの ノード 銀行Bの ノード 一般の ノード TX_X 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード TX_X TX_X Cの支援 ノード Cの支援 ノード TX_YTX_Y TX_Y TX_Y TX_Y TX_Y ブロック (台帳) TX_Y TX_Y [トランザクションY] TXID: Y 銀行Bから 利用者Aへ送金 TXIDだけを改変。 TX_XとTXID以外は 全く同じ内容。 コイン引き出し [トランザクションX] TXID: X 銀行Bから 利用者Aへ送金 ※図の都合上、TX_Xを直接送る絵になってます。 TX_X
  • 45. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 45 利用者Aの ノード 銀行Bの ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Cの支援 ノード Cの支援 ノード コイン届いてないよ? ブロック (台帳) TX_Y TX_X (ブロック内のトラン ザクションIDを確認) あれ?ブロックに がないぞ。 再送(別コイン)するわ。
  • 46. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 46 利用者Aの ノード 銀行Bの ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Cの支援 ノード Cの支援 ノード コイン届いてないよ? ブロック (台帳) TX_Y TX_X (ブロック内のトラン ザクションIDを確認) あれ?ブロックに がないぞ。 再送(別コイン)するわ。 [トランザクションZ] TXID: Z 銀行Bから 利用者Aへ送金 TX_Z TX_Y TX_Z 両方ゲット! ウマー!
  • 47. Copyright © 2014 SECOM Co., Ltd. All rights reserved. コインの二重取り 47 利用者Aの ノード 銀行Bの ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード 一般の ノード Cの支援 ノード Cの支援 ノード コイン届いてないよ? ブロック (台帳) TX_Y TX_X (ブロック内のトラン ザクションIDを確認) あれ?ブロックに がないぞ。 再送(別コイン)するわ。 [トランザクションZ] TXID: Z 銀行Bから 利用者Aへ送金 TX_Z TX_Y TX_Z 両方ゲット! ウマー! TX_Xと等価な内容(コインの使用)は記録されているので、 コインの二重使用とは異なる。
  • 48. Copyright © 2014 SECOM Co., Ltd. All rights reserved. トランザクションIDに対する不正な操作 ~トランザクション展性(Transaction Malleability)~ 48 バージョン番号 入力トランザクション数 入力トランザクションリスト … 入力トランザクション 出力トランザクションリスト 出力トランザクション … 出力トランザクション 出力トランザクション数 ロック時間 入力トランザクション 前の出力トランザクション の参照 署名スクリプト長さ 署名スクリプト (署名検証のための命 令コード、署名値) シーケンス番号 入力トランザクション トランザクションデータ ハッシュ関数 (SHA256 ×2回) トランザクションID (ハッシュ値) 以外の箇所を不正に修正すると署名値が不一致するため、 データ改ざんとして検知される。署名値を変えても検知される。 署名値の内容を変えずに の箇所を微調整できれば、全く異なるハッシュ値 (ID)を生成させることができる(ハッシュ関数の性質)。
  • 49. Copyright © 2014 SECOM Co., Ltd. All rights reserved. トランザクションIDの改変方法例① (署名値の操作) 49 入力トランザクション 前の出力トランザクション の参照 署名スクリプト長さ 署名スクリプト (署名検証のための命 令コード、署名値) シーケンス番号 署名スクリプト 署名値の構造:DER(Distinguished Encoding Rules)による符号化 SEQ SEQ長さ INT INT長さ INT値 INT INT長さ INT値 INT INT長さ+00の数 00を挿入+元のINT値 DERでは最短の整数値を用いる。つまり、先頭に00が続くのはNG。 Bitcoinクライアントが使用していたOpenSSLのバグで00を挿入した データも受け入れてしまっていたようだ。 データの意味を変えずに 書き換える 署名値 署名値をいじるケース 操作命令をいじるケース 操作命令の結果に影響を与えない命令を 挿入する。 例えば、意味のないDROP命令の挿入など。 操作命令
  • 50. Copyright © 2014 SECOM Co., Ltd. All rights reserved. トランザクションIDの改変方法例② (異なる署名値への置換) 50 ECDSA (楕円曲線暗号を用いた署名アルゴリズム) による署名生成 共通パラメータ ・楕円曲線の関数 ・楕円曲線上の点G ・Gの位数n 署名に使う秘密鍵 d 検証に使う公開鍵 Q=d*G 署名値 (署名対象データ:M) 点 k*G=(x1, y1) (k ∈[1, n-1])を決め て以下を計算。 r = x1 mod n s = (hash (M) + dr)/k mod n -k*G=(x1, -y1)を使って 署名値だけ変えられる(これも正しく検証できる)。 署名値 (署名対象データ:M) k’= -k mod nに置換すれば r はそのまま s’ = -s mod n トランザクション中の署名値をS→S’に置換すれば、署名を無効化せずに、 トランザクションID(ハッシュ値)を変えることができる。 k*G -k*G y x x1 y1 -y1
  • 51. Copyright © 2014 SECOM Co., Ltd. All rights reserved. データ正規化の必要性 51 ハッシュ関数データ 署名 アルゴリズム (必要に応じて) データ 正規化 ハッシュ値 や 署名値 一般的にデータに対してハッシュ関数や署名演算をかけるときには、 同じデータに対して出力される値が一意になるようにデータの正規化を行う。 (電子署名屋さんにとっては常識?) ビットコインはデータ正規化が甘かったのかも(当初は複数の実装がなかったせい?)。 一部のデータ正規化については、オリジナルクライアントは対応済(v0.8, 2013年頃)。 その他の正規化は? オリジナルクライアント以外の実装は??? データのフォーマットが一意になるように 決められたルールのもとにデータを整形する。
  • 52. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの気になるところ • ビットコインに対する攻撃 – ビットコインの盗難 – ビットコインの二重使用 – ビットコインの二重取り (トランザクション展性) • ブロックチェーンの肥大化 • 暗号アルゴリズムの脆弱化 52
  • 53. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーンの肥大化 53 1年間(2013年6月~) おおよそ18GBくらい 現在、全ブロックチェーンをダウンロードしようとすると 結構な時間がかかります(数日とか…)
  • 54. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーンの肥大化 54 全期間(2009年~) ここ1年くらいの伸びがすごい!
  • 55. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ブロックチェーンの肥大化への対策 55 • ビットコインネットワーク上でのブロックチェーン の圧縮が必要? – すでに検討されている? • アプリケーションによる必要なトランザクション データの抽出 – 軽量クライアント用に既に拡張されている。 • Bloom filterを使って自分に関係しそうな(プライバシーへ配 慮)トランザクションデータのみをダウンロードする。 • トランザクションデータを提供するノードへの依存性が高く なる。 • Multibit, BitCoin Walletでサポート • 将来、ブロックの蓄積や検証についても分業化が進 む可能性がある?
  • 56. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの気になるところ • ビットコインに対する攻撃 – ビットコインの盗難 – ビットコインの二重使用 – ビットコインの二重取り (トランザクション展性) • ブロックチェーンの肥大化 • 暗号アルゴリズムの脆弱化 56
  • 57. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの暗号やハッシュ 57 • 暗号が使われている箇所 – トランザクションへの署名[公開鍵暗号] – 署名鍵(ウォレット)の保護[共通鍵暗号] • ハッシュ関数が使われている箇所 – ビットコインアドレス(公開鍵のハッシュ 値) – トランザクションのハッシュ(ハッシュツ リー、トランザクションID) – ブロックチェーン生成(マイニング)
  • 58. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ビットコインの暗号やハッシュ 58 • 暗号が使われている箇所 – トランザクションへの署名[公開鍵暗号] – 署名鍵(ウォレット)の保護[共通鍵暗号] • ハッシュ関数が使われている箇所 – ビットコインアドレス(公開鍵のハッシュ値) – トランザクションのハッシュ(ハッシュツリー、 トランザクションID) – ブロックチェーン生成(マイニング)
  • 59. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 暗号やハッシュが脆弱化すると? 59 • 将来、暗号解読方法の解明や、計算能力の向上、実装 ミスの発覚などによって、使用されている暗号やハッ シュが弱体化するかも? • そうなると、次のようなことが可能になるかも?(あ くまで可能性の話)。 – 秘密鍵の所有者以外の者がウォレットを盗むことなく同じ 秘密鍵を得る(例えば、公開鍵から秘密鍵を作り出すとか etc.) – ブロックチェーン上のあるブロックや、一部のトランザク ションを後から不正に入れ替える • 暗号/ハッシュの弱体化がすぐにビットコインネット ワーク崩壊につながるというわけではない。暗号/ハッ シュの弱体化の内容とその影響度、他のビットコイン ネットワークのメカニズムと照らし合わせて、実際に どのようなリスクがあるのか考える必要がある。
  • 60. Copyright © 2014 SECOM Co., Ltd. All rights reserved. 暗号やハッシュの移行は可能か? 60 • ビットコインのプロトコルとソフトウェアを 更新し、単純に新しい暗号/ハッシュアルゴ リズムに入れ替えることで、その更新以降か ら生成されるトランザクションやブロックは より強力な暗号/ハッシュを利用できるよう になるだろう。 • ただし、その場合、過去に作られたトランザ クションやブロックは脆弱なままと言える。 – 例えば、過去に放置したままにしているコインの 所有者はどうなるか?
  • 61. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ハッシュアルゴリズム移行を 考えるときのヒント? 61 引用元:https://www.ipa.go.jp/security/pki/093.html Time-Stamping Authority リンキング方式のタイムスタンプ この形式のタイムスタンプは過去に作られたハッシュ値を新しいハッシュアルゴリズ ムで再生成するのは事実上困難。 ビットコインのケースにおいても、過去のものをすべて作り直すことは難しいだろう。 どこまで対策すべきなのか、どのようなリスクがあるか検討が必要。
  • 62. Copyright © 2014 SECOM Co., Ltd. All rights reserved. おわりに 62 • ビットコインは中央の機関に依存しない仕組みで あるため、それゆえの難しい問題も生じている。 • ビットコインで生じた数々の問題は、開発コミュ ニティによって解決が試みられてきている。 – それらの問題の中には、ビットコインだけでなく他 のシステム等を考えるうえで参考になるものもある かも。 • ビットコインのプロトコルも拡張されているので、 決済以外の用途にも使えてくると面白そう。 – 一方で、他の既存のビジネスへの脅威になる恐れ も? • 電子署名屋さんとしては、秘密鍵の管理や暗号ア ルゴリズム移行などに興味があるので、今後もう 少し深掘りして考えてみたい。
  • 63. Copyright © 2014 SECOM Co., Ltd. All rights reserved. ご清聴ありがとうございました。 63