Lumina Blocks
Security & Cryptography
Preview · v1.0.0

LM-SHA3

SHA-3 Hash Crypto Engine

  • High throughput
  • Fixed-latency permutation
  • Register-based configuration
  • Portable to any FPGA

LM-SHA3 is a cryptographic IP core for hardware offloading of hash algorithms in FPGA and SoC designs.

The engine implements the Secure Hash Algorithm 3 family according to FIPS 202, including the fixed-length functions SHA3-224, SHA3-256, SHA3-384 and SHA3-512 and the extendable-output functions SHAKE128 and SHAKE256. It also supports the cSHAKE and KMAC operations of NIST SP 800-185.

LM-SHA3 implements the Keccak sponge construction complete: the domain separation suffix, the message padding and the permutation are all performed in hardware, so a host sends message bytes and nothing else. With the context-switching function the internal state of the Keccak engine can be saved and restored, allowing a partially absorbed message to be suspended while other data is processed.

The core is delivered as vendor-neutral SystemVerilog and builds from one source on AMD, Altera and Efinix devices. It includes AMBA AXI interfaces and a register map with user-programmable parameters selecting the hash function, the digest length of the XOFs and the cSHAKE/KMAC configuration. ANSI C drivers are provided for fast integration into the target platform.

Measured FPGA results

Product top, out of context, constrained at the target clock. AMD and Efinix report LUTs, Altera reports ALMs; the two are never combined.

DeviceConfigurationLogicFFMemoryDSPFmax
Altera Agilex 3A3CW135BM16AE6S · quartus-pro 26.1.1default6,005 ALM5,9610 Kb M20K0215.0 MHztarget 215
AMD Kintex UltraScale+xcku3p-ffva676-1-e · vivado 2026.1default7,972 LUT4,3600 BRAM0307.3 MHztarget 300
Efinix Titanium Ti375Ti375N1156 · efinity 2026.1default13,833 LUT4,3430 RAM0276.7 MHztarget 255

Features

Cryptographic hashing

  • SHA3-224, SHA3-256, SHA3-384, SHA3-512

Extendable-output functions

  • SHAKE128, cSHAKE128
  • SHAKE256, cSHAKE256

Message authentication

  • KMAC128, KMAC256

Engine

  • One Keccak-f[1600] permutation every 24 clock cycles, fixed
  • Message absorbed at a full 64-bit lane per clock — the engine does not stall for data
  • Domain suffix and pad10*1 applied in hardware
  • Context switching: the full 1600-bit state saved and restored through the register map
  • Capability register — the driver discovers the configuration rather than being told

Integration

  • AMBA AXI4-Lite control and three AXI4-Stream data interfaces
  • Two delivery tops: complete AXI product, or bare sponge for a custom fabric
  • Single clock domain, single reset — no false paths, no multicycle paths
  • ANSI C driver, UVM RAL, IP-XACT, SystemRDL register description
  • Portable to any AMD, Altera or Efinix device from one source

Applications

  • Digital signature and certificate processing
  • Post-quantum cryptography — ML-KEM and ML-DSA use SHAKE and cSHAKE throughout
  • Key derivation and message authentication
  • Secure boot and firmware verification
  • Encrypted data storage
  • Secure communications

Block diagram


SHA-3 functions

The ten functions differ only in a rate, a domain suffix and an output length; one engine serves all of them.

FunctionRate (bytes)Rate (lanes)SuffixDigest
SHA3-224144180x0628 bytes
SHA3-256136170x0632 bytes
SHA3-384104130x0648 bytes
SHA3-5127290x0664 bytes
SHAKE128168210x1Fprogrammable
SHAKE256136170x1Fprogrammable
cSHAKE128168210x04programmable
cSHAKE256136170x04programmable
KMAC128168210x04programmable
KMAC256136170x04programmable

Rates follow FIPS 202 section 6, r = 1600 − 2s. Suffixes follow appendix B.2 for SHA-3 and SHAKE; the derived functions absorb 00 because the cSHAKE prefix separates their domain instead.


Interfaces

The IP core includes two 64-bit AXI4-Stream interfaces for high-speed transfer of the input message and the output hash value, and an 8-bit AXI4-Stream interface carrying the cSHAKE and KMAC parameter strings. The AXI4-Lite interface provides access to the register map for selecting the SHA-3 function, the digest length of the XOFs and the cSHAKE/KMAC parameters.

InterfaceTypeWidthFunction
s_axilAXI4-Lite slave32-bit data, 8-bit addressconfiguration, command, status, digest and context windows
s_axis_msgAXI4-Stream sink64-bit, tkeep, tlastinput message
s_axis_parAXI4-Stream sink8-bitcSHAKE and KMAC parameter strings
m_axis_hashAXI4-Stream source64-bit, tkeep, tlastoutput hash value
irqlevel1-bitcompletion and error events

tkeep qualifies bytes on the final message beat, so a message is any number of bytes. Parameter strings arrive as N then S for cSHAKE, and S then K for KMAC.


Throughput

Throughput follows directly from the architecture and can be computed for any clock frequency without a lookup table:

one permutation              24 clock cycles
one rate-block per permutation
throughput  =  rate_bytes  x  f_clk  /  24

For SHA3-256 at 300 MHz this gives 136 × 300 × 10⁶ / 24 ≈ 1.7 GB/s.

The permutation is fixed-latency. Every permutation is 24 cycles regardless of message content, and this is proved formally rather than measured — the round-count property is carried by a dedicated proof. Execution time is therefore a function of message length alone. No masking, randomisation or fault-detection countermeasures are implemented; where an application requires resistance to power analysis or fault injection, that belongs in the surrounding system.


Configuration

ParameterEffect
function select (cfg.fn)run-time, one of the ten functions
XOF digest length (xoflen)run-time, any byte count
cSHAKE / KMAC string lengthsrun-time (nlen, slen, keylen)
top choiceelaboration: full AXI product, or bare sponge

Everything that distinguishes a hash from a MAC on this core is a register write. There is no elaboration-time function subsetting to get wrong.


Resources and performance

Resource utilisation and maximum clock frequency for each target device are measured out of context and published per target in the measured results on this page. AMD and Efinix rows report LUTs; Altera rows report ALMs, and the two are never combined.


Deliverables

ItemContents
RTLparameterised SystemVerilog, vendor-neutral
Modelbit-accurate C++ model
RegistersSystemRDL source plus six generated exports
VerificationUVM RAL, formal property wrappers, CAVP vector drivers
SoftwareANSI C reference driver with generated header and JSON
PackagingIP-XACT, IEEE 1685-2022
Implementationrunnable flow script per FPGA vendor, file list, SDC
Documentationintegration guide

Privacy settings

Choose what this site may use. You can change your mind at any time from the Privacy settings link at the bottom of every page.

What the site needs to work, and the record of the choice you make here, kept in your browser. No cookies are set.

Always on

Would let us count visits and see which pages are useful, without advertising or cross-site tracking. We do not use any analytics today, so nothing is loaded whichever you choose.

Cookie policy · Privacy policy