在两计算机间传输数据的系统和方法

文档序号:7616381阅读:214来源:国知局
专利名称:在两计算机间传输数据的系统和方法
技术领域
本发明总体上涉及计算机系统,特别是涉及一种用于确定数据传输过程中是否因错误或恶意行为而造成变化的技术。
背景技术
目前众所周知,可通过网络如因特网或任何其他内部或外部TCP/IP网络进行数据传输。有多种协议,包括文件传输协议(FTP)以及超文本传输协议(HTTP)可供传输使用。通常,在发送数据前,发送者和接收者之间需建立通信会话。通常,数据在单个连接中发送,即通过发送者和接收者双方的同一个套接字发送一个或多个请求以及一个或多个相应的响应。但在其他环境中,为了提高数据传输的速度,数据是在多个、异步连接中传输的,其中有些连接是相互并发的。这些多个异步连接可以相互地和与原始会话相比处于相同或不同的会话中。参阅已授权的标题为“Internet Backbone Bandwidth Enhancement”(因特网主干带宽提升)的美国专利申请,序列号为09/644,494,由Bauman、Escamilla和Miller于2000年8月23日申请,该专利申请在此作为参考并入,作为本公开的一部分。多连接模式需要可以并行地管理并协调多个连接的多线程功能。IBM下载控制器(IBM Download Director)程序目前可使用下载控制协议(DDP)并行地通过多个连接来传输数据。IBM下载控制器程序通过定义包括所有为相互验证客户机和服务器以及在不同的段中传输文件所需的连接的会话,而开始运行。该程序还能够恢复已中止的文件传输,使传输从传输中止的位置重新开始。IBM下载控制器程序对传输的文件采取加密措施。
“公开/私有”密钥如RAS也广为人知。公开密钥(如为公众所知的密钥)被发送者使用来加密数据,而仅为接收者所知的私有密钥被用来解密经公开密钥加密的数据。因此,对每个公开密钥来说,接收者都有相对应的私有密钥,用来解密公开密钥加密的通信。
对称加密如AES也是广为人知的。使用对称加密,同一密钥同时用来加密和解密,且为发送者和接收者两者所保密。通常,密钥由发送者或接收者随机生成,并在通信之前发送给另一方。为安全起见,对称密钥可利用公开/私有密钥加密法加密后发送。
FTP和HTTP均不通过加密来提供完整性检查或文件保护。然而,通过使用已知的安全套接字层(SSL)来封装FTP文件和HTTP文件,已为FTP和HTTP两者增加了加密功能。SSL是一种加密协议。安全FTP(称为FTPS)还没有实现标准化。根据FTPS,完整性检查和文件保护是通过加密文件数据执行的。安全HTTP(称为HTTPS)使用证书来向客户机验证服务器,以及也可以使用证书来向服务器验证客户机。HTTPS在握手阶段(包括发送以公开密钥加密的对称密钥)使用公开/私有密钥加密。HTTPS通过对全部数据流以及消息验证代码(MAC)的对称密钥加密,来保证文件的完整性。MAC包括传输数据的一散列值、一序列号以及其他在协议中用以确认内容和操作例如压缩和加密的描述符。但MAC并不包括文件名、文件创建数据或文件大小。在HTTPS中,有每个数据块的散列值;文件作为一个或多个块进行传输。然而,由于HTTPS不能管理多个同时的连接,因此HTTPS没有高性能的能力(如IBM下载控制器程序所具备的高性能能力)。也就是说,在HTTPS中,一个会话的所有请求和响应都是通过相同的连接进行的。
现有的IBM Lotus Notes程序在传输过程中对数据加密。Lotus Notes采用S/MIME协议发送加密消息。S/MIME协议是一个邮件协议,其包括散列值和加密的数据,但不包括会话ID。S/MIME旨在用于内容分发,并作为一个异步过程来使用。发送者标识一个或多个接收者,并创建数据加密和散列值。可以在当时分发内容,也可以以后分发。数据传输是在单个连接中实现的,而且内容不在该传输协议中使用。
“散列法”如今也广为人知。散列法是一种类似奇偶校正检验或循环冗余校验的过程,其中在一组位数或字节上执行一函数来创建唯一的“散列”值。可采用不同的算法,如SHA-1和5,来进行散列。两个相同的文件将会生成相同的散列值(如果它们采用了相同的散列算法),而散列值不同表示两个文件存在差异。例如,美国专利6,393,438披露了一种方法和装置,用以确定两个文件例如两个不同版本的Microsoft Windows注册表文件之间的差别。将文件的各部分进行散列,每一部分生成一个四字节的值,来提供一组散列结果。把该组散列结果与散列值从中生成的每个文件部分的一个四字节大小组合起来,形成每个文件的签名。如果两个文件是不同版本的Windows注册表文件,则两个文件的散列签名很可能不同。也广为人知的是,传输前对数据进行散列,对被接收的数据进行散列,并比较两个散列值来确定数据是否在传输过程中发生了任何变化。
本发明的一个目标是快速地传输数据并揭示传输过程中数据发生的任何变化。
本发明的一个更为具体的目标就是将前述技术应用于在同一会话中的多个连接中传输的数据。

发明内容
本发明是一种用于在第一个计算机和第二个计算机之间传输数据的方法。第一个计算机在第一个连接中向第二个计算机发送第一个请求。第一个请求包括启动会话的请求,加密的该会话的ID以及第一个请求中的信息的加密的散列值。第一个请求中的信息包括启动会话的请求和加密的会话ID。第二个计算机接收第一个请求,并作为结果,解密第一个请求中的加密的散列值,独立地为第一个请求中的信息确定一个散列值,并将独立确定的散列值和解密的散列值相比较。如果存在匹配,则第二个计算机开始与第一个计算机的会话。随后第一个计算机通过会话中的第二个连接向第二个计算机发送第二个请求。第二个请求包括一个下载或上载文件的数据的请求、加密的会话ID、至少要部分地上载或下载的文件的标识以及第二个请求中的信息的一加密的散列值。第二个请求中的信息包括下载或上载数据的请求、加密的会话ID以及文件标识。第二个计算机在该会话中接收第二个请求,并作为结果,解密第二个请求中的加密的散列值,独立地为第二个请求中的信息确定一个散列值,将独立确定的散列值和解密的散列值相比较。如存在匹配,则第二个计算机处理至少部分的下载或上载文件的该请求。
按照本发明的一个特征,第一个请求也包括待上载的文件的一个散列值,而第二个请求用来上载文件或文件的一部分并包括该文件或文件部分。文件全部接收完毕后,不论是在单个传输还是多个传输中接收的,第二个计算机独立地为文件确定一个散列值,并将独立确定的散列值和第一个计算机所发送的文件散列值比较。如它们匹配,则第二个计算机开始处理文件。
按照本发明的另一个特征,第二个请求用来下载部分或全部文件。第二个计算机以这样的方式处理第二个请求,即对第一个计算机做出响应,响应中包括所请求的部分或全部文件、有关所请求的部分或全部文件的信息以及该信息的加密的散列值。该信息包括文件和/或文件部分的名称。第一个计算机接收来自第二个计算机的响应,并作为结果,解密来自第二个计算机的响应中的加密的散列值,独立地为来自第二个计算机的响应中的信息确定一个散列值,将独立确定的散列值和来自第二个计算机的响应中的解密的散列值相比较。如果存在匹配,则第一个计算机处理所请求的部分或全部文件。


图1是一个实施本发明的客户机和服务器及其二者之间的通信的方框图。
图2是一个流程图,说明在图1中的客户机和服务器之间建立会话所涉及的步骤。
图3是一个流程图,说明在图2建立的会话中把数据从图1中的客户机上载到服务器所涉及的步骤。
图4是一个流程图,说明在图2建立的会话中把数据从图1中的服务器下载到客户机所涉及的步骤。
具体实施例方式
现在参考附图对本发明进行详细描述。图1描述了客户机10、服务器20以及用于二者之间的通信的网络22。作为示例,网络22可以是因特网、任何其他内部或外部TCP/IP网络、或其他类型的网络。按照本发明,图1描述了客户机和服务器之间的4个“连接”,所有连接都是在同一个“会话”中做出的。初步连接50是用于一个从客户机到服务器的建立会话的请求,以及来自服务器的指明会话是否成功建立的响应。随后的连接52是用于一个从客户机到服务器的上载数据的请求,以及来自服务器的指明是否成功收到数据的响应。随后的连接54是用于一个从客户机到服务器的下载数据的请求,以及来自服务器的包括要被下载的数据的响应。随后的连接56是用于另一个从客户机到服务器的下载数据的请求,以及来自服务器的包括将要被下载的数据的响应。在所说明的实施例中,连接54和56被用来下载同一文件的两个部分。尽管图中没有说明,同一会话可能有许多其他的连接,例如把一个很长的文件分成多个部分进行传输,每个连接一部分。多个连接可以是并发的和异步的。由于上载或下载单个文件时采取多个连接以及下面所描述的对这些多个连接的管理,传输将会是迅速的。此外,如果一个连接失败,文件传输可以在同一会话中的不同的连接中恢复,而不必重新传输已经成功传输的文件部分。而且,如果会话由于诸如网络失败等灾难事件中断,所有已被成功传输的部分将会被保存下来,这样以后创建新的会话后,新的会话将只传输剩余的部分。
在所说明的实施例中,来自客户机10和服务器20的每个请求和响应都包含了报头和元数据。报头包括现有技术的IP目标地址或者目标主机名称以及现有技术的HTTP报头存在的其他信息。元数据包括一个说明请求的性质例如启动会话、下载或上载数据等的参数。请求的元数据也指定了一个加密的会话标识符(ID)。在所说明的实施例中,一个响应的元数据不指定会话ID,这是因为该响应是在与请求相同的连接中做出的。因此针对响应的连接被假设为与针对请求的连接是相同的。请求和响应的元数据也都描述了正在传输的或即将被传输的文件数据的特征,如文件名、文件大小、文件创建日期以及文件数据的散列值。每个请求和响应也都包括一个加密的元数据散列值。客户机和服务器使用对称密码对来自对方的消息中的元数据散列值进行加密和解密。如下更详细描述的,元数据散列值的加密用来揭示传输过程中发生的元数据的改变。(在对称密码术中,加密密钥被提供给加密函数,并且该密钥同时用来加密和解密。对称密码术也用于用户ID和口令的交换。)对于文件数据上载请求来说,请求也包括实际文件数据。如属机密,实际文件数据可被加密。对数据下载响应而言,响应也包括实际文件数据。如属机密,实际文件数据可被加密。需要对文件数据加密时,文件数据的加密可以基于用于所述会话密钥的对称密码或某种其他密钥或加密方法。本发明在客户机计算机10上是由客户传输程序12实施的,以及在服务器计算机20上是由服务器传输程序22实施的。
下面描述了按照本发明的一个实施例的请求和响应的一般流程。客户机通过随机生成的会话ID标识新的会话。然后客户机使用服务器的公开密钥(客户机在先前的交换中获知该密钥,或者是预先确定的)加密该会话ID,之后在创建会话的初始连接中把加密的会话ID发送到服务器。如果客户机期望做出一个随后的文件上载请求,则客户机也提供待上载的整个文件的文件名、文件大小以及散列值。如果客户机期望做出一个随后的下载请求,则客户机也提供待下载的文件的文件名。当服务器收到来自客户机的加密会话ID并使用服务器的私有密钥解密该会话ID后,则服务器就拥有了用于对称密码函数的密钥。接着服务器使用解密的会话ID作为用于对称密码术的解密密钥,来初始化对称密码。之后,服务器可通过解密由客户机发送的对于元数据的散列值,独立地计算请求中的元数据的散列值,并将两个散列值相比较,来验证元数据。如果它们不同,则说明从客户机发送的元数据发生了变化。如果它们相同,则元数据在服务器处被完好接收。响应于客户机请求,服务器在同一连接中生成其自己的响应通信,表明会话是否已经建立。该响应包含元数据和加密的元数据散列值。服务器也使用该对称密码对元数据进行加密。如果客户机的请求指定了存储在服务器上某文件的文件名,则服务器在其响应中包括文件大小以及整份文件数据的散列值。客户机通过独立计算服务器的元数据的散列值并将其与来自服务器的经客户机解密的散列值相比较,来对服务器的元数据进行验证。这揭示了元数据在传输过程过是否发生了变化。
然后在如上所述创建的同一会话中做出上载和下载请求(在不同的连接中),该上载和下载请求包括同一会话ID(经加密)和一个加密的元数据散列值。如文件很长,则文件上载请求包括该文件的一部分,如文件较短,则文件上载请求包括整份文件。服务器的响应包括一个加密的元数据散列值(如为下载请求,则文件较长时为文件的一部分,文件较短时则为整份文件)。在上载请求的情况中,当整份文件被服务器接收后(在多个连接中),服务器独立地为完整的文件生成一个散列值,并将其与会话建立过程中客户机发送的散列值比较,以确定文件是否有任何改变。在下载请求的情况中,当整份文件被客户机接收后(在多个连接中),客户机独立为文件生成一个散列值,并将其与并将其与会话建立过程中服务器发送的散列值比较,以确定文件是否有任何改变。对上载和下载来说,针对整份文件的散列值检查都将提示传输过程中文件数据是否发生了任何变化,即使是文件传输在多个连接中被拆分。(拆分可以在文件太长时有意为之,或在文件传输因故障或其他原因中止并随后在另一个连接中恢复传输时无意进行。)如果传输过程中发生变化,则接收者可以丢弃数据,并要求重新传输。
现在参考附图2-5更为详细地描述本发明。图2描述了按照本发明在客户机10和服务器20之间建立会话。为了启动一个新的会话,客户机传输程序12初始化一个新的会话对象(步骤100)。会话对象包括会话ID,表明会话还没有激活的一指示、要连接的服务器的标识符或IP地址或服务器的套接字以及在随后上载文件的情况下一个可跟踪上载进程的字段。然后,客户机传输程序创建一随机会话ID(步骤102)。接下来,客户机传输程序使用先前获得的公开密钥加密会话ID(步骤104)。会话ID的加密可使用已知的RSA算法或其他已知的加密算法。接下来,客户传输程序使用未经加密的会话ID作为用于对称密码术的密钥,来初始化对称密码(以加密元数据散列值)(步骤106)。已知的对称密码术的例子有RC4和AES。
接下来客户机传输程序12创建要发送到服务器的实际请求110。在所说明的实施例中,该请求为HTTP形式的。该请求包括一个HTTP报头、元数据以及该元数据的一加密散列值。来自客户机的HTTP报头指定了接收客户机请求的服务器的名称和端口。元数据含有一个启动会话的请求、加密的会话ID、以及对于每个要随后上载的文件的文件名、文件创建日期、文件大小和文件数据散列值、以及对于每个随后要下载的文件的文件名。(调用客户机传输程序12以启动数据传输的应用先前指定了要下载或上载的文件。客户机传输程序12为每份完整的要上载的文件数据计算散列值。)该请求也包括一个使用对称密码加密的元数据散列值。客户机传输程序12按照SHA-1、MD5或其他已知的散列算法确定上述元数据的元数据散列值。在所说明的实施例中,创建会话的初始请求不包括要上载的实际文件数据。
响应于启动会话请求,服务器传输程序22创建一个会话对象(步骤126)。之后服务器传输程序22读取元数据,并使用客户机传输程序12所采用的SHA-1、MD5或其他算法为元数据创建一个散列值(步骤130)。随后,服务器传输程序22使用服务器的私有密钥解密随客户机请求提供的会话ID(步骤132)。解密采用的算法与客户机传输程序12在加密中使用的算法相同。接下来服务器(在服务器端)启动与客户机的由加密的和解密的会话ID标识的会话(步骤134)。在服务器端启动该会话时,服务器传输程序22在会话对象中填写会话ID,表明会话当前处于激活状态的指示以及所连接的客户机的标识符或IP地址或其套接字。服务器传输程序22在随后上载的情况下还创建用以跟踪中文件上载进程的字段。然后,服务器传输程序22使用用作解密密钥的解密会话ID对一对称密码函数进行初始化(步骤136),并使用对称密码函数解密客户机请求中提供的元数据散列值(步骤138)。之后服务器传输程序22将其独立计算出的散列值和解密的散列值相比较,以确定客户机是否可信以及元数据是否被完好地接收(步骤139)。如果由服务器计算的元数据散列值与客户机端提供的元数据散列值相匹配,则说明客户机是可信的,且元数据被完好接收,因而数据传输程序22准备一响应142以发送到客户机10。
响应142包括一报头、元数据以及一元数据散列值。在所说明的实施例中,响应是HTTP形式的。来自服务器的HTTP响应报头指定内容类型和长度(需要这些报头参数以支持HTTP代理,但它们被客户机忽略)。元数据包括表明会话是否成功启动的返回代码。对于将随后上载的每个文件,客户机启动请求中的元数据包括文件名、文件大小、文件创建日期和文件数据散列值。在上载的情况中,服务器传输程序22将假设在客户机请求中提供的文件元数据是准确的,并相应地更新其记录。对于将随后下载的每个文件,客户机启动请求中的元数据包括文件名、文件创建日期、文件大小和文件数据散列值。服务器传输程序22为随后下载的整份文件计算散列值。服务器响应中的文件名和文件创建日期是在启动会话的客户机请求中引用的。在下载请求的情况中,如果服务器传输程序22找不到文件,服务器将会为该文件指出这种情况。如服务器传输程序22发现任何文件元数据与客户机传输程序12在客户机会话启动请求中指定的文件元数据不同,则服务器将返回服务器发现的文件元数据,而客户机将相应地更新其记录。服务器传输程序22为元数据确定一个散列值,并使用对称密码加密该散列值。然后,服务器20向客户机10发送响应。
然后,客户机传输程序12按下述方式接收并处理来自服务器的响应。客户机传输程序12读取元数据,并使用服务器传输程序22使用的SHA-1、MD5或其他算法独立地计算散列值。然后,客户机传输程序12使用对称密码解密在请求中提供的元数据散列值(步骤152),并将它独立计算出的元数据散列值与解密的元数据散列值相比较(步骤154)。如果二者匹配,则响应被认为是有效的,并且客户机传输程序12已确认服务器是可信的,且与服务器的会话已经启动。而且,在下载请求的情况下,客户机传输程序12现在了解了完整且正确的文件元数据。然后客户机通过在其会话对象中进行登记来记录与服务器的会话已正式开始。
然后,客户机传输程序12可以使用同一会话对象(附图2中建立的)来创建上载或下载文件数据的请求(在其他连接中)。如下所述,将使用同一会话ID,将为元数据创建散列值,散列值在被发送前将会被加密,并且被发送的散列值和由接收者独立地生成的散列值之间的比较将会指明通信是否在传输过程中被改变。
附图3描述了客户机传输程序12的上载请求160和服务器传输程序22的响应,二者均在附图2中创建的同一会话中的随后连接里。客户机传输程序12使用会话ID作为加密密钥,来初始化用于元数据散列值的对称密码(步骤162)。在所说明的实施例中,上载请求160包括一HTTP请求报头、元数据、一加密的元数据散列值以及一“发送”文件。元数据包括一上载请求、加密的会话ID、和待上载的文件或文件片断的名称。如该请求与某个文件片断(而非整份文件)相关,从而从客户机向服务器上载文件的某个片断,则元数据还包括表明该文件片断在文件中的起始和终止位置的文件开始/终止参数。元数据散列值是使用SHA-1、MD5或其他算法计算出来的。元数据散列值使用对称密码被加密。“发送”文件包含要上载到服务器的文件或文件片断中的实际数据。如果文件数据是敏感的,则客户机传输程序12可以使用对称密码加密文件数据,并发送经加密的文件数据而非未经加密的文件数据。在本发明的一个实施例中,具有同一加密密钥(即会话ID)的同一密码函数被用来加密文件数据。但是在本发明的其他实施例中,可使用不同的密码算法和/或不同的密码密钥来加密文件数据。然后,客户机传输程序12向服务器20发送HTTP请求160。
收到来自客户机的HTTP上载请求160后,服务器传输程序22读取元数据,并采用与由客户机传输程序12使用的算法一致的SHA-1、MD5或其他算法独立地生成一相应的散列值(步骤170)。然后,服务器传输程序22读取来自客户机传输程序12请求的加密的会话ID,并检查该(加密的)会话ID是否先前已由服务器记录在会话对象中,以及该会话是否是一个激活的会话(步骤172)。如果是这样,则服务器传输程序22为该加密的会话ID而使用该会话ID作为密钥来初始化对称密码(步骤174),并使用该对称密码解密客户机提供的加密元数据散列值(步骤176)。下一步,服务器传输程序22将独立计算出来的元数据散列值与客户机提供的解密的元数据散列值相比较(步骤178)。如果二者匹配,则服务器接受在客户机上载请求中提供的文件数据或文件片断数据(步骤180)。如果在客户机上载请求中提供的文件数据或文件片断数据被客户机加密,则服务器传输程序22使用与用于加密该文件数据的密码相同的密码对其进行解密(步骤185)。
接下来,服务器传输程序22准备发送到客户机的响应181。该响应包括一HTTP报头、元数据和一加密元数据散列值。元数据包括一个表明上载请求是否成功的返回代码、和被成功接收的文件或文件片断的名称。如果服务器响应181与文件片断(而非整份文件)有关,则元数据还包括表明文件片断在文件中的起始和终止位置的文件开始/终止参数。散列值使用对称密码被加密。接下来,服务器传输程序22向客户机发送HTTP响应。
收到HTTP响应后,客户机传输程序12读取元数据,并使用SHA-1、MD5或其他算法独立地计算相应的散列值(步骤190)。然后客户机传输程序12使用对称密码解密在服务器的HTTP响应中所提供的元数据散列值(步骤192),并将服务器提供的散列值与客户机传输程序12独立计算出来的散列值相比较(步骤194)。如果两个散列值相同,这向客户机验证了服务器,并且客户机知道服务器成功地(或未成功地)接收了在客户机先前发送的HTTP上载请求中包含的文件数据。如果两个散列值不匹配,则客户机将在另一个HTTP上载请求发送文件数据。
如上所述,如果文件很长,从客户机向服务器发送完整的文件可能需要多个HTTP上载请求。在所说明的实施例中,每一对上载请求和响应都是在单独的连接中做出的,但是该文件所有的上载请求和响应都是在如附图2中创建的同一会话中生成的。因此,对每个额外的请求和响应均重复上述步骤162-194。附图3描述了服务器20在接收到文件的全部数据后(当文件数据在一个上载请求中发送,或是分成一些部分在多个上载请求中在多个各自的连接中发送时)执行的其他处理。服务器传输程序22使用SHA-1、MD5或其他算法为文件中所有数据独立地计算一散列值(步骤196)。然后,服务器传输程序22将其独立计算出来的散列值与客户机10在初始HTTP请求中为创建会话所提供的散列值相比较(步骤198)。如果两个散列值相同,则文件数据在从客户机到服务器的传输过程中没有发生变化,且被服务器认为是有效的。然后服务器就可以该使用数据了(步骤200)。
附图4描述了客户机向服务器做出下载请求210以及服务器响应下载请求所涉及的步骤。下载请求210和响应230都是在一个新的连接里,但在附图2中创建的同一会话中做出的。下载请求将使用以服务器的公开密钥加密的同一会话ID。客户机传输程序12将使用会话ID来初始化对称密码,以加密元数据散列值(步骤204)。客户机的下载请求210包括一HTTP请求报头、元数据以及一加密元数据散列值。元数据包括一下载请求、加密的会话ID以及待下载的文件或文件部分(部分m)的名称。元数据散列值通过对称密码被加密。然后,客户机向服务器发送HTTP请求。作为响应,服务器传输程序22读取来自客户机请求的元数据,并使用由客户机使用的SHA-1、MD5或其他算法独立地生成一相应的散列值(步骤2)。然后服务器传输程序22从其记录中检查会话ID是否有效以及该会话当前是否处于激活状态(步骤214)。如果是这样,服务器传输程序22使用该会话ID来初始化对称密码(步骤216)以解密客户机下载请求中包含的元数据散列值(步骤218)。下一步,服务器传输程序22将解密的元数据散列值与由服务器传输程序22独立生成的元数据散列值相比较(步骤220)。如果二者匹配,则服务器传输程序22将按以下所述处理/响应该请求。服务器传输程序22将从存储器或存储设备中获取被请求的文件数据或文件片断数据,然后准备HTTP响应230。HTTP响应包括一HTTP响应报头、元数据以及所请求的“接收”文件数据。元数据包括一个表明下载请求是否已被成功接收的返回代码、正在被下载的文件数据或文件片断数据的名称以及该元数据的一加密散列值。该发送文件包含所请求的实际文件数据或文件片断数据。如果数据为机密或其他敏感数据,则服务器传输程序22可以加密文件数据或文件片断数据,并将加密形式而非非加密形式向客户机发送。加密可使用与用于元数据散列值的相比具有相同的加密密钥的相同的对称密码,也可以采用不同的对称密码和/或不同的加密密钥。接着,服务器传输程序22将HTTP响应发送给客户机。
接收到HTTP响应后,客户机传输程序12读取元数据,并使用服务器使用的SHA-1、MD5或其他算法独立地生成一相应的散列值(步骤240)。然后,客户机传输程序12解密来自服务器的HTTP响应中的元数据散列值(步骤242),并将两个元数据散列值相比较(步骤244)。如果二者相同,则说明服务器是可信的,并且客户机接收到来自服务器HTTP响应的实际文件数据或文件片断数据。如果文件数据或文件片断数据被加密,则客户机传输程序12使用服务器传输程序22所采用的相同密码对文件数据或文件片断数据进行解密。如上所述,下载长文件可能需要多个下载请求/响应,或者,如果文件较短,在单个连接/响应中即可完成整个文件的下载。对于由客户机在一个或多个服务器HTTP响应中完成全部下载的每个文件,客户机传输程序12为整份文件生成一散列值(步骤248),并将其与在服务器对启动会话请求的HTTP响应中提供的相应散列值相比较(250)。如果两个散列值相匹配,则客户机可以使用该数据。如果两个散列值不匹配,则客户机将丢弃所有的文件数据,并重新开始前述的请求文件数据的过程。
如前所述,已经公开了用于揭示传输过程中发生的错误或其他变化的系统、方法和程序。然而,可以进行大量的修改和替换,而无须偏离本发明的范围。例如,可以替换与上述算法不同的其他加密算法或散列算法。在另一个例子中,可去除HTTP请求报头和HTTP响应报头而不改变本发明的目的。这些报头的使用仅使得本发明能够在“标准”协议下实施。因此,本发明是以说明而非限制的方式公开的,并且应参考下列权利要求确定本发明的范围。
权利要求
1.一种用于在第一个计算机和第二个计算机之间传输数据的方法,该方法包括以下步骤所述第一个计算机在第一个连接中向第二个计算机发送第一个请求,该第一个请求中包括启动会话的请求、加密的所述会话的ID以及所述第一个请求中的信息的加密的散列值,所述第一个请求中的所述信息包括启动所述会话的所述请求和所述加密的会话ID;所述第二个计算机接收所述第一个请求,并作为结果,解密所述第一个请求中的所述加密的散列值,独立地为所述第一个请求中的所述信息确定散列值,并将该独立地确定的散列值和解密的散列值相比较,并且如果存在匹配,则启动与所述第一个计算机的会话;然后,所述第一个计算机在所述会话的第二个连接中向所述第二个计算机发送第二个请求,所述第二个请求包括下载或上载文件的数据的请求、加密的所述会话的ID、要至少部分地上载或下载的所述文件的标识以及所述第二个请求中的信息的加密的散列值,所述第二个请求中的所述信息包括下载或上载数据的所述请求、所述加密的会话ID以及所述文件标识;以及所述第二个计算机接收所述会话中的所述第二个请求,并作为结果,解密所述第二个请求中的所述加密的散列值,独立地为所述第二个请求中的所述信息确定散列值,并将独立地确定的散列值和解密的散列值相比较,并且如果存在匹配,则处理至少部分地下载或上载文件的所述请求。
2.权利要求1的方法,其中,所述第一个请求中的所述信息也包括要在所述会话的所述第二个连接中至少部分地下载或上载的所述文件的所述标识。
3.权利要求2的方法,其中,在所述第一个请求中标识的所述文件是要至少部分地上载的文件,并且所述第一个请求中的所述信息也包括所述文件的散列值。
4.权利要求1的方法,其中,所述第一个请求也包括要上载的文件的散列值,且所述第二个请求用来上载所述文件的第一个部分;并且该方法进一步以下步骤随后,所述第一个计算机在第三个连接中向所述第二个计算机发送第三个请求,所述第三个请求包括在所述会话中上载所述文件的另一个部分的请求、加密的所述会话的ID,所述文件的所述另一个部分的标识以及所述第三个请求中的信息的加密的散列值,所述第三个请求中的所述信息包括上载所述文件的所述另一部分的所述请求、所述加密的会话ID以及所述文件的所述标识;所述第二个计算机接收所述会话中的所述第三个请求,并作为结果,解密所述第三个请求中的所述加密的散列值,独立地为所述第三个请求中的所述信息确定散列值,并将独立地确定的散列值和解密的散列值相比较,并且如果存在匹配,则处理上载所述另一个文件部分的所述第三个请求;以及如果所述另一部分完成了所述文件的上载,则所述第二个计算机独立地为所述文件确定散列值,并将所述独立地确定的散列值和由所述第一个计算机发送的、所述文件的散列值相比较,并且如果二者匹配,则处理所述文件。
5.权利要求1的方法,其中,所述第一个请求还包括要上载的文件的散列值,而所述第二个请求用来上载所述文件并包含所述文件;并且该方法进一步包括以下步骤所述第二个计算机独立地为所述文件确定散列值,并将所述独立地确定的散列值和由所述第一个计算机发送的、所述文件的散列值相比较,并且如果二者匹配,则处理所述文件。
6.权利要求1的方法,其中,所述第二个请求用来下载所述文件的一部分或全部,并且其中所述第二个计算机通过对所述第一个计算机做出响应来处理所述第二个请求,该响应包括所请求的所述文件的部分或全部、关于所请求的所述文件的部分或全部的信息以及所述信息的加密的散列值,所述信息包括所述文件和/或文件部分的名称;并且该方法进一步包括以下步骤所述第一个计算机接收来自所述第二个计算机的所述响应,并且作为结果,解密来自所述第二个计算机的所述响应中的所述加密的散列值,独立地为来自所述第二个计算机的所述响应中的所述信息确定散列值,并将独立地确定的散列值和来自所述第二个计算机的所述响应中的解密的散列值相比较,并且如果存在匹配,则处理所请求的所述文件的部分或全部。
7.权利要求1的方法,其中,所述第二个请求用来上载所述文件或所述文件的第一部分,且包含加密形式的所述文件或第一部分。
8.权利要求7的方法,其中,所述第一个请求还包括所述文件或第一个部分的散列值。
9.权利要求1的方法,其中,所述第二个计算机启动与所述第一个计算机的会话的步骤包括所述第二个计算机在所述第一个连接中向所述第一个计算机发送响应的步骤,所述响应包括所述响应中的信息的加密的散列值。
10.权利要求9的方法,其中,所述第一个计算机在接收到来自所述第二个计算机的所述响应后,解密所述响应中的信息的散列值,独立地为所述响应中的所述信息确定散列值,并将所述响应中的所述信息的解密的散列值与独立地确定的所述响应中的所述信息的散列值相比较,并且如果存在匹配,则确认所述会话已经被建立。
11.一种用于在第一个计算机和第二个计算机之间传输数据的系统,所述系统包括所述第一个计算机包括用于在第一个连接中向所述第二个计算机发送第一个请求的装置,所述第一个请求包括启动会话的请求、加密的所述会话的ID以及所述第一个请求中的信息的加密的散列值,所述第一个请求中的所述信息包括启动所述会话的所述请求以及所述加密的会话ID;所述第二个计算机包括这样的装置,该装置用于接收所述第一个请求,并作为结果,解密所述第一个请求中的所述加密的散列值,独立地为所述第一个请求中的所述信息确定散列值,并将所述独立地确定的散列值和解密的散列值相比较,并且如果存在匹配,则开始与所述第一个计算机的会话;所述第一个计算机包括用于随后在所述会话的所述第二个连接中向所述第二个计算机发送第二个请求的装置,所述第二个请求包括下载或上载文件的数据的请求、加密的所述会话的ID、要至少部分地上载或下载的所述文件的标识以及所述第二个请求中的信息的加密散列值,所述第二个请求中的所述信息包括下载或上载数据的所述请求、所述加密的会话ID以及所述文件标识;以及所述第二个计算机包括这样的装置,该装置用于接收所述会话中的所述第二个请求,并作为结果,解密所述第二个请求中的所述加密的散列值,独立地为所述第二个请求中的所述信息确定散列值,并将独立地确定的散列值与解密的散列值相比较,并且如果存在匹配,则处理至少部分地上载或下载文件的所述请求。
12.权利要求11的系统,其中,所述第一个请求中的所述信息还包含在所述会话中的所述第二个连接中至少部分地下载或上载的所述文件的标识。
13.权利要求12的系统,其中,在所述第一个请求中标识的所述文件是要至少部分地上载的文件,并且所述第一个请求中的所述信息也包括所述文件的散列值。
14.权利要求11的系统,其中,所述第一个请求也包括要上载的文件的散列值;所述第二个请求用来上载所述文件,并包含所述文件;并且所述第二个计算机包括这样的装置,该装置用于独立地为所述文件确定散列值,并将所述独立地确定的散列值和由所述第一个计算机发送的、所述文件的散列值相比较,并且如果二者匹配,则处理所述文件。
15.权利要求11的系统,其中所述第二个请求用来下载所述文件的一部分或全部,并且其中,所述第二个计算机通过对所述第一个计算机做出响应来处理所述第二个请求,该响应包括所请求的所述文件的部分或全部、关于所请求的所述文件的部分或全部的信息以及所述信息的加密的散列值,该信息包括所述文件和/或文件部分的名称;以及所述第一个计算机包括这样的装置,该装置用于接收来自所述第二个计算机的所述响应,并作为结果,解密来自所述第二个计算机的所述响应中的所述加密的散列值,独立地为来自所述第二个计算机的所述响应中的所述信息确定散列值,并将独立地确定的散列值和来自所述第二个计算机的所述响应中的解密的散列值相比较,并且如果存在匹配,则处理所请求的所述文件的部分或全部。
16.一种用于在第一个计算机和第二个计算机之间传输数据的计算机程序产品,所述计算机程序产品包括计算机可读媒介;所述第一个计算机中的第一程序指令,用以在第一个连接中向所述第二个计算机发送第一个请求,所述第一个请求包括启动会话的请求、加密的所述会话的ID以及所述第一个请求中的信息的加密的散列值,所述第一个请求中的所述信息包括启动所述会话的所述请求和所述加密的会话ID;所述第二个计算机中的第二程序指令,用以接收所述第一个请求,并作为结果,解密所述第一个请求中的所述加密的散列值,独立地为所述第一个请求中的所述信息确定散列值,并将独立地确定的散列值和解密的散列值相比较,并且如果存在匹配,则启动与所述第一个计算机的会话;所述第一个计算机中的第三程序指令,用以随后在所述会话中的第二个连接中向所述第二个计算机发送第二个请求,所述第二个请求包括下载或上载文件的数据的请求、加密的所述会话的ID、要至少部分地上载或下载的文件的标识以及所述第二个请求中的信息的加密的散列值,所述第二个请求中的所述信息包括下载或上载数据的所述请求、所述加密的会话ID以及所述文件标识;以及所述第二个计算机中的第四程序指令,用以接收所述会话中的所述第二个请求,并作为结果,解密所述第二个请求中的所述加密的散列值,独立地为所述第二个请求中的所述信息确定散列值,并将所述独立地确定的散列值和解密的散列值相比较,并且如果存在匹配,则处理至少部分地下载或上载所述文件的所述请求;并且其中所述第一、第二、第三及第四程序指令均被记录在所述媒介中。
17.权利要求16的计算机程序产品,其中,所述第一个请求中的所述信息也包括要在所述会话的所述第二个连接中至少部分地下载或上载的所述文件的标识。
18.权利要求17的计算机程序产品,其中,在所述第一个请求中被标识的所述文件是要至少部分地上载的文件,并且所述第一个请求中的所述信息也包括所述文件的散列值。
19.权利要求16的计算机程序产品,其中,所述第一个请求也包括要上载的文件的散列值;所述第二个请求用来上载所述文件,并包含所述文件;并且进一步包括所述第二个计算机中的第五程序指令,用来独立地为所述文件确定散列值,并将所述独立地确定的散列值和由所述第一个计算机发送的、所述文件的散列值相比较,并且如果二者相匹配,则处理所述文件;并且其中所述第五程序指令被记录在所述媒介中。
20.权利要求19的计算机程序程序产品,其中所述第二个请求用来下载所述文件的一部分或全部,并且其中所述第四个程序指令通过对所述第一个计算机做出响应来处理所述第二个请求,该响应包含所请求的所述文件的部分或全部、关于所请求的所述文件的部分或全部的信息以及所述信息的加密的散列值,所述信息包含所述文件和/或文件部分的名称;并且进一步包括所述第一个计算机中的第六程序指令,用来接收来自所述第二个计算机的响应,并作为结果,解密来自所述第二个计算机的所述响应中的所述加密的散列值,独立地为来自所述第二个计算机的所述响应中的所述信息确定散列值,并将独立地确定的散列值和来自所述第二个计算机的所述响应中的解密的散列值相比较,并且如果存在匹配,则处理所请求的所述文件的部分或全部;并且其中所述第六程序指令被记录在所述媒介中。
全文摘要
在第一和第二计算机之间传输数据的方法。第一计算机在第一连接中向第二计算机发送第一请求,包括启动会话请求、加密会话ID和第一请求中信息的加密散列值。第二计算机接收第一请求,解密其中的加密散列值,独立为第一个请求中信息确定散列值,并将其与解密的散列值比较。如匹配,则开始与第一计算机的会话。随后第一计算机通过该会话中第二连接向第二计算机发送第二请求,包括下载或上载文件数据请求、加密会话ID、至少部分上载或下载的文件的标识和第二请求中信息的加密散列值。第二计算机接收该第二请求,解密第二请求中加密散列值,独立为第二请求中信息确定散列值,并将其与解密的散列值比较。如匹配,则处理至少部分下载或上载文件请求。
文档编号H04L9/32GK1700634SQ20051005577
公开日2005年11月23日 申请日期2005年3月21日 优先权日2004年5月20日
发明者R·F·普赖尔, M·L·施泰因布雷歇尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1