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
BIP39について
Search
Yasuhiro Shimizu
June 03, 2019
Programming
0
160
BIP39について
Yasuhiro Shimizu
June 03, 2019
Tweet
Share
More Decks by Yasuhiro Shimizu
See All by Yasuhiro Shimizu
Jetpack Composeから始める、頑張らないVRT
yshrsmz
0
1.1k
Kotlin Multiplatform Projectを導入してみて
yshrsmz
1
1.1k
Android Fireside Chatまとめ
yshrsmz
3
2.2k
RxJava1からRxJava2へ
yshrsmz
0
98
Other Decks in Programming
See All in Programming
2025年のz-index設計を考える
tak_dcxi
12
4.8k
リアーキテクチャの現場で向き合う 既存サービスの読み解きと設計判断
ymiyamu
0
140
SwiftDataのカスタムデータストアを試してみた
1mash0
0
150
MySQL初心者が311個のカラムにNot NULL制約を追加していってALTER TABLEについて学んだ話
hatsu38
2
150
ComposeでのPicture in Picture
takathemax
0
140
generative-ai-use-cases(GenU)の推しポイント ~2025年4月版~
hideg
1
420
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.2k
AWS Summit Hong Kong 2025: Reinventing Programming - How AI Transforms Our Enterprise Coding Approach
dwchiang
0
150
はじめてのPDFKit.pdf
shomakato
0
110
Browser and UI #2 HTML/ARIA
ken7253
2
180
Design Pressure
hynek
0
140
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
270
Featured
See All Featured
For a Future-Friendly Web
brad_frost
177
9.7k
Designing for humans not robots
tammielis
253
25k
Documentation Writing (for coders)
carmenintech
71
4.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
A better future with KSS
kneath
239
17k
Producing Creativity
orderedlist
PRO
344
40k
What's in a price? How to price your products and services
michaelherold
245
12k
Navigating Team Friction
lara
185
15k
Visualization
eitanlees
146
16k
Transcript
BIP39について 秘密鍵を安全に保管する
BIP39(Mnemonic Code)とは - 秘密鍵を簡単に覚えられる単語の組み合わせで表現する - 決定性ウォレット(deterministic wallet)のシード値の保存によく 使われる alarm boost
mom torch couple owner myself gift sugar tell ticket panther 27d28fc240b66cff0eb7bb89d9aa99f4dddc43954db4565c25b1226347e0b2a59 dd5281b6ce384606bc30479e3ab0f41702e27fd3442269b7b187f86601e8db1
対応言語 - 英語 - 日本語 - 韓国語 - 中国語(簡体字) -
中国語(繁体字) - フランス語 - イタリア語 ただ、Unicodeのnormalizationが必要な言語も多いので、英語が用いられることが多そ う(個人の感想です)
BIP39のステップ 1. Mnemonic Codeを生成 2. バイナリのシード値に変換
Mnemonic Codeの生成 1. 初期エントロピー(ENT)を取得(暗号学的にランダムな値。 32bits区切りで128-256bits) 2. エントロピーのSHA256ハッシュをとり、その結果の最初の (ENT/32)bitsをチェックサムとする(128bitのENTなら、ハッシュ の最初の4bits) 3.
チェックサムをENTの末尾に連結 4. 11bitsごとに区切る 5. 11bitsの数字をインデックスとして、ワードリストから単語を取得 する
None
Mnemonic Codeからシード値を得る 1. Mnemonic Codeとパスフレーズ(任意) 2. Mnemonic Codeと`mnemonic${パスフレーズ}`を PBKDF2(HMAC-SHA512)でハッシュ化。BIP39では2048回 ハッシュ化を行う(Key
Stretching)い、512bitsのシード値を得 る。 → あとはBIP32とかでよしなに
None
BIP39の派生 そもそもBIP39はElectrumというWalletのmnemonic code生成手 法をベースに、trezorの製造元によって提案された。 Electrumの作者はBIP39には欠点があるとして認めていない
Electrum Seed V1 - BIP39の元になった仕様 - ワードリストは1626(BIP39は2048) - シードとMnemonic Codeを相互変換可能
Electrum Seed V2〜 - BIP39の問題点を改善した実装 - ワードリストはBIP39と同じ - ワードリストなしに入力されたMnemonic Codeの間違いが検
出できる - Mnemonic Codeから生成に使われた仕様のバージョンを取 得できる
Electrum Seed V2でMnemonic Code取得 1. エントロピーの取得(暗号学的にランダムな値) 2. エントロピーとnonce(0から始まる正の整数)からmnemonic codeを取得 3.
mnemonic codeを`hmac_sha_512(b”Seed Version”, mnemonic)`して、バージョン コードが含まれているか確認。 4. 含まれていたら終了。含まれていなかったらnonceをインクリメントして、2-3を繰り 返す。