Bitslice DES S-boxes with LOP3.LUT instructions
I've been working on implementing a specific algorithm. Everything works, thanks to amongst others, some very useful tips and hints from the forum Smile

On a Titan X (3072 cores), the algorithm runs @~360M/s. This sounds good but in fact it isn't: my basic C++ OpenSSL based CPU code runs @~1M/s on an outdated CPU (1 core). I've isolated the time consuming code: it's the DES implementation I'm using, the one that's also used in e.g. m=3100. A quick test reveals that all algorithms that use this DES implementation are relatively slow.

I've also found that some other algorithms like m=3000 (LM) use a different DES implementation, "Bitslice DES S-boxes with LOP3.LUT instructions". Based on what LM does and the benchmarks speed, this code seems to be significantly faster. Using the code seems to be the way forward for me, to crack crypto data of the algorithm I'm using in a reasonable amount of time. For me as an amateur coder, the LOP3.LUT code is not easy to read / understand though... So I've got two questions:

- Any educated guesses about the speed of a raw DES of the code used in m=3000 versus m=3100?
- Can someone give me some pointer about how to get from the current code in m=3000 to something close to 'keydata = setkey(key)' and 'out = crypt(in, keydata, mode)'?

Thanks a bunch!

Messages In This Thread
Bitslice DES S-boxes with LOP3.LUT instructions - by John Doe - 07-14-2016, 02:40 AM