一种数据文件的传输方法转让专利

申请号 : CN201611096882.1

文献号 : CN106788969B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林殷吴方才许金龙

申请人 : 中科星图股份有限公司

摘要 :

本发明涉及一种数据文件的传输方法,该方法在发送端和接收端之间首先建立初始密钥,然后将数据文件分块传输,每个分块使用不同的密钥加密,从而使得数据文件的传输具有很高的安全性,并且不影响数据文件的传输效率。

权利要求 :

1.一种数据文件的传输方法,其特征在于,该方法包括如下步骤:(1)发送端与接收端建立连接后,发送端生成一个随机数a,并且计算初始加密密钥K=gamod P,同时接收端也生成一个随机数b,并计算Y=gbmod P;其中,P为素数,g是P的一个本原元,K的长度为L;

(2)接收端将Y发送给发送端,发送端计算X=Yamod P,并将X发送给接收端;

(3)接收端计算K'= mod P,该K’=K;

(4)发送端将待传输的数据文件分为N块,记为F1,F2,……,FN,每块的长度为mL,m为整数,最后一块的长度如果不足,则通过在块最后增加随机数来补足长度;

(5)发送端组装一个文件信息包={File,N,mL};其中File是待传输数据文件的文件信息;

(6)发送端计算该数据文件的第一个分块的哈希值Hash(F1),设哈希值的长度为h,则在哈希值后补上长度为L-h的随机数R1,获得新的长度为L的密钥K1;其中Hash是一个哈希算法;

(7)设文件信息包的长度为L0,则将文件信息包与K的前L0位进行异或,得到异或结果XF;然后发送端组装一个初始信息包={K1⊕K,XF,HF},将该初始信息包括发送给接收端;其中HF是文件信息包和K1的哈希值;

(8)接收端使用K解密该初始信息包,获得K1和文件信息包,并使用HF进行哈希校验,如果校验不通过,则请求发送端重发该初始信息包直到校验通过,如果校验通过,则接收端告知发送端已准备好接收该数据文件;

(9)发送端设置循环变量i=1;

(10)发送端组装第i个文件包Bi,如果i

(11)发送端使用密钥Ki加密第i个文件包,即计算Ei=E(Ki,Bi),其中E是加密算法;所述加密算法为链式异或法;

(12)发送端将Ei和Hash(Bi)发送给接收端,接收端对Ei解密,获得Bi;如果i

(13)接收端使用Hash(Bi)对Bi进行哈希值校验,同时使用Hash(Fi)对Fi进行哈希值校验,如果有一个校验没通过,则接收端请求发送端重新发送直至校验通过;

(14)如果i

(15)接收端合并接收到的所有Fi,获得数据文件。

2.根据权利要求1所述的数据文件的传输方法,其特征在于,所述步骤(11)中的机密算法E采用如下的链式异或法:(11.1)将Bi分成多个长度为L的块,设共有S块;

(11.2)设Bi分成的S块为A1,A2,……,AS,链式异或的计算过程如下:C1=A1⊕Ki

Cj=Cj-1⊕Aj⊕Ki,2≤j≤S;

(11.3)链式异或的结果Ei={C1,C2,……CS}。

3.根据权利要求2所述的数据文件的传输方法,其特征在于,所述步骤(12)中的解密过程如下:(12.1)将需要解密的Ei分成S个长度为L的块,即C1,C2,……CS;

(12.2)按照下述公式进行链式异或解密:

A1=C1⊕Ki

Aj=Cj⊕Cj-1⊕Ki,2≤j≤S

(12.3)链式异或解密结果Bi={A1,A2,……,AS}。

4.根据权利要求1-3任意一项所述的数据文件的传输方法,其特征在于,使用的哈希算法都是MD5算法。

5.根据权利要求1-3任意一项所述的数据文件的传输方法,其特征在于,所述文件信息包括文件名和文件长度。

6.根据权利要求1所述的数据文件的传输方法,其特征在于,P和K的长度都为1024位。

说明书 :

一种数据文件的传输方法

【技术领域】

[0001] 本发明属于计算机和网络领域,涉及网络上的数据传输,尤其涉及一种数据文件的传输方法。【背景技术】
[0002] 近年来,随着计算机和网络的普及,个人用户之间、企业之间的信息交流大量地转移到互联网上进行,通过互联网完成双方的数据交换。一个典型的需求是在互联网的两方之间传输某个数据文件,例如word文档、PDF文档等等。
[0003] 现有技术中,网络上数据文件的传输有多种方法,直接的文件传输方法例如有FTP文件传输协议、SCP安全拷贝等等,间接的数据文件传输方法例如可以通过电子邮件传输、网盘转存等等。但是,现有的文件传输方法或者过于复杂,文件传输效率低,或者需要借助别的网络工具或网络服务,或者安全性不足。
[0004] 对于现有技术的上述缺点,还没有一种完善的解决方案。【发明内容】
[0005] 为了解决现有技术中的上述问题,本发明提出了一种数据文件的传输方法。
[0006] 本发明采用的技术方案如下:
[0007] 一种数据文件的传输方法,该方法包括如下步骤:
[0008] (1)发送端与接收端建立连接后,发送端生成一个随机数a,并且计算初始加密密钥K=ga mod P,同时接收端也生成一个随机数b,并计算Y=gb mod P。其中,P为素数,g是P的一个本原元,K的长度为L;
[0009] (2)接收端将Y发送给发送端,发送端计算X=Yamod P,并将X发送给接收端;
[0010] (3)接收端计算 该K’=K;
[0011] (4)发送端将待传输的数据文件分为N块,记为F1,F2,……,FN,每块的长度为mL,m为整数,最后一块的长度如果不足,则通过在块最后增加随机数来补足长度;
[0012] (5)发送端组装一个文件信息包={File,N,mL}。其中File是待传输数据文件的文件信息;
[0013] (6)发送端计算该数据文件的第一个分块的哈希值Hash(F1),设哈希值的长度为h,则在哈希值后补上长度为L-h的随机数R1,获得新的长度为L的密钥K1;其中Hash是一个哈希算法;
[0014] (7)设文件信息包的长度为L0,则将文件信息包与K的前L0位进行异或,得到异或结果XF;然后发送端组装一个初始信息包={K1⊕K,XF,HF},将该初始信息包括发送给接收端。其中HF是文件信息包和K1的哈希值;
[0015] (8)接收端使用K解密该初始信息包,获得K1和文件信息包,并使用HF进行哈希校验,如果校验不通过,则请求发送端重发该初始信息包直到校验通过,如果校验通过,则接收端告知发送端已准备好接收该数据文件;
[0016] (9)发送端设置循环变量i=1;
[0017] (10)发送端组装第i个文件包Bi,如果i
[0018] (11)发送端使用密钥Ki加密第i个文件包,即计算Ei=E(Ki,Bi),其中E是加密算法;
[0019] (12)发送端将Ei和Hash(Bi)发送给接收端,接收端对Ei解密,获得Bi;如果i
[0020] (13)接收端使用Hash(Bi)对Bi进行哈希值校验,同时使用Hash(Fi)对Fi进行哈希值校验,如果有一个校验没通过,则接收端请求发送端重新发送直至校验通过;
[0021] (14)如果i
[0022] (15)接收端合并接收到的所有Fi,获得数据文件。
[0023] 进一步地,所述步骤(11)中的机密算法E采用如下的链式异或法:
[0024] (11.1)将Bi分成多个长度为L的块,设共有S块;
[0025] (11.2)设Bi分成的S块为A1,A2,……,AS,链式异或的计算过程如下:
[0026] C1=A1⊕Ki
[0027] Cj=Cj-1⊕Aj⊕Ki,2≤j≤S;
[0028] (11.3)链式异或的结果Ei={C1,,C2,……,CS}。
[0029] 进一步地,所述步骤(12)中的解密过程如下:
[0030] (12.1)将需要解密的Ei分成S个长度为L的块,即C1,,C2,……,CS;
[0031] (12.2)按照下述公式进行链式异或解密:
[0032] A1=C1⊕Ki
[0033] Aj=Cj⊕Cj-1⊕Ki,2≤j≤S
[0034] (12.3)链式异或解密结果Bi={A1,A2,……,AS}。
[0035] 进一步地,使用的哈希算法都是MD5算法。
[0036] 进一步地,所述文件信息包括文件名和文件长度。
[0037] 进一步地,P和K的长度都为1024位。
[0038] 本发明的有益效果包括:在不影响数据文件传输效率的情况下,大大加强了传输的安全性。【附图说明】
[0039] 此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:
[0040] 图1是本发明方法所应用的系统结构图。【具体实施方式】
[0041] 下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。
[0042] 参见附图1,本发明涉及两点之间的数据文件传输,分别包括发送端和接收端,两者之间通过网络连接,目的是通过该网络将数据文件从发送端传输到接收端。本发明的数据文件传输方法的第一个考虑是安全性,因而文件在传输过程中应当是加密的,并且,为了具有普适性,本发明的发送端和接收端可以在无需事先协商的情况下,完成数据文件的加密传输;第二个考虑是传输的效率,但是加密传输一般会降低传输的效率,因而本发明采用了一个简单有效地加密方法,在保证足够加密强度的基础上,对传输效率的影响很小;第三个考虑是传输的可靠性和容错性,本发明通过将文件分块传输,使得即使少数文件块在传输过程中损坏,也可以进行文件块重传,不会对整个传输带来太大的影响;第四个考虑文件的完整性,本发明通过对文件块的哈希值校验来解决完整性问题。并且,本发明的数据文件传输方法有机地将上述四个考虑方面结合在一起,较为完善地解决了数据文件传输问题。
[0043] 下面对本发明的方法流程进行详细地说明:
[0044] (1)发送端与接收端建立连接后,发送端生成一个随机数a,并且计算初始加密密钥K=ga mod P,同时接收端也生成一个随机数b,并计算Y=gb mod P。
[0045] 其中,P是一个大素数,g是P的一个本原元,为了安全考虑,P的长度应该足够大,优选地,P的长度为1024位,则K的长度也为1024位(如果不足1024位,则在前端补零至1024位)[0046] (2)接收端将Y发送给发送端,发送端计算X=Ya mod P,并将X发送给接收端。
[0047] (3)接收端计算
[0048] 由上述步骤容易推导出,步骤(3)接收端获得的K’就等于K,因此通过上述步骤,发送端和接收端共同拥有了初始加密密钥K,由于整个过程中K都没有在网络上传输,因此即使有黑客监听了整个过程,也只能获得X和Y两个值,由于离散对数计算的困难性,该黑客实质上无法在可接受的时间内,基于X和Y的值计算获得K,因而K获得了足够的保密性和安全性。
[0049] (4)发送端将待传输的数据文件分块,每块的长度都是K的长度的m倍,m为整数,最后一块的长度如果不足,则通过在块最后增加随机数来补足长度。设该数据文件被分成N块,记为F1,F2,……,FN。
[0050] 例如,K的长度为1024位,m=10,则将该数据文件以10240位的长度分块,如果最后一块不足10240位,则在最后一块的后面增加随机数,补足至10240位。
[0051] 数据文件分块的目的,是为了分块传输,从而将损坏的风险分散,即使传输过程中发生错误,也只需要重传出错的块,而无需重传整个文件。
[0052] (5)发送端组装一个文件信息包={File,N,mL}。其中File是待传输数据文件的文件信息,包括文件名,文件长度等,N是数据文件被分块的块数,L是K的长度,mL就是每个分块的长度。
[0053] (6)发送端计算数据文件的第一个分块的哈希值Hash(F1),设哈希值的长度为h,则在哈希值后补上长度为L-h的随机数R1,获得新的长度为L的密钥K1。
[0054] Hash是本发明采用的哈希算法,优选地,本发明采用MD5的哈希算法,MD5的结果是128位,K的长度为1024位,则需要生成一个1024-128=896位的随机数,补在MD5哈希值后面,构成新的1024位的密钥K1,由于新密钥中不仅有随机数,还包括哈希值,进一步增强了密钥的随机性,该新密钥在后面用于对第一个文件包的加密。
[0055] (7)设文件信息包的长度为L0,则将文件信息包与K的前L0位进行异或,得到异或结果XF。然后发送端组装一个初始信息包={K1⊕K,XF,HF},将该初始信息包括发送给接收端。其中HF是文件信息包和K1的哈希值,用于后续的校验。
[0056] (8)接收端使用K解密该初始信息包,获得K1和文件信息包,并使用HF进行哈希校验,如果校验不通过,则请求发送端重发该初始信息包直到校验通过,如果校验通过,则接收端告知发送端已准备好接收数据文件。
[0057] 由于接收端在步骤(3)中已经获得了密钥K,因此可以通过与初始信息包进行异或,解密出K1和文件信息包。哈希校验保证了初始信息包是正确的。另外,由于K1中包括了Hash(F1),因而接收端同时还获得了第一个分块的哈希值。
[0058] (9)发送端设置循环变量i=1。
[0059] (10)发送端组装第i个文件包Bi,如果i
[0060] 其中,Ri+1是一个长度为L-h的随机数,则Ri+1的长度与Hash(Fi+1)的长度之和为L,也就是说,Ki+1的长度为L,作为下个文件包的加密密钥。
[0061] (11)发送端使用密钥Ki加密第i个文件包,即计算Ei=E(Ki,Bi)。
[0062] 本发明提出了一种新的加密算法E,即链式异或法,该方法在后面做详细介绍。
[0063] (12)发送端将Ei和Hash(Bi)发送给接收端,接收端对Ei解密,获得Bi(具体的解密方法也在后面介绍)。如果i
[0064] (13)接收端使用Hash(Bi)对Bi进行哈希值校验,同时使用Hash(Fi)对Fi进行哈希值校验,通过双重哈希值校验对第i个文件包的完整性进行确认,如果有一个校验没通过,则接收端请求发送端重新发送直至校验通过。
[0065] 从上述步骤可以看出,Hash(Bi)是从本次发送中获得的,而Hash(Fi)是从上一个文件包中获得的,双重的不同来源的哈希校验给黑客攻击增加了难度。
[0066] (14)如果i
[0067] (15)接收端合并接收到的所有Fi,获得数据文件。
[0068] 如果最后一个FN被添加了随机数,由于文件信息包中有数据文件的长度,因而接收端可以通过该长度获知最后一部分哪些是被添加的随机数,因而可以去除该随机数。
[0069] 本发明对于每个文件包,使用的都是不同的密钥Ki,这实际上起到了一次一密的效果,大大增强了数据文件传输的安全性。而对于步骤(11)中的加密算法,本发明使用了一种简单有效的链式异或法,具体说明如下:
[0070] (11.1)将Bi分成多个长度为L的块,设共有S块。
[0071] 当i
[0072] (11.2)设Bi分成的S块为A1,A2,……,AS,链式异或的计算过程如下:
[0073] C1=A1⊕Ki
[0074] Cj=Cj-1⊕Aj⊕Ki,2≤j≤S;
[0075] (11.3)链式异或的结果Ei={C1,,C2,……,CS}。
[0076] 本发明提出的链式异或法其使用的计算只有异或,没有复杂的计算,因此整个计算过程的效率是非常高的,对数据文件的传输效率不会有太大影响。
[0077] 链式异或的解密也非常简单,具体如下:
[0078] (12.1)将需要解密的Ei分成S个长度为L的块,即C1,,C2,……,CS。
[0079] (12.2)按照下述公式进行链式异或解密:
[0080] A1=C1⊕Ki
[0081] Aj=Cj⊕Cj-1⊕Ki,2≤j≤S
[0082] 上述链式异或解密的过程实际上可以并行计算。
[0083] (12.3)链式异或解密结果Bi={A1,A2,……,AS}。
[0084] 以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。