みなさんこんばんは、先日出した「Privy」のアクセス数から皆さんのウォレットに対する関心が高いことがわかりました。なので今日は原点にして頂点の「Web3Auth」について仕組みを完全に理解しましょう。
国内でWeb3関連の事業を行うときにいくつかハードル、大きく分けて税務と法務が壁として立ちはだかり、苦しめられている事業者も多いでしょう。
そんな規制の一つ「カストディ業務」に関する内容で、事業者の参入難易度を大きく下げる可能性があるサービスなのでぜひ最後まで見てみてください!
前提知識
Web3Authの概要
Web3Authでできること
Web3Authの活用例
Web3Authの仕組み
Web3Authの技術的仕様
前提知識
カストディとは
カストディとは、投資家の資産を代理で保管/管理することを指します。一般的に有価証券の保管の代行のみならず、利子や配当金の受領等も一貫して行う機関です。
例を挙げると、海外株を売買する際に日本に株を持ち込むことなく取引及び配当の受け取りができているのはカストディ業務を証券会社が行なっているからです。
今回の説明では特に暗号資産のカストディ業務/規制を指します。
カストディに対する規制
2022年8月現在、日本国内で暗号資産のカストディ業務を行えるのは、BitFlyerやCoincheckなどの暗号資産取引所を運営する暗号資産交換業者のみとなっています。
取引所以外にも、ウォレットなどがカストディ業務に該当する可能性があり、暗号資産の保管に関する業務を行う際は十分に注意が必要です。
2022年6月に、早ければ今秋には 信託銀行が新たにカストディ業務を行えるようになることが発表されカストディ及び付随事業への参入が期待されています。
カストディ規制を回避する
暗号資産交換業のライセンスを持っている事業者は、もちろんカストディ業務を行うことができますが、国内で暗号資産交換業を持たずともウォレットを提供している事業者が存在します。
ウォレットサービスを提供する際もいくつか要点を押さえるとカストディ業務に該当しません。
ノンカストディアルウォレット
セルフカストディウォレットとも呼ばれるウォレットの一種で、文字の通り運営がカストディ業務を行わず利用者/保有者自身で資産を管理する方式こと。
有名なものだとMetaMaskが挙げられます。国内事業者でも株式会社Ginco等が提供しています。
ウォレットの特に秘密鍵を自身で保有する方式なのでセキュリティは個人に委ねられ、逆に取引所などは一定数のセキュリティ基準を満たして管理を代行しています。
秘密鍵と公開鍵とアドレス
一般的なブロックチェーンには秘密鍵と公開鍵という概念が存在します。ブロックチェーンのみならず幅広く応用されている暗号化の仕組みの一種です。
秘密鍵→公開鍵には変換可能ですが、逆の公開鍵→秘密鍵には変換できません。
いわゆるウォレットアドレスは、公開鍵から生成しており、送金などアドレスにある資産を触るためには秘密鍵が必要です。公開鍵とアドレスは公開情報で送金の時に利用するので所在を示すメールアドレスのようなものです。しかし、メールアドレスだけではそのメールアドレスからメールを送るにはパスワードを初めとする情報が必要です。同様に、ウォレット(アドレス)にある資産を実質的に管理しているのは秘密鍵です。
よってこの業界における資産の保有は、秘密鍵の保有が該当し、他人の秘密鍵を代理で保管及び管理することはカストディ業務に該当します。
シードフレーズとは
シードフレーズと秘密鍵、どちらも秘密鍵の役割を果たしますが見た目は大きく違います。簡単にいうと暗号の秘密鍵を視認性の高い単語のまとまりにしたものです。シードフレーズの他にも、ニーモニックフレーズなどとも呼ばれるリカバリーフレーズの一つです。
BIP-39という規格に則り、リストされた2048個の英単語が利用されます。一般的には12個の英単語の配列が秘密鍵から生成されますが、24個などのものもあります。
秘密鍵と同様に公開鍵→シードフレーズの変換はできませんが、秘密鍵とシードフレーズは互換性があるので相互に変換することが可能です。
マルチシグとは
2個以上の秘密鍵を要し、一定数の秘密鍵を利用してやっと認証される仕組み。単一の秘密鍵管理の時よりも漏洩リスクを下げることができるのがメリットです。
マルチシグの説明として一般的にM of Nと表現され、もし1つ秘密が鍵が盗まれたとしても残ったM-1個の秘密鍵が漏れない限り問題ないです。例えば4つの秘密鍵を利用し、認証に最低3つの秘密鍵が必要なケースでは、3 of 4となります。
ブロックチェーンの場合、送金などの作業を行う際に複数人の承認を設けたい場合に利用され、特に組織や企業、DAOのトレジャリーの管理とは相性がいいでしょう。
GOXとは
Mt.Gox事件が由来となってできたクリプト界隈特有のスラングです。カードゲームのカード交換所として2009年に東京で立ち上がったMt.GOX社。かつて世界のBitcoin取引量70%以上を占めていた程です。
Bitcoin建では現在でも最高規模の85万BTCがハッキングによって盗まれ、多くの人に多大な被害をもたらした事件です。その社名をもじって取引所や暗号資産系のプラットフォームがハッキングされたり資金を持ち逃げすることを「GOXする」と呼び始められました。
セルフGOXとは
上記のGOXとほぼ同意ですが、ミスで秘密鍵を無くしてしまった場合や、送金先アドレスの間違いなど、その原因が自分自身にある場合を指します。
例えば存在しないアドレスにBitcoinを送ってしまった場合にTwitterなどで「セルフGOXしちゃった、、」なんてツイートを見かけたりします。皆さんも注意しましょう。
Web3Authの概要
Web3Authとは、従来の面倒な秘密鍵保管を行う必要なくユーザーが資産の管理を行えるセルフカストディウォレットの作成を可能にするサービスです。
既存のサービスへのウォレット機能の実装、新規サービスへのウォレット機能を簡単に導入するためのインフラストラクチャーを提供しています。
今年1月にSequoia Indiaがリードするラウンドで1300万ドルの資金調達を完了し、4月にはzk-RollupのStarkNetとの提携などプロダクトに関する発表も多く、特にWeb3関連事業でもインフラの部分を担うので注目されているスタートアップの一つです。
ちなみに直近の調達のタイミングでTorusという名前からリブランディングされWeb3Authが誕生しました。その名残があり今も一部の仕組みにTorusという名前が含まれています。
現状
現状のWeb3サービスにおける課題はたくさんあり、特に新規参入者のウォレット作成にかかる学習コストや時間を全てユーザーに追わせていることが問題点です。
特に暗号資産の管理と絶対切り離せないのが秘密鍵(シードフレーズも含む)。Chainalysisによると、ブロックチェーン技術とは関係ない人的ミスでセルフGOXしてしまった資産がBitcoinだけに着目しても発行量の約20%にも値します。
Bitcoinの価格上昇や希少性の向上につながっているという側面はあるものの、セルフGOXは絶対避けたいところです。
課題
中央集権的にアカウントのパスワード(ここでいうアドレスの秘密鍵)を再発行したり、再設定したりできない点はブロックチェーンの特性上仕方がない部分です。なのでそれらが参入障壁になってしまっている部分もあります。
秘密鍵の管理法としてシードフレーズを紙に書いたり、安全なストレージに保管するのが一般的ですが、この管理法は最善策ではない可能性が高いです。
よってより秘密鍵という部分をマスクした状態でユーザー体験を向上できるかどうかが課題となります。一部のモバイルウォレットでは、秘密鍵をiCloud等のクラウドサービスに保管するものも出てきましたが結局管理が全て個人に委ねられる状態でした。
解決策
Web3Authを利用することで、ユーザーの秘密鍵を独自のキー管理システムによってデータベースや参加しているノードにさえも保存せずとも分散管理できるようになりました。
Web3Authでできること
Web2アカウントを使った認証でウォレット作成
いまはパスワードレスでのログインが主流になっており、Web3Authでも同様にユーザーはGoogleやTwitterなどの任意のOAuthプロバイダーを通してウォレット作成が可能です。またメールアドレスを利用したワンタイムコードによるパスワードレスログインにも対応しています。
自分のアプリに外部ウォレットをインポート
元から自分のアドレスを保有しているユーザーは秘密鍵を入力することで、アプリと直接連携(インポート)して利用することができます。Web3ログインの機能を実装するのにも利用できます。
シームレスなオンボーディングの実現
ソーシャルログインを利用することで、既存のサービスやプラットフォームのログインと遜色ないユーザー体験が得られるため、オンボーディングにかかるコストが大幅に改善します。
ユーザーのプライバシーを保護する設計
ユーザーは秘密鍵の所有権を常に持ち自分以外からのアクセスを制限しています。よってログインの際に秘密鍵の情報がサービス側に渡ることもないです。
ホワイトラベルを利用したカスタムUI
Web3Authのホワイトラベルを利用することで、ログイン画面のロゴを自社サービスに変更したりログイン方法のカスタマイズが可能になります。何よりUIの変更が可能なのでサービスのプライマリーカラーやデザインに統一させることでサービスに自然に馴染ませることができます。
ネイティブアプリにもすぐに対応可能
Webアプリとネイティブアプリどちらにもにも対応している上に、ハイブリッドアプリケーションにも対応しているのでWebとアプリの両方で動作させることができます。
既存の認証とユーザーデータベースを利用して移行
Web3Authはすでにユーザー認証を実装している場合でも移行が行なえる仕組みになっています。既存のユーザーデータを利用してプラグインを導入することでウォレット機能を追加可能です。
Web3Authの活用例
Binance Wallet
世界で最も利用されている暗号資産取引所の一つのBinanceが開発するウォレットです。対応チェーンはBNB Beacon Chain、BNB Smart Chain(BSC)、Ethereumの3つです。Chrome拡張機能として提供しており現在のユーザー数は100万人を突破しています。
こちらではウォレット作成のフローにWeb3Authが活用されています。
従来のウォレットではアドレス作成時に秘密鍵かシードフレーズの保存が必要ですが、Googleログインのみでも自分のウォレット(アドレス)の作成が可能です。
Skyweaver
2019年にHorizon社によってリリースされたNFTカードゲームです。2019年から2021年に渡り3回の資金調達をおこなっている注目のスタートアップです。OpenBeta版としてWindow、Mac、Linux、そしてモバイル版もiOS、Androidでプレイできます。
こちらではゲームアカウント作成時にWeb3Authを利用しています。
実際にアカウント作成画面に行ってみたところ、秘密鍵入力が完全にマスクされた状態で、ソーシャルログインでプレイできるようになっていました。ブロックチェーン技術を使っているとユーザーが感じることなく仕組みとして活用できるのは素晴らしいユーザー体験ですね。
Web3Authのインタビューでもユーザーエクスペリエンス向上のために実装したと話しています。
Kukai
KukaiはTezosでいちばん昔からあるウォレットです。2018年にオープンソースプロジェクトとして立ち上がりいまに至ります。Tezosの急速なエコシステム拡大に伴うインフラ整備を目標に、セキュリティには重点を置きつつ、ユーザーをオンボーディングするより良い手段を考えていました。
そこでWeb3Authを見つけ最適解なのではと思い取り入れたと話しています。
実装してからKukaiは新たに100万人をユーザーを獲得しています。
Kukaiは元々一般的なウォレットとして提供されていたので、途中からWeb3Authに移行した形になりますが、統合するのに2種間も要さなかったと話しており、開発のしやすさも分かります。
Web3Authは主要のEVM互換チェーンのみならず、SolanaやTezosといったL1チェーンにも対応しているのでチェーン選定時の選択肢が広がりビジネスへの応用はかなり幅が広がります。
考察
まずWeb3Authはクリプトネイティブな人向けではなく、新たに暗号資産やNFTに触れる人たちと特に相性がいいと思います。正直ウォレット単体で見た時に、クリプトやNFTを触る人以外の人の使い道は現状ほぼ皆無で比較的ライトな層を取り込みやすくするサービスとして一役買うのがまさにこのWeb3Authではないかと。
その中でも今後真価を発揮する領域は、Web2→Web3への移行を図る事業者。専門的な知識の説明コスト及び学習コストの削減に直結し、ユーザーの速やかなオンボーディングが期待できます。
例えばユーティリティを持ったNFTを活用するビジネスです。その中でもチケットなどのライトな権利などがユーティリティとしても分かりやすいのではないでしょうか。
次に私が思うWeb3Authと相性が良さそうなサービスや活用法をまとめました。
ECサイトへの導入
暗号資産決済導入の一環として登録やログインの部分をWeb3Authに置き換えてしまうというもの。加えて会員情報と紐づいたウォレットアドレスのデータベースを所持できるので、販売する商材によってはNFTをAirDropするなどの仕掛けも作れます。
これはどちらかというと、Web3Authの非クリプト民へのアプローチのしやすさという良さを活かしきれてない気がしますが、実装の簡単さを考えてもユーザーの選択肢が増えるので良いと思います。何よりログイン手段に追加することで、ユーザーとウォレットを関連づけられるのは応用が効きそうで面白そうです。
新規ユーザー層の獲得
Web3及びNFTはバズワード化しておりマスからの期待感も上昇傾向にあるので、マーケティング的にも利用するメリットは大きいと感じます。
特にNFTや暗号資産に保有している層のみならず、興味があって初めて触るとして、最初からウォレット作成を外部で行ってもらうよりもWeb3Authを通じて会員登録の際にファーストウォレットを持ってもらう。これもWeb3へのハードルが下がるので面白いと思います。
Web3Authの仕組み
Web3Authではユーザーは多要素認証の仕組みを利用し、OAuthログイン、デバイス情報、及びその他の要素で秘密鍵の管理を行います。維持コストが高かったり、共同管理者へのトラストが必要なマルチシグを、より手の届きやすい形かつ分散化されたネットワークを用いて実現しました。
特に(k,n)しきい値秘密分散法を実現する方法の一つのシャミア(Shamir)の秘密分散法を利用し秘密鍵保管の際のセキュリティを向上させています。
(k,n)しきい値秘密分散法とは?
k = 秘密情報の復元に必要なShareの数
n = 秘密情報の分割数(分割後のものをShareと呼ぶ)
Web3Authではk=2、n=3の(2,3)シャミアの秘密分散法を利用しています。秘密情報を故障や漏洩の危機から守るために、3つのシェアを生成し、それぞれをShareA、ShareB、ShareCと名付けました。Web3AuthのShareの内容は以下の通りです。
ShareA
このShareはノードオペレーターを介してプロバイダーに保存されます。ここで受け取ったShareを更にノードネットワーク間で更に分割し保管されます。
ShareB
このShareはユーザーのデバイスに固有の情報を保存します。スマートフォンなどのモバイル端末の場合は、生体認証等で保護されたストレージに保管されます。
ShareC
このShareは特別にRecovery Shareと呼ばれています。ShareAのようにデバイス側で保存されるものではなく、ユーザーが記憶するパスワードや秘密の質問等がこれに当たります。
次に(2,3)しきい値秘密分散法を使って実際に秘密情報を導き出してみましょう。
秘密分散を行う最初のフローで指定した定数項を秘密情報として復元します。
秘密分散(Share)の作成
定数項が5の1次多項式を適当に作成
f(x) = 4x+5
上の1次多項式から適当に3点を取得し座標をShareに
(1,9), (2,13), (3,17)
ShareA = (1,9), ShareB = (2,13), ShareC = (3,17)
秘密情報の復元
作成したShareのうち2つ以上を知っている場合は、定数項(秘密情報)を復元することが可能です。ShareAとShareBを知っている場合を見てみましょう。
yの増加量/xの増加量から傾きを求める
a = 13-9/2-1 = 4
y=4x+bの式にShareAの値を代入
b = 9 - 4 = 5
よくある2段階認証と同様に、Shareを1つだけ知っていたとしても自分の秘密鍵を取得できません。上記の条件の場合、少なくとも3分の2(2個以上)以上の情報が必要で、仮にShareAのみを知っていたとしても該当する秘密情報が無数に存在するためどれが正しいかは判別できません。
ShareAを管理するノードネットワーク
Web3Authのソーシャルログインに必要なShareBは、MPCを利用した秘密情報管理ネットワークのTorus Networkによって管理されています。
Torusは取引所や有名なL1チェーンをはじめとする多数の参加者によってサポートされています。ノードとして参加しているプロジェクト及び企業は以下のとおりです。
Binance
Ethereum Name Service(ENS)
EtherScan
Polygon(Matic)
Zilliqa
Tendermint
Ontology
SKALE
Torus(Web3Auth)
MPC(Multi-Party Computation)とは?
お互いを信頼していない複数人間で各データ(入力値)を共有せずとも、暗号化された入力値の計算結果を導き出す暗号理論の技術です。米大手決済会社のPaypalがCurvを買収したことで再び注目が集まりました。CurvはMPCを利用して機関投資家のデジタルアセットの管理を行うウォレットサービスを提供しているスタートアップです。
MPCはMulti Party Computationの略で日本語ではマルチパーティ計算という意味です。
マルチシグで秘密鍵の管理を行っていたとしても、同一サーバー上で管理されていた場合は、ハッキング等によって漏洩するリスクが単一の秘密鍵管理と相違ないです。
そこで地理的な分散を図りながら情報を双方に安全な状態で管理し、必要な計算を行えるようにしました。ちなみにこの技術は1980年台に考案されました。
大手銀行や暗号資産取引所でも採用されている仕組み。マルチシグとの違いを見てみます。
マルチシグとの違い
MPCとマルチシグとの決定的な違いは、鍵を復元する情報の管理方法の違いにあります。
MPCとマルチシグで同じ部分は分散して管理しているので復元に必要な情報以下の一部が漏れようと本体の秘密鍵の復元は絶対にできないという点と、M of N方式が利用されている点です。しかし、大きく異なる点はそれぞれのユーザーが持つ秘密情報にあります。
MPCでは秘密鍵を持たない
MPCでは管理者それぞれが秘密鍵を保有しているわけではありません。それぞれが所有しているのはあくまで秘密鍵の一部、言い換えると破片です。
秘密鍵自体を保管しているわけではないので、誰が署名したかのマスクも可能で、誰が署名したかを分かりにくくすることができ、マルチシグと比べたセキュリティは高いと言えるでしょう。
よってマルチシグでは複数の鍵を管理しているのに対し、MPCは単一の秘密鍵管理法です。
ガス代の節約
今回のWeb3Authの話とは少しずれますが、スマートコントラクトベースのマルチシグを利用するよりもMPCで鍵を分散管理した方がガス代の節約につながります。
マルチシグの場合、分散署名をオンチェーン処理しているのに対し、MPCはオフチェーンで計算し処理しているためブロックチェーン上では単一のウォレットとして認識されます。
よってオンチェーンでの処理が少なくガス代が節約できる仕組みです。
個人プロジェクトではない企業やチームで開発を行う場合において、共有資金のマルチシグ管理はいまや当たり前になってきていますが、トランザクション数の増加に比例してガス代の負担がのしかかってくるので、チェーンによってはMPCを採用してもありかもしれません。
暗号資産事業への活用事例
クリプトの分野では特にセキュリティ向上のためにMPCが利用されています。
マルチシグよりも強固なセキュリティが得られるため、資産性が高く特にお金関連を扱う事業者とは相性が良く、現にMPCの説明の冒頭で述べたPaypalによるCurv買収などが証拠でしょう。
過去にLiquidという海外の大手暗号資産取引所がMPCを採用しているにも関わらずハッキングに遭ったというニュースもありましたが、MPCの脆弱性に起因するものではないと言われています。
まとめ
このようにさまざまな仕組みを組み合わせることによって強固なセキュリティを担保した状態で秘密鍵保存をWeb3Authで簡易化できることがわかりました。
現状の法律ではWeb3Authを利用した場合、秘密鍵を企業が管理しているわけではないのでカストディにかかる規制を回避することができます。いままでパブリックチェーンをカストディの問題で選択できなかった企業やサービスにも新たな選択肢が増えることで、ビジネスの幅も広がること間違いなしです。
Web3Authを活用して参入する事業者も増えてきそうなので動向には要注目です!
大変勉強になりました。
walletサービスはたくさんありますが、web3authがfire blobksや gincoなどと違う点はなんですか?