IP Library Granted Patent US 12,537,677
Granted Patent B1
US 12,537,677 · App. 19/187,708 · Granted Jan 27, 2026

One-time key derivation

Inventors: Andrew James Weiler (Nampa, ID); Nathan Charles Chrisman (Nampa, ID)
Assignee: Idaho Scientific LLC
H04L9/0861H04L9/085H04L9/0891
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,537,677
App. No.
19/187,708
Granted
Jan 27, 2026
Kind
B1
Abstract

A system for generating keys comprises a plurality of share selecting modules, each module containing multiple storage buffers connected to a selector. For a given key mixing operation, the selector chooses a key share stored in one of the buffers. A bit-wise XOR gate is connected to the share selecting modules and is configured to bit-wise XOR all selected key shares to generate a mixed key on its output.

Claims (53)

1 . A system for generating keys, the system comprising:

a plurality of share selecting modules each share selecting module comprising a plurality of storage buffers coupled to a selector that, for a given key mixing operation, selects a key share stored in one of the storage buffers,

wherein the plurality of storage buffers in each share selecting module are configured to store a first key share and a second key share and wherein the selectors are coupled together so as to receive a multi-bit binary number, and each bit in the binary number corresponding to a share selecting module, where each bit in the binary number is used to select the first key share or the second key share in a share selecting module corresponding to the bit; and

a bit-wise XOR gate coupled to the plurality of share selecting modules, the bit-wise XOR gate configured to bit-wise XOR all of the key shares selected by the share selecting modules for the given key mixing operation to generate a mixed key on an output of the bit-wise XOR gate,

wherein the selectors in the plurality of share selecting modules are configured to select key shares based on a storage address used to store data that is encrypted using the mixed key, and

wherein the multi-bit binary number comprising the storage address.

2 . The system of claim 1 , further comprising a key-roll selection system coupled to the output of the bit-wise XOR gate through a second bit-wise XOR gate to XOR the output of the bit-wise XOR gate with the output of the key-roll selection system, the key-roll selection system selecting a roll share by selecting between a first key-roll share and a second key-roll share based on a memory pointer input into the key-roll selection system.

3 . The system of claim 2 , further comprising a key-roll manager, the key-roll manager configured to perform a key-roll operation by:

reading ciphertext from memory using a second key created with the second key-roll share XORed with an output of the bit-wise XOR gate;

incrementing the memory pointer; and

writing updated ciphertext back to the memory using a first key created using the first key-roll share XORed with the output of the bit-wise XOR gate.

4 . The system of claim 3 , wherein the key-roll manager is configured to perform a key-roll operation based on a number of writes having been performed.

5 . The system of claim 4 , wherein the number of writes is a number of writes that is no more than ½ of the number of writes to wear out the first key.

6 . The method of claim 4 , wherein the number of writes is a variable number of writes based on nonce preservation operations.

7 . The system of claim 3 , wherein the key-roll manager is configured to perform a key-roll operation based on expiration of an amount of time.

8 . A method of encrypting data or instructions, the method comprising:

for a given key generation process, selecting a key share at each share selecting module of a plurality of share selecting modules,

wherein each share selecting module comprises a plurality of storage buffers, where each of the storage buffers is coupled to a selector that, for a given key mixing operation, selects a key share stored in one of the storage buffers,

wherein the plurality of storage buffers in each share selecting module are configured to store a first key share and a second key share,

wherein the selectors are coupled together so as to receive a multi-bit binary number each bit in the binary number corresponding to a share selecting module, where each bit in the binary number is used to select the first key share or the second key share in a share selecting module corresponding to the bit,

wherein the selectors in the plurality of share selecting modules select key shares based on a nonce,

wherein the nonce is provided by a write counter that increments or decrements each time data or instructions are written to memory, and

wherein the multi-bit binary number comprising the nonce;

bit-wise XORing the selected key shares to create a mixed key; and

using the mixed key, encrypting data or instructions.

9 . The method of claim 8 , further comprising: selecting between a first key-roll share and a second key-roll share to select a roll share based on a memory pointer for a memory;

wherein bit-wise XORing the selected key shares causes an intermediate share to be created; and

bit-wise XORing the intermediate share and the roll share to create the mixed key.

10 . The method of claim 9 , further comprising performing a key-roll operation by:

reading ciphertext from memory using a second key created with the second key-roll share XORed with an output of the bit-wise XORing;

incrementing the memory pointer; and

writing updated ciphertext back to the memory using a first key created using the first key-roll share XORed with the output of the bit-wise XORing.

11 . The method of claim 10 , wherein a key-roll manager is configured to perform a key-roll operation based on a number of writes having been performed.

12 . The method of claim 11 , wherein the number of writes is a number of writes that is no more than ½ of the number of writes to wear out the first key.

13 . The method of claim 10 , wherein the key-roll manager is configured to perform a key-roll operation based on expiration of an amount of time.

14 . A system for generating keys, the system comprising:

one or more processors; and one or more computer-readable media having stored thereon instructions that are executable by the one or more processors to configure the computer system to perform at least the following:

for a given key generation process, selecting a key share at each share selecting module of a plurality of share selecting modules,

wherein each share selecting module comprises a plurality of storage buffers, where each of the storage buffers is coupled to a selector that, for a given key mixing operation, selects a key share stored in one of the storage buffers,

wherein the plurality of storage buffers in each share selecting module are configured to store a first key share and a second key share,

wherein the selectors are coupled together so as to receive a multi-bit binary number, where each bit in the binary number corresponding to a share selecting module, where each bit in the binary number is used to select the first key share or the second key share in a share selecting module corresponding to the bit,

wherein the selectors in the plurality of share selecting modules select key shares based on a storage address used to store data that is encrypted using the mixed key, and

wherein the multi-bit binary number comprising the storage address;

bit-wise XORing the selected key shares to create a mixed key; and

using the mixed key, encrypting data or instructions.

15 . The system of claim 14 , wherein the one or more computer-readable media further have stored thereon instructions that are executable by the one or more processors to configure the computer system to perform at least the following:

selecting between a first key-roll share and a second key-roll share to select a roll share based on a memory pointer for a memory; wherein bit-wise XORing the selected key shares causes an intermediate share to be created; and

bit-wise XORing the intermediate share and the roll share to create the mixed key.

16 . The system of claim 15 , wherein the one or more computer-readable media further have stored thereon instructions that are executable by the one or more processors to configure the computer system to perform a key-roll operation by performing at least the following:

reading ciphertext from the memory using a second key created with the second key-roll share XORed with an output of the bit-wise XORing; incrementing the memory pointer; and writing updated ciphertext back to the memory using a first key created using the first key-roll share XORed with the output of the bit-wise XORring.

17 . The system of claim 16 , wherein the one or more computer-readable media further have stored thereon instructions that are executable by the one or more processors to configure the computer system to perform the key-roll operation based on a number of writes having been performed.

18 . The system of claim 16 , wherein the one or more computer-readable media further have stored thereon instructions that are executable by the one or more processors to configure the computer system to perform the key-roll operation based expiration of an amount of time.

19 . The system of claim 17 , wherein the number of writes is a number of writes that is no more than ½ of the number of writes to wear out the first key.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2026
From: IDAHO SCIENTIFIC LLC
To: GENERAL DYNAMICS MISSION SYSTEMS,
Reel/Frame 073779/0359 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2025
From: WEILER, ANDREW JAMES; CHRISMAN, NATHAN CHARLES
To: IDAHO SCIENTIFIC LLC
Reel/Frame 071019/0080 →
References Cited (14)
US 7925013B1 · Washington · 2011 [cited by examiner]
US 10491576B1 · Pfannenschmidt · 2019 [cited by examiner]
US 12360919B1 · Weiler et al. · 2025 [cited by applicant]
US 20160104009A1 · Henry · 2016 [cited by examiner]
US 20190109715A1 · Hars · 2019 [cited by examiner]
US 20190319781A1 · Chhabra et al. · 2019 [cited by applicant]
US 20200183922A1 · Lim · 2020 [cited by examiner]
US 20200403771A1 · Satpathy · 2020 [cited by examiner]
US 20240007283A1 · Chen · 2024 [cited by examiner]
US 20240291635A1 · Morshed et al. · 2024 [cited by applicant]
Congwu Li, Le Guan; Mimosa: Protecting Private Keys Against Memory Disclosure Attacks Using Hardware Transactional Memory; IEEE: year: 2015; pp. 1196-1213. [cited by applicant]
Examiner Interview Summary Record received for U.S. Appl. No. 18/633,206, mailed on Mar. 20, 2025, 2 pages. [cited by applicant]
Non-Final Office Action received for U.S. Appl. No. 18/633,206, mailed on Nov. 8, 2024, 15 pages. [cited by applicant]
Notice of Allowance received for U.S. Appl. No. 18/633,206, mailed on Apr. 1, 2025, 10 pages. [cited by applicant]