一种基于身份的密码方法和系统的制作方法

文档序号:7623003阅读:222来源:国知局
专利名称:一种基于身份的密码方法和系统的制作方法
技术领域
本发明涉及一种密码技术,尤其涉及一种基于身份的密码方法和系统。
背景技术
Diffie和Hellman在1976年提出了公钥密码算法,其特点就是加密密钥(公钥)和解密密钥(私钥)不是同一把密钥。在该公钥密码算法中,私钥先于公钥产生,因此公钥不能是任意字符串。
现有公钥密码算法中的典型算法有RSA,ECC,DSA,ElGamal,Diffie-Hellman(DH)密钥交换算法等。公钥密码算法能够用于数据加密、密钥分发、数字签名、身份认证、信息的完整性认证、信息的非否认性认证等。其中可以用于加密的算法有RSA、ECC、ElGamal等;可以用于密钥分发的算法有RSA、ECC、DH等;可以用于数字签名、身份认证、信息的完整性认证、信息的非否认性认证的算法有RSA、ECC、DSA、ElGamal等。
公钥和公钥持有者身份的绑定问题一直是困扰公钥技术的难题,而基于x.509数字证书的PKI技术可以在一定程度上解决该难题。但是对数字证书的管理是非常繁琐的事情。
1984年,Shamir绕开繁琐的数字证书管理,提出了基于身份的公钥密码系统的思想。基于身份的公钥密码的一个最大的特点是公钥可以先于私钥产生,因此公钥可为任何字符串。利用这个特点,公钥可以作为某个实体的身份信息,这样就无需使用数字证书,从而避免对数字证书的繁琐管理。
2001年,Boneh等人提出了第一个基于身份的加密方案。该加密方案主要是基于BDH(Bilinear Diffie-Hellman)假设而提出的。该BDH是在双线性配对(Bilinear Pairing)中定义的,下面将首先对相关概念进行说明。
双线性配对令G1和G2分别是具有相同阶q的加法循环群和乘法循环群,q是大素数,P是G1的生成元。如果映射ê满足下面的三条性质,则称映射êG1×G2→G2为有效的双线性配对(双线性映射),该êG1×G1→G2是指函数z=ê(x,y),其中自变量x∈G1,y∈G1,应变量z∈G2。换句话说,ê是笛卡尔积G1×G1到G2的映射。
该三条性质为(1)双线性ê(aP,bP′)=ê(P,P′)ab对所有的P,P′∈G1和所有的a,b∈Z成立,P′表示群G1中的一个元素,Z是整数集。
(2)非退化性如果ê(aP,bP′)=1,对于P′∈G1,那么P=O,O代表群G1中的单位元,P′表示对于群G1中的任意元素。
(3)可计算性对任何的P,P′∈G1,存在一个有效的算法来计算ê(aP,bP′)。
其中,该大素数q对于离散对数环境而言,是二进制表示的160比特,而对于大整数分解问题而言是二进制表示的512比特。循环群的概念为在群G中如果存在有P∈G使得G={Pk|k∈Z},则称G为循环群,称P为G的生成元。该循环群中的生成元P是指能够生成循环群中所有元素的元素。其中,乘法循环群G2可利用该生成元P的乘幂的方法生成;加法循环群G1可利用该生成元P的数乘的方法生成。
BDH在<G1,G2,ê>中,对于给定的a,b,c∈Zq*,已知P,aP,bP,cP∈G1,计算W=ê(P,P′)abc∈G2的问题称为BDH问题,其中Zq*表示集合{1,2,…,q-2,q-1},q是素数。
如果对于算法A存在有P[A(P,aP,bP,cP)=ê(P,P)abc]≥ε,这里P[X]表示事件X发生的概率,ε是任意小的正数,则称算法A对于解决<G1,G2,ê>中的BDH问题具有优势ε。
该<G1,G2,ê>是指由加法循环群G1、乘法循环群G2,以及在G1和G2上的双线性映射ê组成的参数。
BDH假设令G是参数生成算法,对于算法A,令AdvG,A(k)=P[A(q,G1,G2,e^,P,aP,bP,cP)=e^(P,P)abc|⟨q,G1,G2,e^⟩←G(1k),P∈G1*,a,b,c←Zq*],]]>这里P[X|Y]表示事件Y发生时事件X发生的概率,AdvG,A(k)指解决难题的优势,“←”表示得到、算出的意思。
如果对于任意多项式时间的随机算法A,以及任意的多项式f,当k取得足够大时,都有AdvG,A(k)<1/f(k),那么就称G满足BDH假设的参数生成算法。
根据以上所述的BDH和双线性配对的描述,下面将进一步说明现有基于身份的典型的密码方法。
假设G为满足BDH假设的参数生成算法,则以G构造的基于身份的加密方法包括4个算法模块<Setup,Extract,Encrypt,Decrypt>。图1显示了依照现有技术的密码系统的模块图。
如图1所示,依照现有技术的密码系统包括参数生成模块(Setup)11、私钥生成模块(Extract)12、加密模块(Encrypt)13、以及解密模块(Decrypt)14。
<Setup>
在参数生成模块11中,正整数k为输入,该参数生成模块11执行步骤如下步骤1以k为参数运行该满足BDH假设的参数生成算法G。该参数生成算法G有4个输出,分别是大素数q,q阶加法循环群G1,q阶乘法循环群G2,以及双线性配对êG1×G1→G2。
步骤2从G1中选择一个生成元P,随机选择s,s∈Zq*,并令Ppub=sP。
步骤3选择正整数n(表示明文比特数),定义明文空间M={0,1)n(所有可能明文的集合),且定义密文空间C=G1*×{0,1)n(所有可能的密文的集合),并定义Hash函数H1{0,1)*→G1*(密码学哈希函数,即H1是{0,1}*到G1*的密码学哈希函数)以及H2G2→{0,1}n,{0,1}*表示有不确定个集合{0,1)的笛卡尔积。
综合以上信息,该参数生成模块11获得系统参数param=<q,G1,G2,ê,n,P,Ppub,H1,H2>,masterkey(私钥生成中心的秘密保存的系统私钥)就是s∈Zq*。
即参数生成模块11计算并获得密码系统所需的系统参数。
<Extract>
在私钥生成模块12中,给定ID∈{0,1)*作为输入,其中ID是取自{0,1)*的函数的自变量,该私钥生成模块12执行步骤步骤4计算QID=H1(ID)∈G1*,即QID=H1(ID),且结果在G1*中。这里G1*表示G1\{0}。
步骤5计算私钥dID=sQID。注意,QID也是群的生成元,根据s的取值,私钥也是在G1*上随机分布的。
即私钥生成模块12计算并获得用户对应的私钥(长期私钥)。
<Encrypt>
该加密模块13执行步骤步骤6随机选择r∈Zq*。
步骤7利用步骤4中计算的QID=H1(ID)∈G1*,计算gID=ê(QID,Ppub)∈G2*,并由gID计算C=<U,V>(C为加密后的密文),这里U=rP,V=MH2(gIDr),表示按比特进行异或运算。
即加密模块13计算用户对应的公钥,并利用公钥对明文M加密,获得密文C。
<Decrypt>
该解密模块14执行步骤步骤8根据C=<U,V>计算M=H2(ê(dID,U))V,即对密文C进行解密,获得明文M。
其中,一致性是成立的,因为ê(dID,U)=ê(sQID,rP)=ê(QID,P)sr=ê(QID,sP)r=ê(QID,Ppub)r=gIDr。
根据上述<Setup,Extract,Encrypt,Decrypt>算法,即实现了现有的基于身份的公钥密码方法。在该基于身份的密码方法中,用户的公钥就是用户的身份,因此无须象基于证书的密码系统那样进行繁琐的证书管理。但是,该方法具有一个非常大的缺点一旦用户的私钥泄露,那么由于用户的公钥就是用户的身份,因此用户能做的方法只能是通过公告机制宣布自己的身份无效,这样的做法无形之中又使基于身份的密码系统引入了繁琐的证书管理机制,同时用户自己可能被迫退出此基于身份的密码系统。显然这对于很多应用领域都是致命的。
因此,有必要设计一种新的基于身份的密码方法和系统,从而有效的保护用户的私钥,并使用户的身份固定。

发明内容
本发明的第一目的是提供一种密码方法,从而避免用户长期私钥的泄漏。
本发明的第二目的是提供一种密码系统,从而避免用户长期私钥的泄漏。
根据本发明的第一目的,提供一种基于身份的密码方法,包括步骤生成用于加密和解密的系统参数;根据用户的身份信息以及所述系统参数,生成长期私钥;根据所述系统参数和用户的身份信息获得公钥,并利用公钥对要加密的明文进行加密,获得加密后的密文;根据所述系统参数和长期私钥,生成用于解密的临时私钥;以及根据所述临时私钥,将所述密文解密为明文。
根据本发明的第二目的,提供一种基于身份的密码系统,包括参数生成模块,用于生成加密和解密用的系统参数;长期私钥生成模块,用于根据用户的身份信息以及所述系统参数,生成长期私钥;加密模块,用于根据所述系统参数和用户的身份信息获得公钥,并利用公钥对要加密的明文进行加密,获得加密后的密文;临时私钥生成模块,用于根据所述系统参数和长期私钥,生成用于解密的临时私钥;以及临时解密模块,用于根据所述临时私钥,将所述密文解密为明文。
本发明的有益效果是本发明将基于身份的密码技术、与要解密的密文的加密时间段信息结合起来,设计出了一密码方法和系统,其基于用户身份、且根据密文被加密时间段信息以及用户长期私钥而生成用户的临时私钥。在该基于身份的密码系统中,其不需要证书管理系统(CA),用户长期私钥并不参与解密,而是由临时私钥完成解密,所以长期私钥得到保护。从而避免了长期私钥的泄露,而有效的应用于安全管理、有效跟踪、识别和认证,尤其适用于银行系统、政府部门和大型企业的电子政务/商务,构建不需要公钥基础设施(PKI)的信息化安全体系。


图1显示了依照现有技术的密码系统的模块图;图2显示了依照本发明的基于身份的具有临时解密功能的密码系统的模块图;图3显示了依照本发明的密码系统执行的操作的流程图。
具体实施例方式
如图2所示,依照本发明的密码系统包括参数生成模块1、长期私钥生成模块2、加密模块3、临时私钥生成模块4、以及临时解密模块5。
其中,参数生成模块1根据输入k生成该密码系统的公共参数,并输出到其它所有模块。
该长期私钥生成模块2根据用户的身份信息ID以及参数生成模块1输入的公共参数,生成(长期)私钥dID。
该临时私钥生成模块4根据参数生成模块1输入的公共参数、长期私钥生成模块2输入的该长期私钥dID和时间段信息t生成用于解密的临时私钥PSK。
该加密模块3根据参数生成模块1输入的公共参数,和用户的身份信息获得公钥,并将明文M加密为密文C。
该临时解密模块5利用临时私钥生成模块4输入的该临时私钥PSK,对加密模块3输入的密文C进行解密运算,恢复明文M。
下面将结合流程图对该密码系统中的各个模块的操作进行具体说明。
图3显示了依照本发明的密码系统执行的操作的流程图。
<参数生成模块>
如图3所示,该参数生成模块1执行如下步骤步骤10以输入的正整数k为参数运行上述满足BDH假设的参数生成算法G,从而获得该参数生成算法G的输出,即大素数q、q阶加法循环群G1,q阶乘法循环群G2,以及双线性配对êG1×G1→G2。
步骤11从步骤10获得的该加法循环群G1中选择一生成元P,并随机选择s,s∈Zq*,并令Ppub=sP。Zq*表示集合{1,2,…,q-2,q-1),其中q是素数。
步骤12选择正整数n,定义明文空间M={0,1}n-l(所有可能明文的集合,n-l为明文比特长,n可根据具体情况而任意设定)和密文空间C(所有可能的密文的集合),这里0<l<n,C=G1×G2×{0,1}n;并定义Hash函数H0{0,1}*→G1*,H1{0,1}*→G1*(密码学哈希函数,即H0,H1分别是{0,1)*到G1*的密码学哈希函数,G1*为G1\{0},表示集合G1中减去0),H2{0,1}n→Zq*,以及H3G2→{0,1}n。{0,1)*表示有不确定个集合{0,1)的笛卡尔积。具体选择参数以及确定哈希函数H0、H1、H2、H3的方法将在之后描述。
从而该参数生成模块1将该步骤10、11、12的输出结果作为该密码系统的系统参数param=<q,G1,G2,ê,n,l,P,Ppub,H0,H1,H2,H3>。
<长期私钥生成模块>
该长期私钥生成模块2执行如下步骤步骤13对于用户身份信息ID,ID∈{0,1}*,计算QID=H0(ID)。
步骤14计算并获得私钥(长期私钥)dID,dID=sQID。值得注意的是,QID是加法循环群G1的生成元,根据s的取值,私钥也是在G1*上随机分布的。
<加密模块>
该加密模块3执行如下步骤步骤15此时假设在时间段信息为t时,该加密模块3随机选择字符串r1,r1∈{0,1}l,计算r2=H2(M‖r1)、C1=r2P、C2=r2H1(t),并利用公钥计算g=e^(Ppub,QID)r2,]]>从而得到C3=(M‖r1)H3(g),所以获得密文C,C=(C1,C2,C3),其中M是明文,M‖r1表示M后面紧接着是r1,即将字符串M和字符串r1连接起来而组成的新的字符串,表示按比特进行异或运算。
<临时私钥生成模块>
该临时私钥生成模块4执行如下步骤步骤16计算QID,QID=H0(ID)∈G1*,ID∈{0,1}*.]]>步骤17假设t表示用于解密的临时私钥PSK起作用的时间段信息,则随机选择d∈Zq*,]]>令StID=dID+dH1(t),TtID=dP,]]>则临时私钥生成模块获得解密密钥(临时私钥)PSK=(StID,TtID).]]><临时解密模块>
该临时解密模块5执行如下步骤步骤18根据C=(C1,C2,C3),计算g′=e^(C1,StID)·e^(TtID,C2)-1]]>和M′=C3H3(g′)。
步骤19令r2′=H2(M′),判断等式C1=r2′P是否成立,如果不成立,则认为该密文C出错;否则,取M′的前n-l比特作为解密后的明文。
根据图3所示的流程图,依照本发明的密码系统在用于解密的临时私钥PSK起作用的时间段信息t内,不仅不需要证书管理系统(CA),并且由于用户的长期私钥dID=sQID并不参与解密,而是采用根据该长期私钥的临时私+PSK进行解密操作,从而避免了用户长期私钥的泄漏,使用户的身份固定,并有效的用于安全管理、有效跟踪、识别和认证。
下面将对上述依照本发明的密码系统中的系统参数选取与Hash函数的确定方法进行具体说明。
(1)系统参数的选取方法如上述参数生成模块1生成的系统参数中,主要是选取q阶群G1,G2和有效的双线性配对êG1×G1→G2。选取方法可为任意,下面只介绍一种作为示例步骤21生成大素数p和q,使得满足p=6q-1。
步骤22选择有限域Fp上的椭圆曲线y2=x3+1,其点组成的集合记为E(Fp),应理解的是E(Fp)构成p+1阶加法Abel群。
步骤23选择P∈E(Fp)是阶为q的元素,则由生成元P生成的q阶循环子群取为G1;并记域Fp的二次扩域为Fp2,该二次扩域上的乘法群记为Fp2*,Fp2*的q阶子群记取为G2,从而获得q阶加法循环群和q阶乘法循环群;并且,由椭圆曲线理论可知,Weil配对eG1×G1→G2满足有效的双线性配对的条件,即Weil配对eG1×G1→G2是有效的双线性配对。
(2)Hash函数的确定方法在本发明中,参数生成模块1生成Hash函数H0,H1,H2,H3,其中H0,H1都是{0,1}*→G1*的单向函数,其可以选择是同一个Hash函数。所以这里仅给出Hash函数H1的确定方法步骤31对于任意ID,利用SHA-1算法(记为Hs)计算y0=Hs(ID)(mod p),modp表示以p为模的模运算。
步骤32在Fp上计算x0=(y02-1)1/3=(y02-1)(2p-1)/3,]]>从而获得E(Fp)中的点QID=(x0,y0),也就是Hash函数H1(ID)=QID。
Hash函数H2的确定方法是,当输入为x∈{0,1}n时,计算H2(x)=Hs(x)(mod q)。
Hash函数H3的构造方法则直接采用现有SHA-1函数Hs,并且在本发明中,Hash函数SHA-1的输出的长为n。
<本发明的应用实施例>
下面将对如上所述的依照本发明的密码系统应用于企业中时,临时私钥的生成方法(密码方法)进行具体说明。
依照本发明的图2所示的模块图,当在XXX公司使用本发明的密码方法/系统时,参数生成模块1可生成系统参数param=<q,G1,G2,ê,n,l,P,Ppub,H0,H1,H2,H3>。可以将XXX公司看作是一个用户U,其身份信息为ID。由长期私钥生成模块2根据系统参数和ID生成该用户U的长期私钥dID,并存放在公司的刷卡机里。此时该XXX公司中的所有员工的长期私钥都是相同的。
而对应的该公司的某个员工时,加密模块3根据该员工的信息,例如职权信息和时间信息的结合,可以形成时间段信息t。每天,当该员工利用刷卡机刷卡时,刷卡机根据长期私钥生成该员工当天的临时私钥,只在当天对该员工有效。当该员工离职后,无需进行证书撤销,由于该员工并不知道长期私钥,所以长期私钥并未由于员工离职而泄漏。并且该员工的后继者还可以继续利用根据该相同职权信息和时间信息的结合生成时间段信息。此时职权相同,但是对应后继者的时间信息是不同的。
例如,Alice在XXX公司工作,职权是“KKK”,而且当天的时间是2005年03月25日,那么密码系统中的加密模块3根据职权“KKK”和当天的时间的结合,获得该职位对应的时间段信息为“KKK‖20050325”。同时,密码系统中的临时私钥生成模块4在Alice刷卡时,根据长期私钥dID,生成与Alice对应的在2005年03月25日的临时私钥。即Alice在XXX公司的时间段信息为t=KKK‖20050325,在2005年03月25日的当天,其拥有临时私钥(StID,TtID)。
值得注意的是,Alice无论在职多少天,由于参数k对应的时间段信息每天都在变化,所以Alice的时间段信息和对应的临时私钥每天都在根据日期而变化。并且,在2005年03月25日,Alice获得临时私钥(刷卡)的时间段信息、当天对明文加密的时间段信息、以及该临时私钥有效的时间段信息(当天)都是相互对应的。
当Alice在2005年04月25日被Bob接替了职位“KKK”时,Alice并不知道且并未泄漏长期私钥。此时与Bob相对应的时间段信息是“KKK‖20050425”。由此,在2005年04月25日,只有Bob刷卡时才根据相同的长期私钥dID而获得与该职位相对应的临时私钥,并对在2005年04月25日需要解密的密文,只有Bob可以利用该临时私钥来对密文进行解密,而Alice此时因不具有根据长期私钥的在2005年04月25日的临时私钥,从而不具备解密权限了。
当然,以上情况是对XXX公司中的员工(主用户中的子用户)设置临时私钥,也可以直接对一用户设置长期私钥,并生成该用户的临时私钥,用于解密。
综上所述,本发明将长期私钥存放在安全设备(刷卡机)中,并且该长期私钥不参与解密。本发明的密码系统每天都根据安全设备中的长期私钥生成根据日期和职位的临时私钥,并将临时私钥导入到不太安全的设备(例如员工的个人电脑),临时私钥只能用于对根据日期加密的密文进行解密。由此,当临时私钥泄漏时,不会危及长期私钥的泄漏。另外,如果Bob想解密以前Alice在职期间的密文C,那么Bob在取得授权后,由XXX公司将Alice在职期间的密文C对应的日期的临时私钥导入到不太安全的设备,然后Bob实施解密操作就可以获得明文M。
因此,综合基于身份的公钥密码的优点和公钥定时变动的优点于一体的本发明的密码方法可以使实际应用中的信息安全更上一个层次。
所以,本项发明带来的有益效果是本发明将基于身份的密码技术、与要解密的密文的加密时间段信息结合起来,设计出了一密码方法和系统,其基于用户身份、且根据密文被加密时间段信息以及用户长期私钥而生成用户的临时私钥。在该基于身份的密码系统中,其不需要证书管理系统(CA),用户长期私钥并不参与解密,而是由临时私钥完成解密,所以长期私钥得到保护。从而避免了长期私钥的泄露,而有效的应用于安全管理、有效跟踪、识别和认证,尤其适用于银行系统、政府部门和大型企业的电子政务/商务,构建不需要公钥基础设施(PKI)的信息化安全体系。
对该技术领域的普通技术人员来说,根据以上实施类型可以很容易的联想到其他的优点和变形。因此,本发明并不局限于上述具体实施例,其仅仅作为例子对本发明的一种形态进行详细、示范性的说明。在不背离本发明宗旨的范围内,本领域普通技术人员可以根据上述具体实施例通过各种等同替换所得到的技术方案,但是这些技术方案均应该包含在本发明的权利要求的范围及其等同的范围之内。
权利要求
1.一种基于身份的密码方法,包括步骤A生成用于加密和解密的系统参数;B根据用户的身份信息以及所述系统参数,生成长期私钥;C根据所述系统参数和用户的身份信息获得公钥,并利用公钥对要加密的明文进行加密,获得加密后的密文;D根据所述系统参数和长期私钥,生成用于解密的临时私钥;以及E根据所述临时私钥,将所述密文解密为明文。
2.如权利要求1所述的基于身份的密码方法,其中,在步骤D中,进一步根据临时私钥有效的时间段信息,生成用于解密的临时私钥。
3.如权利要求2所述的基于身份的密码方法,其中,该临时私钥有效的时间段信息与表示用户实施加密操作的时间段信息相对应。
4.如权利要求3所述的基于身份的密码方法,其中,在步骤E中,该密文可被解密为明文的时间段与所述临时私钥有效的时间段相对应。
5.如权利要求1至4中任一项所述的基于身份的密码方法,其中,在步骤C中,进一步根据所述系统参数、公钥、以及表示用户实施加密操作的时间段信息,对要加密的明文进行加密,获得加密后的密文。
6.一种基于身份的密码系统,包括参数生成模块,用于生成加密和解密用的系统参数;长期私钥生成模块,用于根据用户的身份信息以及所述系统参数,生成长期私钥;加密模块,用于根据所述系统参数和用户的身份信息获得公钥,并利用公钥对要加密的明文进行加密,获得加密后的密文;临时私钥生成模块,用于根据所述系统参数和长期私钥,生成用于解密的临时私钥;以及临时解密模块,用于根据所述临时私钥,将所述密文解密为明文。
7.如权利要求6所述的基于身份的密码系统,其中,在临时私钥生成模块中,进一步根据临时私钥有效的时间段信息,生成用于解密的临时私钥。
8.如权利要求7所述的基于身份的密码系统,其中,该临时私钥有效的时间段信息与表示用户实施加密操作的时间段信息相对应。
9.如权利要求8所述的基于身份的密码系统,其中,该密文可被解密为明文的时间段与所述临时私钥有效的时间段相对应。
10.如权利要求6至9中任一项所述的基于身份的密码系统,其中,在加密模块中,进一步根据所述系统参数、公钥、以及表示用户实施加密操作的时间段信息,对要加密的明文进行加密,获得加密后的密文。
全文摘要
本发明提供一种基于身份的密码方法和系统。该密码方法包括步骤生成用于加密和解密的系统参数;根据用户的身份信息以及所述系统参数,生成长期私钥;根据所述系统参数和用户的身份信息获得公钥,并利用公钥对要加密的明文进行加密,获得加密后的密文;根据所述系统参数和长期私钥,生成用于解密的临时私钥;以及根据所述临时私钥,将所述密文解密为明文。由于本发明中用户长期私钥并不参与解密,而是由临时私钥完成解密,所以长期私钥得到保护,从而避免了长期私钥的泄露。
文档编号H04L9/30GK1859090SQ20051009759
公开日2006年11月8日 申请日期2005年12月30日 优先权日2005年12月30日
发明者曹珍富, 周渊, 柴震川, 郑志彬, 涂卫华 申请人:上海交通大学, 华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1