Abstract:
A method for implementing private key protocols between two processing devices of which at least one is a portable storage medium. The devices are fitted with a digital processing circuit for performing modular calculation operations with a view to executing operations such as modular multiplication, the processing circuit is used to implement a private key encryption function consisting of a series of reversible operations comprising at least a combination of two operations, i.e. a modular calculation operation and a binary logic operation, and said function is applied either for encrypting or signing messages to be transmitted, or for decrypting received messages.

Description:
The present invention relates to a process for implementing a communications protocol between two processing devices, at least one of which is a portable storage device such as a smart card. 
     BACKGROUND OF THE INVENTION 
     Data confidentiality is currently a major concern. It is clear that data in all their forms have intrinsic value that is often difficult to evaluate. Much of the wealth of a corporation or even a country resides in this growing volume of paper and electronic documents that condense its past, present, and even future activities. Paper documents that justified protection were hidden, concealed in locations that were made as difficult as possible to access. The spread of e-mail and electronic filing renews the problem and spurs a search for solutions to the problem. 
     Answers in this field are based on the concept of secret data being shared by a group of individuals at a given time. The processes implemented to date were based on simple operations that could be carried out on any device capable of elementary operations (binary addition, shifting, permutations, etc.). 
     The very nature of these processes implies lengthy and particularly painstaking design to build a machine whose logic is virtually error-free and whose errors are in any event never fatal. The confidentiality or secrecy of the data, on which all system security depends, would indeed be broken if the data transmitted between the devices were not kept secret, and this disclosure would then cause the security of the system to fail. 
     The design of effective protocols thus represents a particularly large investment in time and resources. Also, there is a relationship between maximum security and the quantity of information to be processed. 
     BRIEF SUMMARY OF THE INVENTION 
     The present invention solves this problem and in particular eliminates manufacturing shortcoming due to the fact that system reliability does not rest solely on the secrecy of the information held in this equipment. 
     According to the invention, it is proposed to divide this constraint between the secret held and the processing accomplished, namely the protocol itself. 
     For this purpose, according to the invention, the process enables secret-key cryptographic protocols securely contained in (hardware or software that are) dedicated to the performance of complex calculations (for example operations employing modular calculation) in the framework of public-key cryptographic protocols (DH, El Gamal, Schnorr, Fiat-Shamir, etc.). 
     Devices equipped with calculation resources for performing complex operations (such as modular calculation) are currently known; for example circuits such as the ST16CF54 circuit by the Societe Thomson, 83C852/5 by the Philips Company, or SLE 44CP200 can be cited. 
     According to the invention, such a resource is used judiciously, namely using operations that take little time but whose effects on data are effective in terms of encrypting and keeping secret the information processed. The principle is to combine operations that call simultaneously on resources dedicated to complex operations in the device itself, whatever its nature (simple application-oriented computer of the 8051 or 6805 type, processors of the 80x86 or 680x0 family, advanced processors Pentium, Alpha chips, SUN, or RISC), and parallel processors (Hypercube for example) combining cleartext information with a secret key to obtain an enciphered message that only a person possessing the secrecy protocals can decipher. 
     Thus, the invention proposes a highly securitized system wherein modular calculation can have a large number of bits, for example 80, 160, or 512 or more, requiring only the combination of two operations. 
     The present invention relates in particular to a process for implementing a secret-key protocol between two processing devices, at least one of which is a portable storage device, principally characterized by comprising the following stages: 
     equipping the devices of a digital processing circuit able to perform operations of the modular calculation type to carry out operations such as modular multiplication, 
     using this processing circuit to implement a secret-key enciphering function composed of a sequence of reversible operations comprising at least the combination of two operations, one of the modular calculation type and the other in binary logic, 
     applying this function either to messages intended for transmission to encipher or sign them, or to received messages to decipher them. 
     To process messages of any length, each message is first divided into q blocks×N bits. 
     According to another aspect of the present invention, the secret-key enciphering function comprises a combination of two operations, one of which is permutation that uses modular multiplication and the other an OR-exclusive logic operations where f is such that: 
     
       
           f ( x )=( x⊕K   2 )*  K   1  mod  n   
       
     
     wherein 
     x represents a block of N message bits 
     K 1  and K 2  represent a first and second secret key with N bits, 
     n is an odd number of N bits 
     ⊕ is an OR-exclusive operation 
     * is a modulo multiplication operation n 
     According to another feature of the invention, the user can choose K 1 ≠K 2  or K 1 =K 2 . 
     According to another feature of the invention, when a device is sending messages, it performs a first operation on the message by applying the chosen function f iteratively to each block x i . 
     Preferably, an iteration number p equal to at least 4 is used. 
     Thus, according to a first embodiment, devices A j  and A k  communicate with each other according to the following protocol: 
     device A j  enciphers each block x of message M previously divided into (q+1) blocks of N bits such that each enciphered block y of the message is such that: 
     
       
           E ( x )= f   p ( x )⊕ K  mod  n=y,   
       
     
     p being greater than or equal to 4, 
     the device sends the (q+1) y blocks to device A k , 
     device A k  carries out the following operation on each y: 
     
       
           D ( y )= g   p ( y )⊕ K  mod  n=x,  to decipher block  y,   
       
     
      in order to decipher y and obtain x, the function g being the inverse function of f such that: 
     
       
           g ( y )=( y*K   −1  mod  n )⊕ K,   
       
     
     y representing a block of N bits of the cipher. 
     The power p indicates that functions f and g are composed p times as follows: f p (x)=f(f(f f(x)) )). Hence, function f is applied iteratively. The proposed number of iterations guarantees better security of the protocol. Practically speaking, hashing the message consists for example of carrying out the following steps: 
     
       
           E ( x   i )= f   4 ( x   i )⊕ K  mod  n   
       
     
     (1) The cipher y 1  of the first block x 1  of the message is calculated: y 1 =E(x 1 ) 
     (2) For the remainder of the x i  blocks of the message, the following calculation is performed: 
     y i =E(x i ⊕y i−1 )⊕y i−1  and the last block is taken as the hashed value of the message. 
     According to another embodiment, when devices A j  and A k  communicate with each other, device A j  first divides the message into q+1 blocks of N bits and places the blocks in two registers. One block x i  of one message is placed in a first register and the next block x i+1  is placed in the second register. When device A j  sends a message, it enciphers this message with a cipher function f such that: 
     
       
           E ( x   i   ,x   i+1 )= f   p ( x   i   , x   i+1 ) 
       
     
     with f(x i , x i+1 )=y i , y i+1    
     where y i =x i+1    
     y i+1 =x i ⊕((y i ⊕K 2 )* K 1 mod n) 
     The device sends the (q+1) y blocks to device A k . 
     Device A k  performs the following operation on each block y i : 
     
       
           D ( y   i   ,y   i+1 )= g   p ( y   i   , y   i+1 ) 
       
     
     so as to decipher (y i , y i+1 ) and obtain (x i , x i+1 ), the function g being the inverse function of f, this function being defined by: 
     
       
           g ( y   i   ,y   i+1 )= x   i   ,x   i+1   
       
     
     where X i+1 =y i  and 
     x i =y i+1 ⊕((x i+1 ⊕K 2 )* K 1  mod n)=y i+1 ⊕((y i ⊕K 2 )* K 1  mod n) 
     device A k  thus reconstituting the message. 
     The reverse application for deciphering is of exactly the same type as the direct application. Hence it is possible to construct a symmetric enciphering system by composing several functions f as above. 
     In this case, the number of iterations will be chosen to be greater than or equal to eight in order to give good security. 
     The protocol based on this function allowing a block x to be enciphered and a block y of the cipher to be deciphered will be the following: 
     E(x)=f 8 (x)⊕K mod n=y, to encipher block x, 
     D(y)=g 8 (y)⊕K mod n=x, to decipher block y, with g being the inverse of f as defined above, and y representing a block of N bits of the cipher. 
     The enciphering functions described above can be used to hash messages of any length. 
     A message is hashed by combining the block to enciphered block values and retaining only the last enciphered value which represents the hashed value of the message. 
     In practical terms, hashing a message consists of carrying out the following steps: 
       E ( x   i   , x   i+1 )= f   8 ( x   i   , x   i+1 ) 
     (1) The cipher (y 1 , y 2 ) of the first two blocks (x 1 , x 2 ) of the message is calculated: y 1 , y 2 =E (x 1 , x 2 ). 
     (2) For the rest of the pairs of blocks, (x i , x i+1 ) of the message, the following calculation is carried out: 
     y i , y i−1 =E(x 1 ⊕y i−2 , x i+1 ⊕y i−1 )⊕(y i−2 , y i−1 ) and the last block is taken as the hashed value of the message. 
     The length N in bits of the modulo, the keys, and the blocks to be enciphered or hashed will preferably, depending on the devices used, consist of 80 bits or 160, 512, 640, 1024, or more. The number used as the modulo will be odd. 
     Preferably, the number n=2 N −1 will be used. 
     The portable devices will be smart cards or PCMCIA cards, badges, contactless cards, or any other device equipped with a security module. 
     The signals exchanged may be electrical signals or infrared signals or radio waves. 
    
    
     Other features and advantages of the invention will emerge more clearly from the description provided as an indication and without limitation having regard to the drawings wherein: 
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a diagram of a device implementing the process according to the present invention. 
     FIG. 2 is a diagram illustrating data transmitted between a device A j  and another device A k  using a digital processing circuit according to the invention during a message enciphering/deciphering phase. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     In the remainder of the description, for simplicity&#39;s sake, the case of a smart card will be taken as an example of the processing device. 
     According to the invention proposed, each smart card is composed of a processing unit CPU  11 , a communications interface  10 , a random-access memory (RAM) and/or a read-only memory (ROM)  14 , and/or a read-only memory (generally reprogrammable) (EPROM or EEPROM)  15 . Each card can encipher and/or decipher messages according to the procedures proposed. 
     The CPU unit  11  and/or ROM  14  of this smart card contain programs or calculation resources that allow arithmetical operations to be performed rapidly on large numbers, particularly multiplications, inverse calculations, and modular reductions. In known fashion, some of these operations can be grouped (for example modular reduction can be integrated directly into multiplication). 
     In the same way as for implementation of an algorithm such as DES, the RAM memory contains block x on N bits of message M to be enciphered. The E(E)PROM memory  15  contains keys K, K 1 , and K 2 . 
     In known fashion, the CPU unit  11  controls, via address and data buses  16 , the communications interface  10  and the memory read and write operations  13 ,  14 , and  15 . 
     Each smart card is protected from the outside world by physical protections  17 . These protections must be sufficient to prevent any unauthorized entity from obtaining the secret key K. 
     The techniques in commonest use today in this field are building the chip into a security module and equipping chips with devices capable of detecting changes in temperature and light as well as abnormal voltages and clock frequencies. Special (but known) design techniques such as scrambling the memory access are also used. 
     As shown in FIG. 2 there are two devices A; and A k . 
     A device utilizing a security module with the same functions as a smart card can carry out the enciphering and deciphering operations in the same manner. 
     Within the general framework of the proposed invention, implementation of a symmetrical enciphering algorithm employing resources normally used for public-key cryptographic operations is carried out by taking the following steps and exchanging at least the following signals between the card and the verification device which, according to the invention, can be another card: 
     First, the device A; enciphering a message of length L divides the message to obtain (q+1) blocks of N bits. If L=(q*N+r) bits, with r&lt;N, the device divides the message into q+1 blocks, namely q blocks of length N bits and one block of r bits. 
     It completes the (q+1) i&#39;th block with zeros in order to have q+1 blocks of N bits, then it enciphers each block x i  by performing the following calculation: 
     
       
           E ( x   i )=f 4 ( x   i )⊕ K  mod  n=y   i   
       
     
     with f(x i )=(x i ⊕K)* K mod n 
     K representing the secret key over N bits 
     n being an odd number of N bits, and 
     ⊕ being the exclusive OR and * the multiplication modulo n 
     It then sends the (q+1) y i  blocks of the cipher to the deciphering device. 
     The message deciphering device A k  makes the following calculation on each block y i : 
     
       
           D ( y   i )= g   4 ( y   i )⊕ K  mod  n=x   i , to decipher block  y   i , 
       
     
     with g(y)=(y*K −1  mod n)⊕K. 
     It finally reconstitutes the message M=x 1 |x 2 |. . . |x i+1    
     A second variant of the present invention has the objective of offering a second symmetrical enciphering embodiment calling on resources normally used for public-key cryptography, working on two registers of N bits containing the blocks of the message to be enciphered. 
     The device enciphering a message of length L divides it as described hereinabove. 
     For a message of length L= (q*N+r) bits, with r&lt;N, it divides this message into q+1 blocks, namely q blocks of length N bits and one block of r bits. It completes the (q+1) i&#39;th block with zeros, and enciphers each block x i  using the following calculation: 
     
       
           E ( x   i   , x   i+1 )= f   8 ( x   i   , x   i+1 ) 
       
     
     with: f(x i , x i+1 )=y i , y i+1    
     where y i =x i+1    
     y i+1 =x⊕((y i ⊕K 2 )* K 1  mod n) 
     K 1  and K 2  representing the secret keys over N bits 
     n being an odd number of N bits, and 
     ⊕ being the exclusive OR and * the multiplication modulo n 
     It then sends the (q+1) y i  blocks of the cipher to the deciphering device. 
     The device deciphering the message makes the following calculation on each block y i : 
     
       
           D ( y   i   ,y   i+1 )= g   8 ( y   i   , y   i+1 ) 
       
     
     with: g(y i , y i+1 )=x i , x i+1    
     where x i+1 =y i   
     
       
           x   i   =y   i+1 ⊕(( x   i+1   ⊕K   2 )*  K   1  mod  n )= y   i+1 ⊕(( y   i   ⊕K   2 )* K   1  mod  n ) 
       
     
     Finally it reconstitutes the message M=x 1 |x 2 |. . . x i+1    
     As an example, for better understanding of the processing in the case where two interactions were performed on function f, one would have: 
     
       
           f   2 ( x   i   ,x   i+1 )= f ( x   i+1   , x   i ⊕(( x   i+1   ⊕K   2 )* K   1  mod  n )= y   i   , y   i+1 =( x   i ⊕(( x   i+1   ⊕K   2 )* K   1  mod  n ,( x   i+1 ⊕(( y   i   ⊕K   2 )* K   1  mod  n ) 
       
     
     The process according to the invention also allows messages to be hashed in order for example to apply it to calculating electronic signatures or implementing secrete-key protocols as defined above. For example, the two algorithm-enciphering functions described above would be used to hash messages in the following manner: 
     According to a first variant: E(x i )=f 4 (x i )⊕K mod n 
     (1) The cipher y 1  of the first block x 1  of the message is calculated: y 1 =E(x 1 ) 
     (2) For the rest of the blocks x 1  of the message, the following calculation is made: y i =E(x i ⊕y i−1 )⊕y i−1  and the last block is taken as the hashed value of the message. 
     According to a second variant: E(x i , x i+1 )=f 8 (x i , x i+1 ) 
     (1) The cipher (y 1 , y 2 ) of the first two blocks (x 1 , x 2 ) of the message is calculated: y 1 , y 2 =E(x 1 , x 2 ) 
     (2) For the rest of the pairs of blocks (x i , x i+1 ) of the message, the following calculation is performed: