RC5 Crackingクライアントdnetc

RC5 Crackingは終了しました!
東京のPentium !!! 450Mhzのマシンが正解の鍵を見つけたそうです!
つまり、このページのコンテンツは存在する意味を失いました(^^;

詳細はこちらで確認してください(英語 / 日本語)

dnetcとは

 dnetcとは、RC5という暗号を破るコンテストに参加するためのクライアントソフトウェアです。はじめに書いてしまいますが、日本でのLinuxユーザーのRC5 Cracking関連の総本山は

 http://www.linux.or.jp/rc5/index-j.html

 になりますので、詳細についてはこちらを参照してください。ここでは最小限を述べるに留めます。

 一言で書きますと、RC5 Crackingとは、RC5という名前の暗号を力任せで破ろう、というコンテストです。その目的は、RC5という暗号の強度はもう今となっては十分ではない、つまり力任せで破ることができるのだから、もっと強力な暗号を使わなければならない、ということを米国政府に訴えることにあります。

 そして、dnetcとは、Distributed.netという組織が配布するソフトウェアで、このRC5 Crackingを分散コンピューティングによって行うためのものです。簡単に言うと、世界中のdnetcがインストールされているコンピューターが協力をしてRC5 Crackingを行うためのソフトウェアということになります。

 ちなみに、このソフトウェアはデフォルトでは一番優先度が低いプロセスになっているので、CPUがアイドルの部分のみを利用することになっています。つまり、例えば他の重い処理が入った場合は自動的にリソースをそのプロセスに譲り、再びリソースの秋が増えたらそのリソースを利用してCrackingを行うようになっているので、あんまりマシンのパフォーマンスへの影響を心配する必要はないでしょう。

 

dnetcの入手とインストール

 dnetcのクライアントソフトウェアは、Distributed.netが配布しています。こちらのページからダウンロードできます。どうやらELF形式のみで、a.out形式はもうないようです。

 http://www.distributed.net/download/clients.html#linux

 このページを見ると、よくもまあこれだけのOSに対応させた物だなと思います。入手後、

 tar -zxvf dnetc-linux-x86-elf.tar.gz

 で解凍/展開されます。

 

dnetcの設定

 まずdnetcの設定を行うため、dnetcを設定オプションをつけて実行します。具体的には、

 ./dnetc -config

 と入力します。ちなみに、dnetcは実行にあたって特に管理者権限等を必要とはしませんので、suする必要はありません。まず"General Client Option"を選択します。私の現在の設定は以下の通りです。

 distributed.net client configuration: General Client Options
 ------------------------------------------------------
 1) Your email address (distributed.net ID) ==> ryu@mail.bflets.dyndns.org
 2) Complete this many packets, then exit ==> 0 (no limit)
 3) Run for this long, then exit ==> 0:00 (no limit)
 4) Pause flagfile Path/Name ==>
 5) Exit flagfile Path/Name ==> exitrc5.now
 6) Enable restart on .ini file change? ==> no
 7) "Pause if running" ==>
 8) Pause if processor temperature thresholds are exceeded? ==> no
 9) Pause if running on battery power? ==> yes
 10) Disable all screen output? (quiet mode) ==> no
 11) Disable the crunch-o-meter (packet progress indicator)? ==> no

 1)のメールアドレスは、個人として参加する場合は自分のアドレスを、Japan Linux Users Group Teamに参加する場合は"rc5@linux.or.jp"を入力することになります。後はお好みと環境に応じて設定してください。次は"Buffer and Buffer Update Option"です。私の現在の設定は以下の通りです。

distributed.net client configuration: Buffer and Buffer Update Options
--------------------------------------------------------
1) Buffer in memory only? (no disk I/O) ==> no
2) In-Buffer Filename Prefix ==> buff-in
3) Out-Buffer Filename Prefix ==> buff-out
4) Checkpoint Filename ==>
5) Disable buffer updates from/to a keyserver ==> no
6) Keyserver<->client connectivity options
7) Disable buffer updates from/to remote buffers ==> no
8) Remote buffer directory ==>
9) Load-work precedence ==> DES=0,CSC=0,OGR=0,RC5
10) Additional buffer-level checking ==> 0 (none)
11) Buffer-level check interval ==> 0:00 (on buffer change)
12) Preferred packet size (2^X keys/packet) ==> RC5=-1
13) Fetch work threshold ==> RC5=0,OGR=0
14) Fetch time threshold (in hours) ==> RC5=0

 ここで最も注意しなければならないのは9)です。ここをちゃんと設定しないと、全然違う暗号の解読に精を出すことになりますので、かならずRC5以外は0を立てておきましょう。取りあえず動かすためにはそこだけをちゃんと設定し、後は環境とお好みで設定してください。

 ここまでで基本的な設定は終了です。あとのPerformance OptionやLogging Optionは、好みで設定してください。私はデフォルトのままにしてあります。

 

dnetcの運用

 ここまで来れば後は簡単です。まず

 ./dnetc -fetch

 と入力し、解読すべき鍵の配布を受けます。しかし、ルーターなどでフィルタリングをかけていて、dnetcがデフォルトで利用するポートでルーターを通過出来ない場合、以下のようにしてポートを指定することが出来ます。

 ./dentc -fetch -p 80

 まず大抵のルーターは80番は通すでしょうから、デフォルトでだめな場合はこのように使用するポート番号を指定してやりましょう。鍵を取得したら、後は

 ./dnetc

 でひたすら動作しつづけます。先ほどfetchで取ってきた鍵を解読しつづけ、解読すべき鍵がなくなったら自分で自動的にネットワークに接続して再び鍵を取得します。もしfetchの時にポートを指定しなければ動かなかった場合には、当然

 ./dnetc -p 80

 で実行することになるでしょう。これだと出力が画面上に出るのですが、邪魔だからバックグラウンドで動かしたいという方は、

 ./dnetc -p 80 &

 としましょう。最も表示されていると参加している気分になるので、私は表示しています(^^)。