Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Codex32

 Codex32

GBECの解説動画の資料です。
https://goblockchain.network/2023/06/codex32/

shigeyuki azuchi

October 17, 2023
Tweet

More Decks by shigeyuki azuchi

Other Decks in Technology

Transcript

  1. 1 Codex32とは?
 手計算でマスターシード/シェアを生成・検証可能な新しいエンコード方式
 BIP-93:https://github.com/bitcoin/bips/blob/master/bip-0093.mediawiki
 
 【既存のエンコード方式】
 • ニーモニックワード(BIP-39)
 
 


    
 • ニーモニックワード+シャミアの秘密分散法(SLIP-39)
 マスターシードを複数のシェアに分割し、
 各シェアをニーモニックワードでエンコード
 参考:Shamir Backup
 ◦ https://goblockchain.network/2020/01/shamir-backup/
 Master Seed agree cup word shop real hard proof east final zoo wire city
  2. 2 既存のエンコード方式との違い
 • エンコード結果がコンパクト:
 単語リストなどは使わなず、Bech32エンコードするので、
 12個のワードよりはコンパクトに。
 
 • 手計算可能:
 ◦

    バックアップしたシード・シェアの正しさを検証するのに、
 デジタルデバイスへの入力が不要
 ◦ 手計算を可能とするため、BIP-39のようなパスフレーズの保護はない

  3. 3 Codex32のフォーマット
 • HRP:MS
 • セパレーター:1
 • データ:
 ◦ 閾値:リカバリに必要な閾値数(2〜9)


    ◦ ID:鍵のFingerprint(4つのbech32文字)
 ◦ シェアインデックス
 ◦ シェアデータ
 ◦ チェックサム:13文字のチェックサム
 最大4文字の誤り訂正、8文字の消失に対応

  4. 4 新しいマスターシードの作り方
 1. シードのビットサイズを決める(128 bit 〜 512 bit) 
 2.

    リカバリに必要なシェアの閾値kを決める(2〜9)
 3. 4文字の識別子を決める
 4. k個分シェアを作成する:
 a. シェアインデックスを選択(bech32アルファベット1文字:aから順に) 
 b. シードのbitサイズ / 5 を切り上げた個数分、
 ランダムなbech32文字を選択(128bitであれば 26文字)
 c. チェックサムを計算する
 
 マスターシードは、↑のk個のシェアから計算される(シャミアの秘密分散法): 
 • シェアインデックスをxの値としてk-1次の多項式f(x)を構築
 • x = 16(シェアインデックスs)で多項式を評価した値f(16)がマスターシード
 ※ 先にシードがあるのではなくシェアからシードを生成 
 
 ※ その他に必要なシェアは、新しいシェアインデックスで f(x)を評価して生成

  5. 5 既存のマスターシードがある場合
 1. リカバリに必要なシェアの閾値kを決める(2〜9)
 2. 4文字の識別子を決める
 3. マスターシードを8bit単位→5bit単位に変換してbech32文字列を作成
 (シェアインデックスはs)
 4.

    チェックサムを計算
 5. 他にk-1個のシェアを作成する(1つ少ないのはマスターシードがあるから)
 6. k-1個のシェアとマスターシードから多項式f(x)を構築
 
 マスターシードのリカバリーとは?
 • k個のシェアを集めて、多項式f(x)を復元し、f(s=16)を計算すること

  6. 6 どうやって手計算するの?
 準備するもの:
 • 5つのサイコロ
 • 計算用のCodex32冊子: 
 ◦ https://secretcodex32.com/

    
 ◦ https://secretcodex32.com/docs/2022-09-26--color.pdf 
 
 
 
 
 
 
 
 
 
 
 
 手順は→ https://techmedia-think.hatenablog.com/entry/2023/03/15/192116 
 サイコロの偏り除去し、乱数生成 
 チェックサム計算用ワークシート 
 有限体上の加算用回転盤 
 有限体上の乗算用回転盤 
 ラグランジュ補間用回転盤