Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CA+E3k90Z4FQNUnzULWtMxSkt=SD1_4YiuzjOCT3EB91vmFDTew@mail.gmail.com>
Date: Sat, 1 Jul 2017 14:08:36 -0800
From: Royce Williams <royce@...ho.org>
To: john-users@...ts.openwall.com
Cc: Denis Burykin <apingis@...nwall.net>
Subject: Re: DES-based crypt(3) cracking on ZTEX 1.15y FPGA
 boards (descrypt-ztex)

On Fri, Jun 30, 2017 at 10:36 AM, Solar Designer <solar@...nwall.com> wrote:
> On Fri, Jun 30, 2017 at 07:22:33PM +0200, Solar Designer wrote:
>> An easier (and better?) workaround is to buffer even more candidate
>> passwords within 1 process.  On my Qubes system, adding this line:
>>
>> +++ b/src/ztex/device_format.c
>> @@ -111,6 +111,7 @@ void device_format_reset()
>>         // Mask data is ready, calculate and set keys_per_crypt
>>         unsigned int keys_per_crypt = jtr_bitstream->candidates_per_crypt
>>                         / mask_num_cand();
>> +       keys_per_crypt *= 4;
>>         if (!keys_per_crypt)
>>                 keys_per_crypt = 1;
>>
>> makes the standard clocks c/s rate increase from 806M to 828M, which
>> suspiciously matches the theoretical maximum Denis gives for the current
>> design in the just committed src/ztex/fpga-descrypt/README.md:
>>
>> https://github.com/magnumripper/JohnTheRipper/pull/2598/commits/1214de42284c8b66728f0f8fd362a743f54c2ab0#diff-c70cc4e9666091acde7a844bfc24d88d
>>
>> This appears to work.  The cracked passwords stream isn't expected to be
>> exactly the same (that is, not in the same order) because the larger
>> buffers unfortunately result in less optimal ordering of the candidates
>> with incremental mode and the like.
>>
>> Also, the total running time of some short sessions (in my testing:
>> mask, but not wordlist) appears to increase - perhaps the very last
>> crypt_all() call (for each salt) hashes many more keys than are actually
>> supplied?  Denis, perhaps this is something you could fix?
>>
>> Royce, unless Denis says this hack is somehow very wrong, feel free to
>> try it on your cluster, and maybe you'll regain some of those lost ~15%.
>>
>> Please note that this code is also used for bcrypt (and the change gives
>> me slight speedup for bcrypt, too - about 2%, which were presumably lost
>> to USB pass-through - just not that much of a speedup, because the
>> performance hit on it wasn't that bad in the first place).
>>
>> So if you do go for this, please test bcrypt both ways (without and with
>> this change) as well.  Perhaps keep two john binaries.
>>
>> keys_per_crypt factors other than 4 (such as 2, 3, 5, more) on this line
>> may also be tried.  I only tried 4 - I didn't tune.  Denis, maybe make
>> this configurable?
>
> Testing this with the multiplier set to 8, I get the speeds to stabilize
> at the unrealistic(?) for standard clocks figure of 831M.  Could be
> misreporting, but the actual results look OK.
>
> $ ./john -form=descrypt-ztex -inc=lower -min-len=8 -max-len=8 -mask='?w?l?l?l?l' pw-fake-unix
> ZTEX XXXXXXXXXX bus:2 dev:7 Frequency:220,160 220,160 220,160 220,160
> Using default input encoding: UTF-8
> Loaded 3269 password hashes with 2243 different salts (descrypt-ztex, traditional crypt(3) [DES ZTEX])
> Press 'q' or Ctrl-C to abort, almost any other key for status
> 0g 0:00:00:12  0g/s 0p/s 877393Kc/s 1267MC/s loveaaaa..loveaovd
> 0g 0:00:00:14  0g/s 0p/s 835613Kc/s 1169MC/s loveaaaa..loveaovd
> 0g 0:00:00:15  0g/s 0p/s 857896Kc/s 1247MC/s loveaaaa..loveaovd
> 0g 0:00:00:16  0g/s 0p/s 877393Kc/s 1316MC/s loveaaaa..loveaovd
> 0g 0:00:00:18  0g/s 0p/s 844897Kc/s 1364MC/s loveaaaa..loveaovd
> 0g 0:00:00:19  0g/s 0p/s 862001Kc/s 1416MC/s jayotuhb..loveaovd
> 0g 0:00:00:46  0g/s 0p/s 839246Kc/s 1246MC/s loveaaaa..loveaovd
> campbell         (u1822-des)
> 1g 0:00:00:47  0.02086g/s 0p/s 846280Kc/s 1244MC/s campbell..loveaovd
> 1g 0:00:00:49  0.02027g/s 0p/s 835613Kc/s 1217MC/s loveaaaa..loveaovd
> [...]
> manageme         (u2347-des)
> 10g 0:00:07:19  0.02276g/s 0p/s 831425Kc/s 1183MC/s loveaaaa..loveaovd
> jethrotu         (u1131-bigcrypt:1)
> jeepster         (u2212-des)
> metallic         (u706-des)
> 13g 0:00:08:31  0.02543g/s 0p/s 831034Kc/s 1179MC/s loveaaaa..loveaovd
> michigan         (u2378-des)
> 14g 0:00:09:30  0.02455g/s 0p/s 831215Kc/s 1173MC/s loveaaaa..loveaovd
> peterpan         (u2501-des)
> butterfl         (u1812-bigcrypt:1)
> californ         (u970-bigcrypt:1)
> 17g 0:00:10:40  0.02653g/s 0p/s 831696Kc/s 1177MC/s loveaaaa..loveaovd
> lissabon         (u2310-des)
> [...]
> babydoll         (u921-des)
> 91g 0:00:47:05  0.03220g/s 0p/s 831117Kc/s 1212MC/s loveaaaa..loveaovd
> bluejean         (u1775-des)
> moonbeam         (u2405-des)
> motorola         (u2409-des)
> shanghai         (u2653-des)
> alexandr         (u534-des)
> lonestar         (u2319-des)
> jethrotu         (u1131-des)
> 98g 0:00:52:29  0.03111g/s 0p/s 831049Kc/s 1210MC/s loveaaaa..loveaovd
> paradigm         (u2479-des)
> 99g 0:00:52:37 0.56% (ETA: 2017-07-07 08:05) 0.03135g/s 370489p/s 831166Kc/s 1211MC/s sunoaaaa..sunoaovd
> promethe         (u1286-des)
> 100g 0:00:52:50 0.56% (ETA: 2017-07-07 08:43) 0.03154g/s 369009p/s 831079Kc/s 1211MC/s sunoaaaa..sunoaovd
> kristine         (u2280-des)
> 101g 0:00:54:27 0.56% (ETA: 2017-07-07 13:32) 0.03091g/s 358039p/s 831111Kc/s 1211MC/s sunoaaaa..sunoaovd
> treasure         (u2814-des)
> 102g 0:00:56:00 0.56% (ETA: 2017-07-07 18:09) 0.03035g/s 348136p/s 831087Kc/s 1214MC/s sunoaaaa..sunoaovd
> chainsaw         (u1843-des)
> promethe         (u1286-bigcrypt:1)
> softball         (u3082-des)
> 105g 0:00:56:58 0.56% (ETA: 2017-07-07 21:01) 0.03071g/s 342261p/s 831017Kc/s 1212MC/s sunoaaaa..sunoaovd
> transpor         (u2809-bigcrypt:1)
> superman         (u334-des)
> 107g 0:00:57:54 0.56% (ETA: 2017-07-07 23:48) 0.03079g/s 336714p/s 831091Kc/s 1211MC/s sunoaaaa..sunoaovd
>
> Comparing this to the results I posted earlier, standard clocks:
>
> brewster         (u1794-des)
> 99g 0:00:49:45 0.49% (ETA: 2017-07-06 17:59) 0.03316g/s 342899p/s 806212Kc/s 1168MC/s lynnaaaa..lynnaays
> superman         (u334-des)
> 100g 0:00:54:43 0.56% (ETA: 2017-07-06 11:37) 0.03045g/s 356327p/s 806126Kc/s 1168MC/s suno####..jmbp####
>
> Old 5% overclock (w/o the hack):
>
> brewster         (u1794-des)
> 99g 0:00:47:39 0.49% (ETA: 2017-07-06 09:17) 0.03462g/s 358015p/s 840055Kc/s 1217MC/s lynnaaaa..lynnaays
> superman         (u334-des)
> 100g 0:00:52:15 0.56% (ETA: 2017-07-06 02:43) 0.03189g/s 373136p/s 839891Kc/s 1218MC/s sunoaaaa..sunoaays
>
> So in terms of passwords cracked, this hack is similar to but not
> exactly at the 5% overclock level, but without the overclock.  It will
> probably be of a lot more help with multiple boards per host, but I
> might as well guess wrong.

Some quick keys_per_crypt tests on the cluster.

A value of 2 was a ~5.4% improvement. Values above 2 were worse -
enough that I only let them run for a few minutes to verify.

Stock:

325g 0:00:59:59 0.49% (ETA: 2017-07-08 16:38)
    0.09029g/s 4550Kp/s 9881Mc/s 14078MC/s nujuaaaa..nujualks

With keys_per_crypt *= 2:

369g 0:01:29:18 11.76% (ETA: 08:01:28)
    0.06886g/s 4585Kp/s 10454Mc/s 14840MC/s ayceaaaa

With keys_per_crypt *= 3:

269g 0:00:30:43 0.88% (ETA: 2017-07-04 07:01)
    0.1459g/s 1001Kp/s 3267Mc/s 4693MC/s shzbaaaa..shzbajwz

With keys_per_crypt *= 4:

16g 0:00:02:11  0.1215g/s 0p/s 5201Mc/s 7639MC/s loveaaaa

With keys_per_crypt *= 8:

25g 0:00:04:48  0.08667g/s 0p/s 2389Mc/s 3529MC/s majordom
32g 0:00:05:39  0.09428g/s 0p/s 2390Mc/s 3493MC/s garcdlyg
40g 0:00:07:19  0.09092g/s 0p/s 2395Mc/s 3413MC/s puggtbta

Royce

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.