Patent Publication Number: US-6044488-A

Title: Process for generating a check word for a bit sequence for verifying the integrity and authenticity of the bit sequence

Description:
The present invention refers to a method for generating a check word for a bit string to check the integrity and the authenticity of the bit string, the bit string comprising at least one set of data consisting of a plurality of data words, each having the same word length defined by a number of bits. This method will subsequently be referred to as the message digest method, the message digest being the check word. Further, the invention refers to a method for sending bit strings with secured integrity and authenticity using a message digest generated with a method of the type mentioned above. 
     1 Message Digest Method 
     In contrast to encoding methods, message digest methods do not aim at secrecy, but are used to secure the integrity of data. 
     To this end, a hash function is typically applied to a data set of a bit string, a message digest being calculated from the data and a secret key, i.e., a key (only) known to the sender and the receiver, also referred to as &#34;seed&#34;. When the sender generates such a message digest and, together with the data, sends it to the receiver, the receiver can determine, whether unauthorized modifications have been made to the data (authenticity check). To do so, the receiver calculates the message digest, using the same seed, and checks, whether the newly calculated message digest corresponds to the one sent. An intruder may be able to manipulate the data, however, he usually cannot calculate a digest matching the data, since he does not dispose of the secret key (seed). 
     Standard methods for generating a message digest are among others N-hash, MD5 (Rivest 1992) and SHA (Metzger and Simpson 1995). 
     Such methods are also employed for securing data transfer via networks. For example, present efforts aim at enlarging the IP protocol correspondingly (Atkinson 1995). 
     A problem of the known methods when used in high speed networks is their unsatisfactory speed. 
     2 Object/Solution 
     It is an object of the present invention to provide a very fast and sufficiently secure message digest method that is particularly suitable for large amounts or streams of data. 
     The object is solved, according to the present invention, with a method for generating a check word for a bit string to check the integrity and authenticity of the bit string, the bit string comprising at least one set of data consisting of a plurality of data words, each having the same word length defined by a number of bits, and wherein 
     a random number is generated for each data word, the number having the same number of bits as the data words, 
     first and second operand pairs are generated, each consisting of a data word and a random number, 
     the data word and the random number of each first operand pair are subjected to a first linking operation, 
     the data word and the random number of each second operand pair are subjected to a second linking operation, and 
     the results of all operations applied to the first and second operand pairs are linked, the result of this linking being the check word of the set of data. 
     In the method of the present invention, the data words are combined with random numbers, preferably by simple operations, such as modulo-2 wordlength  -addition and/or modulo-2 wordlength  -multiplication. The sequences in which these operations are effected and in which the random numbers are combined with the data words result from the secret key. Suitably, the key also holds information on the generation of the random numbers. 
     Besides the two above-mentioned linking operations, a bit-by-bit exclusive-OR operation may also be applied to the operands of the operand pairs. 
     The generation of the check word becomes more secure against unauthorized manipulation when the results of all operations applied to the first and second operands are linked alternately by a first linking operation and a second linking operation. 
     The statements made above in connection with the operations are also true for the first and second linking operations. 
     Preferably, the bit string comprises a plurality of data sets, each having the same number of data words, and the random number, with which the data words of the first and second operand pairs of a data set are linked, is the same for each data set. In this respect, it is advantageous to alter the sequence of the random numbers, according to which these are linked to the data words of the first and second operand pairs, per data set. 
     The check words obtained for the respective data sets are linked to each other, where the linking of the check words may be altered from check word to check word and/or the linking is a modulo-2 wordlength  -addition, a modulo-2 wordlength  -multiplication and/or a bit-by-bit exclusive-OR operation. 
     Preferably, the linking is selected such that, according to a first combining operation, the check word of a data set of the bit string is linked to a first combination word of the same length as the check word and that, according to a second combining operation, the result of the first combining operation is linked to a second combination word of the same length as the result of the first combining operation and that the result of the second combining operation is linked to the check word of the next data set of the bit string. 
     In particular, the first combining operation is a modulo-2 wordlength  -multiplication, whereas the second combining operation is a modulo-2 wordlength  -addition. 
     Using the above check word generation method, sent bit strings may be checked for their authenticity. In this case, the sender will transmit the bit string (message) and the check word. The generation of the check word on the basis of the data words of the bit string is known to the receiver; this information is the contents of the key, which must be known to both the sender and the receiver. The receiver may now generate the check word on his side and compare it to the check word received. Only when both check words match can the receiver suppose that the message is authentic. 
    
    
     The following is a detailed description of the invention with reference to various embodiments thereof. 
     3 Message Digest Methods of the Present Invention 
     3.1 The Basic Hash Function 
     Complex hash functions are to elaborate to generate message digests for large amounts and streams of data. Simple standard operations are Xor and addition modulo word size. Of the two, addition is more suitable, yet it is not too secure. One way to make addition more secure is to let nobody know what is added. 
     Assume, m, comprising words mi, is the message, i.e. a bit string. Thus, a simple possibility would be to calculate the digest D not by 
     
         D=Σm.sub.i 
    
     but by 
     
         D=Σ(m.sub.i ⊕R.sub.i), 
    
     wherein R i  is a sequence of random or quasi-random numbers. + here and in the following represents the addition modulo 2.sup.ω  (for ω-bit words), and ⊕ represents bit-by-bit exclusive-ORing (Xor) (corresponds to the addition modulo 1). 
     Better than the simple sum is the alternating use of addition and Xor, such as 
     
         D=m.sub.i +m.sub.2 ⊕m.sub.3 . . . m.sub.i. 
    
     Here, neither the commutative law nor the distributive law are valid. 
     The most simple unauthorized manipulation of a message digest is to neutralize a change of m by a purposeful further change so that the same (original) message digest is obtained for the altered message. In order to prevent this, the individual words m i  of the message m are not processed in their natural sequence, but in a randomly selected permutation π in addition to the superposition with R i . Thus, d is calculated as follows: 
     
         D=(m.sub.π0 +R.sub.0)⊕(m.sub.π1 ⊕R.sub.1)+(m.sub.π2 +R.sub.2)⊕ 
    
     This method is safe, if π together with the R i  is a so-called single-shot key known only to the sender and the receiver and used only once. 
     For obvious reasons, single-shot keys cannot be used in practice, since they are too complex and too long. Instead, the sender transmits encoded parameters for a pseudo random numbers generator. For performance reasons the same must be rather simple, e.g., 
     
         R.sub.nk+i =R.sub.nk+1 +δ.sub.1 i=1, . . . n-1, k=1, . . . 1 
    
     
         R.sub.n(k+1) =R.sub.n(k+1)-1 ×X+δ.sub.0, 
    
     where + and × represent addition and multiplication modulo 2.sup.ω, ω is the word length of the data words of the bit string in bits, 1 is the number of data sets of the message m and n is the number of data words per data set. 
     Moreover, the indices 0 to n-1 are permutated and this sequence is repeated every n words, i.e. for each data block. In order to compensate for this regularity, the digest is multiplied every n words by a value Y and Z is added, where Y and Z are combination words having the same bit length as D. 
     
         D=D×Y+Z+(m.sub.nk+π0)⊕(m.sub.nk+π1 ⊕R.sub.nk+1)+ 
    
     Thus, the seed used here is a n+3 tuple (X, Y, Z, δ i ). 
     Unfortunately, this random-check generator is not very random. Therefore, security has to be obtained by additional means, which, however, require few operations and/or are executed only rarely. 
     3.2 Increase of Security 
     As long as the seed (X, Y, Z, δ i ) is unknown, a systematic change of the message with the digest D maintained or a new and correct calculation of D. Thus, each unauthorized manipulation has to find out (X, Y, Z, δ i ). To do so, for information theoretic reasons, at least n+3 messages with the associated digest D must be known that have all been calculated with the same seed (X, Y, Z, δ i ). 
     Therefore, th e seed should be changed often enough. It is feasible to use a new n+3 tuple (X, Y, Z, δ i ) for each message or even to change this seed within one message. 
     In a simple implementation, the sender transmits the triple (C (X, Y, Z, δ i ), m, D) per message. C refers to an optional symmetric or asymmetric encoding function encoding the seed. 
     To manipulate C is a standard problem of cryptography. Since the plain text (X, Y, Z, δ i ) may be randomly selected by the sender and only the key text C (X, Y, Z, δ i ) is visible, knownplaintext- and given-plaintext-manipulations are not possible. This leaves a pure ciphertext-manipulation, which stands only few chances of success, since the plaintext is random. 
     3.3 Message Chaining 
     Only one digest is calculated and transmitted for a message sequence. For calculating this digest, one or more seeds may be used. Here, the same key (in particular, the same random numbers and, if given, the same combination words) is used for a plurality of bit strings. 
     3.4 Multi-level Seeds 
     Instead of sending each seed (X, Y, Z, δ i ) explicitly, the sender transfers an encoded superseed tuple (S i ) to the receiver. Both use this as an input parameter of a better random-check generator which will then calculate the actual seeds (X, Y, Z, δ i ). Thereby, the S i  tuple must be calculated and sent much less often than direct seeds (X, Y, Z, δ i ). 
     This method can be employed in a multi-level manner by sending, e.g., T i  which are then used to calculate a plurality of S i .