• Alexey Dobriyan's avatar
    crypto: sha512 - make it work, undo percpu message schedule · 84e31fdb
    Alexey Dobriyan authored
    commit f9e2bca6
    aka "crypto: sha512 - Move message schedule W[80] to static percpu area"
    created global message schedule area.
    
    If sha512_update will ever be entered twice, hash will be silently
    calculated incorrectly.
    
    Probably the easiest way to notice incorrect hashes being calculated is
    to run 2 ping floods over AH with hmac(sha512):
    
    	#!/usr/sbin/setkey -f
    	flush;
    	spdflush;
    	add IP1 IP2 ah 25 -A hmac-sha512 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025;
    	add IP2 IP1 ah 52 -A hmac-sha512 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052;
    	spdadd IP1 IP2 any -P out ipsec ah/transport//require;
    	spdadd IP2 IP1 any -P in  ipsec ah/transport//require;
    
    XfrmInStateProtoError will start ticking with -EBADMSG being returned
    from ah_input(). This never happens with, say, hmac(sha1).
    
    With patch applied (on BOTH sides), XfrmInStateProtoError does not tick
    with multiple bidirectional ping flood streams like it doesn't tick
    with SHA-1.
    
    After this patch sha512_transform() will start using ~750 bytes of stack on x86_64.
    This is OK for simple loads, for something more heavy, stack reduction will be done
    separatedly.
    Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    84e31fdb
sha512_generic.c 8.68 KB