• Nathan Huckleberry's avatar
    crypto: hctr2 - Add HCTR2 support · 7ff554ce
    Nathan Huckleberry authored
    Add support for HCTR2 as a template.  HCTR2 is a length-preserving
    encryption mode that is efficient on processors with instructions to
    accelerate AES and carryless multiplication, e.g. x86 processors with
    AES-NI and CLMUL, and ARM processors with the ARMv8 Crypto Extensions.
    
    As a length-preserving encryption mode, HCTR2 is suitable for
    applications such as storage encryption where ciphertext expansion is
    not possible, and thus authenticated encryption cannot be used.
    Currently, such applications usually use XTS, or in some cases Adiantum.
    XTS has the disadvantage that it is a narrow-block mode: a bitflip will
    only change 16 bytes in the resulting ciphertext or plaintext.  This
    reveals more information to an attacker than necessary.
    
    HCTR2 is a wide-block mode, so it provides a stronger security property:
    a bitflip will change the entire message.  HCTR2 is somewhat similar to
    Adiantum, which is also a wide-block mode.  However, HCTR2 is designed
    to take advantage of existing crypto instructions, while Adiantum
    targets devices without such hardware support.  Adiantum is also
    designed with longer messages in mind, while HCTR2 is designed to be
    efficient even on short messages.
    
    HCTR2 requires POLYVAL and XCTR as components.  More information on
    HCTR2 can be found here: "Length-preserving encryption with HCTR2":
    https://eprint.iacr.org/2021/1441.pdfSigned-off-by: default avatarNathan Huckleberry <nhuck@google.com>
    Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Reviewed-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    7ff554ce
Makefile 8.08 KB