US20160149706A1 - Cryptographic hash generation system - Google Patents
Cryptographic hash generation system Download PDFInfo
- Publication number
- US20160149706A1 US20160149706A1 US15/008,023 US201615008023A US2016149706A1 US 20160149706 A1 US20160149706 A1 US 20160149706A1 US 201615008023 A US201615008023 A US 201615008023A US 2016149706 A1 US2016149706 A1 US 2016149706A1
- Authority
- US
- United States
- Prior art keywords
- function
- monoid
- module
- elements
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 230000009471 action Effects 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 126
- 238000004891 communication Methods 0.000 claims description 17
- 238000011156 evaluation Methods 0.000 description 22
- 238000000034 method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 5
- 230000009466 transformation Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols 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
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Definitions
- a cryptographic hash function may be used to transform a large block of a string of data into a smaller block of hash data.
- the hash data may then be used as an identifier for the string or for a processor in communication with the string.
- the transformation may be such that recreating the string may be impractical, difficult, or infeasible. In some situations, it may also be difficult or infeasible to find two strings that may be transformed to the same hash.
- the device may comprise a memory.
- the memory may be effective to include a first function, a first list of first monoid elements, and an initial monoid element.
- the device may further include a first module effective to receive the string and divide the string into a sequence of blocks.
- the device may further include a second module in communication with the first module and the memory, the second module effective to 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 device may further include a third module in communication with the second module and with the memory.
- the third module may be 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.
- the device may further include a fourth module in communication with the second module and the third module. The fourth module may be effective to receive a second one of the second monoid elements, receive the first calculated monoid element, receive the second function, 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.
- Another embodiment of the invention includes a method for generating a hash of a string.
- the method may include receiving the string by first module.
- the method may include dividing the string by the first module into a sequence of blocks and receiving, by a second module, the sequence of blocks.
- the method may include associating, by the second module, 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.
- the method may include receiving, by a third module a first one of the second monoid elements.
- the method may include receiving, by the third module, an initial monoid element; receiving, by the third module, a first function; applying, by the third module, 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 evaluating, by the third module, an action of the initial monoid element on the first function to produce a second function.
- the method may include receiving, by a fourth module, a second one of the second monoid elements; receiving, by the fourth module, the first calculated monoid element; receiving, by the fourth module, the second function; and applying, by the fourth module, 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.
- the system may include a first device and a second device in communication with the first device over a network.
- the first device may include a first memory.
- the first memory may include a first function, a first list of first monoid elements, and an initial monoid element.
- the first device may further include a first module effective to receive the string and divide the string into a sequence of blocks.
- the first device may further include 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.
- the first device may further include 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 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.
- the first device may further include 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, 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.
- the fourth module may further be effective to receive the first function, and evaluate the action of the first calculated monoid element on the first function to produce a third function.
- the first device may further include 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.
- FIG. 1 is a system drawing of a cryptographic hash generation system in accordance with an embodiment of the invention.
- FIG. 2 is a flow diagram illustrating a process which could be performed in accordance with an embodiment of the invention.
- a cryptographic hash generation system 100 which may be used in accordance with an embodiment of the invention.
- a user 102 may input a string 104 into a hash function generator device 106 .
- user 102 may use a processor 118 to input string 104 .
- hash function generator 106 may be effective to transform string 104 into a hash of string H(S) 108 .
- hash function generator device 106 and/or processor 118 may further send hash 108 and hash function 132 over a network 110 .
- Network 110 may include, for example, a wireless network, a wired network, the Internet, a cellular network, a near field communication (NFC) network, a radio frequency identification (RF-ID) network, a cloud computing environment, etc.
- NFC near field communication
- RFID radio frequency identification
- a processor 112 in communication with network 110 , may receive hash 108 and hash function 132 .
- Processor 112 may compare hash 108 using hash function 132 with data stored in a memory 116 . Based on the comparison by processor 112 , processor 112 may generate an identifier 114 for user 102 and/or processor 118 .
- processor 112 may be a reader and processor 118 may be a tag in an RF-ID environment.
- Hash 108 could be a transformation of a public key used in public key encryption communication between tag/processor 118 and reader/processor 112 .
- Reader/processor 112 may compare hash 108 with data in memory 116 to determine which public key/identifier 114 will be used by tag 118 .
- Hash function generator device 106 may include a string to block decomposition module 120 , a block sequence to monoid list module 124 , and two or more function evaluation/generation modules 126 . At least some of these modules may be in communication with a memory 144 and/or a processor 146 .
- Processor 146 could have a relatively small processing power such as with a 5 MHz clock cycle.
- Memory 144 could have a relatively small size and have, for example, 1 kb of memory.
- Modules could be implemented as software such as with a processor and/or in hardware or firmware.
- String 104 may be a sequence of bits with a number of bits that is a multiple of a variable ⁇ .
- Hash function generator device 106 may send string 104 as an input to a string to block module 120 .
- String to block module 120 may be effective to divide string 104 into a sequence of blocks 122 (B 1 , B 2 , . . . ), each with a length of ⁇ bits.
- string 104 is divided into blocks, where each block is of a length of ⁇ bits.
- string to block module 120 may add padding bits to produce a modified string with a number of bits that is equally divisible by ⁇ .
- String to block module 120 may send sequence of blocks 122 to a block sequence to monoid list module 124 .
- Block sequence to monoid list module 124 may also receive a first list of monoid elements 130 .
- List of monoid elements 130 may be stored in a memory 144 .
- Monoid elements may be, for example, matrices with entries in a finite field.
- Each block B in sequence of blocks 122 includes bits in a binary format that may represent a number with a value between 0 and 2 ⁇ ⁇ 1.
- the value may be denoted by (B i ).
- Block sequence to monoid list module 124 may transform sequence of blocks 122 into a corresponding sequence of numbers (B 1 ), . . . ( ).
- Block sequence to monoid list module 124 may then associate each value (B i ), and hence each block B i , with a monoid element (B 1 ) in list of monoid elements 130 to produce a second list of monoid elements 128 (B 1 ) . . . , (B 2 ) , . . . , ( ) .
- Monoid elements 128 may be sent to respective function evaluation/generation modules 126 .
- (B 1 ) may be sent to function evaluation/generation module 126 1
- ( ) may be sent to function evaluation/generation module 126 i , etc.
- Each function evaluation/generation module 126 1 receives a respective monoid element (B 1 ) from second list of monoid elements 128 , a function i-1 , and a monoid element i-1 . Each function evaluation/generation module 126 acts on these inputs to produce an output. For example, function evaluation/generation module 126 1 receives monoid element (B 1 ) , initial function o 134 and initial monoid element o 136 .
- Initial function o may be a one-way function as discussed below and may be stored in memory 144 .
- Monoid element o could be, example, a matrix with mod p entries, and may be stored in memory 144 .
- Function evaluation/generation module 126 1 may apply function o to o and to (B 1 ) to produce monoid element 1 .
- Function evaluation/generation module 126 1 may also evaluate the action of o on initial function o to produce a new function 1 .
- Function evaluation/generation module 126 1 may send 1 , initial function o , and new function 1 to function evaluation/generation module 126 2 .
- Function evaluation/ generation module 126 2 receives monoid element (B 2 ) , initial function o , function 1 and monoid element 1 . Function evaluation/generation module 126 2 may apply function 1 to 1 and to (B 2 ) to produce monoid element 2 .
- Function evaluation/generation module 126 2 may evaluate the action of 1 on initial function o to produce a new way function 2 .
- Function evaluation/generation module 126 2 may forward 2 , initial function o , and new function 2 to function evaluation/generation module 126 3 .
- function evaluation/generation module 126 3 receives monoid element (B 3 ) , initial function 0 , function 2 and monoid element 2 .
- Function evaluation/generation module 126 3 may apply function 2 to 2 and to (B 3 ) to produce monoid element 3 .
- Function evaluation/generation module 126 3 may evaluate the action of 2 on initial function 0 to produce a new function 3 .
- the last monoid element ( ) in list of monoid elements 128 produced by block sequence to monoid list module 124 is sent to function evaluation/generation module 126 -1 .
- Function evaluation/ generation module 126 -1 receives monoid element ( ) ), function -1 and monoid element -1 Function evaluation/generation module 126 -1 may produce Hash (S) 108 .
- Hash ( S ) -1 ( -1 , ( ) )
- Hash(S) 108 may be sent from processor 118 to processor 112 over network 110 .
- Processor 118 may also send hash function 132 which may include initial function 0 , list of monoid elements 130 , and initial monoid element o .
- Processor 118 may receive hash 108 and compare hash 108 with a list of hash values in memory 116 .
- processor 118 may receive hash function 132 , apply hash function 132 to values in memory 116 (using hash function generator device 106 ) and determine which resultant hash matches hash 108 .
- passwords may be maintained in memory 116 .
- Processor 112 may apply hash function 132 to each password and identify which password corresponds to hash 108 .
- An Algebraic Eraser may include a specified 6-tuple (M ⁇ S, N, ⁇ , E, A, B) where
- S is a group that acts on M (on the left),
- a and B denote submonoids of M ⁇ S, and
- ⁇ denotes a monoid homomorphism from M to N.
- the E-function, also called E-multiplication, is defined by
- the structure of the one-way function F enables the following definition of a new one-way function via a left action. Given an arbitrary element ( 0 ,s 0 ) ⁇ N , and as specified above, the one-way ⁇ ( 0 ,s 0 ) ⁇ ⁇ is defined by
- the sequence of one-way functions that appear in FIG. 1 may take the form:
- Another instance of a function that may be used is a function where monoids M and N are chosen to be a group G. Defining relators of G may allow for an effective rewriting or cloaking of group elements, and a conjugacy equation in G may be relatively difficult to solve. This insures that the function : G ⁇ G ⁇ G defined by the equation,
- ⁇ x 0 ⁇ ⁇ ( x, g ) g ⁇ x 0 ⁇ 1 x x 0 g.
- ⁇ x 0 ⁇ ⁇ ( x, g 1 g 2 ) ⁇ x 0 ⁇ ⁇ ( ⁇ x 0 ⁇ ⁇ ( x, g 1 )), g 2 ).
- a system in accordance with this disclosure may enable a processor to relatively quickly compute the hash of each block of a message, and, thereby, quickly compute the hash of the entire message itself.
- Long messages may be transformed into a shortened message due to, at least in part, the ability to break the message into smaller pieces.
- a hash of the message may then be generated, by first hashing the first block using, the output of which is then used to hash the second block, and then proceeding iteratively until the hash of the final block is obtained using.
- a signature may then be applied to the hash of the message.
- Functions used in producing the hash may be derived from previously used functions based on actions of monoid elements.
- each iterative step may use a relatively quick to process function
- the entire hash generation process may be relatively fast.
- each function is mutated in subsequent steps, it would be very difficult, perhaps infeasible, to guess all of the functions used in generating the hash. Changing values of monoid elements and/or the initial monoid element may produce new hash functions.
- FIG. 2 there is shown a process which could be performed in accordance with an embodiment of the invention.
- the process could be performed using, for example, system 100 discussed above and may be used to generate a hash of a string.
- a first module may receive a string to be hashed.
- the first module may divide the string into a sequence of blocks. For example, the first module may divide the string into blocks of bits with an equal length.
- a second module may receive the sequence of blocks.
- the second module may associate the blocks with respective monoid elements in a first list of first monoid elements to produce a second list of second monoid elements.
- a third module may receive a first one of the second monoid elements, an initial monoid element and a first function.
- the third module may apply the function to the initial monoid element and to a first one of the second monoid elements to produce a first calculated monoid element.
- the third module may evaluate an action of the initial monoid element on the first function to produce a second function.
- a fourth module may receive a second one of the second monoid elements, the first calculated monoid element and the second function.
- the fourth module may 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.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Theoretical Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A first module divides a string into a number of 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
Description
- A cryptographic hash function may be used to transform a large block of a string of data into a smaller block of hash data. In some examples, the hash data may then be used as an identifier for the string or for a processor in communication with the string. The transformation may be such that recreating the string may be impractical, difficult, or infeasible. In some situations, it may also be difficult or infeasible to find two strings that may be transformed to the same hash.
- One embodiment of the invention is a device effective to generate a hash of a string. The device may comprise a memory. The memory may be effective to include a first function, a first list of first monoid elements, and an initial monoid element. The device may further include a first module effective to receive the string and divide the string into a sequence of blocks. The device may further include a second module in communication with the first module and the memory, the second module effective to 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 device may further include a third module in communication with the second module and with the memory. The third module may be 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. The device may further include a fourth module in communication with the second module and the third module. The fourth module may be effective to receive a second one of the second monoid elements, receive the first calculated monoid element, receive the second function, 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.
- Another embodiment of the invention includes a method for generating a hash of a string. The method may include receiving the string by first module. The method may include dividing the string by the first module into a sequence of blocks and receiving, by a second module, the sequence of blocks. The method may include associating, by the second module, 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. The method may include receiving, by a third module a first one of the second monoid elements. The method may include receiving, by the third module, an initial monoid element; receiving, by the third module, a first function; applying, by the third module, 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 evaluating, by the third module, an action of the initial monoid element on the first function to produce a second function. The method may include receiving, by a fourth module, a second one of the second monoid elements; receiving, by the fourth module, the first calculated monoid element; receiving, by the fourth module, the second function; and applying, by the fourth module, 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.
- Another embodiment of the invention is a system effective to communicate a hash of a string. The system may include a first device and a second device in communication with the first device over a network. The first device may include a first memory. The first memory may include a first function, a first list of first monoid elements, and an initial monoid element. The first device may further include a first module effective to receive the string and divide the string into a sequence of blocks. The first device may further include 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. The first device may further include 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. The first device may further include 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, 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. The fourth module may further be effective to receive the first function, and evaluate the action of the first calculated monoid element on the first function to produce a third function. The first device may further include 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.
- The foregoing and other features of this disclosure will become more fully apparent from the following description and appended claims taken in conjunction with the accompanying drawings. Understanding that these drawings depict only some embodiments in accordance with the disclosure and are therefore not to be considered limiting of its scope, the disclosure will be described with additional specificity and detail by reference to the accompanying drawings in which:
-
FIG. 1 is a system drawing of a cryptographic hash generation system in accordance with an embodiment of the invention. -
FIG. 2 is a flow diagram illustrating a process which could be performed in accordance with an embodiment of the invention. - In the following detailed description, reference is made to the accompanying drawings which form a part thereof. In the drawings, similar symbols typically identify similar components unless context indicates otherwise. The illustrative embodiments described in the detailed description, drawings and claims are not meant to be limiting. Other embodiments may be utilized and other changes may be made without departing from the spirit or scope of the subject matter presented herein. It will be readily understood that the aspects of the present disclosure as generally described herein and as illustrated in the accompanying figures can be arranged, substituted, combined, separated and/or designed in a wide variety of different configurations all of which are explicitly contemplated herein.
- Referring to
FIG. 1 , there is shown a cryptographichash generation system 100 which may be used in accordance with an embodiment of the invention. Insystem 100, auser 102 may input astring 104 into a hashfunction generator device 106. For example,user 102 may use aprocessor 118 to inputstring 104. As discussed in more detail below,hash function generator 106 may be effective to transformstring 104 into a hash of string H(S) 108. In some examples, hashfunction generator device 106 and/orprocessor 118 may further sendhash 108 andhash function 132 over anetwork 110.Network 110 may include, for example, a wireless network, a wired network, the Internet, a cellular network, a near field communication (NFC) network, a radio frequency identification (RF-ID) network, a cloud computing environment, etc. - A
processor 112, in communication withnetwork 110, may receivehash 108 andhash function 132.Processor 112 may comparehash 108 usinghash function 132 with data stored in amemory 116. Based on the comparison byprocessor 112,processor 112 may generate anidentifier 114 foruser 102 and/orprocessor 118. For example,processor 112 may be a reader andprocessor 118 may be a tag in an RF-ID environment.Hash 108 could be a transformation of a public key used in public key encryption communication between tag/processor 118 and reader/processor 112. Reader/processor 112 may comparehash 108 with data inmemory 116 to determine which public key/identifier 114 will be used bytag 118. - Hash
function generator device 106 may include a string toblock decomposition module 120, a block sequence tomonoid list module 124, and two or more function evaluation/generation modules 126. At least some of these modules may be in communication with amemory 144 and/or aprocessor 146.Processor 146 could have a relatively small processing power such as with a 5 MHz clock cycle.Memory 144 could have a relatively small size and have, for example, 1 kb of memory. Modules could be implemented as software such as with a processor and/or in hardware or firmware. -
String 104 may be a sequence of bits with a number of bits that is a multiple of a variable λ. Hashfunction generator device 106 may sendstring 104 as an input to a string to blockmodule 120. String toblock module 120 may be effective to dividestring 104 into a sequence of blocks 122 (B1, B2, . . . ), each with a length of λ bits. In the example,string 104 is divided into blocks, where each block is of a length of λ bits. In situations wherestring 104 includes a number of bits that is not equally divisible by λ, string to blockmodule 120 may add padding bits to produce a modified string with a number of bits that is equally divisible by λ. - String to block
module 120 may send sequence ofblocks 122 to a block sequence tomonoid list module 124. Block sequence tomonoid list module 124 may also receive a first list ofmonoid elements 130. List ofmonoid elements 130 may be stored in amemory 144. Monoid elements may be, for example, matrices with entries in a finite field. - Each block B in sequence of
blocks 122 includes bits in a binary format that may represent a number with a value between 0 and 2λ−1. The value may be denoted by (Bi). Block sequence tomonoid list module 124 may transform sequence ofblocks 122 into a corresponding sequence of numbers (B1), . . . (). Block sequence tomonoid list module 124 may then associate each value (Bi), and hence each block Bi, with a monoid element (B1 ) in list ofmonoid elements 130 to produce a second list ofmonoid elements 128 (B1 ) . . . , (B2 ) , . . . , ( ). Monoid elements 128 may be sent to respective function evaluation/generation modules 126. For example, (B1 ) may be sent to function evaluation/generation module 126 1, ( ) may be sent to function evaluation/generation module 126 i, etc. - Each function evaluation/
generation module 126 1 receives a respective monoid element (B1 ) from second list ofmonoid elements 128, a function i-1, and a monoid element i-1. Each function evaluation/generation module 126 acts on these inputs to produce an output. For example, function evaluation/generation module 126 1 receives monoid element (B1 ), initial function o 134 and initial monoid element o 136. Initial function o may be a one-way function as discussed below and may be stored inmemory 144. Monoid element o could be, example, a matrix with mod p entries, and may be stored inmemory 144. Function evaluation/generation module 126 1 may apply function o to o and to (B1 ) to produce monoid element 1. -
-
- This iterative process of generating monoid elements i and new functions i continues for each block in sequence of
blocks 128. For example, function evaluation/generation module 126 3 receives monoid element (B3 ), initial function 0, function 2 and monoid element 2. Function evaluation/generation module 126 3 may apply function 2 to 2 and to (B3 ) to produce monoid element 3. -
-
- Hash(S) 108 may be sent from
processor 118 toprocessor 112 overnetwork 110.Processor 118 may also sendhash function 132 which may include initial function 0, list ofmonoid elements 130, and initial monoid element o.Processor 118 may receivehash 108 and comparehash 108 with a list of hash values inmemory 116. In another example,processor 118 may receivehash function 132, applyhash function 132 to values in memory 116 (using hash function generator device 106) and determine which resultant hash matches hash 108. For example, passwords may be maintained inmemory 116.Processor 112 may applyhash function 132 to each password and identify which password corresponds to hash 108. -
- M and N are monoids,
- S is a group that acts on M (on the left),
- M∝S denotes the semi-direct product,
- A and B denote submonoids of M∝S, and
- Π denotes a monoid homomorphism from M to N. The E-function, also called E-multiplication, is defined by
-
E: (N'S)×(M∝S)→(N×S) -
E((n, s), (m 1 , s 1))=(nπ(s m 1), s s 1). - It is observed that the E-function satisfies the following identity:
-
E(n, s), ((m 1 , s 1)·(m 2 , s 2))=E(E(n, s), (m 1 , s 1)), (m 2 , s 2)). -
-
- where (n1, s1)εN∝S and (m2, s2)εM∝S. A feature of these specified actions is that the property
-
-
-
{(n0, s0)·F|(n0, s0)εN∝S} -
- Another instance of a function that may be used is a function where monoids M and N are chosen to be a group G. Defining relators of G may allow for an effective rewriting or cloaking of group elements, and a conjugacy equation in G may be relatively difficult to solve. This insures that the function : G×G→G defined by the equation,
-
- As with the previous example,
- The collection of one-way functions,
-
- Among other benefits, a system in accordance with this disclosure may enable a processor to relatively quickly compute the hash of each block of a message, and, thereby, quickly compute the hash of the entire message itself. Long messages may be transformed into a shortened message due to, at least in part, the ability to break the message into smaller pieces. A hash of the message may then be generated, by first hashing the first block using, the output of which is then used to hash the second block, and then proceeding iteratively until the hash of the final block is obtained using. A signature may then be applied to the hash of the message. Functions used in producing the hash may be derived from previously used functions based on actions of monoid elements. As each iterative step may use a relatively quick to process function, the entire hash generation process may be relatively fast. As each function is mutated in subsequent steps, it would be very difficult, perhaps infeasible, to guess all of the functions used in generating the hash. Changing values of monoid elements and/or the initial monoid element may produce new hash functions.
- Referring to
FIG. 2 , there is shown a process which could be performed in accordance with an embodiment of the invention. The process could be performed using, for example,system 100 discussed above and may be used to generate a hash of a string. - As shown, at step S2, a first module may receive a string to be hashed. At step S4, the first module may divide the string into a sequence of blocks. For example, the first module may divide the string into blocks of bits with an equal length.
- At step S6, a second module may receive the sequence of blocks. At step S8, the second module may associate the blocks with respective monoid elements in a first list of first monoid elements to produce a second list of second monoid elements.
- At step S10, a third module may receive a first one of the second monoid elements, an initial monoid element and a first function. At step S12, the third module may apply the function to the initial monoid element and to a first one of the second monoid elements to produce a first calculated monoid element.
- At step S14, the third module may evaluate an action of the initial monoid element on the first function to produce a second function. At step S16, a fourth module may receive a second one of the second monoid elements, the first calculated monoid element and the second function. At step S18, the fourth module may 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.
- While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purposes of illustration and are not intended to be limiting, with the true scope and spirit being indicated by the following claims.
Claims (1)
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 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 memory, the second module effective to 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;
a third module in communication with the second module and with the 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, 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.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/008,023 US20160149706A1 (en) | 2012-07-13 | 2016-01-27 | Cryptographic hash generation system |
US15/178,069 US20160294547A1 (en) | 2012-07-13 | 2016-06-09 | Cryptographic hash generation system |
US15/292,968 US20170033929A1 (en) | 2012-07-13 | 2016-10-13 | Cryptographic hash generation system |
US15/599,965 US20170257218A1 (en) | 2012-07-13 | 2017-05-19 | Cryptographic hash generation system |
US15/810,720 US20180069705A1 (en) | 2012-07-13 | 2017-11-13 | Cryptographic hash generation system |
US15/963,195 US20180241566A1 (en) | 2012-07-13 | 2018-04-26 | Cryptographic hash generation system |
US16/419,488 US20190288848A1 (en) | 2012-07-13 | 2019-05-22 | Cryptographic hash generation system |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/548,325 US8972715B2 (en) | 2012-07-13 | 2012-07-13 | Cryptographic hash function |
US14/605,105 US20150131795A1 (en) | 2012-07-13 | 2015-01-26 | Cryptographic hash generation system |
US15/008,023 US20160149706A1 (en) | 2012-07-13 | 2016-01-27 | Cryptographic hash generation system |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/605,105 Continuation US20150131795A1 (en) | 2012-07-13 | 2015-01-26 | Cryptographic hash generation system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/178,069 Continuation US20160294547A1 (en) | 2012-07-13 | 2016-06-09 | Cryptographic hash generation system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160149706A1 true US20160149706A1 (en) | 2016-05-26 |
Family
ID=49915028
Family Applications (9)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/548,325 Active 2033-01-01 US8972715B2 (en) | 2012-07-13 | 2012-07-13 | Cryptographic hash function |
US14/605,105 Abandoned US20150131795A1 (en) | 2012-07-13 | 2015-01-26 | Cryptographic hash generation system |
US15/008,023 Abandoned US20160149706A1 (en) | 2012-07-13 | 2016-01-27 | Cryptographic hash generation system |
US15/178,069 Abandoned US20160294547A1 (en) | 2012-07-13 | 2016-06-09 | Cryptographic hash generation system |
US15/292,968 Abandoned US20170033929A1 (en) | 2012-07-13 | 2016-10-13 | Cryptographic hash generation system |
US15/599,965 Abandoned US20170257218A1 (en) | 2012-07-13 | 2017-05-19 | Cryptographic hash generation system |
US15/810,720 Abandoned US20180069705A1 (en) | 2012-07-13 | 2017-11-13 | Cryptographic hash generation system |
US15/963,195 Abandoned US20180241566A1 (en) | 2012-07-13 | 2018-04-26 | Cryptographic hash generation system |
US16/419,488 Abandoned US20190288848A1 (en) | 2012-07-13 | 2019-05-22 | Cryptographic hash generation system |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/548,325 Active 2033-01-01 US8972715B2 (en) | 2012-07-13 | 2012-07-13 | Cryptographic hash function |
US14/605,105 Abandoned US20150131795A1 (en) | 2012-07-13 | 2015-01-26 | Cryptographic hash generation system |
Family Applications After (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/178,069 Abandoned US20160294547A1 (en) | 2012-07-13 | 2016-06-09 | Cryptographic hash generation system |
US15/292,968 Abandoned US20170033929A1 (en) | 2012-07-13 | 2016-10-13 | Cryptographic hash generation system |
US15/599,965 Abandoned US20170257218A1 (en) | 2012-07-13 | 2017-05-19 | Cryptographic hash generation system |
US15/810,720 Abandoned US20180069705A1 (en) | 2012-07-13 | 2017-11-13 | Cryptographic hash generation system |
US15/963,195 Abandoned US20180241566A1 (en) | 2012-07-13 | 2018-04-26 | Cryptographic hash generation system |
US16/419,488 Abandoned US20190288848A1 (en) | 2012-07-13 | 2019-05-22 | Cryptographic hash generation system |
Country Status (1)
Country | Link |
---|---|
US (9) | US8972715B2 (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9071408B2 (en) * | 2012-02-09 | 2015-06-30 | Securerf Corporation | Communication system |
JP2015065495A (en) * | 2013-09-24 | 2015-04-09 | ルネサスエレクトロニクス株式会社 | Encryption key supply method, semiconductor integrated circuit, and encryption key management device |
US11392944B2 (en) | 2015-05-20 | 2022-07-19 | Ripple Luxembourg S.A. | Transfer costs in a resource transfer system |
US11386415B2 (en) | 2015-05-20 | 2022-07-12 | Ripple Luxembourg S.A. | Hold condition in a resource transfer system |
US10740732B2 (en) | 2015-05-20 | 2020-08-11 | Ripple Luxembourg S.A. | Resource transfer system |
US11481771B2 (en) * | 2015-05-20 | 2022-10-25 | Ripple Luxembourg S.A. | One way functions in a resource transfer system |
US10523440B2 (en) * | 2015-09-22 | 2019-12-31 | Securerf Corporation | Signature generation and verification system |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6493449B2 (en) * | 1998-02-26 | 2002-12-10 | Arithmetica, Inc. | Method and apparatus for cryptographically secure algebraic key establishment protocols based on monoids |
US6385725B1 (en) * | 1998-08-24 | 2002-05-07 | Entrust Technologies Limited | System and method for providing commitment security among users in a computer network |
JP2001066989A (en) * | 1999-08-31 | 2001-03-16 | Fuji Xerox Co Ltd | Unidirectional function generating method, unidirectional function generating device, certification device, authentication method and authentication device |
US7194618B1 (en) * | 2001-03-05 | 2007-03-20 | Suominen Edwin A | Encryption and authentication systems and methods |
US7404080B2 (en) * | 2001-04-16 | 2008-07-22 | Bjorn Markus Jakobsson | Methods and apparatus for efficient computation of one-way chains in cryptographic applications |
US7136484B1 (en) * | 2001-10-01 | 2006-11-14 | Silicon Image, Inc. | Cryptosystems using commuting pairs in a monoid |
US7080352B2 (en) * | 2002-01-30 | 2006-07-18 | Dloo, Incorporated | Method and system for creating programs using code having coupled syntactic and semantic relationships |
EP1343286A1 (en) * | 2002-03-04 | 2003-09-10 | BRITISH TELECOMMUNICATIONS public limited company | Lightweight authentication of information |
US20050195975A1 (en) * | 2003-01-21 | 2005-09-08 | Kevin Kawakita | Digital media distribution cryptography using media ticket smart cards |
US7103779B2 (en) * | 2003-09-18 | 2006-09-05 | Apple Computer, Inc. | Method and apparatus for incremental code signing |
US7289629B2 (en) * | 2004-02-09 | 2007-10-30 | Microsoft Corporation | Primitives for fast secure hash functions and stream ciphers |
US20050182946A1 (en) * | 2004-02-13 | 2005-08-18 | Will Shatford | Fast hashing function for pseudo-random generator |
BRPI0509577B1 (en) * | 2004-04-02 | 2017-12-12 | Panasonic Intellectual Property Management Co., Ltd. | DATA PROCESSING DEVICE, RECORDING MEDIA AND DATA PROCESSING PROGRAM. |
US20060036861A1 (en) * | 2004-07-04 | 2006-02-16 | Leon Chernyak | Method and apparatus for algebro-geometric key establishment protocols based on matrices over topological monoids |
US7649999B2 (en) * | 2005-06-08 | 2010-01-19 | Iris Anshel | Method and apparatus for establishing a key agreement protocol |
EP1995710A1 (en) * | 2006-03-14 | 2008-11-26 | NEC Corporation | Information processing system, information processing method, and information processing program |
EP1840732A1 (en) * | 2006-03-31 | 2007-10-03 | Axalto SA | Protection against side channel attacks |
US8166532B2 (en) * | 2006-10-10 | 2012-04-24 | Honeywell International Inc. | Decentralized access control framework |
US7720807B1 (en) * | 2007-01-17 | 2010-05-18 | Square Zero, Inc. | Representing finite node-labeled trees using a one bit encoding |
US20090080646A1 (en) * | 2007-09-21 | 2009-03-26 | Chih-Hsu Yen | Method And Architecture For Parallel Calculating Ghash Of Galois Counter Mode |
US20090144229A1 (en) * | 2007-11-30 | 2009-06-04 | Microsoft Corporation | Static query optimization for linq |
US8538014B2 (en) * | 2008-05-12 | 2013-09-17 | Oracle America, Inc. | Fast computation of one-way hash sequences |
US9288216B2 (en) * | 2008-06-19 | 2016-03-15 | Qualcomm Incorporated | Methods and apparatus for reducing the effectiveness of chosen location attacks in a peer-to-peer overlay network |
US8542832B2 (en) * | 2008-08-01 | 2013-09-24 | Nikolajs VOLKOVS | System and method for the calculation of a polynomial-based hash function and the erindale-plus hashing algorithm |
US8447989B2 (en) * | 2008-10-02 | 2013-05-21 | Ricoh Co., Ltd. | Method and apparatus for tamper proof camera logs |
TW201129129A (en) * | 2009-03-06 | 2011-08-16 | Interdigital Patent Holdings | Platform validation and management of wireless devices |
CN101963965B (en) * | 2009-07-23 | 2013-03-20 | 阿里巴巴集团控股有限公司 | Document indexing method, data query method and server based on search engine |
US20110083015A1 (en) * | 2009-10-05 | 2011-04-07 | Eidgenossiche Technische Hochschule Zurich | System and method for an electronic signature for quick and efficient data authentication |
US8677135B2 (en) * | 2010-12-17 | 2014-03-18 | Microsoft Corporation | Digital signatures with error polynomials |
US9680639B2 (en) * | 2011-03-31 | 2017-06-13 | Panasonic Intellectual Property Management Co., Ltd. | Secret sharing apparatus and secret sharing method that restores secret data from at least two of generated shared data |
US8627097B2 (en) * | 2012-03-27 | 2014-01-07 | Igt | System and method enabling parallel processing of hash functions using authentication checkpoint hashes |
-
2012
- 2012-07-13 US US13/548,325 patent/US8972715B2/en active Active
-
2015
- 2015-01-26 US US14/605,105 patent/US20150131795A1/en not_active Abandoned
-
2016
- 2016-01-27 US US15/008,023 patent/US20160149706A1/en not_active Abandoned
- 2016-06-09 US US15/178,069 patent/US20160294547A1/en not_active Abandoned
- 2016-10-13 US US15/292,968 patent/US20170033929A1/en not_active Abandoned
-
2017
- 2017-05-19 US US15/599,965 patent/US20170257218A1/en not_active Abandoned
- 2017-11-13 US US15/810,720 patent/US20180069705A1/en not_active Abandoned
-
2018
- 2018-04-26 US US15/963,195 patent/US20180241566A1/en not_active Abandoned
-
2019
- 2019-05-22 US US16/419,488 patent/US20190288848A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170257218A1 (en) | 2017-09-07 |
US20180241566A1 (en) | 2018-08-23 |
US20170033929A1 (en) | 2017-02-02 |
US8972715B2 (en) | 2015-03-03 |
US20180069705A1 (en) | 2018-03-08 |
US20150131795A1 (en) | 2015-05-14 |
US20190288848A1 (en) | 2019-09-19 |
US20160294547A1 (en) | 2016-10-06 |
US20140019747A1 (en) | 2014-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190288848A1 (en) | Cryptographic hash generation system | |
US10771237B2 (en) | Secure analytics using an encrypted analytics matrix | |
US10367640B2 (en) | Shared secret data production system | |
US11368312B2 (en) | Signature generation and verification system | |
JP2014002365A5 (en) | ||
US10505722B2 (en) | Shared secret communication system with use of cloaking elements | |
US20180302220A1 (en) | User attribute matching method and terminal | |
US20190169810A1 (en) | Communication system | |
Luo et al. | A security communication model based on certificateless online/offline signcryption for Internet of Things | |
Zhang et al. | Fully Constant‐Size CP‐ABE with Privacy‐Preserving Outsourced Decryption for Lightweight Devices in Cloud‐Assisted IoT | |
US9509511B2 (en) | Identity based encryption | |
CN105681362A (en) | Client and server communication method capable of protecting geographic position privacy | |
US10700870B2 (en) | Signature generation and verification system | |
Al-Odat et al. | An efficient lightweight cryptography hash function for big data and iot applications | |
WO2023093278A1 (en) | Digital signature thresholding method and apparatus | |
Ullah et al. | IMAC: Implicit message authentication code for IoT devices | |
CN107359982A (en) | The homomorphism endorsement method of anti-generation intra/inter- attack | |
US10459690B1 (en) | Side channel attack prevention | |
Khan et al. | Lightweight Substitution Box Using Elliptic Curve Cryptography for Image Encryption Applications | |
US11228589B2 (en) | System and method for efficient and secure communications between devices | |
Maity et al. | Image Encryption Using RABIN and Elliptic Curve Crypto Systems | |
CN116438554A (en) | Distributed training with stochastic secure averaging | |
CN112769571A (en) | Constant-length lattice group signature method and device, storage medium and electronic device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |