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
370
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
12
Hyper Tree
azuchi
0
18
FORS
azuchi
0
31
クラスターmempool
azuchi
0
43
W-OTS+
azuchi
0
50
Shorのアルゴリズム
azuchi
0
71
DahLIAS: Discrete Logarithm-Based Interactive Aggregate Signatures
azuchi
0
55
Fiat-Shamir変換と注意点
azuchi
0
260
AssumeUTXOを利用したブロックチェーンの同期
azuchi
0
69
Other Decks in Technology
See All in Technology
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
260
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
5
530
Goodbye ShellScript, Hello File-based App
shunsock
0
480
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
870
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
160
事業課題から技術的負債に向き合う
sansantech
PRO
2
2k
人間はどの意思決定を手放せるのか
kawasima
15
7.6k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Minecraft JavaのMODをSwiftで作る
1mash0
0
190
SREへの勘違いに気づいた後の話
tomodakengo
0
110
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
240
Genieを崇めよ
kameitomohiro
0
170
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
The untapped power of vector embeddings
frankvandijk
2
1.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
340
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How GitHub (no longer) Works
holman
316
150k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Docker and Python
trallard
47
4.2k
Tell your own story through comics
letsgokoyo
1
1.1k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
550
Why Our Code Smells
bkeepers
PRO
340
58k
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の閾値署名の署名値を導出することも可能。