# US 12,010,209 B2 · Memory-efficient hardware cryptographic engine

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,010,209 B2
- Document ID: US12010209B2
- Status: Granted
- Kind: B2
- Application number: 17/059,393
- Filed: 2019-05-29
- Published: 2021-07-15
- Granted: 2024-06-11
- Earliest claimed: 2018-05-30
- Assignees: Nordic Semiconductor ASA
- Applicants: Nordic Semiconductor ASA
- Inventors: Marko Winblad; Markku Vähätaini; James Nevala; Matti Tiikkainen; Hannu Talvitie
- Web page: https://patentgrep.com/patent/US12010209B2

## CPC

- H04L 9/06: the encryption apparatus using shift registers or memories for block-wise {or stream} coding, e.g. DES systems {or RC4; Hash functions; Pseudorandom sequence generators}
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 21/72: in cryptographic circuits
- G06F 21/74: operating in dual or compartmented mode, i.e. at least one secure mode
- H04L 2209/12: Details relating to cryptographic hardware or logic circuitry
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A hardware cryptographic engine comprises a direct-memory-access (DMA) input module for receiving input data over a memory bus, and a cryptographic module. The cryptographic module comprises an input register having an input-register length, and circuitry configured to perform a cryptographic operation on data in the input register. The hardware cryptographic engine further comprises an input-alignment buffer having a length that is less than twice said input-register length, and alignment circuitry performing an alignment operation on input data in the input-alignment buffer. The hardware cryptographic engine is configured to pass input data, received by the DMA input module, from the memory bus to the input register of the cryptographic module after buffering an amount of input data no greater than the length of the input-alignment buffer.

## Claims

### Claim 1

A hardware cryptographic engine comprising:
a direct-memory-access input module for receiving input data over a memory bus; and
a cryptographic module,
wherein the cryptographic module comprises:
an input register having an input-register length; and
circuitry configured to perform a cryptographic operation on data in the input register,
wherein the hardware cryptographic engine further comprises an input-alignment buffer having a length that is less than twice said input-register length, and hardware alignment circuitry for performing an alignment operation on input data in the input-alignment buffer; and
wherein the hardware cryptographic engine is configured to pass input data, received by the direct-memory-access input module, from the memory bus to the input register of the cryptographic module after buffering an amount of input data no greater than the length of the input-alignment buffer.

### Claim 2 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the hardware alignment circuitry is configured to use memory-address information to select a block of data from the input-alignment buffer, the block of data having a length equal to the input-register length, and to transfer the block of data to the input register.

### Claim 3 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the input-alignment buffer has a length that is equal to twice said input-register length, minus one byte.

### Claim 4 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the input register is not addressable from outside the hardware cryptographic engine.

### Claim 5 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the cryptographic-module circuitry comprises a set of one or more wires, each wire having a first end that is connected to a respective bit position of the input register, and a second end that is connected to a respective electronic operator.

### Claim 6 (depends on 5)

The hardware cryptographic engine of claim 5, wherein each electronic operator implements a logical operation, a mathematical operation, a substitution operation, a bit-scrambling operation, a cyclic-permutation operation, an expansion operation, or a compression operation, as part of said cryptographic operation.

### Claim 7 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the input register is also an output register, and wherein the cryptographic-module circuitry is configured to store a result of the cryptographic operation in the input register.

### Claim 8 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the cryptographic module comprises an output register, separate from the input register, for storing output data representing a result of the cryptographic operation.

### Claim 9 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the cryptographic module is a cipher module, and wherein the cryptographic operation is SNOW 3G, AES, DES, 3-DES or KASUMI.

### Claim 10 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the input-register length is equal to a block length of the cryptographic operation.

### Claim 11 (depends on 1)

The hardware cryptographic engine of claim 1, wherein the direct-memory-access input module is configured to fetch a cryptographic key or an initialisation vector as input to the cryptographic module.

### Claim 12 (depends on 1)

The hardware cryptographic engine of claim 1, comprising a direct-memory access output module, for sending output data over the memory bus, and an output register of an output-register length, wherein the hardware cryptographic engine is configured to pass output data from the output register, through the direct-memory-access output module, to the memory bus without buffering the output data, or after buffering an amount of output data no greater than twice said output-register length.

### Claim 13 (depends on 1)

The hardware cryptographic engine of claim 1, wherein:
the cryptographic operation is SNOW 3G, which operates on 32-bit words;
the input-register length is 32 bits; and
the input-alignment buffer has a length of 56 bits.

### Claim 14

An electronic apparatus comprising a hardware cryptographic engine and a memory bus, wherein the hardware cryptographic engine comprises:
a direct-memory-access input module for receiving input data over the memory bus; and
a cryptographic module,
wherein the cryptographic module comprises:
an input register having an input-register length; and
circuitry configured to perform a cryptographic operation on data in the input register,
wherein the hardware cryptographic engine further comprises an input-alignment buffer having a length that is less than twice said input-register length, and hardware alignment circuitry for performing an alignment operation on input data in the input-alignment buffer; and
wherein the hardware cryptographic engine is configured to pass input data, received by the direct-memory-access input module, from the memory bus to the input register of the cryptographic module after buffering an amount of input data no greater than the length of the input-alignment buffer.

### Claim 15 (depends on 14)

The electronic apparatus of claim 14, wherein the electronic apparatus is an integrated-circuit device.

### Claim 16 (depends on 14)

The electronic apparatus of claim 14, wherein the electronic apparatus is configured to use the hardware cryptographic engine to encrypt data for communication over a radio channel, or to decrypt data received over a radio channel.

### Claim 17

A method of performing a cryptographic operation on data, the method comprising:
receiving input data by direct memory access over a memory bus; and
performing a cryptographic operation on the received input data using a hardware cryptographic module that comprises an input register having an input-register length and circuitry configured to perform the cryptographic operation on data in the input register, wherein the method comprises:
buffering the input data, received over the memory bus, in an input-alignment buffer having a length that is less than twice said input-register length;
performing, by hardware alignment circuitry, an alignment operation on the input data in the input-alignment buffer; and
passing the input data to the input register of the cryptographic module after buffering an amount of the input data no greater than the length of the input-alignment buffer.

### Claim 18 (depends on 17)

The method of claim 17, wherein the alignment operation comprises using memory-address information to select a block of data from the input-alignment buffer, the block of data having a length equal to the input-register length, and transferring the block of data to the input register.

### Claim 19 (depends on 17)

The method of claim 17, wherein the input-alignment buffer has a length that is equal to twice said input-register length, minus one byte.
