Abstract:
A protocol for secure peer-to-peer communications is established based on existing cryptographic techniques and encryption algorithms. The peers ( 120, 130, 140 ) and a central security agent ( 110 ) undergo mutual authentication. A newly generated nonce is used for authentication, and a random session key is used for a session. The security agent ( 110 ) generates unique session keys for communication between peers ( 120, 130, 140 ). The security agent ( 110 ) removes the burden of mutual authentication between requested peer ( 130, 140 ) and the requesting peer ( 120 ), as the security agent ( 110 ) independently authenticates the requesting peer ( 120 ) and the requested peer ( 130, 140 ). The requested peer ( 130, 140 ) and the requesting peer ( 120 ) are sent a session key by the security agent ( 110 ).

Description:
FIELD OF THE INVENTION 
       [0001]    The present invention relates to peer-to-peer communications. 
       BACKGROUND OF THE INVENTION 
       [0002]    The characterizing feature of peer-to-peer systems—namely a decentralized, distributed architecture—is also its weakest link. Security issues remain one of the primary blocks to the adoption of peer-to-peer systems beyond use with previously known and trusted partners, as many peer-to-peer applications require secure communication between peers. 
         [0003]    A key issue in secure communication between peers is authentication of peers. Another issue is to establish a secure session by using a “fresh” secret session key. The notion of “freshness” is important to avoid the replay attack. A replay attack involves the interception of communications, and subsequently impersonation of the sender by retransmitting the intercepted communication. By using a “fresh” or new session key, impersonation by retransmission can be avoided. 
         [0004]    Secure peer-to-peer communications can be implemented using techniques such as Secured Socket Layer (SSL), which is designed for communications between a server and clients. Secured Socket Layer technology can be applied to peer-to-peer communications, but is not intended for or particularly suited to secure communication between peers. 
         [0005]    Accordingly, an improved approach to securing peer-to-peer communications is clearly required. 
       SUMMARY OF THE INVENTION 
       [0006]    A protocol for secure peer-to-peer communications is established based on existing cryptographic techniques (namely, the use of symmetric and asymmetric keys) and encryption algorithms (such as the Rivest-Shamir-Adleman or RSA algorithm). The described protocol provides authentication and session security for peer-to-peer communications, but is not based upon a conventional client-server paradigm, and is instead designed for peer-to-peer communications by relieving peers of much of the burden of managing security. 
         [0007]    The peers and a central server, which acts as a security agent, undergo a process of mutual authentication. A newly generated message number is used for authentication, and a random session key is used for a session. (Such a message number may be referred to herein as a “nonce.”) Peers can communicate securely even if they are communicating for the first time and have no information about each other. 
         [0008]    The security agent is known to all peers, as all peers are registered with the security agent following mutual authentication. The security agent performs the task of generating unique session keys for communication peers. The security agent removes the burden of mutual authentication between the requesting peer and the requested (or responding) peer, as the server authenticates the requesting peer and the requested peer independently. The requesting peer and the requested peer are sent a session key by the security agent. 
         [0009]    This approach frees peers of the burden of generating session key and management of large array of peers&#39; public keys. The burden is instead shifted to central security agent, which is more likely to have sufficient resources (such as central processing power, and random access memory) at its disposal to perform these tasks. 
         [0010]    Another benefit of this approach is that peers are not required to get a digital certificate from a Certificate Authority. Instead, each peer has the public key of a central security agent and the central security agent has each peer&#39;s public key. The protocol offers mutual authentication using public/private key pairs, and session security using a symmetric key, which is lighter on network traffic compared to data encryption using an asymmetric key. 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0011]      FIG. 1  is a schematic representation of the entities involved in the peer-to-peer communications protocol described herein. 
           [0012]      FIGS. 2A and 2B  jointly form a flow chart of steps involved in establishing secure communications between peers in a peer-to-peer network. 
           [0013]      FIG. 3  is a schematic representation of a computer system of a type suitable use in a peer-to-peer network. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0014]      FIG. 1  schematically represents entities involved in a peer-to-peer network  100 , according to the protocol described herein. A Security Agent S  110  has communications links with Peer A  120 , Peer B  130 , and Peer C  140 . The network  100  may include further peers, though three peers are sufficient to illustrate operation of the described security protocol. 
         [0015]    The Security Agent S  110  is mutually authenticated with each of the Peers  120 ,  130 ,  140  during initial communication between the requesting Peer  120  and the Requested Peers  130  and  140 . 
         [0016]    Entities, Assumptions and Notation 
         [0017]    Consider the following entities that are used in describing an arrangement for peer-to-peer communications.
   Peer A  120  A client wanting to use the resources or services of Requested Peers B  130  and C  140 .   Peer B  130  and C  140  Requested Peers B  130  and C  140  with which Requesting Peer A  120  communicates.   Security Agent S  110  An agent, cluster of “thick” clients or servers that facilitates secure communication between Requesting and Requested Peers.   
 
         [0021]    The following assumptions, numbered below, also apply.
   1. Peer A  120  determines which Requested Peer or Peers (Peer B  130  and Peer C  140  in this case) with which Peer A  120  wants to communicate, using any suitable peer discovery techniques.   2. All Peers are registered with the Security Agent S  110 , and consequently have the public key of the Security Agent S  110  and vice versa.   3. All Peers and the Security Agent  110  have their own public/private key pair. A robust algorithm, such as RSA or similar, is assumed to generate the public/private key pair.   
 
         [0025]    Notations used herein in relation to Peers A  120 , B  130  and C  140  and the Security Agent S  110  are as follows.
   A, B, C→Peers {A, B, C}   S→Security Agent   P A , P B , P C , P S →Public key of the subscripted Peer A, B, C, or Security Agent S.   P A ( )→data within the braces is encrypted using Peer A&#39;s public key   n {a, b, c, s1, s2, s3 }→Nonce, i.e., a message number distinguishable from other message numbers during a certain processing interval. (In one embodiment the nonce is a randomly generated, unique message number.)   K B , K C  Secret session key or symmetric key, such as K B  is symmetric key to be used between Peer A and Peer B   
 
         [0032]    Communications Protocol 
         [0033]    Peer A  120  wants to communicate securely with Peers B  130  and C  140 . Table 1 below outlines a sequence of steps that are involved in initiating secure communications between Peer A  120  and Peers B  130  and C  140 . 
         [0000]    
       
         
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 Step 
                 Interaction 
                 Message Sent 
               
               
                   
               
             
             
               
                 Step 1 
                 A → S 
                 P S  (n a ) 
               
               
                 Step 2 
                 S → A 
                 P A  (n a , n s1 ) 
               
               
                 Step 3 
                 A → S 
                 P S  (n s1 , Peers{B, C}) 
               
               
                 Step 4 
                 S → B 
                 P B  (n s2 ) 
               
               
                   
                 S → C 
                 P C  (n s3 ) 
               
               
                 Step 5 
                 B → S 
                 P S  (n s2 , n b ) 
               
               
                   
                 C → S 
                 P S  (n s3 , n c ) 
               
               
                 Step 6 
                 S → B 
                 P B  (n b , K B ) 
               
               
                   
                 S → C 
                 P C  (n c , K C ) 
               
               
                 Step 7 
                 S → A 
                 P A  (n a , ({peer, key} → ({B, K B }, {C, K C })) 
               
               
                 Step 8 
                 A → B 
                 K B  (data) 
               
               
                   
                 A → C 
                 K C  (data) 
               
               
                   
               
             
          
         
       
     
         [0034]    Steps  1  to  3  involve mutual authentication of the requesting peer, Peer A  120 , and the Security Agent S  110 . 
         [0035]    Steps  4  to  6  involve events related to mutual authentication of Requested Peers B  130  and C  140  and the Security Agent S  110 . Step  6  also involves distribution of corresponding secret symmetric keys. 
         [0036]    Step  7  involves distribution of secret session keys to be used by Peer A  120  when communicating with Peers B  130  and C  140 . As an example, K B , K C  are used by Peer A  120  to communicate with Peer B  130  and Peer C  140  respectively. 
         [0037]    Step  8  involves requesting Peer A  120  to initiate a secure communication with Requested Peers B  130  and C  140 . 
         [0038]      FIGS. 2A and 2B  flow charts these steps in further detail. Requesting Peer A  120  generates a nonce, which Peer A  120  sends to Security Agent S  110  in step  202 . The nonce is encrypted using the public key of Security Agent S  110 . Security Agent S  110  decrypts the transmitted is nonce using the private key of Security Agent S  110  in step  204 . In this step, Security Agent S  110  generates its own nonce, and encrypts the generated nonce (and the decrypted nonce from Peer A  120 ) using the public key of Peer A  120 . The encrypted nonces are returned to Peer A  120 . 
         [0039]    Peer A  120  makes a determination in step  206  of whether the message sent from Security Agent S  110  in step  204  encrypts the nonce previously sent from Peer A  120  to Security Agent S  110 . This determination is made by decrypting the message received from Security Agent S  110  using the private key of Peer A  120 . The Security Agent S  110  is determined to be a bogus Security Agent in step  208  if Peer A  120  does not receive its nonce in reply. Otherwise, if Peer A  120  does receive its nonce, the Security Agent S  110  is deemed legitimate, and processing proceeds to step  210 . 
         [0040]    Peer A  120  extracts the nonce sent by the Security Agent S  110  in step  210 , and creates a new request that specifies Peers B  130  and C  140  with which Peer A  120  wishes to communicate. The request includes the extracted nonce of the Security Agent S  110 , Peer A  120  encrypts the new request using the public key of Security Agent S  110 , and send the encrypted request to Security Agent S  110 . 
         [0041]    Security Agent S  110  receives the encrypted request from Peer A  120  in step  212 , whereupon a determination is made of whether Security Agent S  110  has received the nonce Security Agent S  110  sent to Peer A  120  in step  204 . Peer A  120  is determined in step  214  to be a bogus Requesting Peer if Security Agent S  110  does not receive its nonce in reply from Peer A  120 . Otherwise, if Security Agent S  110  does receive its nonce in reply from Peer A  120 , then Peer A  120  is deemed a legitimate Requesting Peer, and processing proceeds to step  216 . 
         [0042]    Security Agent S  110  generates in step  216  a distinct nonce for each Requested Peer with which Peer A  120  wishes to communicate, in this case Peers B  130  and C  140 . Each of these nonces generated by Security Agent S  110  is encrypted using the public key of the respective Requested Peer, and transmitted to that Requested Peer specified by the Requesting Peer, Peer A  120 . Each Requested Peer, Peers B  130  and C  140 , generate their own nonces in step  218 , and extract the nonce sent by Security Agent S  110  in step  216 . These nonces form a reply sent to the Security Agent S  110 , which is encrypted using the public key of the Security Agent S  110 . 
         [0043]    A determination is made in step  220  of whether Security Agent S  110  receives its nonce in reply in the message sent to Security Agent S  110  in step  218 . If Security Agent S  110  does not receive its nonce in reply from a Requested Peer, that Requested Peer is determined to be a bogus Requested Peer in step  222 . If each Requested Peer responds to the Security Agent S  110  with the nonce sent by the Security Agent S  110  in step  216 , then each Requested Peer is deemed legitimate. In this case, Security Agent S  110  is mutually authenticated with the Requesting Peer, and with the Requested Peers. The Security Agent S  110  generates a session key for each Requested Peer, B  140  and C  130 . Processing thus proceeds in parallel with steps  224  and  232 . 
         [0044]    The Security Agent S  110  sends a message to each Requested Peer containing that Peer&#39;s nonce and a session key (K B  or K C ), encrypted using the Requested Peer&#39;s public key in step  232 . The session key is used by the Requested Peer to communicate with Requesting Peer A  120 . 
         [0045]    Security Agent S  110  also sends the generated session keys (K B  or K C ) to the Requesting Peer A  120  in step  224 . The Security Agent S  110  sends the session keys and the Requesting Peer&#39;s nonce encrypted by the public key of Requesting Peer A  120 . 
         [0046]    A determination is made in step  226  of whether Peer A  120  receives its nonce from the Security Agent S  110 . If Peer A  120  does not receive its nonce, then the Security Agent S  110  is deemed to be a bogus Security Agent, on step  228 . Otherwise, the Security Agent S  110  is deemed legitimate, and processing proceeds to step  230 . Peer A  120  encrypts its requests (such as file downloads, or job executions) with the session keys used for communication between Peer A  120  and Peer B  140 , and Peer A  120  and Peer C  130  respectively, and sends the requests to the corresponding Requested Peers in step  230 . Secure communications are established between Requesting Peer A  120  and Requested Peer B  140 , and Peer A  120  and requested Peer C  130 , in step  238 . 
         [0047]    A determination is made in step  234  of whether the Requested Peer  130 ,  140  receives its nonce in reply from the Security Agent S  110 . If the Requested Peer does not receives its nonce, Security Agent S  110  is deemed to be a bogus Security Agent in step  228 . Otherwise, Security Agent S  110  is deemed to be legitimate, and secure communications are established between peers in step  238 , initiated by step  230 . 
         [0048]    Computer Hardware 
         [0049]      FIG. 3  is a schematic representation of a computer system  300  of a type that is suitable for acting as a Peer  120 ,  130  or  140  or Security Agent S  110  in a peer-to-peer network of  FIG. 1 . Computer software executes under a suitable operating system installed on the computer system  300 , and may be thought of as comprising various software code means for achieving particular steps. The Security Agent S  110  can be implemented to cater for anticipated loads in a single server, or in a cluster of servers. A cluster of “thick” clients can also be used to cater for anticipated loads. 
         [0050]    The components of the computer system  300  include a computer  320 , a keyboard  310  and mouse  315 , and a video display  390 . The computer  320  includes a processor  340 , a memory  350 , input/output (I/O) interfaces  360 ,  365 , a video interface  345 , and a storage device  355 . 
         [0051]    The processor  340  is a central processing unit (CPU) that executes the operating system and the computer software executing under the operating system. The memory  350  includes random access memory (RAM) and read-only memory (ROM), and is used under direction of the processor  340 . 
         [0052]    The video interface  345  is connected to video display  390  and provides video signals for display on the video display  390 . User input to operate the computer  320  is provided from the keyboard  310  and mouse  315 . The storage device  355  can include a disk drive or any other suitable storage medium. 
         [0053]    Each of the components of the computer  320  is connected to an internal bus  330  that includes data, address, and control buses, to allow components of the computer  320  to communicate with each other via the bus  330 . 
         [0054]    The computer system  300  can be connected to one or more other similar computers via a input/output (I/O) interface  365  using a communication channel  385  to a network, represented as the Internet  380 . 
         [0055]    The computer software may be recorded on a portable storage medium, in which case, the computer software program is accessed by the computer system  300  from the storage device  355 . Alternatively, the computer software can be accessed directly from the Internet  380  by the computer  320 . In either case, a user can interact with the computer system  300  using the keyboard  310  and mouse  315  to operate the programmed computer software executing on the computer  320 . 
         [0056]    Other configurations or types of computer systems can be equally well used to execute computer software that assists in implementing the techniques described herein. Various alterations and modifications can be made to the techniques and arrangements described herein, as would be apparent to one skilled in the relevant art.