トップページ > ソフトウェア > 2011年08月27日 > 0IxzL9Yn0

書き込み順位&時間帯一覧

3 位/1190 ID中時間01234567891011121314151617181920212223Total
書き込み数00000222401110200000000015



使用した名前一覧書き込んだスレッド一覧
◆MERIKEN4.k
【トリップ検索】CUDA SHA-1 Tripper【GeForce】

書き込みレス一覧

【トリップ検索】CUDA SHA-1 Tripper【GeForce】
338 : ◆MERIKEN4.k [sage]:2011/08/27(土) 05:51:33.04 ID:0IxzL9Yn0
 UCB-cryptのソースがどうにもわかりにくかったので、
libdesのcrypt()もコンパイルしてみました。

http://ftp.vim.org/security/coast/libs/libdes/

関数定義が古いK&Rのスタイルだったので修正が必要でしたが、
大した手間もなくちゃんと動きました。John the Ripperのも
これぐらい簡単に動いてくれればよかったんですけど、
まあ文句を言っても始まりません。早速動作を検証してみよう。
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
339 : ◆MERIKEN4.k [sage]:2011/08/27(土) 05:57:04.79 ID:0IxzL9Yn0
しかしsaltのエンコーディングがBase64でないのには驚きました。
最初は"AA"に設定してたのですが、saltbitsが0x000にならなかったので
ようやく気づいたわけですが…
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
340 : ◆MERIKEN4.k [sage]:2011/08/27(土) 06:06:56.79 ID:0IxzL9Yn0
libdesのcrypt()の速度を測ってみたけど、じゃっかん
UCF-cryptのほうが速いという結果に。
…やっぱりこりゃなんとしてもBitslice DESをつかってcrypt()を
実装するしかないですね。
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
341 : ◆MERIKEN4.k [sage]:2011/08/27(土) 06:56:32.10 ID:0IxzL9Yn0
しかしlibdesのソースも随分わかりにくいな〜
スピードのためだから仕方が無いとは言え、これではアルゴリズムがわかりにくすぎる。
いっそのことcrytographyの教科書を一冊買おうかしらん。
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
342 : ◆MERIKEN4.k [sage]:2011/08/27(土) 07:14:38.27 ID:0IxzL9Yn0
文献をあさってたら、crypt()の実装の詳細を扱ってる論文を見つけました。

Efficient Password and Key recovery using Graphic Cards
http://www.emsec.rub.de/media/crypto/attachments/files/2011/03/DA_Schober.pdf

p. 18から始まる"4.1.2. The UNIX crypt Algorithm"に詳しいことが載っています。
こりゃ実装に入る前にもうちょっと色々調べたほうがいいかもしれません。
というか、この人すでにCUDAでBitslice DESの実装をしたみたいなんだけど、
ソースは手に入らないのかな…
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
343 : ◆MERIKEN4.k [sage]:2011/08/27(土) 07:20:33.48 ID:0IxzL9Yn0
とりあえず上の論文で紹介されてた教科書のKindle版をぽちりました。

Bruce Schneier. Applied Cryptography - Protocols, Algorithms, and Source
Code in C (2nd Ed.). Wiley, 1996.
http://www.amazon.com/dp/B000SEHPK6/

しかし便利な世の中になったもんですね。お昼を食べたら早速読んでみよう。
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
344 : ◆MERIKEN4.k [sage]:2011/08/27(土) 08:27:49.95 ID:0IxzL9Yn0
>>343の教科書には>>342より詳しい記述はありませんでしたorz
まあこの本は手元においておいてもいいから無駄にはなりませんけど、
それにしても弱ったな… 自分はDESがどのようにcrypt (3)で使われてるか
知りたいだけなのに。ひょっとしたらkeyのエンコーディングを間違えてるのかな。
ちょっと調べてみよう。
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
345 : ◆MERIKEN4.k [sage]:2011/08/27(土) 08:39:39.24 ID:0IxzL9Yn0
この本にcryptDESの詳細が載ってるらしいんだけど、すぐ手に入らないし
高いからまようなあ。これは最後の手段としてとっておこう。

A. Menezes, P. van Oorschot, and S. Vanstone. Handbook of Applied Cryp-
tography. CRC Press, 1996.
http://www.amazon.com/dp/0849385237
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
346 : ◆MERIKEN4.k [sage]:2011/08/27(土) 08:48:45.75 ID:0IxzL9Yn0
あと>>342の論文では次の文献がリファレンスとして挙げらてました。
とりあえずUNIXのオリジナルのソースを見てみよう。

[Cryp] cryptDES C souce from 7th Edition Unix, provided by Henry Spencer http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7, found via http://google.com/codesearch/p#118goTAkg2o/usr/src/libc/gen/crypt.c

[CryM] Linux Programmer’s Manual, CRYPT(3) man-page http://www.kernel.org/doc/man-pages/online/pages/man3/crypt.3.html

[MT79] R. Morris and K. Thompson. Password Security: A Case History. Bell Laboratories, 1979.
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
347 : ◆MERIKEN4.k [sage]:2011/08/27(土) 08:52:55.95 ID:0IxzL9Yn0
よしやった! このコードはものすごい綺麗です。さすがにオリジナルなだけはある。
これなら大丈夫でしょう。

http://google.com/codesearch/p#ZWtxA-fyzBo/UnixArchive/PDP-11/Distributions/research/Henry_Spencer_v7/v7.tar.gz%7C118goTAkg2o/usr/src/libc/gen/crypt.c
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
348 : ◆MERIKEN4.k [sage]:2011/08/27(土) 10:14:01.87 ID:0IxzL9Yn0
うーん、そのままコンパイルしただけじゃ動かないな、これ。
やっぱさすがに古すぎたか… コードは一番すっきりしてるだけに残念。
しかしこれからどうしようかな。
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
349 : ◆MERIKEN4.k [sage]:2011/08/27(土) 11:44:07.16 ID:0IxzL9Yn0
完全に煮詰まったので、放ったらかしにしてた"John the Ripper"のBitslice DESのコードを
もう一回引っ張り出していじってたら、今度はなんとちゃんと動いているみたいです。
DES_BS_cmp_all()とDES_BS_cmp_one()に正しい変換結果を渡してやると
ちゃんとTRUEが返ってきます。これはひょっとしたらひょっとするかもしれんぞ…
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
350 : ◆MERIKEN4.k [sage]:2011/08/27(土) 12:28:29.96 ID:0IxzL9Yn0
DES_bs_all.B[]に変換結果が入ってるのは分かるんだけど、
DES_BS_cmp_all()とDES_BS_cmp_one()で何をやってるのかさっぱりわかりません。
コードも#ifdefの嵐だし、よくこんなのメンテナンスできるよな…
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
351 : ◆MERIKEN4.k [sage]:2011/08/27(土) 14:25:49.96 ID:0IxzL9Yn0
色々たどってみたら、DES_bs_all.B[]の中身は予想以上に最適化されて複雑なもの
だということが判明。DESの最後のパーミュテーション(inverse initial permutation)を
行わずに、検索するciphertextにinitial permutationをかけて比較してたのには驚きました。

コメントを見ても「変数が全てキャッシュに乗るように
1つの構造体に全部まとめておいたから勝手にばらすんじゃねーぞ」とか、
「最適化されたコードに支障が出るから、構造体のメンバーの順番は入れ替えないように」
とか恐ろしげなことが平気で書かれています。

とにかくJohn the RipperのBitslice DESのコードが自機で確実に動いているという
証拠はつかんだので、続きはあしたやろうっと。一応速度だけ計測してみたら、
UCB-cryptの3倍ぐらい出たのでかなり楽しみです。
【トリップ検索】CUDA SHA-1 Tripper【GeForce】
352 : ◆MERIKEN4.k [sage]:2011/08/27(土) 14:47:51.97 ID:0IxzL9Yn0
■今日のまとめ(2011年8月26日)
・オリジナルのBitslice DESのコードをcrypt (3)に対応させる作業は難航。
・その代わり、John the RipperのBitslice DESのコードを自機で動かすことに成功。

■明日の予定・目標
・John the Ripperの内部データを実際のトリップに変換する。

それではまた。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。