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
130
BIP39について
Yasuhiro Shimizu
June 03, 2019
Tweet
Share
More Decks by Yasuhiro Shimizu
See All by Yasuhiro Shimizu
Jetpack Composeから始める、頑張らないVRT
yshrsmz
0
940
Kotlin Multiplatform Projectを導入してみて
yshrsmz
1
1k
Android Fireside Chatまとめ
yshrsmz
3
2.1k
RxJava1からRxJava2へ
yshrsmz
0
85
Other Decks in Programming
See All in Programming
のびしろを広げる巻き込まれ力:偶然を活かすキャリアの作り方/oso2024
takahashiikki
1
390
役立つログに取り組もう
irof
25
8.4k
色々なIaCツールを実際に触って比較してみる
iriikeita
0
230
約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話
hatsu38
22
10k
WEBエンジニア向けAI活用入門
sutetotanuki
0
300
Modern Angular: Renovation for Your Applications
manfredsteyer
PRO
0
180
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
10
4.5k
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
6
390
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
22k
CPython 인터프리터 구조 파헤치기 - PyCon Korea 24
kennethanceyer
0
240
go.mod、DockerfileやCI設定に分散しがちなGoのバージョンをまとめて管理する / Go Connect #3
arthur1
10
2.3k
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.4k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
How STYLIGHT went responsive
nonsquared
95
5.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
790
BBQ
matthewcrist
85
9.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
13
1.9k
Six Lessons from altMBA
skipperchong
26
3.4k
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.8k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Practical Orchestrator
shlominoach
186
10k
Testing 201, or: Great Expectations
jmmastey
38
7k
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を繰り 返す。