一种密钥传递及数字签名的方法

文档序号:7883227阅读:344来源:国知局
专利名称:一种密钥传递及数字签名的方法
技术领域
本发明涉及一种密钥传递及数字签名的方法,属密码技术领域。
数据通讯中,往往需要满足以下的安全要求①除了发送方和接收方之外,使其他人无法知悉通讯内容;②通讯的内容不易被篡改;③接收方能够确知发送方不是假冒的,发送方不能否认自己发送的内容。这就是目前密码学中通常所说的密钥传递和数字签名。
发送方要发送的原文称为明文,将明文加密后就变成密文。发送方发送密文,第三者只能看见密文,就无法获得通讯内容。接收方收到密文后,需要密钥才能还原出明文。密钥传递就是指接收方获得密钥的方法,这种方法必须可靠的保证只有接收方才能得到密钥,第三者无法得到密钥。为了使接收方觉得可信,发送方发送的内容中还应该包含自己对明文的数字签名。这个签名首先要保证接收方能够验证其真伪,同时必须保证只有发送方才能生成这个签名,其他人(包括接收方在内)都不能伪造签名。接收方通过验证数字签名,就可以确定发送方的身份,也可以确定通讯内容是否被中间篡改过。同时依据签名,使得发送方无法抵赖。
目前已有的密码体系中,RSA体制是一个成熟的公开密钥密码体制,它的安全性基于数论中的Euler定理和计算复杂性理论中的下述论断求两个大素数的乘积是容易计算的,但要分解两个大素数的乘积,求出它们的素因子则是非常困难的。利用RSA体制可以解决通讯中的密钥传递问题和数字签名问题,但是这个体制的运算量比较大、密钥比较长,加密、解密速度慢,对实现该方法的硬件要求高,因此在实际应用中有一定的局限性。
本发明的目的是提出一种密钥传递及数字签名的方法,通过构造一种新的密码体制实现密钥传递和数字签名,同时这种体制既不需要很大的运算量,也不需要很长的密钥。
本发明提出的密钥传递的方法,包括以下各步骤(1).选择一个函数f函数y=f(a,b,c,d)是一个公开的单向散列函数,它满足如果定义全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z}那么在d未知,已知f,且已知Id的任意一个子集Qd时,d是难以求解的,且Qd的补集中的任意一个元素也是难以求解的;(2).为通信双方各制造一个黑箱,每个黑箱固化有相应的编号K,各黑箱的K值不同,黑箱内还固化一个数据S,各黑箱S相同;黑箱利用上述第一步的函数f实现二项功能功能1向黑箱输入R、Ki,黑箱根据上述函数,计算出Y=f(R,Ki,K,S);
功能2向黑箱输入R、Ki,黑箱根据上述第一步的函数,计算出Y=f(R,K,Ki,S);上列算式中R为信息传递的发起方确定的一个任意数,K为固化在黑箱内的本黑箱编号,Ki为输入黑箱的编号;(3).密钥传递设发送方的黑箱号为Ka,接收方的黑箱号为Kb,发送方A任意选择一个数据R,然后调用上述第2步中黑箱的功能1,向自己的黑箱输入数据R和接收方的黑箱号Kb,亦即上述功能1的的Ki,黑箱输出Y=f(R,Kb,Ka,S),Y即为需要传递的密钥;然后A向B发送数据R,接收方B在自己的黑箱上调用功能2,输入R和发送方的黑箱号Ka,亦即上述功能2中的Ki,黑箱输出Y=f(R,Kb,Ka,S),接收方B得到与发送方A相同的密钥Y,此时密钥Y传递结束。
本发明提出的数字签名的方法,包括以下各步骤(1).选择一个函数f函数y=f(a,b,c,d)是一个公开的单向散列函数,它满足如果定义全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z那么在d未知,已知f,且已知Id的任意一个子集Qd时,d是难以求解的,且Qd的补集中的任意一个元素也是难以求解的;(2).为通信双方各制造一个黑箱,黑箱固化有相应的编号K,各黑箱的K值不同,黑箱内还固化一个数据S,各黑箱S值相同,黑箱利用上述第一步函数f完成二项功能功能1向黑箱输入R、Ki,黑箱根据上述函数,计算出Y=f(R,Ki,K,S);功能2向黑箱输入R、Ki、Y,即功能1的计算结果,黑箱计算出G=f(R,Ki,Ki,S),将G与Y作比较,如果相同,则输出1,否则输出0;(3)、数字签名及验证设发送方的黑箱号为Ka,接收方的黑箱号为Kb,设定需要签名的数据为R,A在自己的黑箱上调用功能1,向黑箱输入数据R和自己的黑箱号Ka,Ka即为上述功能1中的Ki,黑箱输出Y=f(R,Ka,Ka,S),Y即为A对数据R的签名结果,签名结束;A将R及Y同时发送给B,B接收到R和Y后,在自己的黑箱上,调用功能2,并输入从A方得到的R、Y及发送方的黑箱号Ka,黑箱计算出G=f(R,Ka,Ka,S),将G与Y作比较,如果两者一致则黑箱输出1,否则输出0,输出1则为真,反之则为伪造签名,此时签名验证结束。
本发明设计的密钥传递及数字签名的方法,密码体制结构简单、运算量小、密钥短,便于硬件实现。
下面详细介绍本发明的内容。
首先选择一个函数f,例如MD5变换或者SHA-1变换。
函数y=f(a,b,c,d)是一个公开的单向散列函数,它满足如果定义全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z}那么在d未知,已知f,且已知Id的任意一个子集Qd时,d是难以求解的,且Qd的补集中的任意一个元素也是难以求解的。
上述函数的特点,就是在d未知时,无论已知多少组数据y、a、b、c,并且每组数据都满足等式y=f(a,b,c,d),但在未知的y、a、b、c中,已知其中的任意三个数都无法求解第四个数。密钥传递和数字签名就是利用函数的这个特点实现的。具备这个特点的函数并不唯一,而且实现起来运算量也很小。参数d就是这个体制中的密码,基于函数f的特点,d的长度要求很低,只要能够抵御穷举搜索就可以。这个体制中的其他参数也是这样的要求。
然后为通信双方各制造一个黑箱,黑箱有相应的编号K,黑箱内固化一个数据S,黑箱、K值和S值有如下特性①K为黑箱编号,各个黑箱的编号不同,K固化在黑箱内,是不可改的。每个人都知道自己的和对方的黑箱编号。黑箱内还固化了一个数据S,所有黑箱的S是相同的,但所有人都不知道S的值。
②黑箱利用上述选择的函数f实现几个功能,在下面的功能说明中,K是黑箱自己的编号;Ki是输入给黑箱的编号,Ki是自己的编号或对方黑箱的编号。
黑箱完成下列几项功能功能1向黑箱输入R、Ki,黑箱根据上述第一步函数,计算出Y=f(R,Ki,K,S);功能2向黑箱输入R、Ki,黑箱根据上述第一步的函数,计算出Y=f(R,K,Ki,S);功能3向黑箱输入R、Ki、Y,如果黑箱计算出G=f(R,Ki,Ki,S),然后将G与Y作比较,如果两者一致则黑箱输出1,否则输出0。
上列算式中R为信息传递的发起方确定的一个任意数,Ki为黑箱的编号。
注意功能1、2中Ki、K在函数f入口数据中的位置不同功能3只输出比较结果,不输出f(R,Ki,Ki,S)的运算结果。
在实际应用中,黑箱就是一个经过加密处理的硬件。硬件能够可靠保密数据S,而且硬件内部的处理过程是不可见、不可跟踪的。各个黑箱除了K值不同(且肯定不同)之外,其他都完全相同。
通讯双方利用自己的黑箱就可以实现密钥传递和数字签名。假设发送方为A,持有黑箱的编号为Ka;接收方为B,持有黑箱的编号为Kb;第三者为C,持有黑箱的编号为Kc。A、B为正常的通讯者,第三者是任意一个攻击者,试图入侵A、B之间的通讯。
密钥传递的过程如下首先发送方A任意选择一个数据R,然后调用上述黑箱的功能1,向黑箱输入数据R和接收方的黑箱号Kb,黑箱输出Y=f(R,Kb,Ka,S),Y即为需要传递的密钥。然后A向B发送数据R,接收方B用自己的黑箱号Kb及从A方得到的数据R,在自己的黑箱上调用功能2,输入R和发送方的黑箱号Ka,黑箱输出Y=f(R,Kb,Ka,S)。接收方B得到与发送方A相同的密钥Y,此时密钥Y传递结束。
第三者C可以截获A发送给B的数据R,但是无法得到密钥Y。因为C虽然知道A、B是如何使用自己黑箱的,即C知道方程
Y=f(R,Kb,Ka,S)但是由于C无法知道A、B黑箱的S值,该S值连A、B自己都不知道,C也无法只通过截获到的A发送给B的R值,求出Y,亦即得到密钥。
假设,C持有黑箱Kc,且黑箱C的S值与A、B黑箱的S值相同,此时由于C的黑箱号Kc与Ka、Kb都不同,同时黑箱C的功能1、2中都使用了Kc,功能3中只输出比较结果,因此,C也无法利用自己的黑箱得到Y。
所以,利用黑箱的功能1、2就能够实现密钥传递。
数字签名及验证的过程如下首先发送方A设定需要签名的数据为R,A在自己的黑箱上调用功能1,向黑箱输入数据R和自己的黑箱号Ka,黑箱输出Y=f(R,Ka,Ka,S)。Y即为A对数据R的签名结果,A将R及Y同时发送给B;B接收到R后,在自己的黑箱上,调用功能3,输入从A方得到的R、Y及发送方的黑箱号Ka,黑箱内部计算G=f(R,Ka,Ka,S),比较G与Y,如果一致则黑箱输出1,否则输出0,输出1则为真,反之则为伪造签名,此时签名结束。
根据上述签名方法,第三者C也可以利用自己的黑箱功能3来验证这个签名的真伪。这里,A对R的签名结果为Y,B和C都只能利用自己的黑箱验证Y,不能生成Y。签名和验证的方法都是公开的,即B、C都知道方程Y=f(R,Ka,Ka,S)但是由于B、C都无法知道S,也就无法由R求出Y(见函数f的说明)。
另外,黑箱Kb功能1、2中强制使用了Kb,黑箱Kc功能1、2中强制使用了Kc,而两个黑箱的功能3都只输出一个比较结果,因此,B和C也无法利用自己的黑箱伪造签名。
所以,利用黑箱的功能1、3能够实现数字签名。
权利要求
1.一种密钥传递的方法,其特征在于,该方法包括以下各步骤(1).选择一个函数f函数y=f(a,b,c,d)是一个公开的单向散列函数,它满足如果定义全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z}那么在d未知,已知f,且已知Id的任意一个子集Qd时,d是难以求解的,且Qd的补集中的任意一个元素也是难以求解的;(2).为通信双方各制造一个黑箱,每个黑箱固化有相应的编号K,各黑箱的K值不同,黑箱内还固化一个数据S,各黑箱S不同,黑箱利用上述第一步的函数f实现二项功能;功能1向黑箱输入R、Ki,黑箱根据上述第一步函数,计算出Y=f(R,Ki,K,S);功能2向黑箱输入R、Ki,黑箱根据上述第一步的函数,计算出Y=f(R,K,Ki,S);上列算式中R为信息传递的发起方确定的一个任意数,K为固化在黑箱内的数,Ki为输入黑箱的编号;(3).密钥传递设发送方A的黑箱号为Ka,接收方B的黑箱号为Kb,发送方A任意选择一个数据R,然后调用上述第2步中黑箱的功能1,向黑箱输入数据R和接收方的黑箱号Kb,即上述功能1的Ki,黑箱输出Y=f(R,Kb,Ka,S),Y即为需要传递的密钥,然后A向B发送数据R,接收方B在自己的黑箱上调用功能2,输入R和发送方的黑箱号Ka,即上述功能2中的Ki,黑箱输出Y=f(R,Kb,Ka,S)。接收方B得到与发送方A相同的密钥Y,此时密钥Y传递结束。
2.一种数字签名的方法,其特征在于,该方法包括以下各步骤(1).选择一个函数f函数y=f(a,b,c,d)是一个公开的单向散列函数,它满足如果定义全集Id={(y,a,b,c)|y=f(a,b,c,d),a∈Z,b∈Z,c∈Z那么在d未知,已知f,且已知Id的任意一个子集Qd时,d是难以求解的,且Qd的补集中的任意一个元素也是难以求解的;(2).为通信双方各制造一个黑箱,黑箱固化有相应的编号K,黑箱内还固化一个数据S,黑箱利用上述第一步函数f完成二项功能功能1向黑箱输入R、Ki,黑箱根据上述函数,计算出Y=f(R,Ki,K,S);功能2向黑箱输入R、Ki、Y,即功能1的计算结果,黑箱计算出G=f(R,Ki,Ki,S),将G与Y比较,如果相同,则输出1,否则输出0;(3)、数字签名及验证设发送方A的黑箱号为Ka,接收方B的黑箱号为Kb,设定需要签名的数据为R,A在自己的黑箱上调用功能1,向黑箱输入数据R和自己的黑箱号Ka,黑箱输出Y=f(R,Ka,Ka,S),Y即为A对数据R的签名结果,签名结束;A将R及Y同时发送给B,B接收到R后,在自己的黑箱上,调用功能2,并输入从A方得到的R、Y及发送方的黑箱号Ka,黑箱内部计算G=f(R,Ka,Ka,S),将G与Y比较,如果两者一致则黑箱输出1,否则输出0,输出1则为真,反之则为伪造签名,此时签名验证结束。
全文摘要
本发明涉及一种密钥传递和数字签名的方法,首先选择一个函数f,然后为通信双方各制造一个黑箱,设发送方的黑箱号为Ka,接收方的黑箱号为Kb,发送方A任意选择一个数据R,向自己的黑箱输入数据R和接收方的黑箱号Kb,黑箱输出Y,Y即为需要传递的密钥,数字签名的方法是A在自己的黑箱上输入数据R和自己的黑箱号,黑箱输出Y,Y即为A对数据R的签名结果。本发明设计的密钥传递及数字签名的方法,密码体制结构简单、运算量小、密钥短,便于硬件实现。
文档编号H04L9/00GK1255002SQ9912593
公开日2000年5月31日 申请日期1999年12月10日 优先权日1999年12月10日
发明者张 杰 申请人:北京深思洛克数据保护中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1