密码系统中基于用户定义识别码编制公用密钥的方法及装置 【技术领域】
本发明大体上涉及密码系统的范畴,且特别涉及在密码系统中编制公用密钥的方法和装置,这乃由ASCII字符组成的可供用户定义和识别的识别码所创建。本发明的应用亦同时涉及基于个人计算机的密码系统,其编制用于数字数据处理和/或透过通信信道传输信息和数据的公用密钥。此外,本发明还涉及一个适用于多功能安全应用的密码系统。
背景技术
用来传送和接收信息的加密和解密技术早已在很久以前出现。过去,机密信息可利用符号、谜语或其它类似形式在通信媒体上传输。现在,是用具特别功能的软件程序与计算机硬件配合使用,例如,用于隐藏内里意思、限制存取、阻止逆向工程、认证资源以及其它安全或机密信息活动。
全球无数的计算机是透过互联网互相连结起来的。实际上,就传输数据和信息、交流和传播意见、经营生意和其它有关活动而言,这个通信媒体提供唯一一个最有理想的信道。透过互联网或任何一种在线连接传输的信息,都可能受到未经授权使用、未经授权存取以及其它不法行为所限。利用密码系统可减少或除去这些行为。密码系统允许传输具有特定重要性的信息,除了准备接收者之外,此信息是无法理解的。有两种普通的密码系统算法是现今正沿用的,分别为对称和非对称密码系统(或公用密钥密码系统)。在对称密码系统中,加密密钥可由解密密钥计算而得,反之亦然。一般地,加密密钥与解密密钥是相同的,而且要共享。这样,在使用加密程序保护传输之前,传送者和接收者要先达成协议或取得密钥。如果把密钥泄露予未经授权的一方,未经授权的一方就可在毫无障碍地情况下检视或纂改加密数据内的信息。在非对称密码系统或公用密钥密码系统中,基于计算步骤和需求增加,则要求更精细和巨大的硬件配置。用于加密和解密的密钥的不同之处,是最少一个密钥是无法用计算机由另一个密钥计算出来。密钥是一对的:一个公用密钥(加密)和一个私有密钥(解密),为了安全和保护数据的完整性,解密密钥要保持机密,而公用密钥则可公开。用公用密钥加密的信息只可用对应的私有密钥解密。一般而言,特别是由于密钥容量较大,非对称密码都会较对称密码慢。不过,利用现有的椭圆曲线分立对数问题或本发明建议的椭圆曲线密码系统为基础的算法,则可使用容量较小的密钥,这容量较小的密钥从而可加快处理的速度。密钥的容量较小是理想的,因为它适用于基于个人计算机而设的应用程序、或其它小型或移动通信多功能安全装置的应用程序。建议的密码系统克服了现有系统的限制,允许个人计算机的应用、小型或移动通信装置的多功能安全应用、以及基于服务器而设的应用。
因此,本发明的目的,是要为由现有的非对称加密/解密方法和装置产生的问题提供解决方法。建议的发明是利用椭圆密码系统(ECC),或是瑞未斯特-希米尔-爱得曼法(Rivest-Shamir-Adleman/RSA)密码系统以及其它合适的算法,编制一对对安全的密钥。大体上,就计算成本、密钥容量和带宽而言,无论对比整数分解系统或分立对数系统,ECC都较它们有效。在应用上,这些节约表示有较高速度、消耗较少能量以及减低编码大小。因此,基于个人计算机而设的应用程序可使用正常具有更高装配需求的系统,如具有同样大小硬件配置的服务器。此外,ECC更可提供更高的安全性。例如,一条具有投影点PE(Zp),次序为160位素数p的椭圆曲线E(Zp),比1024位模数N(N=P*Q)的RSA提供较高的安全性。本发明的另一个主要目的,是利用输入易于记忆或辨识的ASCII字符,透过使用对称加密和专有的素数编制程序来传开公用密钥,从而藉设定ECC参数编制公用密钥。
【发明内容】
因此,本发明的目的,是提供一个用于多功能安全系统的公用密钥编制程序。
本发明的另一目的,是提供一个以用户定义识别码作为密码系统的输入而编制公用密钥的方法。
本发明的另一目的,是为密码系统提供一个个人计算机可用的加密/解密。
要实现本发明以上和其它目的,可透过提供:
一个编制用于加密和解密数字数据的公用密钥的装置,所述装置包括:一个人计算机装置(1),其具有最少一处理器(2)、一存储装置(3)、一输入装置(4),以及一位于所述存储装置内的密钥编制模块(5),其特征在于:所述密钥编制模块处理透过所述输入装置输入的由ASCII字符组成并可供用户定义和识别的识别码来编制公用密钥。
要实现本发明的目的,亦可透过提供:
一个编制用于加密和解密数字数据的公用密钥的方法,包括:一位于个人计算机装置(1)存储装置(3)的密钥编制模块(5),其具有最少一处理器(2)、所述存储装置(3),以及个输入装置(4),其特征在于:所述密钥编制模块(5)处理透过所述输入装置输入的由ASCII字符组成并可供用户定义和识别的识别码来编制公用密钥,所述方法的步骤包括:
(a)设定最少六个预定的主密钥(主密钥0、主密钥1、主密钥2、主密钥3、主密钥4、主密钥5);
(b)把所述由ASCII字符组成并可供用户定义和识别的输入识别码随机化,并计算与所述由ASCII字符组成并可供用户定义和识别的输入识别码相关的模数P;
(c)计算第一(A)、第二(B)、第三(X)和第四(D)变数,先基于上述第一主密钥(主密钥0)加密所述由ASCII字符组成并可供用户定义和识别的输入识别码,再对所述已加密的由ASCII字符组成并可供用户定义和识别的输入识别码应用散列函数,然后将其分为四个长度相等的变数、其分别对应所述第一(A)、第二(B)、第三(X)和第四(D)变数;
(d)测定与各所述变数相关的素数;
(e)透过将各所述素数分别以所述第二主密钥(主密钥1)、第三主密钥(主密钥2)和第四主密钥(主密钥3)加密,将步骤d的所述第一(A)、第二
(B)和第三(X)变数的素数随机化;
(f)散列所述在步骤e已加密的第一(A)、第二(B)和第三(X)变数,并测定与各所述变数相关的素数;
(g)把所述第三(X)变数的素数介定为X0;
(h)把以Y02=X03+AX0+B(mod P)公式定义的椭圆曲线上的起始点(X0)初始化,并计算出对应的起始点(Y0);
(i)基于所述第五变数(主密钥4)加密步骤d的所述第四(D)变数的素数,然后对加密变数应用散列函数,并把它介定为与所述由ASCII字符组成并可供用户定义和识别的输入识别码相关的私有密钥;
(j)将所述起始点(X0,Y0)与在步骤i计算出来的第四变数(D)相乘,计算出在所述椭圆曲线中公用密钥的投影点(X1,Y1);
(k)把所述公用密钥介定为一系列由步骤a至j计算出来的X0、Y0、X1、Y1、A、B和P。
优选而言,加密程序利用强对称加密系统,如三重加密技术(3DES)和进阶加密系统(AES),或其它现有的强公用密钥加密系统,如ECC和RSA。
同样优选的,是利用椭圆曲线算法测定程序中与变数相关的素数。
同样优选的,是在程序中利用安全散列算法(Secure Hashing Algorithm/SHA)。这个SHA函数可包括SHA-1、SHA-2或其它现有技术的强散列。
【附图说明】
现以实施例和以下附图详述本发明:
图1为框图,代表根据本发明应用密码系统的装置;
图2为流程图,显示根据本发明在密码系统中编制公用密钥的方法;
图3为流程图,显示接着图二所示的步骤后的其它选择性程序。
【具体实施方式】
现在参照附图,特别是图1,其示出了本发明的实施例的编制公用密钥的装置。在最低配置要求下,所述装置可包括个人计算机装置(1),其具有可互相连结的处理器(2)、存储装置(3)以及输入装置(4)。此外,个人计算机装置(1)亦可包括一存储器(未显示)、显示器(未显示)、网络卡(未显示)和任何现有技术中普遍已知的有关组件。密钥编制模块(5)位于存储装置(3)内,其一旦开始执行工作,就会处理透过输入装置(4)输入的信息来编制公用密钥,用作处理数字数据和信息,正如本说明书早前提及的一样。对比其它现有密码系统,密钥编制模块(5)处理透过输入装置(4)输入的可供用户定义和易于识别的识别码。这个输入的识别码的优点在于其使用通用的ASCII字符。这些可供用户定义和识别的识别码的例子包括与用户有关的特定名称,如Adam、Mohamad、Jim、888-888等,或用户的公司名称,如ABCEnterprise_Adam、XYZCorporation_Mohamad等,或任何用户喜欢的词组。输入的词组可以是易记的词组,包括数字、字词或其组合,在加密和解密数据时,它们会用作编制真正公用密钥的输入或源头。有利地,它们可用作安全储存和检索数据、传输和接收信息、安全通信、取得数据、理财等。图中显示的处理器可包括一个单一或多个连结起来的处理器。存储装置(3)可包括一般硬盘、随机储存器(RAM)或只读储存器(ROM)。此外,输入装置(4)包括小型键盘、键盘、鼠标或类似指针设备的任何一种。虚拟小型键盘、接触式屏幕、电话和其它个人计算机都可作为这种输入装置的一部份。一般而言,所述装置可作为独立个人计算机,或作为与多个个人计算机、转储终端等连结的服务器。
图2为流程图,代表根据本发明编制公用密钥的程序。正如先前指出,本方法利用一个可供用户定义和识别的识别码(如前所述从现有ASCII字符中选取)编制公用密钥。参照附图,这个程序始于开始(10)。主密钥(主密钥0、主密钥1、主密钥2、主密钥3、主密钥4、主密钥5)设定于(20)。这些主密钥会因应系统拥有者的要求而更变。不过,为了达致兼容,这些主密钥由始至终应保持一致。在本实施例中,主密钥的长度设定为最少256位。预期在未来的应用中,主密钥会依照未来的要求设定较短或较长的长度。接着,输入的识别码转换为其等效二进制数(30)。然后再依据预设公式进行随机程序,并计算出模数P(40)。模数P被介定为步骤(40)中的下一个素数P。
在步骤(50)中,计算出与输入的识别码相关的变数A、B、X和D的值。这些变数是透过以下程序计算出来的:
首先,输入的识别码(二进制)透过对称密码系统算法如3DES、AES、IDEA或其它密码系统算法加密为第一主密钥(主密钥0)的函数。随后对已加密的识别码应用散列函数,优选使用强散列如SHA-1、AES 256或SHA-2。所得的结果是随机化的,然后会被分为四个长度相等的变数,即第一变数(A)、第二变数(B)、第三变数(X)和第四变数(D)。接着再测定与各变数相关的素数。
要说明这个过程,假设由ASCII字符组成并可供用户定义和识别的输入识别码为如下:
ID(识别码)=b0b1b2b3b4…bn(形式应为二进制)。此识别码会基于第一主密钥(主密钥0)进行加密过程,即ID已加密←对称加密(ID,主密钥0)。接着对其应用散列函数,所得结果会被分为四个长度相等的变数(A、B、X、D)。基于这些变数,以一个素数编制程序编制与各变数相关的256位素数。这个程序的说明如下:
假设A←a0a1a2a3a4…am
B←b0b1b2b3b4…bm
X←x0x1x2x3x4…xm
D←d0d1d2d3d4…dm
首先,素数编制程序会把数字规划至目标大小。假设Q=P0P1p2p3P4…pm为一列以2、3、5、7、11等开始的素数。位会用作输入,并作为使其成为素数的下一个素数函数出现前编制256位数的源头。让我们考虑另外四组(R、S、U、V)的随机数字{1、2、3、4…z},其中z是由特定系统选取的各不相同的自然数。因此,
R=r0r1r2r3r4…rm
S=s0s1s2s3s4…sm
U=u0u1u2u3u4…um
V=v0v1v2v3v4…vm
规划原始参数,使它们变成256位数,然后,
A←p0a0+r0·p1a1+r1·p2a2+r2·p3a3+r3·p4a4+r4··pmam+rm
B←p0b0+rs·p1b1+s1·p2b2+s2·p3b3+s3·p4b4+s4··pmbm+sm
X←p0x0+u0·p1x1+u1·p2x2+u2·p3x3+u3·p4x4+u4··pmxm+um
D←p0d0+v0·p1d1+v1·p2d2+v2·p3d3+v3·p4d4+v4··pmdm+vm
素数编制程序会把以上四个数字推至在其邻域最近的素数,在本应用的例子中,即大小为256位。
A素数←下一个素数(A)
B素数←下一个素数(B)
X素数←下一个素数(X)
D素数←下一个素数(D)
上述三个变数(A素数、B素数、X素数)会进行另一次更强的加密程序和散列函数来进一步把变数随机化。不过,在这步骤中,变数是基于其各自的主密钥而加密的,即:
A素数,已加密←对称加密(A素数,主密钥1)
B素数,已加密←对称加密(B素数,主密钥2)
X素数,已加密←对称加密(X素数,主密钥3)
与上述各数相关的素数介定如下:
A←下一个素数(A素数,已加密)
B←下一个素数(B素数,已加密)
X0←下一个素数(X素数,已加密)
在步骤(60),参数X0已预备作椭圆曲线的起始点,椭圆曲线以如下公式介定:Y02=X03+AX0+B(mod P)。接着,计算出在Fp范畴里X03+AX0+B中Y0的方根。在选取的椭圆曲线上的起始点会介定为(X0,Y0)。然后,在寻找素数程序中计算而得的第四变数(D)会基于第五主密钥(主密钥4)进行加密和散列函数。它是介定为:D←对称加密(D素数,主密钥4),而这个随机数就是与输入的识别码相关的私有密钥。它随后会与起始点(X0,Y0)相乘,从而得出投影点(X1,Y1)。
(X1,Y1)=D(X0,Y0)
与输入的识别码相关的公用密钥之后会被介定为一系列由整个程序计算出来的变数。
公用密钥=(X0,Y0),(X1,Y1),A,B,P。
把公用密钥传送予公开地址簿或储存前,需再次进行加密。与这公用密钥系相关的地址可以公开,并与本发明构想的多功能安全应用配合使用。
要进一步说明随机化和得出特定输入识别码的素数的概念,可参考以下部分:
椭圆曲线密码系统(ECC)包括256位模素数P。假设输入的识别码为32个可见字符,每个输入的识别码字符分配六位。接着,输入的识别码会包括192位(32字符乘以六位),假设P以十六进制格式写成。
P=FFFFFFFFFFFFFFFFxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzz
F代表24-1=15的值。P的首批十六进制数设定为F。接着的48个十六进制数会由经过加密和散列程序后的192位识别码测定。第二串(xxxxxxxxxxxxxxxx)和第三串(yyyyyyyyyyyyyyyy)是经过进阶加密系统(AES)加密和安全散列算法SHA-2而得的。第三串(yyyyyyyyyyyyyyyy)和第四串(zzzzzzzzzzzzzzzz)是从经过另一轮AES加密和安全散列算法SHA-2而得的。接着,经过下一个素数函数后,P会变成素数,即P=下一个素数(P)。
现在参照图3,其示出了与本发明的实施例有关的之后的选择性步骤。在这图中,先前介定了的公用密钥系{(X0,Y0),(X1,Y1),A,B,P}在(70)中会进行加密,它是基于第六主密钥(主密钥5)、利用一般现有的加密算法,如AES、CAMELLIA、SEED或其他算法加密。用户选取的个人身份识别码(80)是透过输入装置输入的,并用作会话密钥,它是用来进一步加密基于第七主密钥(主密钥6)、依以上步骤计算而得的私有密钥。接着会进行散列,把它随机化和储存。这系统现可应用于任何应用程序上,特别是发明者构想的多功能安全系统参数。
相信本发明的实施例可以并入其它许多应用程序中。虽然已描述本发明的优选实施例,应明白可对其进行各种变化、适应和修改。因此,也要明白本发明不限于附图显示中所说明本发明的细节,而在这些较少细节上的变化对专于技术人员来说是明显易见的。