IP Library Granted Patent US 8,972,715
Granted Patent B2
US 8,972,715 · App. 13/548,325 · Granted Mar 3, 2015

Cryptographic hash function

Inventors: Iris Anshel (Tenafly, NJ); Dorian Goldfeld (Tenafly, NJ)
Assignee: SecureRF Corporation
H04L9/0643
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 8,972,715
App. No.
13/548,325
Granted
Mar 3, 2015
Kind
B2
Abstract

A first module divides a string into blocks. A second module associates the blocks with monoid elements in a list of first monoid elements to produce second monoid elements. A third module applies a first function to an initial monoid element and a first of the second monoid elements producing a first calculated monoid element and evaluates an action of the initial monoid element on the first function producing a second function. A fourth module applies the second function to the first calculated monoid element and to a second of the second monoid elements producing a second calculated monoid element and evaluates the action of the first calculated monoid element on the first function producing a third function. Further modules iteratively, corresponding to the number of blocks, apply the produced function to calculated monoid elements and the second monoid elements to produce a hash of the string

Claims (151)

1. A device effective to generate a hash of a string, the device comprising:

a memory, wherein the memory is effective to include

a first function,

a first list of first monoid elements, and

an initial monoid element;

a processor configured to be in communication with the memory, a decomposition module, a monoid list module, and a set of function modules that includes at least a first function module and a second function module;

the decomposition module, when implemented with the processor, is effective to receive the string and divide the string into a sequence of blocks;

the monoid list module in communication with the decomposition module and the memory, the monoid list module, when implemented with the processor, is effective to receive the sequence of blocks from the decomposition module, and in response, associate blocks in the sequence of blocks with respective monoid elements in the first list of first monoid elements to produce a second list of second monoid elements;

the first function module in communication with the monoid list module and with the memory, the first function module, when implemented with the processor, is effective to:

receive a first one of the second monoid elements from the monoid list module,

receive the initial monoid element,

receive the first function,

apply the first function to the initial monoid element and the first one of the second monoid elements to produce a first calculated monoid element, and

evaluate an action of the initial monoid element on the first function to produce a second function;

the second function module in communication with the monoid list module and the first function module, the second function module, when implemented with the processor, is effective to:

receive a second one of the second monoid elements from the monoid list module,

receive the first calculated monoid element from the first function module,

receive the second function from the first function module, and

apply the second function to the first calculated monoid element and to the second one of the second monoid elements to produce a second calculated monoid element.

2. The device of claim 1 , wherein

the second function module, when implemented with the processor, is further effective to:

receive the first function;

evaluate the action of the first calculated monoid element on the first function to produce a third function; and the set of function modules further comprises:

a third function module in communication with the monoid list module and the second function module, the third function module, when implemented with the processor being effective to:

receive the third function from the second function module,

receive a third one of the second monoid elements from the monoid list module,

receive the second calculated monoid element from the second function module, and

apply the third function to the second calculated monoid element and the third one of the second monoid elements to produce the hash of the string.

3. The device of claim 1 , wherein:

the decomposition module is further effective to add padding bits to the string; and

each block in the sequence of blocks includes the same number of bits.

4. The device of claim 1 , wherein the monoid list module is effective to:

transform each block into a respective number; and

associate the respective numbers with respective monoids in the first list of first monoid elements to produce the second list of second monoid elements.

5. The device of claim 1 , wherein the first function is a one way function.

6. The device of claim 1 , wherein the first function is a 6-tuple (M S, N, Π, E, A, B) where

M and N are monoids,

S is a group that acts on M,

M S denotes the semi-direct product,

A and B denote submonoids of M S,

Π denotes a monoid homomorphism from M to N,

E is defined by

E :( N×S )×( M×S )→( N×S )

E (( n,s ),( m 1 ,s 1 ))=( n Π( E m 1 ), s s 1 ),

M=M S,N=N S,

and the function is defined as: given (n 0 , s 0 ) ε N S and (m, s 1 ) ε M S let : N×M→N denote the function:

(( n 0 ,s 0 ),( m,s 1 ))= E (( n 0 ,s 0 ),( m,s 1 ))=(( n 0 Π( s 0 m ), s 0 s 1 ).

7. The device of claim 1 , wherein the first function is selected such that monoids M and N are chosen to be a group G and

( x,g )= g −1 x g

where x, g ε G.

8. A method for generating a hash of a string, the method comprising,by a processor:

receiving the string;

in response to receiving the string, implementing a decomposition module;

sending the string to the decomposition module;

controlling the decomposition module to divide the string into a sequence of blocks;

in response to the division of the string into the sequence of blocks, implementing a monoid list module;

transmitting the sequence of blocks from the decomposition module to the monoid list module;

controlling the monoid list module to associate the blocks in the sequence of blocks with respective monoid elements in a first list of monoid elements to produce a second list of second monoid elements;

in response to the association of the blocks in the sequence of blocks to the first list of monoid elements, implementing a set of function modules that includes at least a first function module and a second function module;

transmitting a first one of the second monoid elements from the monoid list module to the first function module;

transmitting an initial monoid element from a memory to the first function module;

transmitting a first function from the memory to the first function module;

controlling the first function module to apply the first function to the initial monoid element and to the first one of the second monoid elements to produce a first calculated monoid element;

controlling the first function module to evaluate an action of the initial monoid element on the first function to produce a second function;

transmitting a second one of the second monoid elements from the monoid list module to the second function module;

transmitting the first calculated monoid element from the first function module to the second function module;

transmitting the second function from the first function module to the second function module; and

controlling the second function module to apply the second function to the first calculated monoid element and to the second one of the second monoid elements to produce a second calculated monoid element.

9. The method of claim 8 , further comprising:

transmitting the first function from the memory to the second function module;

controlling the second function module to evaluate an action of the first calculated monoid element on the first function to produce a third function;

implementing a third function module of the set of function modules;

transmitting the third function from the second function module to the third function module;

transmitting a third one of the second monoid elements from the monoid list module to the third function module;

transmitting the second calculated monoid element from the second function module to the third function module; and

controlling the third function module to apply the third function to the second calculated monoid element and the third one of the second monoid elements to produce the hash of the string.

10. The method of claim 8 , further comprising:

padding, by the decomposition module, bits to the string; and wherein each block in the sequence of blocks includes the same number of bits.

11. The method of claim 8 , further comprising:

transforming, by the monoid list module, each block into a respective number; and

associating, by the monoid list module, respective numbers with respective monoids in the first list of first monoid elements to produce the second list of second monoid elements.

12. The method of claim 8 , wherein the first function is a one way function.

13. The method of claim 8 , wherein the first function is a 6-tuple (M S, N, Π, E, A, B) where

M and N are monoids,

S is a group that acts on M,

M S denotes the semi-direct product,

A and B denote submonoids of M S,

Π denotes a monoid homomorphism from M to N,

E is defined by

E :( N×S )×( M S )→( N×S )

E (( n,s ),( m 1 ,s 1 ))=( n Π( s m 1 ), s s 1 ),

M=M S, N=N S,

and the function is defined as: given (n 0 ,s 0 ) ε N S and (m,s 1 ) ε M S let : N×M→N denote the function:

(( n 0 ,s 0 ),( m,s 1 ))= E (( n 0 ,s 0 ),( m,s 1 ))=(( n 0 Π( s 0 m ), s 0 s 1 ).

14. The method of claim 8 , wherein the first function is selected such that monoids M and N are chosen to be a group G and

( x,g ) =g −1 x g

where x,g ε G.

15. A system effective to communicate a hash of a string, the system comprising:

a first device; and

a second device in communication with the first device over a network;

the first device comprising:

a first memory, wherein the first memory is effective to include

a first function,

a first list of first monoid elements, and

an initial monoid element;

a first module effective to receive the string and divide the string into a sequence of blocks;

a second module in communication with the first module and the first memory, the second module effective to associate blocks in the sequence of blocks with respective monoid elements in the first list of monoid elements to produce a second list of second monoid elements;

a third module in communication with the second module and with the first memory, the third module effective to

receive a first one of the second monoid elements,

receive the initial monoid element,

receive the first function,

apply the first function to the initial monoid element and the first one of the second monoid elements to produce a first calculated monoid element, and

evaluate an action of the initial monoid element on the first function to produce a second function;

a fourth module in communication with the second module and the third module, the fourth module effective to

receive a second one of the second monoid elements,

receive the first calculated monoid element,

receive the second function,

apply the second function to the first calculated monoid element and to the second one of the second monoid elements to produce a second calculated monoid element,

receive the first function, and

evaluate the action of the first calculated monoid element on the first function to produce a third function;

a fifth module in communication with the second module and the fourth module, the fifth module effective to

receive the third function,

receive a third one of the second monoid elements,

receive the second calculated monoid element, and

apply the third function to the second calculated monoid element and the third one of the second monoid elements to produce the hash of the string;

the second device effective to

receive the hash; and

compare the hash with data stored in a second memory in communication with the second device to produce an identification of the first device.

16. The system of claim 15 , wherein the network is a near field communications network.

17. The system of claim 15 , wherein:

the network is an RF-ID network,

the first device is one of a tag or a reader; and

the second device is the other of the tag or the reader.

18. The system of claim 15 , wherein the first function is a 6-tuple (M S, N, Π, E, A, B) where

M and N are monoids,

S is a group that acts on M,

M S denotes the semi-direct product,

A and B denote submonoids of M S,

Π denotes a monoid homomorphism from M to N,

E is defined by

E :( N×S )×( M S )→( N×S )

E (( n,s ),( m 1 ,s 1 ))=( n Π( E m 1 ), s s 1 ),

M=M S,N=N S ,

and the function is defined as: given (n 0 ,s 0 ) ε N S and (m,s 1 ) ε M S let : N×M→N denote the function:

(( n 0 ,s 0 ),( m,s 1 )) =E (( n 0 ,s 0 ),( m,s 1 ))=(( n 0 Π( s 0 m ), s 0 s 1 ).

19. The system of claim 15 , wherein:

the first module is further effective to add padding bits to the string; and

each block in the sequence of blocks includes the same number of bits.

20. The system of claim 15 , wherein

the second module is effective to transform each block into a respective number; and

associate the respective numbers with respective monoids in the first list of first monoid elements to produce the second list of second monoid elements.

Assignments (2)
CHANGE OF NAME Recorded Feb 7, 2020
From: SECURERF CORPORATION
To: VERIDIFY SECURITY INC.
Reel/Frame 051852/0784 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2012
From: ANSHEL, IRIS; GOLDFELD, DORIAN
To: SECURERF CORPORATION
Reel/Frame 028542/0803 →
Continuity (1)
Related Publication 20140019747A1 · Jan 16, 2014