Recent MAC improvements

Corinna Vinschen vinschen at
Wed Jun 13 18:36:00 EST 2007

On Jun 11 14:43, Damien Miller wrote:
> Hi,
> There has been some recent work to improve the speed of the Message
> Authentication Codes (MACs) that are used in OpenSSH.
> The first improvement is a change from Markus Friedl to reuse the MAC
> context, rather than reinitialising it for every packet. This saves two
> calls to the underlying hash function (e.g. SHA1) for each packet. My
> tests found that this yielded at 12-16% speedup for bulk transfers to
> localhost using HMAC-MD5 and arcfour256. HMAC-SHA1 should see an even
> bigger improvement, because SHA1 is a more expensive hash function.
> The second improvement is Peter Valchev's addition of a new MAC: Ted
> Krovetz' UMAC-64[1]. This MAC uses a very different approach than the
> HMACs that OpenSSH currently supports, and it comes with a nice security
> proof that guarantees its resistance so long as its underlying block
> cipher (AES) remains cryptologically intact. Testing (bulk transfers to
> localhost using arcfour256) found UMAC-64 to perform 20% better than
> HMAC-MD5, and 28% faster than HMAC-SHA1. This new MAC may be selected
> by specifying "MACs=umac-64 at" in a server or client config.
> These changes need testing on as many platforms as possible. In particular
> we are interested in the following corner cases:
> - Old OpenSSL version (0.9.5ish)
> - Testing between big and little endian machines (i386 vs. sparc for example)
> - Testing between previous OpenSSH versions and -current
> - Testing on strict alignment architectures like Alpha and Itanium
> Please report your findings to the mailing list.

Builds and runs fine on Cygwin w/ openssl 0.9.8e.  Exchanging data
with Cygwin 4.6p1 and Linux 4.5p1 works fine.  UMAC works fine between
Cygwin machines.  I see a 14% speed improvement in a default scp
with no further options, relative to 4.6p1.  Using umac-64 the speed
improvement is 15%.


Corinna Vinschen
Cygwin Project Co-Leader
Red Hat

More information about the openssh-unix-dev mailing list