日本の良さがわかる情報サイト


[開発] 2ちゃんねるのIDの仕組み



「クッキング」から「今晩のおかず」までを手広くカバーする巨大掲示板
で有名な2ちゃんねるについて。


良くも悪くも匿名で書き込みができるようになってますが
書き込みをしたときに「ID」という記号が必ず各発言ごとに表示されます。

IDが生成される仕組みと、解読について簡単に説明します。


■■ 生成されるまでの手順 ■■

IDは
「同じ人(IP)」「同じ日」「同じ板」で書き込みすると
必ず「同じIDになる」という規則性があります。

そこで、書き込んだときに生成されるIDがどんな仕組みで生成されているか説明します。

IDを生成するには

1. 書き込んだ人のIPアドレス (※123.123.123.123 など)
2. 書き込んだ日の日にち (※2008/01/10 なら 10)
3. 板の名前 (※download など)
4. 書き込んだ日毎に変化する16桁の数字 (※2830942618337209)

難しい計算式は省略しますが、↑の4つの値を切ったり暗号化したりして
IDが生成されるのですが、生成する途中で末尾や先頭のデータを意図的に削ってるので
暗号化された値(ID)から、元の値を割り出すことはできない仕組みです。



■■ IDからIPアドレスを割り出せるかどうか ■■

生成の仕組みのところで説明しましたが、4つの値の組み合わせになっているので
「答え」「3つの値」がわかれば、残りの値も当然わかります。

(例)1+2+3+[ ]=10

4つの値のうち、2つ「日付」と「板の名前」については誰でもすぐにわかります。
なので、残る2つのうち「IPアドレス」が知りたい場合 は
「書き込んだ日毎に変化する16桁の数字(キー)」
を解読する必要があります。

上の例で言うと、単純計算ですが
12桁の数字(IP) × 16桁の数字(キー) = 42949672959999995705032704 パターン
1秒間に 100000パターンを計算できるPCで

総当たりで計算すると・・・ 約13619251953323年

かかる計算になります。

では、(現実的に)IPアドレスは絶対わからない!!という結論になりそうですが
結論としては、「可能かもしれない」です。

そこで、以前私が実験用に開発してた方法(条件付き)をご紹介します。


■ 手順1. サンプリング ■
まず最初に、サンプリングと呼んでる方法です。
IPの違う4人にお願いして、それぞれのIPがどう変換されるかサンプルを取ります。

(例)
IP: A で書き込んだ時 → ID: α
IP: B で書き込んだ時 → ID: β
IP: C で書き込んだ時 → ID: Γ
IP: D で書き込んだ時 → ID: θ
※実際には10パターン以上取ったほうが良い


■ 手順2. キーの算出 ■
先ほど説明した4つの値のうち、
「日毎に変化する16桁のランダムな数字(キー)」を算出します。
そこで、算出するときに サンプリングした時の「IPアドレス」と「ID」を使用します。

[AのIPアドレス] + [日にち] + [板名]+ [ (キーを1から順に代入) ]
 → (ためしに変換してみる)
  → IDと一致するかどうか確認
   → 一致したらキーがわかる!

この処理をサンプリングした4つのIPで確認し、変換した結果とIDが一致したら
16桁の数字(キー)が判明したことになります。

キーは最大9999999999999999パターンありますので、
1秒間に 100000パターンを計算できるPC
(※PentiumM 1.1G での実測データ)
27777777時間 = 1157407日 = 3170年
途中で見つかる確率を考慮すると、約1585年かかる計算になります。


■ 手順3. IPアドレスの特定 ■
生成の仕組みのところにも書きましたが

「生成する途中で末尾や先頭のデータを意図的に削ってる」


そのため、IPアドレスを逆算することができないので
IPアドレスの個数分、計算した結果と答えが一致するか比較する方法しかありませんし
比較した結果が一致するIPアドレスは必ず複数出てくるはずです。

ですので、厳密に言えば
「IPアドレスを割り出すことはできません」
という結果になります。

しかし!

もし仮に
「書き込んだ可能性のある500個のIPアドレス」を把握していて
「その500個のIPアドレス」から一致するどうか比較したときに
「1つのIPアドレス」「偶然」一致したとしたら・・・

確率的に考えても偶然の一致ではないと判断できると思います。


結論:ひとりでは無理・・・・


最新のCPUを使い、C言語で書き直せば、5~10倍は高速になるはずなので
もしかすると、約150~200年くらいまで短縮できそうです。

という結果の通り、希望的観測になりますが
数百人の方に協力してもらって計算を分散させることが出来れば
最短で・・・ 1~2ヶ月くらいでキーを特定できる可能性があります。

トラックバック・ピンバックはありません

ご自分のサイトからトラックバックを送ることができます。


コメントをどうぞ


メニュー

実験用システム

twitter

 

QR

qrcode