DERP例1:Metamaskのリンカビリティ
HOPRのDERPツールを使用すると、実際にトランザクションを行わなくても、暗号資産サービスを使用したときにどれ程のメタデータがRPCエンドポイントに公開されるかが明らかになります。derp.hoprnet.orgにアクセスすればすぐに実験を始められますが、データが何を意味しているのかはいつも明確であるとは限りません(ただし、データがたくさんあることはすぐに分かるはずです)。
DERPの意味を理解してもらうために、今日最も人気のあるクリプトツールを悩ませるプライバシー問題を示す例をいくつか用意しました。
最初の例は最も単純なものですが、最も驚かれるものかもしれません。私は自分自身を非常に慎重なクリプトユーザーだと思っていますが、Metamaskを開くたびに、自分が所有する複数のウォレット間のリンクを無意識のうちにブロードキャストしていることが分かりました。
私は可能な限りソフトウェアウォレットを使用することを避けていますが、今日のDeFiの現実、特に数十人を雇用し、時には迅速な支払いが必要なクリプトプロジェクトを運営している場合、ハードウェアウォレットが常に使用できるとは限りません。
Metamaskは最も人気のあるソフトウェアウォレットであり、2100万人以上のユーザーを誇っています。Metamaskを使用すると、同じ秘密鍵/秘密リカバリーフレーズから新しいアカウントを簡単に生成できます。暗号技術の観点からは、あなたは機能的には無限のアカウントを持つことができ、それぞれが完全に分離されプライベートなものとなります。チェーン上でインタラクトしない限り、公開鍵については、同じ人物によって所有されていることを示すものは何もありません。
そして、これだけの人がMetamaskを使用しています。複数のアカウントをすべて1か所にまとめられることは素晴らしいことです。おそらく、一つはDEXとDeFiにのみ使用されるもの、そしてもう一つは中央集権型取引所とインタラクトするものかも知れません。もしくは、リンクされていない複数のアカウント間で資産を分散させる方法をとっているかも知れません。はたまた— そしてもちろんこれを支持することは決してありませんが :) — 税務署が知っているアカウントと、そうではないアカウントと分けているかも知れません。
もしあなたがこのようにMetamaskを使用している場合は、アカウントがプライベートであることに満足していることでしょう。もちろん、毎回正しいアカウントを使用するように注意する必要がありますし、トークンを一方から他方に(第3のアカウントを介したとしても)オープンに送信しないように注意する必要もあります。また、もっと慎重であるなら、Tornado cashようなプライバシーサービスを使用することもできます。複数のアドレスをリンクするものは何もありませんよね?
それは間違いです。
Metamaskを起動するとすぐに、UIに表示するトークンの数を知るためethCallリクエストがRPCエンドポイントに送信されます。このリクエストには、1つのアドレスだけを使用するつもりでいても、すべてのアドレスが次から次へと含まれます。これを示すために、新しいMetamaskウォレットを設定し、次のようなアドレスを追加しました:
- 0x5faA0481F44cfe891416d5d4aA59254E45b7dfE0 (エイリアス:取引所用アカウント)
- 0xBab83b4a2dfC5732a004460E24b86C4dA1050214 (エイリアス:公開用アカウント)
- 0x0c89EDd253CFD1a95a9d56A11dcd7f0A1ea9eEb0 (エイリアス:秘密アカウント)
ここで、Metamaskを起動したときにDERPで何が起こるかを見てください。
ここで何が起こっているのかを理解するには、このペイロードデータを分解する必要があります。
[
{
“to”: “0xb1f8e55c7f64d203c1400b9d8555d050f94adf39”,“data”:
“0xf0002ea9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000005faa0481f44cfe891416d5d4aa59254e45b7dfe0000000000000000000000000bab83b4a2dfc5732a004460e24b86c4da10502140000000000000000000000000c89edd253cfd1a95a9d56a11dcd7f0a1ea9eeb0000000000000000000000000c8c851d72ac72836cd1e7a2d5f55d92f7b48bfe500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000”
},
“0x0”
]
“to”アドレスは以下の通りです: https://etherscan.io/address/0xb1f8e55c7f64d203c1400b9d8555d050f94adf39
これは理にかなっています。これはバランスチェッカーコントラクトです。Metamaskは、トークンの数を表示する必要があり、どこかからその情報を取得する必要があります。
次に、送信されるデータを見てみましょう。
すべてのEthereum RPCリクエストと同様に、0xの後の最初の4バイト(8文字)は、呼び出されている関数を識別します。4byte.directoryにアクセスすれば、それが何であるかを確認できます。
ここではf0002ea9で、getBalanceだと言うことが分かります。
次に、ゼロがたくさん並んでいます。 これらは単にスペースを埋めているだけです。
さあ最初のアドレスができました。ご覧のとおり、それは: 5faa0481f44cfe891416d5d4aa59254e45b7dfe0、Metamaskリストの「取引所用アカウント」です。
さらにゼロが続き、また別のアドレスが現れます。
0xbab83b4a2dfc5732a004460e24b86c4da1050214
Metamaskの「公開用アカウント」。
このパターンは、データの最後まで繰り返されます。
では、これは何を意味するのでしょう?
これは、Metamaskを開くとすぐに、RPCプロバイダーが私のコントロール下にあるすべてのアドレスの全リストを受け取ることを意味します。同じ秘密鍵からリンクされないアドレスを作成するすべての暗号技術の工夫は、ほんの一瞬で無駄となってしまいます。
その上、RPCプロバイダーは私のIPアドレスとブラウザーおよびオペレーティングシステム情報を知っています。彼らが望めば、この情報を保存したり、サードパーティと共有したりできます。サードパーティは、これらのアカウントの所有者が同じであることを認識します。他のメタデータが私のIPアドレスにリンクされている場合は、これらのアカウントを私の実世界のアイデンティティにリンクされてしまう可能性すらあります。トランザクションは発生していないことを忘れないでください。複雑なチェーン分析も必要ありません。
さらに悪いことに、メタマスク拡張ボタンをクリックするだけでこのコールがトリガーされてしまいます。ここではパスワードを入力していなくても同じことが起こっています!
明らかに、Metamaskはアカウント毎に別々のUIを用意する必要があります。web3の世界では、RPCコールに頼わざるを得ません。しかし、それほど多くの情報を1つのコールにまとめる必要はありません。それは、Web2.0の考え方が不注意にweb3に引き継がれていると言うことです。
次回は、悪意のあるRPCプロバイダーがあなたのNFTコレクションを台無しにする可能性があることを紹介します。
Sebastian Bürgel,
HOPR Founder
本記事はこちらの記事の日本語訳です。翻訳に関して誤りや助言等ございましたらどうぞご連絡ください。
Website: https://www.hoprnet.org
Twitter: https://twitter.com/hoprnet
Telegram: https://t.me/hoprnet
Telegram(日本語): https://t.me/HOPRJapanese
Discord: https://discord.gg/dEAWC4G
Forum: https://forum.hoprnet.org
Staking: https://stake.hoprnet.org
Bounties: https://bounties.hoprnet.org