# US 9,438,416 B2 · Customizable encryption algorithm based on a sponge construction with authenticated and non-authenticated modes of operation

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

- Number: US 9,438,416 B2
- Document ID: US9438416B2
- Status: Granted
- Kind: B2
- Application number: 14/334,916
- Filed: 2014-07-18
- Published: 2016-01-21
- Granted: 2016-09-06
- Earliest claimed: 2014-07-18
- Assignees: Harris Corporation
- Applicants: Harris Corporation
- Inventors: Michael T. Kurdziel; Matthew Kelly; Alan Kaminsky; Marcin Lukowiak; Stanislaw Radziszowski
- Web page: https://patentgrep.com/patent/US9438416B2

## CPC

- H04L 9/0838: {Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these (network architectures or network communication protocols for key exchange in a packet data network H04L63/061)}
- H04L 9/065: {Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3}
- H04L 9/0662: {with particular pseudorandom sequence generator}
- H04L 9/0668: {producing a non-linear pseudorandom sequence}
- H04L 9/14: using a plurality of keys or algorithms
- H04L 2209/043: of tables, e.g. lookup, substitution or mapping
- H04L 2209/24: Key scheduling, i.e. generating round keys or sub-keys for block encryption
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems (100) and methods (600) for generating encrypted data. The methods involve: combining a cryptographic key with state initialization bits to generate first combination bits; producing a first keystream by performing a permutation function ƒ using the first combination bits as inputs thereto; and using the first keystream to encrypt first data (e.g., authentication data or message body data) so as to produce first encrypted data. The permutation function ƒ comprises a round function ƒround that is iterated R times. The round function ƒround consists of (1) a substitution layer in which the first combination bits are substituted with substitute bits, (2) a permutation layer in which the substitute bits are re-arranged, (3) a mixing layer in which multiple of the permutation layer are combined together, and (4) an addition layer in which a constant is added to the output of the mixing layer.

## Claims

### Claim 1

A method for generating encrypted data, comprising:
combining, by an electronic circuit, a cryptographic key with state initialization bits to generate first combination bits, the state initialization bits comprising bits b that have been initialized to pre-defined bit values;
producing a first keystream by performing a permutation function ƒ using the first combination bits as inputs thereto, the permutation function ƒ comprising a round function ƒround that is iterated R times, the round function ƒround consisting of
(1) a substitution layer in which the first combination bits are substituted with substitute bits,
(2) a permutation layer in which the substitute bits are re-arranged,
(3) a mixing layer in which at least two outputs of the permutation layer are combined together, and
(4) an addition layer in which a constant is added to the output of the mixing layer; and
using, by the electronic circuit, the first keystream to encrypt first data so as to produce first encrypted data.

### Claim 2 (depends on 1)

The method according to claim 1, further comprising concatenating the cryptographic key with a flag value prior to said combining.

### Claim 3 (depends on 1)

The method according to claim 1, further comprising selecting a multi-bit value for the state initialization bits that is unique for a given application.

### Claim 4 (depends on 1)

The method according to claim 1, further comprising truncating the first keystream to a desired length prior to being used to encrypt the first data.

### Claim 5 (depends on 1)

The method according to claim 1, further comprising padding the first data to make a total number of bits contained therein a multiple of the total number of state initialization bits prior to being encrypted.

### Claim 6 (depends on 1)

The method according to claim 1, wherein the first data is combined with the first keystream using modular arithmetic.

### Claim 7 (depends on 1)

The method according to claim 1, wherein the first data comprises authentication data or message body data.

### Claim 8 (depends on 1)

The method according to claim 1, further comprising:
producing a second keystream by performing the permutation function ƒ using the first keystream as inputs thereto; and
using, by the electronic circuit, the second keystream to encrypt second data so as to produce second encrypted data.

### Claim 9

A method for generating encrypted data, comprising:
combining, by an electronic circuit, a cryptographic key with state initialization bits to generate first combination bits;
producing a first keystream by performing a permutation function ƒ using the first combination bits as inputs thereto, the permutation function ƒ comprising a round function ƒround that is iterated R times, the round function ƒround consisting of
(1) a substitution layer in which the first combination bits are substituted with substitute bits,
(2) a permutation layer in which the substitute bits are re-arranged,
(3) a mixing layer in which at least two outputs of the permutation layer are combined together, and
(4) an addition layer in which a constant is added to the output of the mixing laver; and
using, by the electronic circuit, the first keystream to encrypt first data so as to produce first encrypted data;
wherein the first encrypted data is produced by:
combining the first keystream with authentication data to generate second combination bits;
producing a second keystream by performing the permutation function ƒ using the second combination bits as inputs thereto; and
combining the second keystream with message body data so as to produce the first encrypted data.

### Claim 10 (depends on 9)

The method according to claim 9, further comprising generating an authentication tag by:
combining the second keystream with the message body data to produce third combination bits;
producing a third keystream by performing the permutation function ƒ using the third combination bits as inputs thereto; and
using at least a portion of the third keystream as the authentication tag.

### Claim 11

A system, comprising:
an electronic circuit
combining a cryptographic key with state initialization bits to generate first combination bits, the state initialization bits comprising bits b that have been initialized to pre-defined bit values,
producing a first keystream by performing a permutation function ƒ using the first combination bits as inputs thereto, and
using the first keystream to encrypt first data so as to produce first encrypted data;
wherein the permutation function ƒ comprises a round function ƒround that is iterated R times, the round function ƒround consisting of (1) a substitution layer in which the first combination bits are substituted with substitute bits, (2) a permutation layer in which the substitute bits are re-arranged, (3) a mixing layer in which at least two outputs of the permutation layer are combined together, and (4) an addition layer in which a constant is added to the output of the mixing layer.

### Claim 12 (depends on 11)

The system according to claim 11, wherein the electronic circuit further concatenates the cryptographic key with a flag value prior to said combining.

### Claim 13 (depends on 11)

The system according to claim 11, wherein a multi-bit value for the state initialization bits is selected to be unique for a given application.

### Claim 14 (depends on 11)

The system according to claim 11, wherein the electronic circuit further truncates the first keystream to a desired length prior to being used to encrypt the first data.

### Claim 15 (depends on 11)

The system according to claim 11, wherein the electronic circuit further pads the first data to make a total number of bits contained therein a multiple of the total number of state initialization bits prior to being encrypted.

### Claim 16 (depends on 11)

The system according to claim 11, wherein the first data is combined with the first keystream using modular arithmetic.

### Claim 17 (depends on 11)

The system according to claim 11, wherein the first data comprises authentication data or message body data.

### Claim 18 (depends on 11)

The system according to claim 11, wherein the electronic circuit further:
produces a second keystream by performing the permutation function ƒ using the first keystream as inputs thereto; and
uses the second keystream to encrypt second data so as to produce second encrypted data.

### Claim 19

A system, comprising:
an electronic circuit
combining a cryptographic key with state initialization bits to generate first combination bits,
producing a first keystream by performing a permutation function ƒ using the first combination bits as inputs thereto, and
using the first keystream to encrypt first data so as to produce first encrypted data;
wherein the permutation function ƒ comprises a round function ƒround that is iterated R times, the round function ƒround consisting of (1) a substitution layer in which the first combination bits are substituted with substitute bits, (2) a permutation layer in which the substitute bits are re-arranged, (3) a mixing layer in which at least two outputs of the permutation layer are combined together, and (4) an addition layer in which a constant is added to the output of the mixing layer; and
wherein the first encrypted data is produced by:
combining the first keystream with authentication data to generate second combination bits;
producing a second keystream by performing the permutation function ƒ using the second combination bits as inputs thereto; and
combining the second keystream with message body data so as to produce the first encrypted data.

### Claim 20 (depends on 19)

The system according to claim 19, wherein the electronic circuit further generates an authentication tag by:
combining the second keystream with the message body data to produce third combination bits;
producing a third keystream by performing the permutation function ƒ using the third combination bits as inputs thereto; and
using at least a portion of the third keystream as the authentication tag.
