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

ウォレットの入門と実装 〜暗号学を数式を使わずに解説〜

Koji Miyata
November 11, 2023

ウォレットの入門と実装 〜暗号学を数式を使わずに解説〜

【🏮web3 Global Hackathon🏮WaveSession🌊】
https://lu.ma/web3global

ブロックチェーンにおけるウォレットの入門の解説と
ウォレットの技術を支える暗号学についての入門の講座です。

暗号学に関しては数式を使わずに直感で理解できることを心がけているので
これから暗号学を学ぶ方のモチベーションになれば幸いです。

Koji Miyata

November 11, 2023
Tweet

More Decks by Koji Miyata

Other Decks in Technology

Transcript

  1. 今年のハッカソン歴 ETH Global Tokyo   :Polygon Prize🏆 Web3エンタメハッカソン:ドリコムPrize 🏆🏆 ETH Taipei     

    :ファイナリスト🏆🏆🏆 ETH Global AW    :Prizeなし... 略歴 2013〜現在 Web系開発(個人)  スマホアプリ開発/サイト構築/VR•AR開発 2015〜 コロプラ  VRゲーム/IPを使った位置ゲー/スマホゲーム開発 2018〜 ブロックチェーン系開発(副業)  ブロックチェーンゲーム/マケプレ/Mintサイト等 2020〜 DMM.com  アドテク/SRE/マーケティング横断部署EM  株式会社DM2C Studio(DMMのWeb3事業)CTO 4 自己紹介 宮田航志 @miyata_17_
  2. バックエンド ウォレット・認証基盤 ブロックチェーンノード マケプレ他全て 設計, 構築, 実装, 運用 サービス企画 ・ディレクター

    ・プランナー ・アートディレクター マーケグループ 経営企画           等々... エンジニア募集中! フロントエンド(シニア) ポータルサイト/マケプレ 他各サービス全て 技術選定, 設計, 実装, 運用 5GameFiフルスタック 各GameFi開発のリード 設計, レビュー データ・アナリスト PFの分析基盤の開発リード 設計, 構築, 分析, 連携 エンジニア関連 他 https://dmm-corp.com/recruit/search/?tags=345
  3. カストディアルウォレット ノンカストディアルウォレット セミカストディアルウォレット 事業者 秘密鍵を管理 ユーザー 秘密鍵を管理 複数箇所で秘密鍵を管理 事業者の権限で利用者の 暗号資産を移転で

    る 利用者の協力 ないと 暗号資産を移転で ない 利用者の協力 ないと 暗号資産を移転で ない 事業者 持つ責任 大 、 日本に いては暗号資産交換業 のライセンス 必要 利用者責任で資産管理 で る 、秘密鍵の紛失等で資産を 失ったりUXの課題 ある 秘密計算の技術で秘密鍵を管理 しUXとセキュリティを向上 れによりライセンスは不要 取引所(CEX)等 Metamask等 Fireblocks等 13 ウォレットの定義(秘密鍵管理主体による定義)
  4. 15 ウォレットの定義(機能の分類による定義をするなら) 狭義のウォレット 広義のウォレット 秘密鍵を管理するためのソフトウェア 資産を管理・操作するためのサービス ・秘密鍵の生成 ・秘密鍵の復元 ・アカウント/アドレスの作成 (・トランザクションへの署名)

    (・RPCへのブロードキャスト) ・所持しているFT/NFTの確認 ・所持しているFT/NFTの送信 ・所持しているFT/NFTのステーキング ・ブリッジ/スワップ機能 ・接続チェーンの切り替え ・NFTのmint/burn ・OAuth認証機能 ・暗号資産以外のオフチェーンデータ  (lazymint前のNFT等)の確認                 等々..... 「ウォレット」という言葉は多義的なので、言葉の定義を合わせるとチーム開発はよりスムーズに進みます
  5. 16 狭義のウォレットについて 狭義のウォレットにも種類 ある、なぜ - 秘密鍵の作り方 違う・管理方法 違う - アカウントの形式

    違う - 対応しているチェーン 違う - 対応している署名方法 違う なんで署名するんでしたっ ...? - ブロックチェーン上でアドレスの所有権 ある とを証明するため そもそも - 署名と 暗号と 、どういう となんでしたっ .....?
  6. 18 狭義のウォレットのコア技術を理解しよう 暗号学入門!!! • 暗号とは • 共通鍵暗号方式 ◦ シーザー暗号 •

    公開鍵暗号方式 ◦ RSA暗号/楕円曲線暗号 • 署名とは • 秘密計算とは を数式を使わずに説明してみます。
  7. A ん らB んへ渡す情報を秘密にしたい (本当にA ん らなの 、内容 改竄 れていない

    、等はいったん割愛) 20 そもそも暗号とは:Cryptoの語源はギリシャ語の 'kruptein' 「隠す」
  8. 鍵配送問題の解決方法はあり 現在でも共通鍵暗号方式は広 使われています! 例:無線LAN   Webのhttps(ちょっと工夫して ら使われてる) 26 共通鍵暗号方式 暗号化と復号に関して共通のルールを使う暗号方式 共通鍵

    事前に共有するルール 平文 伝えたいメッセージ 暗号文 平文を暗号化したメッセージ 鍵配送問題 事前に渡す共通鍵がバレて復号される問題 共通鍵暗号方式:暗号学の用語で捉え直しましょう
  9. 「5個後の文字にずらす」という共通鍵の場合 「を」という文字は「え」になる 35 シーザー暗号を思い出しましょう あいうえ しすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん                                              1 2345 あいうえ しすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん

                                                 1 23456789.....................................................................................................................47 ...................................... 「100個後の文字にずらす」という共通鍵の場合 「を」という文字は「 」になる
  10. 「5個後の文字にずらす」という共通鍵の場合 「を」という文字は「え」になる 36 シーザー暗号を思い出しましょう あいうえ しすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん                                              1 2345 あいうえ しすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん

                                                 1 23456789.....................................................................................................................47 ........................................................................................................................................ ............................100 「100個後の文字にずらす」という共通鍵の場合 「を」という文字は「 」になる
  11. Y個の数で る る回る数字の列に いて Zという情報(x個目) らn個ずらした時に Xという情報だと一意にわ るルール 37 ルールとして抽象化すると

    12345678................................................X..........................................................Z........Y                                           x ......... .......................................................................(x+n)
  12. Y個の数で循環する数列に いて Zという情報(x個目) らn個ずらした時に Xという情報だと一意にわ るルール 38 数式化すると(数式使って めんな い)

    12345678................................................X..........................................................Z........Y                                           x ......... .......................................................................(x+n) X = [(x+n) / Y]の余り X = (x+n) mod Y Z = [(x-n) / Y]の余り Z = (x−n) mod Y 暗号化 復号
  13. 43 0 1 2 3 4 0 0 1 2

    5で割った余り 3で割った余り 0➗5のあまり=0 0➗3のあまり=0 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 れ の2次元に いてど にマッピング れる 試してみよう
  14. 44 0 1 2 3 4 0 0 1 1

    2 5で割った余り 3で割った余り 1➗5のあまり=1 1➗3のあまり=1 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 れ の2次元に いてど にマッピング れる 試してみよう
  15. 45 0 1 2 3 4 0 0 1 1

    2 2 5で割った余り 3で割った余り 2➗5のあまり=2 2➗3のあまり=2 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 れ の2次元に いてど にマッピング れる 試してみよう
  16. 46 0 1 2 3 4 0 0 6 3

    1 1 7 4 2 5 2 5で割った余り 3で割った余り 7➗5のあまり=2 7➗3のあまり=1 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 れ の2次元に いてど にマッピング れる 試してみよう
  17. 47 0 1 2 3 4 0 0 6 3

    9 1 10 1 7 4 2 5 11 2 8 5で割った余り 3で割った余り 11➗5のあまり=1 11➗3のあまり=2 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 れ の2次元に いてど にマッピング れる 試してみよう
  18. 48 0 1 2 3 4 0 0 6 12

    3 9 1 10 1 7 13 4 2 5 11 2 8 14 5で割った余り 3で割った余り 14➗5のあまり=4 14➗3のあまり=2 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 れ の2次元に いてど にマッピング れる 試してみよう
  19. 50 2次元で考えてみよう(!?) 0 1 2 3 4 5 0 1

    2 6で割った余り 3で割った余り 他の数字でもで る ? 「3で割ったあまり」と「6で割ったあまり」で試す
  20. 51 2次元で考えてみよう(!?) 0 1 2 3 4 5 0 0

    1 1 2 2 6で割った余り 3で割った余り 2➗6のあまり=2 2➗3のあまり=2 他の数字でもで る ? 「3で割ったあまり」と「6で割ったあまり」で試す
  21. 52 2次元で考えてみよう(!?) 0 1 2 3 4 5 0 0

    3 1 1 4 2 2 5 6で割った余り 3で割った余り 他の数字でもで る ? 「3で割ったあまり」と「6で割ったあまり」で試す 5➗6のあまり=5 5➗3のあまり=2
  22. 0 53 2次元で考えてみよう(!?) 0 1 2 3 4 5 0

    6 3 1 1 4 2 2 5 6で割った余り 3で割った余り 6➗6のあまり=0 6➗3のあまり=0 ぶってしまった。。
  23. 0 1 2 54 0 1 2 3 4 5

    0 6 3 1 7 4 2 8 5 6で割った余り 3で割った余り 2次元で考えてみよう(!?) ぶってしまった。。
  24. 55 中国剰余定理の発見 選んだ数字 ・「3」と「6」だとダブり 出てしまい ・「5」と「3」だと、ダブりな もれな うま 数字 マッピング

    れた 実は同じ素因数では割り切れない数の時 ダブりな もれな うま 数字 マッピング れるんです。 (中国剰余定理といいます) の性質を使って公開鍵暗号のアルゴリズム 発明で るでしょう ?
  25. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 59 他には? 改めて、2次元として見てみて、0 ら数字をたどって線を引いてみましょう
  26. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 60 他には? 改めて、2次元として見てみて、0 ら数字をたどって線を引いてみましょう
  27. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 61 他には? 改めて、2次元として見てみて、0 ら数字をたどって線を引いてみましょう
  28. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 62 他には? 改めて、2次元として見てみて、0 ら数字をたどって線を引いてみましょう
  29. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 63 他には? 改めて、2次元として見てみて、0 ら数字をたどって線を引いてみましょう
  30. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 64 他には? 改めて、2次元として見てみて、0 ら数字をたどって線を引いてみましょう
  31. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 65 他には? 改めて、2次元として見てみて、0 ら数字をたどって線を引いてみましょう
  32. 赤線を繋 ると 筒状になる 67 2次元 ら3次元(?)へ 線を引いてみると 「3」と「1」という情報を用いて、浮 輪状の表面の1点を表せるという捉え方 で

    る 長方形の両端を貼り付 ると浮 輪の形になる(複素一次元:トーラス) 両端を繋 と 完全に1本の線を引 る 0 6 12 3 9 10 1 7 13 4 5 11 2 8 14
  33. 70 物体の形状と巻 方に依存して、載せれる情報量に違い でる 線の長 =表現で る情報量 巻 方は色々ある ら、いろんな種類で表せそう。

    楕円、優秀ですね。。。 ね り回したら効率いい暗号化のアルゴリズム 発明で るのでは?   6面体(短い)                      楕円型(長い)
  34. 74 そもそもデジタル署名とは 暗号の入門で触れたようなアルゴリズムを使い 特定のメッセージを送る時に以下を行うための工程 ・特定の人 送った とを確 める ・特定の内容 改竄

    れていない とを確 める 秘密鍵 公開鍵 公開鍵暗号 受信者が復号化に使う 送信者たちが暗号化に使う デジタル署名 署名者が署名の作成に使う 検証者たちが署名の検証に使う 鍵を持つ人 個人が持つ 必要な人はだれでも持っていて良い
  35. 公開鍵暗号 デジタル署名 A ん 太郎の公開鍵で 署名の検証 75 公開鍵暗号とデジタル署名 A ん

    太郎の公開鍵で 暗号化 C ん 太郎の公開鍵で 暗号化 B ん 太郎の公開鍵で 暗号化 太郎 太郎の秘密鍵で 復号 C ん 太郎の公開鍵で 署名の検証 B ん 太郎の公開鍵で 署名の検証 太郎 太郎の 秘密鍵で 署名の作成
  36. 受信者 A ん 送信者 太郎 ん 76 デジタル署名のフロー メッセージ メッセージ

    ハッシュ値A ハッシュ値B 署名 太郎の 秘密鍵 ハッシュBとハッシュCを比較して 同じであれば署名の検証 成功 暗号化 ハッシュ関数 ハッシュ関数 受信した署名 復号 ハッシュ値C 太郎の 公開鍵 ① ② ② ③ ③ ④
  37. 77 ブロックチェーンに る秘密鍵と公開鍵 ブロックチェーンに いて ・秘密鍵 ランダムに作成 れそれ ウォレットで厳密に管理 れる

    ・秘密鍵 ら公開鍵 作成 れる ・公開鍵 らウォレットアドレスを作る ・ウォレットアドレスは誰でも見れる ビットコインに いては 1. 公開鍵をSHA-256でハッシュ化する 2. 1のハッシュ値をRIPEMD-160でハッシュ化する(RIPEMD-160とは) 3. 2のハッシュ値の前にVersion Prefixを付与する(Version Prefixは通常00を設定) 4. (Version Prefix + 2のハッシュ値)をSHA-256でハッシュ化する 5. 4のハッシュ値を更にSHA-256でハッシュ化する 6. 5で得られたハッシュ値の 頭4バイトをChecksumとし(Version Prefix + 2のハッシュ 値)の末尾に付与する 7. (Version Prefix + 2のハッシュ値 + Checksum)をBase58エンコードする
  38. 78 (今回の勉強会はAstar主催という とで) Astarはネイティブ/EVMで色々な方式 ある ・ECDSA ・Ed25519 ・SR25519 ・Schnorr署名 ユウキ

    んの記事を読みましょう https://note.com/standenglish/n/na9194a4ecd24 ブロックチェーンに る署名
  39. 81 DM2C Studioのウォレットでは の辺りのリサーチもやっています ・秘密分散 データをい つ の乱数の断片(シェア)に分 て秘匿する すべてのシェア、その中の特定の数のシェア

    集まると元のデータを復元で る れをウォレットで使うと、秘密鍵の管理体は分散した上で、必要な時に秘密鍵を復元して txへの署名 で る ・MPC 署名方法によっては、複数の署名を足し算で るアルゴリズム ある れをウォレットで使うと、txを発行するアドレスに対応する秘密鍵自体は復元する とな 複数の管理体による署名 可能にある 暗号学は現在も進化中の技術なので、最新状況のキャッチアップ 必要 秘密計算とウォレット
  40. バックエンド ウォレット・認証基盤 ブロックチェーンノード マケプレ他全て 設計, 構築, 実装, 運用 サービス企画 ・ディレクター

    ・プランナー ・アートディレクター マーケグループ 経営企画           等々... エンジニア募集中! フロントエンド(シニア) ポータルサイト/マケプレ 他各サービス全て 技術選定, 設計, 実装, 運用 5GameFiフルスタック 各GameFi開発のリード 設計, レビュー データ・アナリスト PFの分析基盤の開発リード 設計, 構築, 分析, 連携 エンジニア関連 他 https://dmm-corp.com/recruit/search/?tags=345
  41. 83 ・そろそろちゃんと「中国剰余定理」を理解したい!(鯵坂もっちょ ん) https://www.ajimatics.com/entry/2021/03/29/182759 ・トーラスと楕円曲線のつな り( 成滋生 ん) https://www.slideshare.net/herumi/ss-58815597 ・楕円面上の測地線(rikunora

    ん) https://rikunora.hatenablog.com/entry/20100905/p1 ・【完全保存版】Astar に るSubstrateとEVMのアカウントの関係について(ユウキ ん) https://note.com/standenglish/n/na9194a4ecd24 ・Schnorrベースのマルチシグネチャスキーム「MuSig」(安土 茂亨 ん) https://techmedia-think.hatenablog.com/entry/2018/01/25/125426 ・秘密分散ベースのMPCプロトコルSPDZ(安土 茂亨 ん) https://techmedia-think.hatenablog.com/entry/2020/04/09/231951 ・[Bitcoin]自分でビットコインアドレスを作ってテスト送信してみた https://qiita.com/yamaguchi3/items/4d536a4a24067505abea 参考