Slide 1

Slide 1 text

Web3.0到来前夜のログイン認証 Toshiya Matsumoto

Slide 2

Slide 2 text

自己紹介: 松本年矢(@toshiboy86) - バックエンド・フロントエンドのWebエンジニアとして活動していた が、2018年にStartbahn株式会社にブロックチェーン開発メンバーと して参加 - Ethereum Blockchainを使ったDAppsのPoC、開発、ローンチ、運用 を経験 - API、フロントエンドのSDK開発など - 日本の伝統芸能、特に歌舞伎が好き [email protected]

Slide 3

Slide 3 text

スライドの目的と流れ 目的 分散化の流れの中で、個人によるアカウント管理、JSを使った認証方法が普及している 様子を紹介 流れ 1. 前提となるWeb3.0やブロックチェーンについて高速で紹介 2. 認証ロジックの紹介 3. jsで動くウォレット・サービス(npm)の紹介 4. 認証を実際に体験

Slide 4

Slide 4 text

Web3.0とは - Webの歴史 - Web1.0: データを読むことができる (簡単なホームページなど ) - Web2.0: データを読み書きできる (SNS) - Web2.0の問題点 - 単一障害点による不正アクセスのリスク
 - 特定の企業によるユーザのプライバシー情報の一元管理
 - Web3.0の登場 : デジタル世界の民主化 - 管理主体が介在することなく、自分自身が自らのデジタル IDを保有・管理 - 分散的なサービス運用による単一障害点の回避 resource: https://www.creativevillage.ne.jp/69756, https://lastrust.io/2020/06/05/whatis-did-web3/

Slide 5

Slide 5 text

Web3.0の推進者: Blockchain 分散型ネットワークを構成する複数のコンピューターに、暗号技術を組み合わせ、取引情報などのデータを同期して 記録する手法 - コンセンサス
 - 一部のコンピューターで取引データを改ざんしても、他のコンピューターとの多数決によって正しい取引データが選ばれるた め、記録の改ざんや不正取引を防げる - ハッシュ
 - ブロックと呼ばれるデータの単位を生成し、時系列に沿ってチェーンのようにつないでいくことによりデー タベースとなる - ピア・トゥー・ピア(P2P:Peer to Peer)
 - 公開鍵暗号などの暗号化技術
 resource: https://www.coindeskjapan.com/keywords/blockchain/ “「分散型コンセンサス」と呼ばれるもので、ネットワーク上の信頼されていない多くの参加者が一貫性と信頼を確立する能力の ことです” by マーク・アンドリーセン(Webブラウザ NCSA MosaicやNetscape Navigatorの開発者)

Slide 6

Slide 6 text

- ヴィタリック・ブテリン氏等によって開発されたプラットフォームの名称 - 暗号通貨はEther(イーサ) - Proof of Workによりマイニングによる通貨発行とセキュリティの担保 - Bitcoinに次ぐ総資産 特徴 スマートコントラクト - Ethereum Blockchain上にプログラムをデプロイすることで、設定した要件を自動的に実行する - eg. アリスがボブに100Ether送ったとすると、その内5%の5Etherを松本にも送る - eg. Startbahnでは、アート作品の証明書とその所有者をプログラム上で紐付ける dApps 構築のプラットフォーム - 分散型アプリケーション(英 : Decentralized Applications、略称: dApps )を構築するための開発環境を提供するプラットフォーム - 企業や政府、銀行などの中央管理者がいなくても稼働するアプリケーション - 前四半期に約1.5兆ドルの取引を決済しており、これは Visaの決済量の50%に相当 Ethereum(イーサリアム) Blockchain resource: https://bitflyer.com/ja-jp/ethereum

Slide 7

Slide 7 text

分散型アプリケーション(Dapps): NFT NFT(Non Fungible Token) - 2020年に空前の大ブームとなる - デジタルアートと所有者の関係性を明 確にすると期待 - 技術: Ethereum blockchainのスマート コントラクト上でトークンと呼ばれるID を生成し、ユーザIDと作品情報などを マッピングする https://opensea.io/ https://rarible.com/ https://nbatopshot.com/ 初ツイートのNFTが
 約3億1640万円)で
 落札された

Slide 8

Slide 8 text

DeFi(Decentralized Finance) - 世界中の誰もが、銀行や証券会社を使わずに、簡単にダウンロードできる仮想通貨Walletを使って、ブロック チェーンベースの資産を貸し借りしたり、送ったり、取引したりすることができます。 https://uniswap.org/ https://compound.finance/ 基本性質 - パーミッションレス: 民族、性別、年齢、資産、政治的立場などに関係なく、世界中の誰にでも平等にサービス を提供することができる - 透明性: いつでもどこでも誰でも監査可能である 分散型アプリケーション(Dapps): DeFi Resource: https://note.com/yas_crypto/n/n273b80d781b3

Slide 9

Slide 9 text

DAppsと既存Appの大きな違い 個人がアカウント(秘密鍵やパスワード)を管理して、個人がアプリケーションと直接 やりとりを行い、所有権の証明を行う

Slide 10

Slide 10 text

Ethereumで所有者を証明するためのID - EOA(Externally Owned Account) - 個人のID - 20bytesの16進数: 例: 0x1aa76a48dda5f106a96704359212237609e0b9c8 - 元になる秘密鍵は256bitesの16進数: 例: f8f8a2f43c8376ccb0871305060d7b27b0554d2cc72bccf41b2705608452f315 - 仮想通貨(Ether)やNFTとの紐付きも全てEOA単位で行われる - 絶対に秘密鍵は渡してはダメ https://etherscan.io/

Slide 11

Slide 11 text

EOAは署名関数と組み合わせることで、メッセージへの署名と復元を利用して、所有権 を第三者に証明できる EOAの秘密鍵を利用した署名と所有権の証明 secp256k1の楕円曲線暗号を利用 https://gaiax-blockchain.com/elliptic-curve-cryptography

Slide 12

Slide 12 text

コードを使った実例 アカウントの所有者 (f) 署名関数(メッセージ, 秘密鍵) = 署名 検証者 (f) 復元関数(メッセージ, 署名) = EOA

Slide 13

Slide 13 text

Javascript Libraryの紹介 Name Weekly Downloads Last publish URL ethereumjs-util 558,668 3 months ago https://www.npmjs.com/package/ethereumjs-util ethers 252,887 9 hours ago https://www.npmjs.com/package/ethers web3 262,579 2 days ago https://www.npmjs.com/package/web3 NPM 情報

Slide 14

Slide 14 text

コードを使った実例 Sandbox参照: ethersを使用 https://codesandbox.io/s/misty-leftpad-x8snx?file=/src/in dex.ts

Slide 15

Slide 15 text

従来型(web2.0)認証フロー への応用 Resource: https://www.toptal.com/ethereum/one-click-login-flows-a-metamask-tutorial

Slide 16

Slide 16 text

パスワードをDBに保存する必要がなくなっ た

Slide 17

Slide 17 text

パスワード支配からの 卒業

Slide 18

Slide 18 text

と言いたいところだが、 個人での秘密鍵管理はリス ク高いし、リテラシも要求さ れる

Slide 19

Slide 19 text

web上でEOA管理を楽にしてくれるサービス達 Name Login Method Private Key Storage Private Key Available at npm Weekly Downloads npm Last publish Telegram user Twitter user U R L Torus Oauth providers Nodes in p2p network Browser (Torus domain iframe) 12,763 17 days ago 305 8649 https://w ww.npmj s.com/pa ckage/@ toruslabs /torus-em bed (Email or phone number) & password AWS(HSMs, KMS, Incognito) Browser (Fortmatic domain iframe) 18,396 a year ago 865 4360 https://www. npmjs.com/ package/fort matic Email & password HSM HSM 1,453 2 months ago - 10.1K https://www. npmjs.com/ package/bits ki Email & password N/A Browser (Portis domain iframe) 18,800 5 days ago 812 3333 https://www. npmjs.com/ package/@ portis/web3 27,July,2021

Slide 20

Slide 20 text

Torusの事例: Oauth2.0認証 https://docs.tor.us/key-infrastructure/role-of-torus-nodes/overview EOA Privat-key session storage シンガポールのス タートアップ GoogleなどのOauth 認証とEOAを紐付け

Slide 21

Slide 21 text

Torusの実装とデモ https://docs.tor.us/wallet/api-reference/installation

Slide 22

Slide 22 text

実際にDemo - https://opensea.io/ メッセージ、シグネチャ、Nonce確認 Startbahn(スタートバーン)では、このようなLoginの実装やNFTの発行など、ブロックチェーンの知名度が 上がるかなり早い段階からプロダクトをローンチして運用しているので、興味ある方は ↓↓ https://startbahn.jp/

Slide 23

Slide 23 text

まとめ - Web3.0、ブロックチェーンを使ったアプリケーション(Dapps)などの台頭により、アカ ウントを自身で管理する流れがある。それを用いて、サービス提供者が鍵を保存す る必要のない認証方法が使われ始めている。 - アカウントの個人管理は大きなリスクも伴うため、中央集権的だがWeb2.0で一般的 となったOauthとEthereumの秘密鍵を紐付けるハイブリット型のサービスが出てき ている(そういった意味でのweb3.0前夜) - 完全にIDを分散管理するプロジェクト(DID(Decentralized Identifier))も出てきているので引 き続き注目

Slide 24

Slide 24 text

リソース 「Web3.0は何を変える?Webの歴史から振り返る」 ; https://www.creativevillage.ne.jp/69756 「Web3.0とDIDとは」: https://lastrust.io/2020/06/05/whatis-did-web3/ 「ブロックチェーン(blockchain)の基礎知識」: https://www.coindeskjapan.com/keywords/blockchain/ 「イーサリアム(Ethereum)とは?」: https://bitflyer.com/ja-jp/ethereum 「ethereumbook」: https://github.com/ethereumbook/ethereumbook 「One-click Login with Blockchain: A MetaMask Tutorial」: https://www.toptal.com/ethereum/one-click-login-flows-a-metamask-tutorial 「TORUS documentation Overview」: https://docs.tor.us/key-infrastructure/role-of-torus-nodes/overview 「TORUS documentation Installation: https://docs.tor.us/wallet/api-reference/installation

Slide 25

Slide 25 text

ご静聴ありがとうございました