US20090089574A1 - System, method and program for protecting communication - Google Patents

System, method and program for protecting communication Download PDF

Info

Publication number
US20090089574A1
US20090089574A1 US12/331,700 US33170008A US2009089574A1 US 20090089574 A1 US20090089574 A1 US 20090089574A1 US 33170008 A US33170008 A US 33170008A US 2009089574 A1 US2009089574 A1 US 2009089574A1
Authority
US
United States
Prior art keywords
request
file
hash value
session
encrypted
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
Application number
US12/331,700
Inventor
Robert Franklin Pryor
Marc Lawrence Steinbrecher
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyndryl Inc
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US12/331,700 priority Critical patent/US20090089574A1/en
Publication of US20090089574A1 publication Critical patent/US20090089574A1/en
Assigned to KYNDRYL, INC. reassignment KYNDRYL, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols

Definitions

  • the invention relates generally to computer systems, and deals more particularly with a technique to determine if changes have been made to data during transmission, either through error or malicious activity.
  • the multiple connection mode requires a multithreaded function which can manage and coordinate the multiple connections in parallel.
  • An IBM Download Director program currently transfers data across multiple connections in parallel using Download Director Protocol (“DDP”).
  • the IBM Download Director program begins operation by defining a session which includes all the connections needed to authenticate the client and server to each other and transfer a file in separate segments.
  • the IBM Download Director program is also capable of resuming a file transfer which has been terminated, so that the transmission is restarted at the point in the transfer where it terminated.
  • the IBM Download Director program uses encryption for the transmitted files.
  • Public/private key encryption such as RSA is also well known.
  • the public key i.e. publicly known key
  • a private key known only to the recipient is used to decrypt the data which was encrypted with the public key.
  • the recipient has a corresponding private key used to decrypt the communication encrypted with the public key.
  • Symmetric encryption such as AES is also well known. With symmetric encryption, the same key is used for both encryption and decryption, and is kept secret by both the sender and recipient. Typically, the key is randomly generated by the sender or recipient, and sent to the other ahead of the communication. For security, the symmetric key can be sent encrypted using a public/private key encryption.
  • the MAC includes a hash of the transfer data, a sequence number, and other descriptors used in the protocol to identify the content and operations such as compression and encryption.
  • the MAC however does not include a file name, file creation data or file size.
  • HTTPS there is a hash of each block of data; a file is transmitted as one or more blocks.
  • HTTPS does not have a high-performance capability (such as that of IBM Download Director Program) because it cannot manage multiple simultaneous connections. In other words, in HTTPS, all the requests and responses of one session proceed through the same connection.
  • S/MIME protocol is a mail protocol that includes both a hash value and encrypted data, but does not include a session ID.
  • S/MIME is intended for content delivery and is used as an asynchronous process. The sender identifies the recipient or recipient(s), and data encryption and hash values are created. The delivery can be at that time or at a later time. Transfer of the data is over a single connection and the content is not used in the transfer protocol.
  • Hashing is also well known today. Hashing is a process analogous to parity checking or cyclical redundancy checking where a function is performed on a set of bits or bytes to yield a unique “hash” value. Different algorithms can be used for hashing, such as SHA-1 and MD5. Two identical files will yield the same hash value (if they use the same hashing algorithm), and a difference in hash values indicates a difference between the two files.
  • U.S. Pat. No. 6,393,438 discloses a method and apparatus for identifying differences between two files, such as two versions of a Microsoft Windows registry file. Portions of the file are hashed to yield one four byte value per portion to provide a set of hash results.
  • the set of hash results are combined with a four byte size of the portion of the file from which the hash was generated to produce a signature of each file. If the two files are different versions of a Windows registry file, the hash signatures of the two files will likely be different. It is also well known to hash data before transmission, hash the received data, and compare the two hash values to determine if any changes occurred to the data during transmission.
  • An object of the present invention is to expeditiously transfer data and reveal any changes that occur to the data in transit.
  • a more specific object of the present invention is to apply the foregoing technique to data transmitted during multiple connections in the same session.
  • One aspect of the invention resides in a method for transferring data between a first computer and a second computer.
  • the second computer receives a first request in a first connection.
  • the first request includes a request to start a session, an encrypted ID of the session, and an encrypted hash value for information in the first request.
  • the information in the first request includes the request to start the session and the encrypted session ID.
  • the encrypted hash value in the first request is decrypted, and a hash value for the information in the first request is independently determined.
  • the independently determined hash value is compared to the decrypted hash value. If there is match, the second computer starts a session with the first computer. Subsequently, a second request from the first computer is received in a second connection in the session.
  • the second request includes a request to download or upload data of a file, an encrypted ID of the session, an identity of the file to at least partially upload or download, and an encrypted hash value for information in the second request.
  • the information in the second request includes the request to download or upload data, the encrypted session ID and the file identity.
  • the encrypted hash value in the second request is decrypted and a hash value for the information in the second request is independently determined. The independently determined hash value is compared to the decrypted hash value. If there is match, the request to at least partially download or upload the file is processed.
  • the present invention provides a computing device for transferring data, the computing device having a means for receiving a first request in a first connection.
  • the first request includes a request to start a session, an encrypted ID of the session, and an encrypted hash value for information in the first request.
  • the information in the first request includes the request to start the session and the encrypted session ID.
  • a means for decrypting decrypts the encrypted hash value in the first request, and a hash value for the information in the first request is independently determined. The independently determined hash value is compared to the decrypted hash value. If there is match, the computing device starts a session.
  • a means for subsequently receiving a second request receives that second request in a second connection in the session.
  • the second request includes a request to download or upload data of a file, the encrypted ID of the session, an identity of the file to at least partially upload or download, and an encrypted hash value for information in the second request.
  • the information in the second request includes the request to download or upload data, the encrypted session ID and the file identity.
  • the encrypted hash value in the second request is decrypted, and a hash value for the information in the second request is independently determined. The independently determined hash value is compared to the decrypted hash value. If there is match, the request to at least partially download or upload the file is processed.
  • the present invention provides a computer program product for transferring data between a first computer and a second computer.
  • the computer program product includes a computer readable medium.
  • the computer program product includes first program instructions to receive from the first computer a first request in a first connection, the first request including a request to start a session, an encrypted ID of the session, and an encrypted hash value for information in the first request.
  • the information in the first request includes the request to start the session and the encrypted session ID.
  • the computer program product includes second program instructions to receive the first request, and in response, decrypt the encrypted hash value in the first request, independently determine a hash value for the information in the first request and compare the independently determined hash value to the decrypted hash value, and if there is match, start a session with the first computer.
  • the computer program product includes third program instructions to subsequently receive a second request in a second connection in the session, the second request including a request to download or upload data of a file, the encrypted ID of the session, an identity of the file to at least partially upload or download, and an encrypted hash value for information in the second request.
  • the information in the second request includes the request to download or upload data, the encrypted session ID and the file identity.
  • the computer program product includes
  • fourth program instructions to receive the second request in the session, and in response, decrypt the encrypted hash value in the second request, independently determine a hash value for the information in the second request and compare the independently determined hash value to the decrypted hash value, and if there is match, process the request to at least partially download or upload the file.
  • the first, second, third and fourth program instructions are recorded on the medium.
  • FIG. 1 is a block diagram of a client and server which implement the present invention, and communications between the client and server.
  • FIG. 2 is a flow chart illustrating the steps involved in establishing a session between the client and server of FIG. 1 .
  • FIG. 3 is a flow chart illustrating the steps involved in uploading data from the client to the server of FIG. 1 in the session established in FIG. 2 .
  • FIG. 4 is a flow chart illustrating the steps involved in downloading data from the server to the client of FIG. 1 in the session established in FIG. 2 .
  • FIG. 1 is a flow chart illustrating the steps involved in downloading data from the server to the client of FIG. 1 in the session established in FIG. 2 .
  • FIG. 1 is a flow chart illustrating the steps involved in downloading data from the server to the client of FIG. 1 in the session established in FIG. 2 .
  • FIG. 1 illustrates a client 10 , a server 20 and a network 22 for communication there between.
  • the network 22 can be the Internet, any other, internal or external TCP/IP network, or other types of networks as well.
  • FIG. 1 illustrates four “connections” between the client and the server, all made in the same “session”.
  • An initial connection 50 is for a request from the client to the server to establish the session and a response from the server indicating whether the session was successfully established.
  • a subsequent connection 52 is for a request from the client to the server to upload data and a response from the server whether the data was successfully received.
  • a subsequent connection 54 is for a request from the client to the server to download data and a response from the server which includes the data to be downloaded.
  • a subsequent connection 56 is for another request from the client to the server to download data and a response from the server which includes the data to be downloaded.
  • connections 54 and 56 are used to download two segments of the same file. While not shown, there can be many more connections for the same session, for example, to transfer a lengthy file in multiple segments, one segment per connection. The multiple connections can be concurrent and asynchronous. Because of the multiple connections for uploading or downloading a single file and the associated management of these multiple connections as described below, the transfer will be expeditious.
  • the file transfer can be resumed in a different connection in the same session without having to retransmit the portions of the file that were already successfully transmitted.
  • the session is interrupted by a catastrophic event such as the network failing, all successful segments will be maintained so that when a new session is created at a later date, the new session will only transfer the remaining segments.
  • each of the requests and responses from the client 10 and the server 20 contains a header and meta data.
  • the header includes prior art IP destination address or destination host name and other information such as found in a prior art HTTP header.
  • the meta data includes a parameter indicating the nature of the request, for example, to start a session, download or upload data.
  • the meta data for a request also specifies an encrypted session identifier (“ID”).
  • ID an encrypted session identifier
  • the meta data for a response does not specify the session ID, because it is made in the same connection as the request. Therefore the connection for the response is assumed to be the same as the connection for the request.
  • the meta data for both a request and a response also describes features of the file data being or to be transferred such as file name, file size, file creation date, and a file data hash value.
  • Each request and response also includes an encrypted meta data hash value.
  • the client and server encrypt and decrypt the meta data hash value in messages from the other using a symmetric cypher.
  • encryption of the meta data hash value is used to reveal changes to the meta data that occur during transmission.
  • symmetric ciphering an encryption key is supplied to the encryption function, and this one key is used for both encryption and decryption.
  • Symmetric ciphering is also used for a user ID and password exchange.
  • the request also includes the actual file data.
  • the actual file data can be encrypted if confidential.
  • the response also includes the actual file data.
  • the actual file data can be encrypted if confidential.
  • the encryption of the file data can be based on the symmetric cypher used for the session key or some other key or encryption method.
  • the present invention is implemented at the client computer 10 by a client transfer program 12 , and implemented at the server computer 20 by a server transfer program 22 .
  • the client identifies a new session by a randomly generated session ID.
  • the client then encrypts the session ID with the server's public key (acquired by the client during an earlier exchange or otherwise pre-determined)), and then sends the encrypted session ID to the server in an initial connection to create the session. If the client expects to make a subsequent file upload request, the client also furnishes a name, file size, and hash value for the entire file to be uploaded. If the client expects to make a subsequent download request, the client also furnishes a name of the file to be downloaded.
  • the server When the server receives the encrypted session ID from the client and decrypts the session ID using the server's private key, the server then has the key for a symmetric cipher function. The server then initializes a symmetric cypher using the decrypted session ID as the decryption key for the symmetric cyphering. Then, the server can validate the meta data from the client by decrypting the hash value sent by the client for the meta data, independently calculating the hash value of the meta data in the request, and comparing the two hash values for the meta data. If they differ, this reveals that changes were made to the meta data sent from the client. If they are the same, then the meta data was received unchanged at the server.
  • the server In response to the client request, the server generates in the same connection its own responsive communication indicating whether the session was established. This response includes meta data and an encrypted meta data hash value. The server also encrypts the meta data hash using the symmetric cypher. If the client's request specified a name of a file stored at the server, server includes in its response a file size and hash value for the entire file data. The client validates the server's meta data by independently calculating the hash value of the server's meta data and comparing it to the hash value received from the server after decryption by the client. This reveals if any changes occurred to the meta data during transmission.
  • Subsequent upload and download requests are made in the same session as created above, and include the same session ID (encrypted) and an encrypted meta data hash value.
  • a file upload request includes a segment of the file when long, or the entire file when short.
  • a server response includes an encrypted meta data hash value (and in the case of a download request, a file segment when the file is long or the entire file when the file is short).
  • the client After the entire file is received by the client (in multiple connections) in the case of a download request, the client independently generates a hash value for the file and compares it to the hash value sent by the server during the session establishment to determine if any changes were made to the file. For both uploads and downloads, the hash value check for the complete file will reveal any changes in file data during transmission even when the file transmission is split between multiple connections. (The split can occur purposely when the file is long or inadvertently when a file transfer connection is terminated due to a failure or other reason and then the file transfer is resumed in another connection.) If a change in transmission has occurred, the recipient can discard the data and request retransmission.
  • FIG. 2 illustrates the establishment of the session between the client 10 and server 20 according to the present invention.
  • the client transfer program 12 To initiate a new session, the client transfer program 12 initializes a new session object (step 100 ).
  • the session object contains the session ID, an indication that the session is not yet active, the identity or IP address of the server or its socket to which connection is made, and a field to track the file upload progress in the case of a subsequent upload.
  • the client transfer program creates a random session ID (step 102 ).
  • the client transfer program encrypts the session ID with a public key previously obtained (step 104 ).
  • the encryption of the session ID can use a known RSA algorithm or other known encryption algorithm.
  • the client transfer program initializes a symmetric cipher (to encrypt a meta data hash value) with the unencrypted session ID serving as the key for the symmetric ciphering (step 106 ).
  • a symmetric cipher to encrypt a meta data hash value
  • the client transfer program initializes a symmetric cipher (to encrypt a meta data hash value) with the unencrypted session ID serving as the key for the symmetric ciphering (step 106 ).
  • Examples of known symmetric ciphering functions are RC 4 and AES.
  • the client transfer program 12 creates the actual request 110 to send to the server.
  • this request is in HTTP form.
  • the request includes an HTTP header, meta data and an encrypted hash value for the meta data.
  • the HTTP request header from the client specifies the server name and port to receive the client request.
  • the meta data comprises a request to start a session, the encrypted session ID, and for each file to subsequently upload a file name, file creation date, file size and file data hash, and for each file to subsequently download a file name. (An application that called the client transfer program 12 to initiate the data transfer previously specified the file(s) to download or upload.
  • the client transfer program 12 calculated the hash value for each complete file data to upload.)
  • the request also includes a meta data hash value encrypted with the symmetric cipher.
  • the client transfer program 12 determined the meta data hash value for the foregoing meta data based on the SHA-1, MD5 or other known hashing algorithm.
  • the initial request to create the session does not include the actual file data to upload.
  • the server transfer program 22 creates a session object (step 126 ). Then, the server transfer program 22 reads the meta data and independently generates a hash value for the meta data using the SHA-1, MD5 or other algorithm used by the client transfer program 12 (step 130 ). Next, the server transfer program 22 decrypts the session ID supplied with the client request, using the server's private key (step 132 ). The decryption is based on the same algorithm used by the client transfer program 12 in the encryption. Next, the server starts (on its side) a session with the client identified by the decrypted and encrypted session ID (step 134 ).
  • the server transfer program 22 fills-in the session object with the session ID, an indication that the session is currently active and the identity or IP address of the client or its socket to which is made.
  • the server transfer program 22 also creates a field to track the file upload progress in the case of a subsequent upload.
  • the server transfer program 22 initializes a symmetric cipher function with the decrypted session ID serving as the decryption key (step 136 ), and decrypts the meta data hash value supplied in the client request using the symmetric cipher function (step 138 ).
  • the server transfer program 22 compares its independently calculated hash value to the decrypted hash value to determine if the client is authentic and the meta data was received without change (step 139 ). If the meta data hash value calculated by the server matches the meta data hash value supplied by the client, the client is authentic, the meta data was received without change and server transfer program 22 prepares a response 142 to send to the client 10 .
  • the response 142 includes a header, meta data and a meta data hash value.
  • the response is in HTTP form.
  • the HTTP response header from the server specifies the content type and length (which header parameters are needed to support HTTP proxies, but are ignored by the client).
  • the meta data comprises a return code indicating whether the session was successfully started.
  • the meta data in the client start request includes a file name, file size, file creation date, file creation date and a file data hash value.
  • the server transfer program 22 will assume the file meta data supplied in the client request is accurate, and update its records accordingly.
  • the meta data in the client start request includes a file name, file creation date, file size and file data hash.
  • the server transfer program 22 calculates the hash value for the complete file data to subsequently download.
  • the file names and file creation dates in the server's response were referenced in the client request to start the session.
  • the server transfer program 22 if the server transfer program 22 cannot locate the file, the server will indicate such for this file. If any of the file meta data found by the server transfer program 22 is different than that specified by the client transfer program 12 in the client session start request, the server will return the file meta data as the server finds it, and the client will update its records accordingly.
  • the server transfer program 22 determines a hash value for the meta data and encrypts the hash value with the symmetric cipher. Next, the server 20 sends the response to the client 10 .
  • the client transfer program 12 receives and processes the response from the server as follows.
  • the client transfer program 12 reads the meta data and independently calculates a hash value using the SHA-1, MD5 or other algorithm used by the server transfer program 22 (step 150 ).
  • the client transfer program 12 decrypts, using the symmetrical cypher, the meta data hash value supplied with the request (step 152 ), and compares its independently calculated meta data hash value to the decrypted meta data hash value (step 154 ). If they match, then the response is considered valid, and the client transfer program 12 has confirmed that the server is authentic and that the session has begun with the server.
  • the client transfer program 12 now knows the complete and correct file meta data. The client then records that the session with the server has officially begun by making an entry in its session object.
  • the client transfer program 12 can use the same session (established in FIG. 2 ) to create requests to upload or download file data (in other connections).
  • the same session ID will be used, a hash will be created for the meta data, the hash value will be encrypted before being sent, and a comparison of the hash value which is sent to the hash value independently generated by the recipient will indicate whether the communication has been changed during transmission.
  • FIG. 3 illustrates an upload request 160 by the client transfer program 12 and the response 181 by the server transfer program 22 , both in a subsequent connection in the same session as created in FIG. 2 .
  • the client transfer program 12 initializes the symmetric cypher for the meta data hash, using the session ID as the encryption key (step 162 ).
  • the upload request 160 comprises an HTTP request header, meta data, an encrypted meta data hash value, and a “send” file.
  • the meta data comprises an upload request, the encrypted session ID and the name of the file or file segment to be uploaded.
  • the meta data also includes a file start/stop parameter which indicates where the file segment begins and ends within the file.
  • the meta data hash value was calculated using the SHA-1, MD5 or other algorithm.
  • the meta data hash value was encrypted using the symmetric cipher.
  • the “send” file contains the actual data in the file or file segment to be uploaded to the server. If the file data is sensitive, the client transfer program 12 can encrypt the file data using a symmetric cipher and send the encrypted file data instead of the unencrypted file data.
  • the same cipher function with the same encryption key (i.e.
  • the session ID is used to encrypt the file data.
  • a different cipher algorithm and/or a different cipher key can be used to encrypt the file data.
  • the client transfer program 12 sends the HTTP request 160 to the server 20 .
  • the server transfer program 22 Upon receipt of the HTTP upload request 160 from the client, the server transfer program 22 reads the meta data and independently generates a corresponding hash value using the SHA-1, MD5 or other algorithm corresponding to that used by the client transfer program 12 (step 170 ). Then, the server transfer program 22 reads the encrypted session ID from the client transfer program 12 request, and checks if this (encrypted) session ID was previously recorded by the server in a session object, and is an active session (step 172 ). If so, the server transfer program 22 initializes the symmetric cipher for this encrypted session ID using the session ID as the key (step 174 ), and decrypts the encrypted meta data hash supplied by the client, using this symmetric cipher (step 176 ).
  • the server transfer program 22 compares the meta data hash value that it independently calculated to the decrypted meta data hash supplied by the client (step 178 ). If they match, then the server accepts the file data or file segment data supplied in the client upload request (step 180 ). If the file data or file segment data supplied in the client upload request was encrypted by the client, then the server transfer program 22 decrypts it using the same cipher as used to encrypt the file data (step 185 ).
  • the server transfer program 22 prepares the response 181 to the client.
  • the response includes an HTTP header, meta data and an encrypted meta data hash value.
  • the meta data comprises a return code indicating whether the upload request was successful and the name of the file or file segment that was successfully received. If the server response 181 pertains to a file segment (instead of an entire file), the meta data also includes a file start/stop parameter which indicates where in the file the file segment begins and ends.
  • the hash value is encrypted using the symmetric cipher.
  • the server transfer program 22 sends the HTTP response to the client.
  • the client transfer program 12 Upon receipt of the HTTP response, the client transfer program 12 reads the meta data and independently calculates a corresponding hash value using the SHA-1, MD5 or other algorithm (step 190 ). Then, the client transfer program 12 decrypts the meta data hash value supplied in the server's HTTP response using the symmetric cypher (step 192 ), and compares the server supplied hash value to the one independently calculated by the client transfer program 12 (step 194 ). If the two hash values are the same, this authenticates the server to the client, and the client learns that the server successfully (or unsuccessfully) received the file data contained in the client's previous HTTP upload request. If the two hash values do not match, the client will re-send the file data in another HTTP upload request.
  • FIG. 3 illustrates additional processing performed by the server 20 after it has received all the data of a file (when the file data is sent in either one upload request or in multiple upload requests in segments in multiple, respective connections).
  • Server transfer program 22 independently calculates a hash value using the SHA-1, MD5 or other algorithm for all the data in the file (step 196 ).
  • server transfer program 22 compares its independently calculated hash value to the hash value supplied by the client 10 in the initial HTTP request to create the session (step 198 ). If the two hash values are the same, then the file data was transferred from the client to the server without change and is considered valid by the server. Consequently, the server can then use the data (step 200 ).
  • FIG. 4 illustrates the steps involved in the client making a download request 210 to the server, and the server responding to the download request. Both the download request 210 and the response 230 are made in a new connection but the same session initiated in FIG. 2 .
  • the download request will use the same session ID, encrypted using the server's public key.
  • the client transfer program 12 will initialize a symmetric cipher with the session ID to encrypt the meta data hash (step 204 ).
  • the client's download request 210 comprises an HTTP request header, meta data and an encrypted meta data hash value.
  • the meta data comprises a download request, the encrypted session ID, and the name of the file or file segment (“part-m”) to be downloaded.
  • the meta data hash is encrypted with the symmetric cipher.
  • the client sends the HTTP request to the server.
  • the server transfer program 22 reads the meta data from the client request and independently generates a corresponding hash value using the SHA-1, MD5 or other algorithm used by the client (step 212 ). Then, the server transfer program 22 checks from its records whether the session ID is valid and whether this session is currently active (step 214 ). If so, the server transfer program 22 initializes a symmetric cipher with this session ID (step 216 ) to decrypt the meta data hash value contained in the client download request (step 218 ). Next, the server transfer program 22 compares the decrypted meta data hash value to the meta data hash value independently generated by the server transfer program 22 (step 220 ).
  • the server transfer program 22 will process/respond to the request as follows.
  • the server transfer program 22 will fetch the requested file data or file segment data from memory or storage, and then prepare the HTTP response 230 .
  • the HTTP response comprises an HTTP response header, meta data, and the requested “receive” file data.
  • the meta data comprises a return code indicating whether the download request was successfully received, the name of the file data or file segment data that is being downloaded and an encrypted hash value for the meta data.
  • the send file contains the actual file data or file segment data that was requested. If the data is confidential or otherwise sensitive, the server transfer program 22 can encrypt the file data or file segment data and send the encrypted form to the client instead of the unencrypted form.
  • the encryption can use the same symmetric cipher with the same encryption key as used for the meta data hash, or a different symmetric cipher and/or a different encryption key.
  • the server transfer program 22 sends the HTTP response to the client.
  • the client transfer program 12 Upon receipt of the HTTP response, the client transfer program 12 reads the meta data and independently generates a corresponding hash value using the SHA-1, MD5 or other algorithm used by the server (step 240 ). Then, the client transfer program 12 decrypts the meta data hash value from the server's HTTP response (step 242 ), and compares the two meta data hash values (step 244 ). If they are the same, then the server is authentic and the client receives the actual file data or file segment data from the server HTTP response. If the file data or file segment data was encrypted, then the client transfer program 12 decrypts the file data or file segment data using the same cipher as used by the server transfer program 22 .
  • the client transfer program 12 For each file completely downloaded by the client in one or more server HTTP responses, the client transfer program 12 generates a hash value for the complete file (step 248 ), and compares it to the corresponding hash value supplied in the server's HTTP response to the start session request (step 250 ). If the two hash values match, then the client can use the data. If the two hash values do not match, then the client will discard all the file data, and begin again the foregoing process of requesting the file data.

Abstract

A system, method and program product for transferring data between a first computer and a second computer. A first request to start a session is received. An encrypted hash value in the first request is decrypted and a hash value for the information in the first request is independently determined. The independently determined hash value is compared to the decrypted hash value, and if there is match, a session with the first computer is started. Subsequently, a second request is received and the encrypted hash value in the second request is decrypted. A hash value for the information in the second request is independently determined. The independently determined hash value is compared to the decrypted hash value, and if there is match, the second computer processes a request to at least partially download or upload a file.

Description

    CROSS-REFERENCE TO RELATED APPLICATION
  • This application is a continuation of patent application Ser. No. 10/850,997, filed May 20, 2004, entitled SYSTEM, METHOD AND PROGRAM FOR PROTECTING COMMUNICATION, the entirety of which is incorporated herein by reference.
  • STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
  • n/a
  • BACKGROUND OF THE INVENTION
  • The invention relates generally to computer systems, and deals more particularly with a technique to determine if changes have been made to data during transmission, either through error or malicious activity.
  • It is well known today to transmit data across a network such as the Internet or any other, internal or external TCP/IP network. Various protocols such as File Transfer Protocol (“FTP”) and Hyper-Text Transfer Protocol (“HTTP”) can be used for the transmission. Typically, before the data is sent, the sender and receiver establish a communication session. Typically, the data is sent in a single connection, i.e. one or more requests and one or more respective responses through the same socket of both participants. However, in other environments, to speed the data transfer, the data is sent in multiple, asynchronous connections some of which are concurrent with each other. These multiple, asynchronous connections can be in the same or different session as each other and the original session. See allowed U.S. patent application entitled “Internet Backbone Bandwidth Enhancement” Ser. No. 09/644,494 filed Aug. 23, 2000 by Bauman, Escamilla and Miller, which patent application is hereby incorporated by reference as part of the present disclosure. The multiple connection mode requires a multithreaded function which can manage and coordinate the multiple connections in parallel. An IBM Download Director program currently transfers data across multiple connections in parallel using Download Director Protocol (“DDP”). The IBM Download Director program begins operation by defining a session which includes all the connections needed to authenticate the client and server to each other and transfer a file in separate segments. The IBM Download Director program is also capable of resuming a file transfer which has been terminated, so that the transmission is restarted at the point in the transfer where it terminated. The IBM Download Director program uses encryption for the transmitted files.
  • “Public/private” key encryption such as RSA is also well known. The public key (i.e. publicly known key) is used by the sender to encrypt data, and a private key known only to the recipient is used to decrypt the data which was encrypted with the public key. Thus, for each public key, the recipient has a corresponding private key used to decrypt the communication encrypted with the public key.
  • Symmetric encryption such as AES is also well known. With symmetric encryption, the same key is used for both encryption and decryption, and is kept secret by both the sender and recipient. Typically, the key is randomly generated by the sender or recipient, and sent to the other ahead of the communication. For security, the symmetric key can be sent encrypted using a public/private key encryption.
  • Neither FTP nor HTTP provides integrity checking or file protection through encryption. However, encryption has been added to both FTP and HTTP by encapsulation of the FTP files and HTTP files with a known Secure Sockets Layer (“SSL”). SSL is an encryption protocol. The secure FTP (called “FTPS”) is not yet standardized. According to FTPS, integrity checking and file protection are performed by encrypting the file data. The secure HTTP (called “HTTPS”) uses certificates to authenticate the server to the client and can also use certificates to authenticate the client to the server. HTTPS uses public/private key encryption during a handshake phase (which includes the sending of a symmetric key encrypted with a public key). HTTPS guarantees file integrity by symmetric key encryption of the entire data stream and message authentication codes (“MAC”). The MAC includes a hash of the transfer data, a sequence number, and other descriptors used in the protocol to identify the content and operations such as compression and encryption. The MAC however does not include a file name, file creation data or file size. In HTTPS, there is a hash of each block of data; a file is transmitted as one or more blocks. However, HTTPS does not have a high-performance capability (such as that of IBM Download Director Program) because it cannot manage multiple simultaneous connections. In other words, in HTTPS, all the requests and responses of one session proceed through the same connection.
  • An existing IBM Lotus Notes program encrypts data during transfer. Lotus Notes uses a S/MIME protocol to send encrypted messages. S/MIME protocol is a mail protocol that includes both a hash value and encrypted data, but does not include a session ID. S/MIME is intended for content delivery and is used as an asynchronous process. The sender identifies the recipient or recipient(s), and data encryption and hash values are created. The delivery can be at that time or at a later time. Transfer of the data is over a single connection and the content is not used in the transfer protocol.
  • “Hashing” is also well known today. Hashing is a process analogous to parity checking or cyclical redundancy checking where a function is performed on a set of bits or bytes to yield a unique “hash” value. Different algorithms can be used for hashing, such as SHA-1 and MD5. Two identical files will yield the same hash value (if they use the same hashing algorithm), and a difference in hash values indicates a difference between the two files. For example, U.S. Pat. No. 6,393,438 discloses a method and apparatus for identifying differences between two files, such as two versions of a Microsoft Windows registry file. Portions of the file are hashed to yield one four byte value per portion to provide a set of hash results. The set of hash results are combined with a four byte size of the portion of the file from which the hash was generated to produce a signature of each file. If the two files are different versions of a Windows registry file, the hash signatures of the two files will likely be different. It is also well known to hash data before transmission, hash the received data, and compare the two hash values to determine if any changes occurred to the data during transmission.
  • An object of the present invention is to expeditiously transfer data and reveal any changes that occur to the data in transit.
  • A more specific object of the present invention is to apply the foregoing technique to data transmitted during multiple connections in the same session.
  • SUMMARY OF THE INVENTION
  • One aspect of the invention resides in a method for transferring data between a first computer and a second computer. The second computer receives a first request in a first connection. The first request includes a request to start a session, an encrypted ID of the session, and an encrypted hash value for information in the first request. The information in the first request includes the request to start the session and the encrypted session ID. The encrypted hash value in the first request is decrypted, and a hash value for the information in the first request is independently determined. The independently determined hash value is compared to the decrypted hash value. If there is match, the second computer starts a session with the first computer. Subsequently, a second request from the first computer is received in a second connection in the session. The second request includes a request to download or upload data of a file, an encrypted ID of the session, an identity of the file to at least partially upload or download, and an encrypted hash value for information in the second request. The information in the second request includes the request to download or upload data, the encrypted session ID and the file identity. The encrypted hash value in the second request is decrypted and a hash value for the information in the second request is independently determined. The independently determined hash value is compared to the decrypted hash value. If there is match, the request to at least partially download or upload the file is processed.
  • In accordance with one aspect, the present invention provides a computing device for transferring data, the computing device having a means for receiving a first request in a first connection. The first request includes a request to start a session, an encrypted ID of the session, and an encrypted hash value for information in the first request. The information in the first request includes the request to start the session and the encrypted session ID. A means for decrypting decrypts the encrypted hash value in the first request, and a hash value for the information in the first request is independently determined. The independently determined hash value is compared to the decrypted hash value. If there is match, the computing device starts a session. A means for subsequently receiving a second request receives that second request in a second connection in the session. The second request includes a request to download or upload data of a file, the encrypted ID of the session, an identity of the file to at least partially upload or download, and an encrypted hash value for information in the second request. The information in the second request includes the request to download or upload data, the encrypted session ID and the file identity. The encrypted hash value in the second request is decrypted, and a hash value for the information in the second request is independently determined. The independently determined hash value is compared to the decrypted hash value. If there is match, the request to at least partially download or upload the file is processed.
  • In accordance with another aspect, the present invention provides a computer program product for transferring data between a first computer and a second computer. The computer program product includes a computer readable medium. The computer program product includes first program instructions to receive from the first computer a first request in a first connection, the first request including a request to start a session, an encrypted ID of the session, and an encrypted hash value for information in the first request. The information in the first request includes the request to start the session and the encrypted session ID. The computer program product includes second program instructions to receive the first request, and in response, decrypt the encrypted hash value in the first request, independently determine a hash value for the information in the first request and compare the independently determined hash value to the decrypted hash value, and if there is match, start a session with the first computer. The computer program product includes third program instructions to subsequently receive a second request in a second connection in the session, the second request including a request to download or upload data of a file, the encrypted ID of the session, an identity of the file to at least partially upload or download, and an encrypted hash value for information in the second request. The information in the second request includes the request to download or upload data, the encrypted session ID and the file identity. The computer program product includes
  • fourth program instructions to receive the second request in the session, and in response, decrypt the encrypted hash value in the second request, independently determine a hash value for the information in the second request and compare the independently determined hash value to the decrypted hash value, and if there is match, process the request to at least partially download or upload the file. The first, second, third and fourth program instructions are recorded on the medium.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram of a client and server which implement the present invention, and communications between the client and server.
  • FIG. 2 is a flow chart illustrating the steps involved in establishing a session between the client and server of FIG. 1.
  • FIG. 3 is a flow chart illustrating the steps involved in uploading data from the client to the server of FIG. 1 in the session established in FIG. 2.
  • FIG. 4 is a flow chart illustrating the steps involved in downloading data from the server to the client of FIG. 1 in the session established in FIG. 2. FIG. 1.
  • DETAILED DESCRIPTION OF THE INVENTION
  • The present invention will now be described in detail with reference to the figures. FIG. 1 illustrates a client 10, a server 20 and a network 22 for communication there between. By way of example, the network 22 can be the Internet, any other, internal or external TCP/IP network, or other types of networks as well. In accordance with the present invention, FIG. 1 illustrates four “connections” between the client and the server, all made in the same “session”. An initial connection 50 is for a request from the client to the server to establish the session and a response from the server indicating whether the session was successfully established. A subsequent connection 52 is for a request from the client to the server to upload data and a response from the server whether the data was successfully received. A subsequent connection 54 is for a request from the client to the server to download data and a response from the server which includes the data to be downloaded. A subsequent connection 56 is for another request from the client to the server to download data and a response from the server which includes the data to be downloaded. In the illustrated embodiment, connections 54 and 56 are used to download two segments of the same file. While not shown, there can be many more connections for the same session, for example, to transfer a lengthy file in multiple segments, one segment per connection. The multiple connections can be concurrent and asynchronous. Because of the multiple connections for uploading or downloading a single file and the associated management of these multiple connections as described below, the transfer will be expeditious. Also, if a connection fails, the file transfer can be resumed in a different connection in the same session without having to retransmit the portions of the file that were already successfully transmitted. Furthermore, if the session is interrupted by a catastrophic event such as the network failing, all successful segments will be maintained so that when a new session is created at a later date, the new session will only transfer the remaining segments.
  • In the illustrated embodiment, each of the requests and responses from the client 10 and the server 20 contains a header and meta data. The header includes prior art IP destination address or destination host name and other information such as found in a prior art HTTP header. The meta data includes a parameter indicating the nature of the request, for example, to start a session, download or upload data. The meta data for a request also specifies an encrypted session identifier (“ID”). In the illustrated embodiment, the meta data for a response does not specify the session ID, because it is made in the same connection as the request. Therefore the connection for the response is assumed to be the same as the connection for the request. The meta data for both a request and a response also describes features of the file data being or to be transferred such as file name, file size, file creation date, and a file data hash value. Each request and response also includes an encrypted meta data hash value. The client and server encrypt and decrypt the meta data hash value in messages from the other using a symmetric cypher. As described in more detail below, encryption of the meta data hash value is used to reveal changes to the meta data that occur during transmission. (In symmetric ciphering, an encryption key is supplied to the encryption function, and this one key is used for both encryption and decryption. Symmetric ciphering is also used for a user ID and password exchange.) For file data upload requests, the request also includes the actual file data. The actual file data can be encrypted if confidential. For data download responses, the response also includes the actual file data. The actual file data can be encrypted if confidential. Where encryption of the file data is needed, the encryption of the file data can be based on the symmetric cypher used for the session key or some other key or encryption method. The present invention is implemented at the client computer 10 by a client transfer program 12, and implemented at the server computer 20 by a server transfer program 22.
  • The following describes the general flow of requests and response according to one embodiment of the present invention. The client identifies a new session by a randomly generated session ID. The client then encrypts the session ID with the server's public key (acquired by the client during an earlier exchange or otherwise pre-determined)), and then sends the encrypted session ID to the server in an initial connection to create the session. If the client expects to make a subsequent file upload request, the client also furnishes a name, file size, and hash value for the entire file to be uploaded. If the client expects to make a subsequent download request, the client also furnishes a name of the file to be downloaded. When the server receives the encrypted session ID from the client and decrypts the session ID using the server's private key, the server then has the key for a symmetric cipher function. The server then initializes a symmetric cypher using the decrypted session ID as the decryption key for the symmetric cyphering. Then, the server can validate the meta data from the client by decrypting the hash value sent by the client for the meta data, independently calculating the hash value of the meta data in the request, and comparing the two hash values for the meta data. If they differ, this reveals that changes were made to the meta data sent from the client. If they are the same, then the meta data was received unchanged at the server. In response to the client request, the server generates in the same connection its own responsive communication indicating whether the session was established. This response includes meta data and an encrypted meta data hash value. The server also encrypts the meta data hash using the symmetric cypher. If the client's request specified a name of a file stored at the server, server includes in its response a file size and hash value for the entire file data. The client validates the server's meta data by independently calculating the hash value of the server's meta data and comparing it to the hash value received from the server after decryption by the client. This reveals if any changes occurred to the meta data during transmission.
  • Subsequent upload and download requests (in different connections) are made in the same session as created above, and include the same session ID (encrypted) and an encrypted meta data hash value. A file upload request includes a segment of the file when long, or the entire file when short. A server response includes an encrypted meta data hash value (and in the case of a download request, a file segment when the file is long or the entire file when the file is short). After the entire file is received by the server (in multiple connections) in the case of an upload request, the server independently generates a hash value for the complete file and compares it to the hash value sent by the client during session establishment to determine if any changes were made to the file. After the entire file is received by the client (in multiple connections) in the case of a download request, the client independently generates a hash value for the file and compares it to the hash value sent by the server during the session establishment to determine if any changes were made to the file. For both uploads and downloads, the hash value check for the complete file will reveal any changes in file data during transmission even when the file transmission is split between multiple connections. (The split can occur purposely when the file is long or inadvertently when a file transfer connection is terminated due to a failure or other reason and then the file transfer is resumed in another connection.) If a change in transmission has occurred, the recipient can discard the data and request retransmission.
  • The present invention will now be described in more detail with reference to FIGS. 2-5. FIG. 2 illustrates the establishment of the session between the client 10 and server 20 according to the present invention. To initiate a new session, the client transfer program 12 initializes a new session object (step 100). The session object contains the session ID, an indication that the session is not yet active, the identity or IP address of the server or its socket to which connection is made, and a field to track the file upload progress in the case of a subsequent upload. Then, the client transfer program creates a random session ID (step 102). Then, the client transfer program encrypts the session ID with a public key previously obtained (step 104). The encryption of the session ID can use a known RSA algorithm or other known encryption algorithm. Then, the client transfer program initializes a symmetric cipher (to encrypt a meta data hash value) with the unencrypted session ID serving as the key for the symmetric ciphering (step 106). Examples of known symmetric ciphering functions are RC4 and AES.
  • Next, the client transfer program 12 creates the actual request 110 to send to the server. In the illustrated embodiment, this request is in HTTP form. The request includes an HTTP header, meta data and an encrypted hash value for the meta data. The HTTP request header from the client specifies the server name and port to receive the client request. The meta data comprises a request to start a session, the encrypted session ID, and for each file to subsequently upload a file name, file creation date, file size and file data hash, and for each file to subsequently download a file name. (An application that called the client transfer program 12 to initiate the data transfer previously specified the file(s) to download or upload. The client transfer program 12 calculated the hash value for each complete file data to upload.) The request also includes a meta data hash value encrypted with the symmetric cipher. The client transfer program 12 determined the meta data hash value for the foregoing meta data based on the SHA-1, MD5 or other known hashing algorithm. In the illustrated embodiment, the initial request to create the session does not include the actual file data to upload.
  • In response to the start session request, the server transfer program 22 creates a session object (step 126). Then, the server transfer program 22 reads the meta data and independently generates a hash value for the meta data using the SHA-1, MD5 or other algorithm used by the client transfer program 12 (step 130). Next, the server transfer program 22 decrypts the session ID supplied with the client request, using the server's private key (step 132). The decryption is based on the same algorithm used by the client transfer program 12 in the encryption. Next, the server starts (on its side) a session with the client identified by the decrypted and encrypted session ID (step 134). To start this session on the server side, the server transfer program 22 fills-in the session object with the session ID, an indication that the session is currently active and the identity or IP address of the client or its socket to which is made. The server transfer program 22 also creates a field to track the file upload progress in the case of a subsequent upload. Next, the server transfer program 22 initializes a symmetric cipher function with the decrypted session ID serving as the decryption key (step 136), and decrypts the meta data hash value supplied in the client request using the symmetric cipher function (step 138). Then, the server transfer program 22 compares its independently calculated hash value to the decrypted hash value to determine if the client is authentic and the meta data was received without change (step 139). If the meta data hash value calculated by the server matches the meta data hash value supplied by the client, the client is authentic, the meta data was received without change and server transfer program 22 prepares a response 142 to send to the client 10.
  • The response 142 includes a header, meta data and a meta data hash value. In the illustrated embodiment, the response is in HTTP form. The HTTP response header from the server specifies the content type and length (which header parameters are needed to support HTTP proxies, but are ignored by the client). The meta data comprises a return code indicating whether the session was successfully started. For each file to subsequently upload, the meta data in the client start request includes a file name, file size, file creation date, file creation date and a file data hash value. In the case of an upload, the server transfer program 22 will assume the file meta data supplied in the client request is accurate, and update its records accordingly. For each file to subsequently download, the meta data in the client start request includes a file name, file creation date, file size and file data hash. The server transfer program 22 calculates the hash value for the complete file data to subsequently download. The file names and file creation dates in the server's response were referenced in the client request to start the session. In the case of a download request, if the server transfer program 22 cannot locate the file, the server will indicate such for this file. If any of the file meta data found by the server transfer program 22 is different than that specified by the client transfer program 12 in the client session start request, the server will return the file meta data as the server finds it, and the client will update its records accordingly. The server transfer program 22 determines a hash value for the meta data and encrypts the hash value with the symmetric cipher. Next, the server 20 sends the response to the client 10.
  • Next, the client transfer program 12 receives and processes the response from the server as follows. The client transfer program 12 reads the meta data and independently calculates a hash value using the SHA-1, MD5 or other algorithm used by the server transfer program 22 (step 150). Then, the client transfer program 12 decrypts, using the symmetrical cypher, the meta data hash value supplied with the request (step 152), and compares its independently calculated meta data hash value to the decrypted meta data hash value (step 154). If they match, then the response is considered valid, and the client transfer program 12 has confirmed that the server is authentic and that the session has begun with the server. Also, in the case of a download request, the client transfer program 12 now knows the complete and correct file meta data. The client then records that the session with the server has officially begun by making an entry in its session object.
  • Next, the client transfer program 12 can use the same session (established in FIG. 2) to create requests to upload or download file data (in other connections). As explained below, the same session ID will be used, a hash will be created for the meta data, the hash value will be encrypted before being sent, and a comparison of the hash value which is sent to the hash value independently generated by the recipient will indicate whether the communication has been changed during transmission.
  • FIG. 3 illustrates an upload request 160 by the client transfer program 12 and the response 181 by the server transfer program 22, both in a subsequent connection in the same session as created in FIG. 2. The client transfer program 12 initializes the symmetric cypher for the meta data hash, using the session ID as the encryption key (step 162). In the illustrated embodiment, the upload request 160 comprises an HTTP request header, meta data, an encrypted meta data hash value, and a “send” file. The meta data comprises an upload request, the encrypted session ID and the name of the file or file segment to be uploaded. If this request pertains to a file segment (instead of an entire file) such as to upload a segment of a file from the client to the server, the meta data also includes a file start/stop parameter which indicates where the file segment begins and ends within the file. The meta data hash value was calculated using the SHA-1, MD5 or other algorithm. The meta data hash value was encrypted using the symmetric cipher. The “send” file contains the actual data in the file or file segment to be uploaded to the server. If the file data is sensitive, the client transfer program 12 can encrypt the file data using a symmetric cipher and send the encrypted file data instead of the unencrypted file data. In one embodiment of the present invention, the same cipher function with the same encryption key (i.e. the session ID) is used to encrypt the file data. However, in other embodiments of the present invention, a different cipher algorithm and/or a different cipher key can be used to encrypt the file data. Next, the client transfer program 12 sends the HTTP request 160 to the server 20.
  • Upon receipt of the HTTP upload request 160 from the client, the server transfer program 22 reads the meta data and independently generates a corresponding hash value using the SHA-1, MD5 or other algorithm corresponding to that used by the client transfer program 12 (step 170). Then, the server transfer program 22 reads the encrypted session ID from the client transfer program 12 request, and checks if this (encrypted) session ID was previously recorded by the server in a session object, and is an active session (step 172). If so, the server transfer program 22 initializes the symmetric cipher for this encrypted session ID using the session ID as the key (step 174), and decrypts the encrypted meta data hash supplied by the client, using this symmetric cipher (step 176). Next, the server transfer program 22 compares the meta data hash value that it independently calculated to the decrypted meta data hash supplied by the client (step 178). If they match, then the server accepts the file data or file segment data supplied in the client upload request (step 180). If the file data or file segment data supplied in the client upload request was encrypted by the client, then the server transfer program 22 decrypts it using the same cipher as used to encrypt the file data (step 185).
  • Next, the server transfer program 22 prepares the response 181 to the client. The response includes an HTTP header, meta data and an encrypted meta data hash value. The meta data comprises a return code indicating whether the upload request was successful and the name of the file or file segment that was successfully received. If the server response 181 pertains to a file segment (instead of an entire file), the meta data also includes a file start/stop parameter which indicates where in the file the file segment begins and ends. The hash value is encrypted using the symmetric cipher. Next, the server transfer program 22 sends the HTTP response to the client.
  • Upon receipt of the HTTP response, the client transfer program 12 reads the meta data and independently calculates a corresponding hash value using the SHA-1, MD5 or other algorithm (step 190). Then, the client transfer program 12 decrypts the meta data hash value supplied in the server's HTTP response using the symmetric cypher (step 192), and compares the server supplied hash value to the one independently calculated by the client transfer program 12 (step 194). If the two hash values are the same, this authenticates the server to the client, and the client learns that the server successfully (or unsuccessfully) received the file data contained in the client's previous HTTP upload request. If the two hash values do not match, the client will re-send the file data in another HTTP upload request.
  • As explained above, if a file is lengthy, multiple HTTP upload requests may be required to transfer the complete file from the client to the server. In the illustrated embodiment, each pair of upload request and response are made in a separate connection, but all the upload requests and responses for this file are made in the same session as created in FIG. 2. So, the foregoing steps 162-194 are repeated for each additional upload request and response. FIG. 3 illustrates additional processing performed by the server 20 after it has received all the data of a file (when the file data is sent in either one upload request or in multiple upload requests in segments in multiple, respective connections). Server transfer program 22 independently calculates a hash value using the SHA-1, MD5 or other algorithm for all the data in the file (step 196). Then, server transfer program 22 compares its independently calculated hash value to the hash value supplied by the client 10 in the initial HTTP request to create the session (step 198). If the two hash values are the same, then the file data was transferred from the client to the server without change and is considered valid by the server. Consequently, the server can then use the data (step 200).
  • FIG. 4 illustrates the steps involved in the client making a download request 210 to the server, and the server responding to the download request. Both the download request 210 and the response 230 are made in a new connection but the same session initiated in FIG. 2. The download request will use the same session ID, encrypted using the server's public key. The client transfer program 12 will initialize a symmetric cipher with the session ID to encrypt the meta data hash (step 204). The client's download request 210 comprises an HTTP request header, meta data and an encrypted meta data hash value. The meta data comprises a download request, the encrypted session ID, and the name of the file or file segment (“part-m”) to be downloaded. The meta data hash is encrypted with the symmetric cipher. Then, the client sends the HTTP request to the server. In response, the server transfer program 22 reads the meta data from the client request and independently generates a corresponding hash value using the SHA-1, MD5 or other algorithm used by the client (step 212). Then, the server transfer program 22 checks from its records whether the session ID is valid and whether this session is currently active (step 214). If so, the server transfer program 22 initializes a symmetric cipher with this session ID (step 216) to decrypt the meta data hash value contained in the client download request (step 218). Next, the server transfer program 22 compares the decrypted meta data hash value to the meta data hash value independently generated by the server transfer program 22 (step 220). If they match, the server transfer program 22 will process/respond to the request as follows. The server transfer program 22 will fetch the requested file data or file segment data from memory or storage, and then prepare the HTTP response 230. The HTTP response comprises an HTTP response header, meta data, and the requested “receive” file data. The meta data comprises a return code indicating whether the download request was successfully received, the name of the file data or file segment data that is being downloaded and an encrypted hash value for the meta data. The send file contains the actual file data or file segment data that was requested. If the data is confidential or otherwise sensitive, the server transfer program 22 can encrypt the file data or file segment data and send the encrypted form to the client instead of the unencrypted form. The encryption can use the same symmetric cipher with the same encryption key as used for the meta data hash, or a different symmetric cipher and/or a different encryption key. Next, the server transfer program 22 sends the HTTP response to the client.
  • Upon receipt of the HTTP response, the client transfer program 12 reads the meta data and independently generates a corresponding hash value using the SHA-1, MD5 or other algorithm used by the server (step 240). Then, the client transfer program 12 decrypts the meta data hash value from the server's HTTP response (step 242), and compares the two meta data hash values (step 244). If they are the same, then the server is authentic and the client receives the actual file data or file segment data from the server HTTP response. If the file data or file segment data was encrypted, then the client transfer program 12 decrypts the file data or file segment data using the same cipher as used by the server transfer program 22. As noted above, it may require multiple download requests/responses to download a lengthy file, or the entire file may be downloaded in a single request/response if the file is short. For each file completely downloaded by the client in one or more server HTTP responses, the client transfer program 12 generates a hash value for the complete file (step 248), and compares it to the corresponding hash value supplied in the server's HTTP response to the start session request (step 250). If the two hash values match, then the client can use the data. If the two hash values do not match, then the client will discard all the file data, and begin again the foregoing process of requesting the file data.
  • Based on the foregoing, a system, method and program product for revealing errors or other changes in transmissions have been disclosed. However, numerous modifications and substitutions can be made without deviating from the scope of the present invention. For example, other encryption algorithms or hash algorithms than those mentioned can be substituted. In another example, the HTTP request header and HTTP response header can be eliminated without changing the object of the invention. The use of these headers simply enables this invention to be implemented under a “standard” protocol. Therefore, the present invention has been disclosed by way of illustration and not limitation, and reference should be made to the following claims to determine the scope of the present invention.

Claims (19)

1. A method for transferring data between a first computer and a second computer, said method comprising the steps of:
receiving from said first computer a first request in a first connection, said first request including a request to start a session, an encrypted ID of said session, and an encrypted hash value for information in said first request, said information in said first request comprising said request to start said session and said encrypted session ID;
decrypting said encrypted hash value in said first request, independently determining a hash value for said information in said first request and comparing the independently determined hash value to the decrypted hash value, and if there is match, starting the session with said first computer;
subsequently, receiving from said first computer a second request in a second connection in said session, said second request including a request to download or upload data of a file, said encrypted ID of said session, an identity of said file to at least partially upload or download, and an encrypted hash value for information in said second request, said information in said second request comprising said request to download or upload data, said encrypted session ID and said file identity; and
decrypting said encrypted hash value in said second request, independently determining a hash value for said information in said second request and comparing the independently determined hash value to the decrypted hash value, and if there is match, processing said request to at least partially download or upload said file.
2. A method as set forth in claim 1 wherein said information in said first request also comprises said identity of said file to at least partially download or upload in said second connection in said session.
3. A method as set forth in claim 2 wherein said file identified in said first request is a file to at least partially upload, and said information in said first request also comprises a hash value for said file.
4. A method as set forth in claim 1 wherein said first request also includes a hash value for a file to upload, and said second request is to upload a first segment of said file; and further comprising the steps of:
said second computer receiving from said first computer a third request to said second computer in a third connection, said third request including a request to upload another segment of said file in said session, said encrypted ID of said session, an identity of said other segment of said file, and an encrypted hash value for information in said third request, said information in said third request comprising said request to upload said other segment of said file, said encrypted session ID, and said identity of said file;
said second computer decrypting said encrypted hash value in said third request, independently determining a hash value for said information in said third request and comparing the independently determined hash value to the decrypted hash value, and if there is match, processing said third request to upload said other file segment; and
if said other segment completes the upload of said file, said second computer independently determining a hash value for said file and comparing said independently determined hash value to the hash value received by said second computer for said file, and if they match, processing said file.
5. A method as set forth in claim 1 wherein said first request also includes a hash value for a file to upload, and said second request is to upload said file and contains said file; and further comprising the steps of:
independently determining a hash value for said file and comparing said independently determined hash value to the hash value received by said second computer for said file, and if they match, processing said file.
6. A method as set forth in claim 1 wherein said second request is to download a portion or all of said file, and wherein said second computer processes said second request by responding to said first computer with a response comprising the requested portion or all of said file, information about the requested portion or all of said file and an encrypted hash value for said information, said information comprising a name of said file and/or file portion.
7. A method as set forth in claim 1 wherein said second request is to upload said file or a first segment of said file and contains said file or first segment in encrypted form.
8. A method as set forth in claim 7 wherein said first request also includes a hash value for said file or first segment.
9. A method as set forth in claim 1 wherein the step of starting a session with said first computer comprises the step of sending a response to said first computer in said first connection, said response including an encrypted hash value for information in said response.
10. A computing device for transferring data, said computing device comprising:
means for:
receiving a first request in a first connection, said first request including a request to start a session, an encrypted ID of said session, and an encrypted hash value for information in said first request, said information in said first request comprising said request to start said session and said encrypted session ID;
decrypting said encrypted hash value in said first request, independently determining a hash value for said information in said first request and comparing the independently determined hash value to the decrypted hash value, and if there is match, starting a session;
subsequently receiving a second request in a second connection in said session, said second request including a request to download or upload data of a file, said encrypted ID of said session, an identity of said file to at least partially upload or download, and an encrypted hash value for information in said second request, said information in said second request comprising said request to download or upload data, said encrypted session ID and said file identity; and
receiving said second request in said session, and in response, decrypting said encrypted hash value in said second request, independently determining a hash value for said information in said second request and comparing the independently determined hash value to the decrypted hash value, and if there is match, processing said request to at least partially download or upload said file.
11. A computing device as set forth in claim 10 wherein said information in said first request also comprises said identity of said file to at least partially download or upload in said second connection in said session.
12. A computing device as set forth in claim 11 wherein said file identified in said first request is a file to at least partially upload, and said information in said first request also comprises a hash value for said file.
13. A computing device as set forth in claim 10 wherein said first request also includes a hash value for a file to upload; said second request is to upload said file and contains said file; and said processor includes means for independently determining a hash value for said file and comparing said independently determined hash value to the hash value sent by said first computer for said file, and if they match, processing said file.
14. A computing device as set forth in claim 10 wherein:
said second request is to download a portion or all of said file, and wherein said processor processes said second request by responding with a response comprising the requested portion or all of said file, information about the requested portion or all of said file and an encrypted hash value for said information, said information comprising a name of said file and/or file portion.
15. A computer program product for transferring data between a first computer and a second computer, said computer program product comprising:
a computer readable medium;
first program instructions to receive from said first computer a first request in a first connection, said first request including a request to start a session, an encrypted ID of said session, and an encrypted hash value for information in said first request, said information in said first request comprising said request to start said session and said encrypted session ID;
second program instructions to receive said first request, and in response, decrypt said encrypted hash value in said first request, independently determine a hash value for said information in said first request and compare the independently determined hash value to the decrypted hash value, and if there is match, start a session with said first computer;
third program instructions to subsequently receive a second request in a second connection in said session, said second request including a request to download or upload data of a file, said encrypted ID of said session, an identity of said file to at least partially upload or download, and an encrypted hash value for information in said second request, said information in said second request comprising said request to download or upload data, said encrypted session ID and said file identity; and
fourth program instructions to receive said second request in said session, and in response, decrypt said encrypted hash value in said second request, independently determine a hash value for said information in said second request and compare the independently determined hash value to the decrypted hash value, and if there is match, process said request to at least partially download or upload said file; and wherein
said first, second, third and fourth program instructions are recorded on said medium.
16. A computer program product as set forth in claim 15 wherein said information in said first request also comprises said identity of said file to at least partially download or upload in said second connection in said session.
17. A computer program product as set forth in claim 16 wherein said file identified in said first request is a file to at least partially upload, and said information in said first request also comprises a hash value for said file.
18. A computer program product as set forth in claim 15 wherein said first request also includes a hash value for a file to upload; said second request is to upload said file and contains said file; and further comprising fifth program instructions to independently determine a hash value for said file and compare said independently determined hash value to the hash value sent by said first computer for said file, and if they match, process said file; and wherein said fifth program instructions are recorded on said medium.
19. A computer program product as set forth in claim 18 wherein:
said second request is to download a portion or all of said file, and wherein said fourth program instructions process said second request by responding to said first computer with a response comprising the requested portion or all of said file, information about the requested portion or all of said file and an encrypted hash value for said information, said information comprising a name of said file and/or file portion.
US12/331,700 2004-05-20 2008-12-10 System, method and program for protecting communication Abandoned US20090089574A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/331,700 US20090089574A1 (en) 2004-05-20 2008-12-10 System, method and program for protecting communication

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/850,997 US7487353B2 (en) 2004-05-20 2004-05-20 System, method and program for protecting communication
US12/331,700 US20090089574A1 (en) 2004-05-20 2008-12-10 System, method and program for protecting communication

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/850,997 Continuation US7487353B2 (en) 2004-05-20 2004-05-20 System, method and program for protecting communication

Publications (1)

Publication Number Publication Date
US20090089574A1 true US20090089574A1 (en) 2009-04-02

Family

ID=35450306

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/850,997 Active 2026-05-06 US7487353B2 (en) 2004-05-20 2004-05-20 System, method and program for protecting communication
US12/331,700 Abandoned US20090089574A1 (en) 2004-05-20 2008-12-10 System, method and program for protecting communication

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/850,997 Active 2026-05-06 US7487353B2 (en) 2004-05-20 2004-05-20 System, method and program for protecting communication

Country Status (2)

Country Link
US (2) US7487353B2 (en)
CN (1) CN100581097C (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080263213A1 (en) * 2007-04-19 2008-10-23 Masafumi Kinoshita Communication device and client device
US20090327737A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Techniques for ensuring authentication and integrity of communications
US20110283367A1 (en) * 2010-05-13 2011-11-17 International Business Machines Corporation Securing a communication protocol against attacks
US20120291129A1 (en) * 2011-05-13 2012-11-15 Amichai Shulman Detecting web browser based attacks using browser digest compute tests launched from a remote source
US20130246507A1 (en) * 2012-03-19 2013-09-19 Fujitsu Limited Relay device, information processing system, and computer-readable recording medium
US20150237146A1 (en) * 2011-08-29 2015-08-20 Vmware, Inc. Permanent connection oriented communication using parallel single connection circuits

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0411560D0 (en) * 2004-05-24 2004-06-23 Protx Group Ltd A method of encrypting and transferring data between a sender and a receiver using a network
FR2871012B1 (en) * 2004-05-28 2006-08-11 Sagem METHOD FOR LOADING FILES FROM A CLIENT TO A TARGET SERVER AND DEVICE FOR IMPLEMENTING THE METHOD
WO2006012058A1 (en) * 2004-06-28 2006-02-02 Japan Communications, Inc. Systems and methods for mutual authentication of network
US7725716B2 (en) * 2004-06-28 2010-05-25 Japan Communications, Inc. Methods and systems for encrypting, transmitting, and storing electronic information and files
KR100684308B1 (en) * 2004-08-25 2007-02-16 한국전자통신연구원 A terminal apparatus for wireless connection and a wireless connection administration method using the same
US7992193B2 (en) * 2005-03-17 2011-08-02 Cisco Technology, Inc. Method and apparatus to secure AAA protocol messages
US20060259759A1 (en) * 2005-05-16 2006-11-16 Fabio Maino Method and apparatus for securely extending a protected network through secure intermediation of AAA information
US20060265371A1 (en) * 2005-05-20 2006-11-23 Andrew Edmond Grid network for distribution of files
US9497172B2 (en) 2005-05-23 2016-11-15 Litera Corp. Method of encrypting and transferring data between a sender and a receiver using a network
US8332526B2 (en) * 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
US8355701B2 (en) * 2005-11-30 2013-01-15 Research In Motion Limited Display of secure messages on a mobile communication device
US20070136812A1 (en) * 2005-12-12 2007-06-14 Dr. Hong Yu Computer Virus Preventive System
US8032745B2 (en) 2005-12-20 2011-10-04 International Business Machines Corporation Authentication of I2C bus transactions
US20070269041A1 (en) * 2005-12-22 2007-11-22 Rajat Bhatnagar Method and apparatus for secure messaging
US7865730B2 (en) * 2006-01-30 2011-01-04 Kronos Technology Systems Limited Partnership Bcencryption (BCE)—a public-key based method to encrypt a data stream
US7949641B1 (en) * 2006-02-15 2011-05-24 Crimson Corporation Systems and methods for validating a portion of a file that is downloaded from another computer system
US8185751B2 (en) * 2006-06-27 2012-05-22 Emc Corporation Achieving strong cryptographic correlation between higher level semantic units and lower level components in a secure data storage system
WO2008028508A1 (en) * 2006-09-07 2008-03-13 Fujitsu Limited Distributed computing and communications protocol
US7606795B2 (en) * 2007-02-08 2009-10-20 International Business Machines Corporation System and method for verifying the integrity and completeness of records
US20100293379A1 (en) * 2007-05-31 2010-11-18 Beijing Transpacific Ip Technology Development Ltd method for secure data transmission in wireless sensor network
US9521186B2 (en) 2007-09-13 2016-12-13 International Business Machines Corporation Method and system for file transfer over a messaging infrastructure
US8392591B2 (en) * 2007-12-28 2013-03-05 Cellspinsoft Inc. Automatic multimedia upload for publishing data and multimedia content
US20090196425A1 (en) * 2008-02-06 2009-08-06 Dean Boland Method for Authenticating Electronically Stored Information
US8538889B2 (en) * 2008-06-25 2013-09-17 Microsoft Corporation Application hierarchy and state manipulation
US8127020B2 (en) * 2008-08-28 2012-02-28 Red Hat, Inc. HTTP standby connection
US20100179980A1 (en) * 2009-01-14 2010-07-15 Movidilo S.L. Cache system for mobile communications devices
US7990976B2 (en) * 2009-05-13 2011-08-02 Telefonaktiebolaget L M Ericsson (Publ) Negotiated secure fast table lookups for protocols with bidirectional identifiers
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US9444620B1 (en) * 2010-06-24 2016-09-13 F5 Networks, Inc. Methods for binding a session identifier to machine-specific identifiers and systems thereof
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
TWI569614B (en) 2011-08-30 2017-02-01 萬國商業機器公司 Method, appliance, and computer readable medium for processing a session in network communications
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US9215225B2 (en) 2013-03-29 2015-12-15 Citrix Systems, Inc. Mobile device locking with context
US20140032733A1 (en) 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US8799994B2 (en) 2011-10-11 2014-08-05 Citrix Systems, Inc. Policy-based application management
US9143530B2 (en) 2011-10-11 2015-09-22 Citrix Systems, Inc. Secure container for protecting enterprise data on a mobile device
US8881229B2 (en) 2011-10-11 2014-11-04 Citrix Systems, Inc. Policy-based application management
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
CN103049448B (en) * 2011-10-13 2017-03-22 腾讯科技(深圳)有限公司 File management method and file management system
WO2013158066A1 (en) * 2012-04-16 2013-10-24 Hewlett-Packard Development Company, L.P. File upload based on hash value comparison
US9014183B2 (en) * 2012-05-24 2015-04-21 Apple Inc. Buffer transfer service
US20130336295A1 (en) * 2012-06-19 2013-12-19 Esmael Hejazi Dinan Packet Transmission in Wireless Networks
US8707454B1 (en) 2012-07-16 2014-04-22 Wickr Inc. Multi party messaging
US8984582B2 (en) 2012-08-14 2015-03-17 Confidela Ltd. System and method for secure synchronization of data across multiple computing devices
CN102833253B (en) * 2012-08-29 2015-09-16 五八同城信息技术有限公司 Set up method and server that client is connected with server security
US8613070B1 (en) * 2012-10-12 2013-12-17 Citrix Systems, Inc. Single sign-on access in an orchestration framework for connected devices
US9774658B2 (en) 2012-10-12 2017-09-26 Citrix Systems, Inc. Orchestration framework for connected devices
US9516022B2 (en) 2012-10-14 2016-12-06 Getgo, Inc. Automated meeting room
US20140109176A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US20140109171A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Providing Virtualized Private Network tunnels
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US20140108793A1 (en) 2012-10-16 2014-04-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
WO2014062804A1 (en) 2012-10-16 2014-04-24 Citrix Systems, Inc. Application wrapping for application management framework
US9606774B2 (en) 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US8849979B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing mobile device management functionalities
US9355223B2 (en) 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US20140297840A1 (en) 2013-03-29 2014-10-02 Citrix Systems, Inc. Providing mobile device management functionalities
US8849978B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing an enterprise application store
US8813179B1 (en) 2013-03-29 2014-08-19 Citrix Systems, Inc. Providing mobile device management functionalities
US10129260B1 (en) 2013-06-25 2018-11-13 Wickr Inc. Mutual privacy management
US10567349B2 (en) 2013-06-25 2020-02-18 Wickr Inc. Secure time-to-live
US9866591B1 (en) 2013-06-25 2018-01-09 Wickr Inc. Enterprise messaging platform
US9830089B1 (en) 2013-06-25 2017-11-28 Wickr Inc. Digital data sanitization
US10776325B2 (en) * 2013-11-26 2020-09-15 Ab Initio Technology Llc Parallel access to data in a distributed file system
US9698976B1 (en) 2014-02-24 2017-07-04 Wickr Inc. Key management and dynamic perfect forward secrecy
US9596281B2 (en) * 2014-03-18 2017-03-14 Qualcomm Incorporated Transport accelerator implementing request manager and connection manager functionality
US9596323B2 (en) * 2014-03-18 2017-03-14 Qualcomm Incorporated Transport accelerator implementing client side transmission functionality
US9584530B1 (en) 2014-06-27 2017-02-28 Wickr Inc. In-band identity verification and man-in-the-middle defense
US10171532B2 (en) 2014-09-30 2019-01-01 Citrix Systems, Inc. Methods and systems for detection and classification of multimedia content in secured transactions
US9654288B1 (en) 2014-12-11 2017-05-16 Wickr Inc. Securing group communications
US10146752B2 (en) 2014-12-31 2018-12-04 Quantum Metric, LLC Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
US9756106B2 (en) 2015-02-13 2017-09-05 Citrix Systems, Inc. Methods and systems for estimating quality of experience (QoE) parameters of secured transactions
US10021221B2 (en) * 2015-02-24 2018-07-10 Citrix Systems, Inc. Methods and systems for detection and classification of multimedia content in secured transactions using pattern matching
EP3286897B1 (en) * 2015-04-24 2020-09-09 VID SCALE, Inc. Detecting man-in-the-middle attacks in adaptive streaming
US9774572B2 (en) * 2015-05-11 2017-09-26 Salesforce.Com, Inc. Obfuscation of references to network resources
WO2017011829A1 (en) * 2015-07-16 2017-01-19 Quantum Metric, LLC Document capture using client-based delta encoding with server
US9584493B1 (en) 2015-12-18 2017-02-28 Wickr Inc. Decentralized authoritative messaging
GB2546800B (en) * 2016-01-29 2020-08-05 Tectonic Interactive Ltd System and method for managing communication sessions between clients and a server
US10291607B1 (en) 2016-02-02 2019-05-14 Wickr Inc. Providing real-time events to applications
US9591479B1 (en) 2016-04-14 2017-03-07 Wickr Inc. Secure telecommunications
US9602477B1 (en) 2016-04-14 2017-03-21 Wickr Inc. Secure file transfer
CN106302661B (en) * 2016-08-02 2019-08-13 网宿科技股份有限公司 P2P data accelerated method, device and system
US11032254B2 (en) 2016-09-06 2021-06-08 Red Hat, Inc. Binding data to a network in the presence of an entity
US10129025B2 (en) 2016-09-19 2018-11-13 Red Hat, Inc. Binding data to a network in the presence of an entity with revocation capabilities
CN106656481B (en) * 2016-10-28 2019-08-30 美的智慧家居科技有限公司 Identity identifying method, device and system
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
CN109995745B (en) * 2017-12-31 2023-02-24 国民技术股份有限公司 Information matching method, terminal and computer readable storage medium
US11064010B2 (en) * 2018-03-30 2021-07-13 Microsoft Technology Licensing, Llc Download progress information for composite files
US11283789B2 (en) * 2020-02-13 2022-03-22 Oracle International Corporation Single sign-on techniques using client side encryption and decryption
JP7445135B2 (en) * 2020-08-27 2024-03-07 富士通株式会社 Communication program, communication device, communication method, and communication system
CN112822152B (en) * 2020-11-09 2023-07-04 腾讯科技(上海)有限公司 Directional information display processing method and related equipment
CN115334073B (en) * 2022-10-13 2023-01-24 中国电子科技集团公司第十五研究所 Method and system for deeply pulling remote file

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694569A (en) * 1993-11-19 1997-12-02 Fischer; Addison M. Method for protecting a volatile file using a single hash
US6058399A (en) * 1997-08-28 2000-05-02 Colordesk, Ltd. File upload synchronization
US6393438B1 (en) * 1998-06-19 2002-05-21 Serena Software International, Inc. Method and apparatus for identifying the existence of differences between two files
US20020104022A1 (en) * 2001-01-30 2002-08-01 Jorgenson Daniel Scott Secure routable file upload/download across the internet
US6449613B1 (en) * 1999-12-23 2002-09-10 Bull Hn Information Systems Inc. Method and data processing system for hashing database record keys in a discontinuous hash table
US20030028768A1 (en) * 2001-08-01 2003-02-06 Leon Lorenzo De Inter-enterprise, single sign-on technique

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694569A (en) * 1993-11-19 1997-12-02 Fischer; Addison M. Method for protecting a volatile file using a single hash
US6058399A (en) * 1997-08-28 2000-05-02 Colordesk, Ltd. File upload synchronization
US6393438B1 (en) * 1998-06-19 2002-05-21 Serena Software International, Inc. Method and apparatus for identifying the existence of differences between two files
US6449613B1 (en) * 1999-12-23 2002-09-10 Bull Hn Information Systems Inc. Method and data processing system for hashing database record keys in a discontinuous hash table
US20020104022A1 (en) * 2001-01-30 2002-08-01 Jorgenson Daniel Scott Secure routable file upload/download across the internet
US20030028768A1 (en) * 2001-08-01 2003-02-06 Leon Lorenzo De Inter-enterprise, single sign-on technique

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080263213A1 (en) * 2007-04-19 2008-10-23 Masafumi Kinoshita Communication device and client device
US8935528B2 (en) * 2008-06-26 2015-01-13 Microsoft Corporation Techniques for ensuring authentication and integrity of communications
US20090327737A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Techniques for ensuring authentication and integrity of communications
US20110283367A1 (en) * 2010-05-13 2011-11-17 International Business Machines Corporation Securing a communication protocol against attacks
US8424106B2 (en) * 2010-05-13 2013-04-16 International Business Machines Corporation Securing a communication protocol against attacks
US20120291129A1 (en) * 2011-05-13 2012-11-15 Amichai Shulman Detecting web browser based attacks using browser digest compute tests launched from a remote source
US8752208B2 (en) * 2011-05-13 2014-06-10 Imperva Inc. Detecting web browser based attacks using browser digest compute tests launched from a remote source
US8869279B2 (en) 2011-05-13 2014-10-21 Imperva, Inc. Detecting web browser based attacks using browser response comparison tests launched from a remote source
US8904558B2 (en) 2011-05-13 2014-12-02 Imperva, Inc. Detecting web browser based attacks using browser digest compute tests using digest code provided by a remote source
US20150237146A1 (en) * 2011-08-29 2015-08-20 Vmware, Inc. Permanent connection oriented communication using parallel single connection circuits
US9614916B2 (en) * 2011-08-29 2017-04-04 Vmware, Inc. Permanent connection oriented communication using parallel single connection circuits
US20130246507A1 (en) * 2012-03-19 2013-09-19 Fujitsu Limited Relay device, information processing system, and computer-readable recording medium
US8984055B2 (en) * 2012-03-19 2015-03-17 Fujitsu Limited Relay device, information processing system, and computer-readable recording medium

Also Published As

Publication number Publication date
US7487353B2 (en) 2009-02-03
US20050273592A1 (en) 2005-12-08
CN100581097C (en) 2010-01-13
CN1700634A (en) 2005-11-23

Similar Documents

Publication Publication Date Title
US7487353B2 (en) System, method and program for protecting communication
Thomson et al. Using TLS to secure QUIC
US9590954B2 (en) Transferring encrypted and unencrypted data between processing devices
CN109474606B (en) File transmission method and device, computer equipment and storage medium
US11128477B2 (en) Electronic certification system
US20190222583A1 (en) Signed envelope encryption
Aboba et al. Ppp eap tls authentication protocol
US7584505B2 (en) Inspected secure communication protocol
US7392390B2 (en) Method and system for binding kerberos-style authenticators to single clients
US8984268B2 (en) Encrypted record transmission
US8458455B2 (en) Techniques for handling SSL certificate expiration and renewal
US8543816B2 (en) Secure, auditable file exchange system and method
JP4770227B2 (en) SIP message encryption method and encrypted SIP communication system
US7979707B2 (en) Secure seed generation protocol
US20070162518A1 (en) Method for Transmitting SyncML Synchronization Data
EP2086162A1 (en) System, device, method and program for authenticating communication partner by means of electronic certificate including personal information
US20050120203A1 (en) Methods, systems and computer program products for automatic rekeying in an authentication environment
US10824744B2 (en) Secure client-server communication
US20110107104A1 (en) METHOD, SYSTEM, AND DEVICE FOR NEGOTIATING SA ON IPv6 NETWORK
JP2004515117A (en) Encrypted data security system and method
CN111447276B (en) Encryption continuous transmission method with key agreement function
US7240202B1 (en) Security context sharing
US8117450B2 (en) System and method for secure data transmission
CN108040071B (en) Dynamic switching method for VoIP audio and video encryption key
US20060031680A1 (en) System and method for controlling access to a computerized entity

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION

AS Assignment

Owner name: KYNDRYL, INC., NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:058213/0912

Effective date: 20211118