「鍵はどこにも存在しない」と主張するElysium Walletはどのような仕組みになっているのか?
先週の記事ではライトニングノードをクラウドにホスティングする技術であるGreenlightを紹介しました。Greenlightを採用しているウォレットはいくつかありますが、その中でも最近リリースされたスイスのElysium WalletというウォレットはGreenlightを使ったライトニング対応以外に「ユーザー自身が秘密鍵」などと謳って独自色を出しています。(他にもいろんな表現を使っていますが、後述します)
先週の記事は↓
残念ながらElysium Walletはオープンソースではなく、また日本からはダウンロードできないようですが、ウェブサイトやブログ上の表現などから仕組みを推測することならできます。果たして彼らの使っている売り文句は技術的な側面からみて妥当なのかを検証してみましょう。
なお、私も実際にインストールして使うことができてはいないので、これはあくまで技術的な推測を元にした記事となります。また、同名のブロックチェーンが存在するようですが、それとは無関係だと思われます。
・複数のファクターから1つの鍵を毎回復元する方式
・Greenlightとの相性はけっこう良い?
・不適切に感じるマーケティング表現
複数のファクターから1つの鍵を毎回復元する方式
Elysiumのブログには鍵管理の方法を「Keyless Multi-Factor Algorithm」と表現している記事があります。記事によると、Passkeyおよび数字6桁のPasscodeか最低8文字のパスワード(もしくはその両方)を使ってセットアップするようです。
Passkeyについてはこちら↓
FAQによるとElysium Walletは毎回これらを使って鍵を復元し、使用しないときはデバイスに秘密鍵を保管していないそうです。従来型のウォレットには必ずあるシードフレーズ(ニモニック)などは存在しないことからKeylessと呼んでいるようです。ただし、他のウォレットに移行したい場合はマスター秘密鍵をエクスポートすることもできるようです。
もしPasscodeやパスワードを忘れた場合にもPasskeyに加えてをPasscodeかパスワードのいずれか(つまり、3段階のうち2つ)さえあればアカウントの復元ができると書いてあります。スマホを紛失した場合も同様です。
さて、Passkeyやパスワードなどから秘密鍵を導出するアルゴリズムは公開されていません。しかし、いくつかの情報から仕組みを推測することはできます:
・Passkeyを使用するということは、おそらくElysium Walletの使用するドメインに対してPasskeyで認証をする仕組みである。
・Passkey、Passcode、パスワードともに元の情報が変わらないため、毎回同じ秘密鍵を導出する方法はいくつか考えられる。数週間前に本稿でもCasaがYubikeyを1つの署名鍵として扱えるように対応した、という内容を掲載しましたが、実質的にそれに近い仕組みで決定論的に認証機から取り出したデータで同じ鍵を復元している。
そのときの記事の下のコメントでAndGoの原さんが見つけてくださった、WebAuthnのprf extention(2023年に仕様に追加されたばかりの、ブラウザから送られてくるデータと認証機内部のデータを組み合わせて決定論的にランダムデータをブラウザに返すことができる仕組み)を使っていると推測します。強いて言えば、その仕組みでどのように「Passcodeを使ってもパスワードを使っても同じ鍵が導出できる」ようにしたかが気になるところです。
ちなみにスマホにはFIDO/WebAuthnに対応した認証機が内蔵されています。指紋認証・顔認証などをして解除するやつです。
Casaと違うのは、CasaがYubikey自体に暗号化したシードを保管している一方、Elysiumではおそらく暗号化したシードは存在しない点です。
Greenlightとの相性はけっこう良い?
さて、Elysiumの主張には「トランザクションごとに新しい鍵を生成する」というものがありますが、一旦それは置いておいて(次の項で切り込みます)、同じ鍵を毎回復元できさえすればライトニングに対応できるGreenlightとの相性の良さを指摘したいです。
Greenlightを使ったライトニングウォレットでは秘密鍵以外の復元に必要なデータはすべてGreenlightのサーバー上にあり、例えばシードフレーズさえ持っていれば違うデバイスにウォレットを復元してそのまま使うことができます。
仮にLSP型のライトニングウォレットだと、保存されているチャネルの状態なども移行しなければいけないので一筋縄ではいきません。ウォレットを移行する際にこの情報をバックアップしたり、運営者に預けたりする実装も考えられますが、開発が割と大変なほか(バックアップしたあとにデータが変わったら最悪チャネルの金額を全部没収されてしまいます)、スマホが壊れた場合などにどうしようもなくなります。
ライトニングウォレットのポータビリティという点ではGreenlightに軍配があがり、Elysiumが限られたリソースでライトニング対応できたのも「同じ秘密鍵を毎回復元できる」という最低限の機能を満たせば導入できる手軽さになってきているためです。
これまでライトニングに対応していなかったシンプルなビットコインウォレットもGreenlightを通して新たにライトニング対応してくる未来が見えてきました。Elysiumは従来型のウォレットとは異なる、変わり種ではありますが、同様です。
そういえばウェブアプリ内からでもGreenlightは使えそうな気がしますが、さすがにブラウザ内だと難しい部分があるんでしょうか?気になるのでまた調べてみます。
不適切に感じるマーケティング表現
残念ながら、Elysium Walletには1つ大きな問題点を感じています。それはバズワード重視で正確性に欠けていそうなコミュニケーションです。実際の仕組み自体も伏せられていますが、上で推測した内容とマーケティング表現が食い違っており、不誠実さを感じてしまいます。
まず、ウェブサイトで数回使われている"Software Cold Wallet"という表現があります。これは誤解を招くどころが、コールドウォレットという表現の悪意あるレベルの誤用だと考えます。
一般的にコールドウォレットとはインターネットに接続した端末に秘密鍵を保管・使用しないウォレットという意味で、例えばそれ自体はインターネットに接続できないように改造したPCに乗せたソフトウェアウォレットだったり、デバイス外に秘密鍵が流出しないよう設計したハードウェアウォレットだったりします。秘密鍵が一度もインターネットに接続する端末に触れないことで様々なリスクから守る発想です。
しかし、どう考えても上で推測したElysium Walletの仕組みだとスマートフォン上で秘密鍵を復元しています。この時点でホットウォレットに該当します。常時秘密鍵をデバイス上に保持していないことや、復元に必要な情報の一部は認証機から出てこないとしてもです。ブラウザの設定やWebAuthnの仕組みに守られる部分も大きいですが、ちゃんとしたコールドウォレットほど鉄壁ではありません。
他にも、「毎回違う鍵を生成して使っているからセキュリティが強い」という表現があります。この表現の正確性を判断するには少し踏み込む必要があります。
Elysium WalletはBitcoinとPolygonの2つのブロックチェーンに対応しており、ひょっとするとPolygonのほうではAccount Abstractionのような仕組みを使って実際にPasskeyなどからスマートコントラクトを呼ぶような仕組みになっているかもしれません。(そのような表現を見つけることはできませんでしたし、それだと「秘密鍵をエクスポートできる」との主張とも食い違いますが)
Account Abstractionとは、従来型の秘密鍵を使ってブロックチェーン上の資産にアクセスするのではなく、PasskeyやOAuthのような外部の認証情報をもってスマートコントラクト内のアカウントへのアクセス制御を行うウォレットの方式です。ざっくりとした解説記事をリンクしておきます。
ビットコインの場合、従来型のウォレットでも毎回マスター秘密鍵から新しい鍵を導出して使うことがベストプラクティスとなっています(アドレスを使い回さない)。しかし、ポイントは全て同じマスター秘密鍵から導出されていることで、一回端末上にマスター秘密鍵を復元してから新しい鍵を導出しようがしまいが、セキュリティ面では変わりません。セキュリティという用語をプライバシーと同義語として使っているのでしょうか?
あるいは、本当に毎回新しい情報を認証機に渡して新しい鍵を生成しているかもしれません。しかし、それだと他のウォレットに秘密鍵をエクスポートできるという説明と食い違ってしまいます。なぜなら恐らくBIP32に基づいた鍵の導出と同じ手法にはならないためです。
まとめると、全体的にコミュニケーションがすべてバズワード重視で、具体的な仕組みが見えてこないばかりか、誤解を招きそうな表現が多いように感じます。個人的にはこの時点でこのウォレットを使う選択肢は消えてしまいます。
Elysium Labsが反論するには、ウォレットの具体的かつ正確な仕組みを公表してウェブサイトの表現が適切なのか外部から評価できるようにする必要があります。
まとめ
・Elysium WalletはPasskeyとその他の認証情報を組み合わせて鍵を都度復元して使うウォレット。従来型のシードフレーズから生成するウォレットではなく、シードフレーズ自体を毎回導出する仕組みの模様。Greenlightを通してライトニングにも対応している
・仕組み自体はCasaのYubikey対応と同じく、WebAuthnのPRF Extensionを使用している可能性が濃厚そう。つまり、毎回同じ情報(Passcodeやパスワード)を認証機に渡すことでスマホ上で鍵を復元している
・Passcode、パスワードの両方で同じ鍵を導出できる理由は不明
・Elysium LabsのウェブサイトやSNSでのコミュニケーションは技術的な詳細にはほとんど触れず、誤解を招く表現でセキュリティをアピールしている。個人的には信用できない(そもそも日本からインストールできないが)
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション