Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Blockchain Kyoto #4 〜階層的決定性ウォレットについて〜
Search
いっしー
June 21, 2018
Technology
0
230
Blockchain Kyoto #4 〜階層的決定性ウォレットについて〜
いっしー
June 21, 2018
Tweet
Share
More Decks by いっしー
See All by いっしー
準同型暗号
issy
0
110
暗号
issy
0
110
パブリックチェーンとプライベートチェーン
issy
0
100
blockchain_scalability
issy
0
98
blockchain_kyoto_14
issy
0
100
blockchain_kyoto_13
issy
0
120
blockchain_kyoto_12
issy
0
130
blockchain勉強会_11.pdf
issy
0
170
Blockchain Kyoto #7 〜ブロックチェーン関連で読んだ本紹介〜
issy
0
150
Other Decks in Technology
See All in Technology
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
7
3.2k
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
1
540
The Cake Is a Lie... And So Is Your Login’s Accessibility
leichteckig
0
100
[Keynote] What do you need to know about DevEx in 2025
salaboy
0
130
生成AIで「お客様の声」を ストーリーに変える 新潮流「Generative ETL」
ishikawa_satoru
1
360
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
230
関係性が駆動するアジャイル──GPTに人格を与えたら、対話を通してふりかえりを習慣化できた話
mhlyc
0
130
SwiftUIのGeometryReaderとScrollViewを基礎から応用まで学び直す:設計と活用事例
fumiyasac0921
0
150
Vibe Coding Year in Review. From Karpathy to Real-World Agents by Niels Rolland, CEO Paatch
vcoisne
0
110
JAZUG 15周年記念 × JAT「AI Agent開発者必見:"今"のOracle技術で拡張するAzure × OCIの共存アーキテクチャ」
shisyu_gaku
0
130
from Sakichi Toyoda to Agile
kawaguti
PRO
1
100
動画データのポテンシャルを引き出す! Databricks と AI活用への奮闘記(現在進行形)
databricksjapan
0
160
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
45
2.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
900
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Thoughts on Productivity
jonyablonski
70
4.9k
GitHub's CSS Performance
jonrohan
1032
470k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Transcript
Blockchain勉強会 in Kyoto #4 「階層的決定性ウォレットの話」 2018/06/21 石野隼伍
ウォレットの種類 ɾペーパーウォレット ɾWebウォレット ɾモバイルウォレット ɾデスクトップウォレット
ペーパーウォレット https://www.bitaddress.org
うぉれっと? Q. ウォレットにはビットコインが入ってる? A. 入ってません。 Q. じゃあ何が入ってる? A. 秘密鍵。
None
第4章後半のお話。
ビットコインアドレスの生成 ɿެ։伴 ɿൿີ伴 ΞυϨε = hash(ɹ)
ウォレットに求めること ɾビットコインアドレスは1回使い切りにしたい。 ɾつまり秘密鍵をたくさん管理したい。 ɾ大事な秘密鍵はオフラインで保管したい。
構造と鍵生成の仕組み ɾ非決定性ウォレット ɾ決定性ウォレット ɾ階層的非決定性ウォレット(HDウォレット)
構造と鍵生成の仕組み ɾ非決定性ウォレット ɾ決定性ウォレット ɾ階層的非決定性ウォレット(HDウォレット)
非決定性ウォレット 例えば、アプリの初回起動時に100個の秘密鍵 をランダムに生成し、そこから作成したビット コインアドレスを使い果たすと、また新しく秘 密鍵を生成していく。
WALLET 秘密鍵A 秘密鍵B 秘密鍵C コールドストレージ ホットストレージ 公開鍵A 公開鍵B 公開鍵C ビットコインアドレスA
ビットコインアドレスB ビットコインアドレスC
非決定性ウォレット ランダムに作成した秘密鍵をたくさん持っておく
こんなのいやだ。 ランダムに作成した秘密鍵をたくさん持っておく
問題いっぱい。。 ɾ大量の秘密鍵を管理する必要がある。 ɾバックアップが大変。 ɾ公開鍵がなくなったら都度追加が必要。
WALLET ɾ非決定性ウォレット ɾ決定性ウォレット ɾ階層的非決定性ウォレット(HDウォレット)
決定性ウォレット 秘密鍵生成のルールを決めるのはどうか? ランダムにマスター秘密鍵を生成。 秘密鍵1 = マスター秘密鍵 + 1 秘密鍵2 =
マスター秘密鍵 + 2 ɾ ɾ ɾ
決定性ウォレット 秘密鍵生成のルールを決めるのはどうか? マスター秘密鍵からマスター公開鍵を生成。 公開鍵1 = マスター公開鍵 + G 公開鍵2 =
マスター公開鍵 + 2G ɾ ɾ ɾ
決定性ウォレット マスター秘密鍵 秘密鍵B 秘密鍵C コールドストレージ ホットストレージ 公開鍵A 公開鍵B 公開鍵C ビットコインアドレスA
ビットコインアドレスB ビットコインアドレスC マスター公開鍵 秘密鍵A
いいかも。 ̋利点 ɾ管理する秘密鍵は1つだけ。 ɾマスター公開鍵があれば、 秘密鍵がなくても公開鍵を大量に作成できる。 ̋問題点 ɾ法則性が分かると一連の公開鍵が同じ人のものだと 分かってしまう。
WALLET ɾ非決定性ウォレット ɾ決定性ウォレット ɾ階層的非決定性ウォレット(HDウォレット)
階層的決定性ウォレット 秘密鍵がツリー構造をなしている。
階層的決定性ウォレット ̋特徴&利点 ɾ用途ごとにブランチを割り当てることができる。 ɾ親は子の鍵を全て管理できる。 ɾ秘密鍵にアクセスすることなく公開鍵を作成できる。
階層的決定性ウォレット ̋マスター鍵のつくりかた Mnemonic Code Words マスターchain code 暗号学的に安全な 疑似乱数生成器 HMAC-SHA512
一方向ハッシュ関数 左 側 256ビ ッ ト 右 側 256ビ ッ ト ルートシード マスター秘密鍵 マスター公開鍵
階層的決定性ウォレット ̋親秘密鍵から子秘密鍵をつくる(コールドストレージ) 親公開鍵 親chain code 子秘密鍵 子公開鍵 子chain code HMAC-SHA512
一方向ハッシュ関数 左 側 256ビ ッ ト 右 側 256ビ ッ ト 親秘密鍵 インデックス 親秘密鍵+左側256ビット
階層的決定性ウォレット 親chain code 子chain code HMAC-SHA512 一方向ハッシュ関数 インデックス 親公開鍵 左
側 256ビ ッ ト 右 側 256ビ ッ ト ̋親公開鍵から子公開鍵をつくる(ホットストレージ) 子公開鍵 親公開鍵 + 左256bit * G
階層的決定性ウォレット ̋利点 ɾ覚えておくのは1つのシードのみ。 ɾ親公開鍵から秘密鍵なしに子公開鍵を作成できる。 ɾchain codeが分からないと公開鍵を特定できない。 ɾ階層的に鍵を管理できる。
ɾ強化子公開鍵。 ɾ子鍵を使ってさらに孫鍵、孫鍵からひ孫鍵と延々に作れる。 ɾルートシードはMnemonic Code Wordsで管理(BIP39)。 もうちょい。 ɾ階層に意味づけをして使う(BIP43, BIP44)。 ɾHDウォレット(BIP32)。
ɾウォレットは鍵を管理してる。 ɾHDウォレット推奨。 ɾ用途によってウォレットを選ぶ。 まとめ