TheShadowBrokersの "Data Dump of the Month" サービス

少し前になるが、TheShadowBrokers (以降 TSB) が 6月から月額のサブスクリプションサービス "TheShadowBrokers Data Dump of the Month" を始めるとのアナウンスをだした。TSBはご存知の通り Equation Group (NSA TAO) の内部データのリークを行っている正体不明のグループ (?) で、WannaCryが利用した EternalBlueも TSBのリークした Exploitが元になっている*1

毎月決まった金額を支払った会員は、会員限定で TSBから新たなダンプを入手できるというサービスらしい。そもそも TSBは 2016年8月に最初のダンプを公開したが、半分はフリーで残り半分はオークション形式とし、もっとも高値で買い取ってくれる人に提供するとしていた。ところがほぼ誰にも相手にされなかったため、結局 2017年4月にファイルを公開したという経緯がある。今さら金銭が目的とも思えず、どこまで本気なのか、疑問に感じていた。

しかしながらその後、具体的な月額の料金や送金方法なども公開された。

当初は Zcash (ZEC) のみだったが、その後 Monero (XMR) でも受け付けることにしたようだ。どちらも匿名性の高い暗号通貨(仮想通貨)として注目されている。Zcashがスタートしたのは 2016年10月からなのでまだ歴史は浅いが (元になった Zerocoinの論文は 2013年)、Moneroは 2014年4月からで、今年7月に FBIに摘発された Dark Web上の闇市場 AlphaBayでも使われていたし、WannaCryが利用していたアドレスから引き出された Bitcoinはその後 Moneroに交換されたことなども最近話題となったところだ。

またこのアナウンスを受けて、クラウドファンディングで資金を集めてサービスに申し込もうというセキュリティ研究者らがあらわれた。ダンプはいずれ公開されるかもしれないが、前もって入手してソフトウェアベンダーに脆弱性を通知することを考えていたようだ。残念ながら途中でキャンセルされてしまったが、こういうことを思いついてすぐに行動に移せるところはすごい。


さてサービス申し込みの具体的な手順だが、以下のようになっていた。

  1. 6/1〜6/30の間に指定の Zcashアドレスに 100 ZECを振り込む。この時 Zcashの "encrypted memo field" に連絡用のメールアドレスを記載する。(このフィールドは暗号化されるため第三者には公開されない)
  2. TSBは振込を確認したら上記のメールアドレスに確認メールを送る
  3. 7/1〜7/17の間に振込をした会員に一斉にダンプを送付する

これが Moneroの場合には少し違って、指定したアドレスに 500 XMRを振り込む時に、Payment IDの中にメールアドレスを hexエンコードして送るようにと指示されていた。仮想通貨は今年に入って値動きが激しいが、この時点では 1 ZEC = 200 USD, 1 XMR = 40 USD くらいだったので、いずれの場合も料金はおよそ 2万ドルに設定されていたことになる。

さてこの Zcashと Moneroの違いが実は重要だった。Moneroのアドレスはブロックチェーンでは見えないので、Bitcoinのように受け取るアドレスを毎回変えるようなことは推奨されておらず、誰からの送金かを識別するために Payment IDというものが用意されている。この Payment IDには 2種類あり、古いタイプの 32バイトの Payment IDはトランザクションにそのまま平文で記録されるため、誰でも見ることができる。新しいタイプの 8バイトの Payment IDは暗号化されるのだが、メールアドレスを埋め込むにはちと短い。
Zcashも Moneroも送信者と受信者のアドレスは秘匿されるので、Bitcoinとは違ってブロックチェーンを調べても TSBのアドレスあてのトランザクションを知ることはできない。しかし Moneroのブロックチェーンに記録されているトランザクションの Payment IDを調べれば、TSBへの支払いにメールアドレスを記載したものが見つかるかもしれない。

このことに気付いた研究者が調べた結果を記事にまとめていた。

これによると、6月分として 3件、7月分として 2件、該当するものがあった。7月は料金が2倍に値上がりしたので (200 ZEC or 1000 XMR)、合計すると少なくとも 3500 XMRの支払いがあったことになる。この記事を書いている8月末時点で 1 XMRは 100 USDを越えているが、40 USDで換算したとしても結構な金額だ。ただしメールアドレスが Payment IDになっているトランザクションはすべて TSBあてであり、指定された金額が送金された、という仮定があることに注意。5月まではこういうトランザクションはないようなので、この仮定は妥当なものだと思うが念の為。また Zcashによる支払いについては調べる術がない。


これらの記事の内容は非常に興味深く(たとえば 5件のうち 4件のメールアドレスに暗号化メールサービスの ProtonMailと Tutanotaが使われているなど)、著者は 6,7月分のトランザクションの Payment IDをテキストで公開してくれているので、中身を確認することもできる。でもそれだけではおもしろくないので (あと疑い深いので)、実際に自分でも確かめてみることにした。幸い Moneroはその前から使っていたのでブロックチェーンは手元にある。Bitcoinほど大きくなくて 25GB程なので、自分で調査する場合には手元で同期することをオススメする (Bitcoinブロックチェーンは 130GB程度で同期にも時間がかかる)。

調査方法は単純で、 以下のとおり (スクリプトAPIをたたいてごりごりやった)

  1. 各月のブロック高からブロックに含まれているトランザクションを検索
  2. 得られたトランザクションから中に含まれている Payment IDを検索
  3. Payment IDにメールアドレスが含まれているものを検索

せっかくなので 6,7月分の確認とあわせて 8月分についても調査してみた。それぞれ対象としたブロックは以下のとおり (括弧内はブロック数)

  • 6月分 1322564 〜 1344224 (21,661)
  • 7月分 1344225 〜 1366663 (22,439)
  • 8月分 1366664 〜 1389112 (22,449)

結果、6月と7月分については、上記の記事と同じ結果がえられた。以下、メールアドレスが含まれていたトランザクションを挙げておく。これにはテスト用と思われるものも含んでいる。

6月
dbfb8734a80c6168ff908d492be209f3d49d7995655e856bc0f2626baa8e2160
64310f014a1b6acedd9f89999f169735c8e13b9925acecf5d52f6fb5e08432ce
64560b4c3e19d170c0de372b2caf08f1cd1acfb3ddd9f20b2a2c4e347de11a38
b1e4c8dc1a6d8c78cbe8a8853a73f145e96f49dc45a7ee5b1c4ce33120ea8acd
0adbb637d7d8f232671ba063c2d082bf19dfe1c305884f2c816348ee304b4d3b
782dc6139511ac4f5515a91452b1c5f019594b63a8cc8e015b8cd4b411af0d36

7月
b272b1f2c4d9dd98b3f80630e7dcda7f37b9db7c50d9fb9d1328eebcaaf1060f
26a8ec97cf37174719f68b6aa52f1e086b74d58a363534b0c70d30a4b8b912f8
c84da5be034b059c8c7b4e9c9da935a267aa99c1399e46742f74ac7f0dfbba14
0cc3723e86a58ad272cce3a230c7adf6edaa34879618c0706d92253c65949e79
76f190732a746cb94960505aaf232f776f034817de338b69198371afed138c0d

そして 8月分については、メールアドレスが含まれるものは 1件もなかった。これは 8月から支払い方法が変わったことが影響しているのかもしれない。8月からは振り込み先のアドレスが公開されず、まずはメールで問い合わせるようになった。おそらく、新しい 8バイトの Payment ID を用いた Integrated Address を顧客毎にそれぞれ提示していると思われる*2。こうすれば Payment IDに平文でメールアドレスを含める必要がなくなるからだ。

なお 8月分からは金額がさらに値上がりした (500 ZEC or 2000 XMR)。さらに Zcashも Moneroも市場での取引価格が上がっており、そもそもこの金額でも購入する顧客がいるのかは不明である。

サービス利用者の声

さて 7月にもう一つ興味深い投稿があった。

この記事では 500 XMR支払って 6月のサービスに申し込んだが、TSBからは古くて使えないツールが1つ送られてきただけだと不満を述べている。当初この投稿内容の真偽は定かではなかったが、その後この著者は証拠となる追加情報を投稿した。

この記事には、TSBから受信したらしいメールの画面がアップされており、送信元の Tutanotaのアドレスは TSBが 2016年8月に最初にダンプを公開したときに使用していたメールアドレスと一致している。しかし画像なので改ざん可能ともいえる。一方、メールの画面と一緒に TX KEYも公開しており、こちらのほうがより重要だ。Moneroではトランザクションの送信時に毎回秘密鍵と公開鍵のペアが生成され、公開鍵はトランザクションと一緒に送信されるが、秘密鍵は送信者だけが保持する。これが TX KEYと呼ばれるもので、送信者はこの秘密鍵を第三者に伝えることで、自分が確かにトランザクションを送信したということを検証してもらうことができる仕組みになっている。

Payment IDを調査した研究者はこの件についても記事を書いており、500 XMRが TSBに送信されたトランザクションを検証できたことを報告している。(実はこの最初の記事で TX KEYがあれば検証できることを伝え、記事をみたサービス利用者が追加情報を投稿したという経緯)

トランザクションの検証には TXID, TX KEYと送信先アドレスの 3つの情報が必要となる。今回のケースでは以下のトランザクションが該当するもので、TX KEYとアドレスを入力すれば誰でもこのトランザクションを検証することができ、500 XMRの支払いが行われていることを確認できる。

また手元に Monero Walletがありブロックチェーンが同期していれば、以下のように Walletから確認することもできる。(check_tx_key TXID TXKEY ADDRESS)

[wallet]: check_tx_key 782dc6139511ac4f5515a91452b1c5f019594b63a8cc8e015b8cd4b411af0d36 a944723f77415dd06c5d34260363935e24ac6d5ac7fe711366f64768fa055803 41jwGGMNRBKNurVnuo7ZW4HqrgPnfiJbfHUi3k46b5nFhvbpwcK6KdTSjvTRdbzdEzZbQ1t5GWhsW7scxcNv2adUJSbtExP
41jwGGMNRBKNurVnuo7ZW4HqrgPnfiJbfHUi3k46b5nFhvbpwcK6KdTSjvTRdbzdEzZbQ1t5GWhsW7scxcNv2adUJSbtExP received 500.000000000000 in txid <782dc6139511ac4f5515a91452b1c5f019594b63a8cc8e015b8cd4b411af0d36>
This transaction has 45427 confirmations


TSBにしてみれば、あまり嬉しくないサービス利用者の声ということになったわけだが、このレビューが 7月以降のサービス申し込みに影響があったのかどうかは定かではない。

以上、長くなったが、今後も Bitcoinだけでなく Zcashや Moneroのような匿名性の高い暗号通貨の利用はますます増加するのではないだろうか。使ってみないとわからないこともあるので、引き続き興味を持って調べていこうかなと思っている*3

(9/2 追記)
8月の最後の数日分のトランザクションも念の為確認したがメールアドレスは含まれていなかったので、本文を更新した。

*1:TSBの活動の経緯については Matt Suicheによる BlackHat 2017での発表が詳しい。

*2:このことを確かめるために TSBにメールで問い合わせてみたが、残念ながらお返事はもらえなかった。

*3:そして時々痛い目に遭うこともある。;)