Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 19 Jul 2012 14:07:15 -0500
From: "jfoug" <jfoug@....net>
To: <john-dev@...ts.openwall.com>
Subject: RE: Keychain format speedup on CPU.

This could be done 2x to 3x faster with SSE (likely).  I would like to help,
but am working on other projects.  But since we do have SSE2 for sha1, it
certainly could be used.

I would only worry about setting up the SSE buffers, and using them within
the inner loop (but big_hmac_sha1 function)

>From: Dhiru Kholia [mailto:dhiru.kholia@...il.com]
>
>With the following commit Keychain format is now 2.4x faster on CPU and
>scales almost linearly. However, Passware Kit Enterprise 11.7 achieves a
>speed of roughly 2,300 c/s whereas our plug-in achieves
>1,513 c/s (thanks to Lukas).
>
>Can we beat Passware? What are the possible optimization in Lukas code?
>Can SSE acceleration be used (salt size is 20)? Thanks!

Also one very small optimization (less than 1%) is to avoid the non-needed
assignments. 

	for (lo = 1; lo < ITERATIONS; lo++) {

		A = ipad_state[0];
		B = ipad_state[1];
		C = ipad_state[2];
		D = ipad_state[3];
		E = ipad_state[4];

		W[5] = 0x80000000;
		W[15] = 0x2A0;

		SHA2(A, B, C, D, E, W);

//		A += ipad_state[0];
//		B += ipad_state[1];
//		C += ipad_state[2];
//		D += ipad_state[3];
//		E += ipad_state[4];
//
//		W[0] = A;
//		W[1] = B;
//		W[2] = C;
//		W[3] = D;
//		W[4] = E;
//		W[5] = 0x80000000;
//		W[15] = 0x2A0;

		W[0] = A + ipad_state[0];
		W[1] = B + ipad_state[1];
		W[2] = C + ipad_state[2];
		W[3] = D + ipad_state[3];
		W[4] = E + ipad_state[4];
		W[5] = 0x80000000;
		W[15] = 0x2A0;

		A = opad_state[0];
		B = opad_state[1];
		C = opad_state[2];
		D = opad_state[3];
		E = opad_state[4];

		SHA2(A, B, C, D, E, W);

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.