I am working on a project where I need to authenticate data in parallel with computations on that data. The idea is to stream data from memory onto the chip only once; while the data is on-chip, we do a computation on it and authenticate. My current workstation uses ARMv8 instruction set (although I could change to an Intel chip if beneficial). The computations involve floating point operations, so my hope is that we can perform the computations on floating point units while simultaneously doing authentication on other units.

I am aware that checksums are generally fast to compute and often provide "good enough" authentication. However, I need to use cryptographically secure authentication.

I am aware of a work that claims high throughput for AES-GCM authentication (see here) claiming a throughput of 0.51 cycles/byte. My question is whether this is the state-of-the-art in terms of throughput for cryptographic authentication, and whether there exists a reference detailing other options and their implementations.

  • 2
    $\begingroup$ Just to be certain we're on the same page: what do you mean by 'authentication'? What GMAC (the authentication piece of AES-GCM; you may or may not need to encryption part) does is take the data (and a key) and compute a 'tag'; if the 'tag' matches what is in the data, the data 'authenticates'. The point is that if you don't know the key, there is a provably tiny chance that you could make any change to the data (and the tag) that will still authenticate - would that meet your requirements? $\endgroup$
    – poncho
    Jan 26 at 3:58
  • 2
    $\begingroup$ I find this question rather opinion-centric, but I'll refrain from voting to close it for now. ARMv8-A has instructions for SHA-2 (256 and 512 bits) and Keccak (all sizes and modes of SHA-3), GMAC is of course also an option. Intel in my opinion is lagging behind in terms of energy consumption and more importantly openness. So if you could change chip, you can consider an advanced micro-architecture of ARMv8-A that support the features I've mentioned. $\endgroup$
    – DannyNiu
    Jan 26 at 6:04
  • $\begingroup$ @poncho Sorry I wasn't clear - that is exactly what I mean. I want to compute a MAC and compare it against a precomputed, trusted MAC $\endgroup$
    – Nate
    Jan 27 at 15:35


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.