Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Shamir Backup
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shigeyuki azuchi
January 14, 2020
Technology
380
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Shamir Backup
GBEC動画解説コンテンツのスライドです。
https://goblockchain.network/2020/01/shamir-backup/
shigeyuki azuchi
January 14, 2020
More Decks by shigeyuki azuchi
See All by shigeyuki azuchi
SLH-DSA (SPHINCS+)
azuchi
0
19
Hyper Tree
azuchi
0
22
FORS
azuchi
0
34
クラスターmempool
azuchi
0
44
W-OTS+
azuchi
0
50
Shorのアルゴリズム
azuchi
0
72
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
58
Fiat-Shamir変換と注意点
azuchi
0
260
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
71
Other Decks in Technology
See All in Technology
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
Metadata - Section 1: HTML Basics
mohab1
0
120
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
580
WasmをRustにする
sansantech
PRO
0
250
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
230
Kiro Crewをはじめよう
kizawa2020
1
160
大型犬好きによるPugの紹介
yamanoku
1
160
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
330
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
140
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
330
パッチ更新でterraform initが落ちた日
grimoh
1
140
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
160
Featured
See All Featured
New Earth Scene 8
popppiees
4
2.7k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Why Our Code Smells
bkeepers
PRO
340
58k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
sira's awesome portfolio website redesign presentation
elsirapls
0
450
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Transcript
【Bitcoin】Shamir Backup
1. Shamir Backupの概要 2. シャミアの秘密分散法 3. SLIP-0039 a. 2段階のシェアの分割 b.
シェアのフォーマット定義 c. シェアのニーモニック変換 1 今日話すこと Shamir Bakcup
Trezor Model Tが新しい秘密鍵のバックアップ方法として Samir Backup機能を導入 https://blog.trezor.io/shamir-backup-the-revolution-of-private-keys-backup-is-here-858687ed7fe7
• マスターシードをシャミアの秘密分散法を利用して複数のシェアに分割。 • 分割したシェアは20個の単語で表現される。 • ユーザーが予め指定した数分のシェアを集めるとマスターシードが復元可能。 (例:2-of-3, 3-of-5など) 2 TrezorのShamir Bakcup
3 Shamir Backupの利用イメージ ① Shamir Backupのウォレットを作成 ② 生成するシェアの数を指定 ③
閾値を指定 ④ 1つのシェア毎に生成される20個のワードを記録 Share Share Share Share Share 各シェアを分散して保存 シェアが閾値分集まればリカバリー可能 ※ Shamir Backupに使われるワードリストは、通常の バックアップで使われるものとは異なる。
4 シャミアの秘密分散法とは? 秘密の値をN個のシェアに分割し、そのシェアをT個集めると秘密の値を 復元できる暗号技術の一種。 1. シェアの数Nと閾値Tを決める。 2. T-1次の多項式を生成する。 f(x)
= a t-1 ・xt-1 + a t-2 ・xt-2 + a t-3 ・xt-3 + … a 1 ・x+ s a t-1 〜a 1 の係数はランダムに決定、通常、定数項f(0)=sが秘密の値 3. 生成した多項式を使ってシェア(x, f(x))を作成する。 4. シェアをT個集めると、そのシェアから多項式を復元できるため、 復元した多項式から秘密の値sが分かる。 ※ T個より少ないと復元できない
5 シャミアの秘密分散法とは? 1. シェアの数N=5と閾値3を決める。 2. T-1=2次の多項式を生成する(秘密の値=35)。 f(x) = 23・x2 +
15・x + 35 3. 生成した多項式を使って5つのシェアを作成する。 (3, 287), (18, 7757), (31, 22603), (11, 2983), (22, 11497) 4. シェアを3個集めると、そのシェアから多項式を復元できる。 287 = 9a + 3b + c 2983 = 121a + 11b + c 22603 = 961a + 31b + c ラグランジュ補完を利用することでT個のシェアからT-1次の多項式を 求める事ができる。 f(x) = 23・x2 + 15・x + 35 a, b, cが計算できるので
6 SLIP-0039 シャミアの秘密分散法を利用する際の標準化および シェアのニーモニックへの変換方法を定義した仕様 https://github.com/satoshilabs/slips/blob/master/slip-0039.md • 2段階のシェア分割
2つのシェアで シークレットを復元したい Share A Share B 2つのシェアが破損した場合 • 5人の友人の内3人 • 6人の家族の内2人 のシェアがあればシークレットを復元でき るようにしたい 友人 家族 Share Share Share Share Share Share Share Share Share Share Share シェアの分割を2段階で行う 1. 2-of-4でシェアを分割 シェアA, B, C, D 2. A, Bはアリスが保持 3. Cをさらに3-of-5で分割し友人に配布 4. Dをさらに2-of-6で分割し家族に配布 ※ 友人が全員共謀してもシークレットは復元できない。 ※ 家族が全員共謀してもシークレットは復元できない。 ※ 友人と家族が共謀した場合、シークレットは復元できる。 2段階にしない場合は、最初に単一グループのシェアを作成し、それをN 個のシェアに分割する。 Share C Share D
7 SLIP-0039 • シェアのフォーマットを定義 • シェアをニーモニックワードに変換
シェアを10bit毎のセグメントに分割し、それをワードリストのインデックスとして利用 し、ニーモニックワードに変換する。 https://github.com/satoshilabs/slips/blob/master/slip-0039/wordlist.txt マスターシークレットが128 bitsの場合、20ワードになる。 • パスフレーズを用いたマスターシークレットの暗号化 • シークレットは多項式f(255)の値となる。 識別子 反復指数 グループ インデックス グループ 閾値 グループ数 メンバー インデックス x メンバー閾値 パディングされた シェア f(x) チェックサム 15 bits 5 bits 4 bits 4 bits 4 bits 4 bits 4 bits パディング+ 8n bits 30 bits
8 まとめ • TrezorのShamir Backupはシャミアの秘密分散法を利用して マスターシークレットを分散管理するための仕組み。 • ウォレット間で相互運用性を担保するためSLIP-0039で標準化の提案。 ※実際に標準化されるかは他のウォレットの採用次第なところも。 ◦
2段階のシェアの分割をサポート ◦ シェア⇔ニーモニックの変換仕様を定義 • 秘密分散法自体は広く利用されており、暗号通貨の秘密鍵管理以外にも 多くの応用がある。 ◦ 単純にマスターシークレットを復元するのではなく、閾値署名と 組み合わせることで、t-of-nの閾値署名の署名値を導出することも可能。