暗号技術のリテラシー
ブロックチェーン連続講義 第 4 回
慶應義塾大学 SFC 研究所 上席所員
斉藤 賢爾
ks91@sfc.wide.ad.jp
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.1/38
今回のテーマ
暗号技術のリテラシー
暗号学的ハッシュ関数、公開鍵暗号系、楕円曲線暗号、
デジタル署名、ゼロ知識証明などの基本的暗号技術とその
考え方をはじめ、
展性やそれを用いた攻撃など、セキュリティに関わるブロック
チェーン特有の話題についても解説します
今回は以下の資料を大いに参考にしました
漆嶌 賢二さん「Bitcoin を技術的に理解する」(2014-06-02)
http://www.slideshare.net/kenjiurushima/20140602-bitcoin1-201406031222
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.2/38
暗号技術のリテラシー
1. 暗号技術とブロックチェーン
2. 脅威と防御
3. 新たな分散コンセンサス基盤のための暗号技術
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.3/38
1. 暗号技術とブロックチェーン
– 暗号学的ファウンデーション –
暗号学的ハッシュ関数
デジタル署名
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.4/38
暗号学的ハッシュ関数 (1)
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.5/38
暗号学的ハッシュ関数 (2)
暗号学的ハッシュ関数 H は、データ m が与えられた
場合
H(m) = H(m′) となるような m′ (m′ = m) を
現実的な時間内に計算で求めることができない
したがって H(m) が与えられても m や m′ を
現実的な時間内に計算で求めることができない
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.6/38
どこで使われているか
ハッシュチェーン構造 (+ ブロックの ID)
TX ID (+ Merkle 木)
アドレス (公開鍵ダイジェスト)
チェックサム
デジタル署名 ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.7/38
具体的な関数
ビットコイン
SHA-256 × SHA-256
SHA-256 × RIPEMD-160
二重に適用することの意味
設計意図と異なる用途に用いることによる問題
ライトコイン
scrypt (メモリをふんだんに使う)
イーサリアム
Ethash (Dagger-Hashimoto の進化形)
DAG : Directed Acyclic Graph (有向非巡回グラフ)
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.8/38
公開鍵暗号系
公開鍵から秘密鍵を推測することは極めて困難
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.9/38
デジタル署名 (RSA)
本人が送ったものであり改竄されていないことが証明できる
この図は RSA での方法
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.10/38
一般化したデジタル署名
署名
入力 : < 平文, 秘密鍵 >
出力 : 署名データ
検証
入力 : < 平文, 署名データ, 公開鍵 >
出力 : OK または NG
署名データは平文と公開鍵を使って試験できる
ある数学的な性質を満たしているかどうか
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.11/38
公開鍵証明書
ウェブの世界等では公開鍵インフラストラクチャが利用されている
それにはルートが存在する
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.12/38
どこで使われているか
M から A に 60BTC 送る例
条件や署名は実際にはスクリプトのかたちで記述される
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.13/38
楕円曲線上の演算
楕円曲線 :
y2 = x3 + ax + b を
満たす曲線
直線を引くと典型
的に 3 点と交わる
X 軸で線対称
楕円曲線上の点の
加算・乗算
A + B = D
A + A + . . . = nA
整数でそれをやる
A
B
C
D
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.14/38
楕円曲線 (EC) DSA
曲線パラメータ
基準点 G(x, y), 剰余の素数 p, 曲線定数 a, b
公開鍵 nG とパラメータ G, p, a, b から秘密鍵 n を
見つけるのは非常に困難 (n が大きければ)
署名の度に乱数 k(0 ≤ k ≤ n) を生成し、kG, 平文の
ダイジェストおよび n を使った演算により署名値を
得る
nG とパラメータ、平文のダイジェストおよび署名値
を使った演算で得られた点が、ある性質を満たすなら
署名値は正しい
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.15/38
ビットコインにおける ECDSA
曲線パラメータは何でもセキュアというわけではない
様々な団体が、選択可能なパラメータを推奨
ビットコインでは secp256k1 を採用する
Certicom 社による推奨のひとつ
秘密鍵 : 256 ビット
公開鍵 : 512 ビット
公開鍵の 160 ビットダイジェストを宛先として利用
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.16/38
アドレスのデザインのリテラシー
私のメールアドレス (架空のもの含む) で考える
ks91@cornell.edu (本物)
コーネル大学 (全体)
t90123ks@sfc.keio.ac.jp (架空)
慶應義塾大学 (SFC)
どちらでどんな事態が発生するか
日常におけるチェック機構
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.17/38
Base58Check 表現
公開鍵ダイジェストをアドレスとして表現する
1. 公開鍵の SHA-256 × RIPEMD-160 ダイジェストを取得
2. バージョンバイト (メインネット = 0) を先頭に付ける
3. その SHA-256 × SHA-256 ダイジェストを取得する
4. その先頭の 4 バイトを 2. で得た値の末尾につける
5. base58 で文字列化する
base58
数字 10 字 + 大小文字 26×2 字 - 紛らわしい文字 4 字 (l,I,O,0)
= 58 字
データを巨大数として末尾から 58 で割った余りを当てはめて
いく
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.18/38
ビットコイン取引への署名
実際には不可能 (署名するデータの中に署名を埋め込むことはできない)
署名時に入力スクリプトの部分を対応する出力スクリプトで置き換える
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.19/38
2. 脅威と防御
– 君は資産を守り切ることができるか –
展性 (malleability)
秘密鍵の守り方
マルチシグ
誕生日について
プライバシーの守り方
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.20/38
Script (General)
Output:
OP_DUP OP_HASH160
OP_PUSHDATA* <Public-key digest>
OP_EQUALVERIFY OP_CHECKSIG
Input:
OP_PUSHDATA* <Signature>
OP_PUSHDATA* <Public key>
TX output addressed to a public-key digest and referring
input
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.21/38
Script Processing
Concatinates scripts: input → output
Stack-based processing
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.22/38
展性 (malleability)
展性とは、もともと金などが叩くと破壊されず延びる性質
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.23/38
展性を用いた攻撃 (1)
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.24/38
展性を用いた攻撃 (2)
コインの状態がブロックチェーン上のそれと一致しなくなる
影響が波及するおそれがある
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.25/38
秘密鍵の守り方
秘密鍵を失うと、「量」ないし「値」に対する支配を
失う
そして鍵は失効させることができない
秘密鍵をオンラインな場所に置いておくと漏洩の危険
がある
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.26/38
ペーパーウォレット
スマホを持っている人 (=誰でも) に見られたら終わる
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.27/38
ブレインウォレット
秘密鍵を自分の頭の中だけにしまっておく
脳がオンラインにならない限り安全
256 ビットの値を覚えておけるか?
暗号学的ハッシュ関数を適用した結果 256 ビットに
なる何かなら覚えられる
ただし、容易には思いつけない何かにしておく
必要がある
誰が勝ち抜ける?カレーを冷やしてしまった。土星も!土星も!
↓
acfedf64beb9d4c1670d1d0890e3231f5effc72fc8e54c3e31035196f86ae1f0
かつ秘密鍵の利用はオフラインのコンピュータで行う
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.28/38
マルチシグ
鍵 m 個 中 n 個の署名で OK とする
以下、概念的に
償還スクリプト :
OP_2 <A> <B> <C> OP_3 OP_CHECKMULTISIG
出力スクリプト :
OP_DUP OP_HASH160 <償還スクリプトダイジェスト> OP_EQUALVERIFY
OP_EVAL
入力スクリプト :
<署名 A> <公開鍵 A> <署名 C> <公開鍵 C> <償還スクリプト>
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.29/38
ここで突然、誕生日について
お客さまの中に同じ誕生日の方はいらっしゃいますか?
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.30/38
誕生日攻撃
自分と同じ誕生日の人には滅多に会わないが、自分の知人同士が同
じ誕生日という組み合わせは無数
ある人数が集まっている部屋に入って、自分と同じ誕生日の人がい
る確率が 50% 以上になるためには、253 人以上が必要
同じ誕生日のふたりがいる確率が 50% 以上になるためには、23 人
で OK
同じように、特定のダイジェストに衝突させるデータを見つけるの
は困難だが、ダイジェストが衝突するふたつのデータを見つけるこ
とは、それよりずっと簡単
ダイジェストが n ビットの場合、2
n
2 回程度の試行で衝突するデー
タを見つけられる可能性が高くなる
したがって、160 ビットのダイジェストは、誕生日攻撃に対しては
80 ビットの強度しかない
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.31/38
プライバシーの守り方
ひとつの取引データの入力群と出力群を用いる方法もある
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.32/38
3. 新たな分散コンセンサス基盤の
ための暗号技術
– これからのデザインのために –
秘匿と証明
Web of Trust
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.33/38
ゼロ知識証明
ある (数学的な) 命題が真であることを伝えるのに、
他の知識を渡さずに真だと証明できる方式
応用例
公開鍵暗号、デジタル署名、. . .
確定的ではなく確率的な証明
ビットコインが開けてしまったかも知れない攻撃手法
の新地平
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.34/38
秘密分散法
秘密のデータ (秘密鍵等) を複数のシェアに分割する
一定数のシェアを持ち寄ることで元のデータを復元で
きる
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.35/38
秘匿(集合)計算
準同型暗号
データを暗号化したまま、加算や乗算などの演算
が可能
秘匿共通集合計算
A と B がそれぞれ秘密の集合 SA と SB を保持
互いにそれらを漏らさずに SA ∩ SB のみを取得
ブラインド署名
署名の対象となるデータを伏せたまま署名させる
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.36/38
Web of Trust
ルートはあるが、自分である
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.37/38
ご質問や議論を
ブロックチェーン連続講義 第 4 回「暗号技術のリテラシー」 — 2016-03-18 – p.38/38

ブロックチェーン連続講義 第4回 暗号技術のリテラシー