Skip to content
  • Eric Biggers's avatar
    crypto: arm/aes - add some hardening against cache-timing attacks · 913a3aa0
    Eric Biggers authored
    Make the ARM scalar AES implementation closer to constant-time by
    disabling interrupts and prefetching the tables into L1 cache.  This is
    feasible because due to ARM's "free" rotations, the main tables are only
    1024 bytes instead of the usual 4096 used by most AES implementations.
    
    On ARM Cortex-A7, the speed loss is only about 5%.  The resulting code
    is still over twice as fast as aes_ti.c.  Responsiveness is potentially
    a concern, but interrupts are only disabled for a single AES block.
    
    Note that even after these changes, the implementation still isn't
    necessarily guaranteed to be constant-time; see
    https://cr.yp.to/antiforgery/cachetiming-20050414.pdf
    
     for a discussion
    of the many difficulties involved in writing truly constant-time AES
    software.  But it's valuable to make such attacks more difficult.
    
    Much of this patch is based on patches suggested by Ard Biesheuvel.
    
    Suggested-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-...
    913a3aa0