一种密钥分配方法及解密方法

文档序号:7761371阅读:217来源:国知局
专利名称:一种密钥分配方法及解密方法
技术领域
本发明属于数据加解密技术领域,尤其涉及一种密钥分配方法及解密方法。
背景技术
随着信息技术的飞速发展,计算机大批量数据存储的安全问题、敏感数据的防窃取和防篡改问题越来越引起人们的重视。保护数据的有效方法是建立数据保护系统,数据保护系统可以对数据库中的数据以及文件夹中的数据进行保护。数据保护系统中不同的数据有不同的安全性需求,根据安全性需求的不同,可以将数据库的数据和文件夹中的文件分成若干个不同的安全数据类,每个安全数据类都有一个数据类密钥,不同的安全数据类对应的数据类密钥也不相同。与数据安全相对应的是用户权限,根据用户权限的不同,用户可以分成若干个用户类,不同用户类权限的不同主要体现在它们对数据类密钥的掌握上,权限越高的用户类所掌握的数据类密钥越多、对数据的访问权限越大。目前对数据类密钥的分配方式为中央授权机构或密钥分配中心根据不同用户类具有的用户权限确定各用户类可以掌握的若干个数据类密钥,之后将此若干个数据类密钥传输至属于该用户类的所有用户。但是,上述数据类密钥的分配方法具有如下缺点用户掌握了多个数据类密钥,需要对多个数据类密钥进行管理,随着用户所掌握数据类密钥数量的增加,管理难度也随之增加;由于用户直接掌握了数据类密钥,当分属于不同用户类的多个用户进行协作之后,可能获取其他用户类所掌握的数据类密钥,降低了数据保护系统的安全性。

发明内容
有鉴于此,本发明的目的在于提供一种密钥分配方法,可以降低用户管理密钥的难度,并且可以提高数据保护系统的安全性。同时提供一种解密方法,实现对数据的解密。为实现上述目的,本发明提供如下技术方案一种密钥分配方法,应用于中央授权机构,该方法包括分别为每个安全数据类分配一个数据类密钥;分别为每个所述安全数据类分配一个影子数,并另外产生一个混淆数,存储所述影子数和混淆数,所述混淆数和多个影子数为互素数,所述每个安全数据类的影子数大于其数据类密钥,所述混淆数大于所有数据类密钥;确定合成模数,所述合成模数为所述影子数和混淆数的乘积;分别确定每个安全数据类的第一影子伴数,每个安全数据类的第一影子伴数为所述合成模数与当前安全数据类的影子数的比值;分别确定每个安全数据类的第二影子伴数,每个安全数据类的第二影子伴数和第一影子伴数的乘积模该安全数据类的影子数余1,并且每个安全数据类的第二影子伴数小于其影子数;
确定第一混淆伴数,所述第一混淆伴数为所述合成模数与所述混淆数的比值;确定第二混淆伴数,所述第二混淆伴数和第一混淆伴数的乘积模所述混淆数余1, 并且所述第二混淆伴数小于所述混淆数;查询用户权限表,确定用户类的用户类标识和可处理的安全数据类;确定所述用户类可处理的每个安全数据类的密钥隐藏项,所述密钥隐藏项为该安全数据类的数据类密钥、第一影子伴数和第二影子伴数的乘积;确定所述用户类的身份隐藏项,所述身份隐藏项为所述用户类标识、第一混淆伴数和第二混淆伴数的乘积;确定所述用户类的用户类密钥,并将所述用户类密钥传输至属于所述用户类的用户所在的客户端,所述用户类密钥为所述用户类可处理的各安全数据类的密钥隐藏项与所述用户类的身份隐藏项之和模所述合成模数的结果。一种解密方法,应用于数据保护系统服务器,该方法包括获取用户的用户类密钥和数字指纹;获取用户发送的包含要处理数据的标识和操作类型的请求;获取影子表中存储的混淆数;根据所述用户类密钥和所述混淆数确定所述用户的理论用户类标识,所述理论用户类标识为所述用户类密钥模所述混淆数的结果;判断所述理论用户类标识是否包含于用户权限表存储的用户类标识中,当所述理论用户类标识包含于所述用户权限表存储的用户类标识时,获取以所述理论用户类标识命名的指纹文件,判断所述数字指纹是否包含于所述指纹文件中,当所述数字指纹包含于所述指纹文件时,通过查询数据字典确定所述要处理数据所属的安全数据类;判断所述用户发送的操作类型是否未超出用户权限表存储的对所述安全数据类的操作权限,当未超出对所述安全数据类的操作权限时,根据用户类密钥计算所述安全数据类的数据类密钥,计算所述安全数据类的数据类密钥具体为获取影子表中存储的所述安全数据类的影子数,将所述用户类密钥模所述安全数据类的影子数,模运算的结果即为所述安全数据类的密钥;利用所述安全数据类的密钥对所述用户要处理的数据进行解密。由此可见,在本发明公开的密钥分配方法中,仅向用户所在的客户端传输一个用户类密钥,用户利用该用户类密钥即可对属于其权限内安全数据类的数据进行访问,用户无需管理多个密钥,降低了用户管理密钥的难度,并且用户不会接触到数据类密钥,避免了属于不同用户类的多个用户进行协作以获取其他用户类所掌握的数据类密钥情况的发生, 提高了数据保护系统的安全性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明公开的一种密钥分配方法的流程图2为本发明公开的一种将用户类密钥传输至用户的方法的流程图;图3为本发明公开的一种存储数字指纹的方法的流程图;图4为本发明公开的一种解密方法的流程图;图5为本发明公开的一种获取用户类密钥和数字指纹的方法的流程图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明公开一种密钥分配方法,可以降低用户对密钥的管理难度,并且可以提高数据保护系统的安全性。参见图1,图1为本发明公开的一种密钥分配方法的流程图。包括步骤Sll 分别为每个安全数据类分配一个数据类密钥。数据保护系统用于保护数据库中的数据和文件夹中的文件,数据库中存储的数据、文件夹中的各个文件有不同的安全需求。根据安全需求的不同,可以将数据库的数据和文件夹中的文件分成若干个不同的安全数据类,每个安全数据类都有一个数据类密钥与之对应,不同的安全数据类的密钥是不一样的。数据类密钥用于属于该安全数据类数据的加密和解密。在实施中,可以采用伪随机数生成法分别为每个安全数据类分配一个数据类密钥。步骤S12 分别为每个安全数据类分配一个影子数,并另外产生一个混淆数,存储影子数和混淆数。影子数之间两两互素,任一影子数和混淆数也互为素数,并且每个安全数据类的影子数均大于该安全数据类的数据类密钥,另外该混淆数大于所有安全数据类的数据类密钥。步骤S13 确定合成模数。该合成模数为所有影子数以及混淆数的乘积。步骤S14 分别确定每个安全数据类的第一影子伴数和第二影子伴数。每个安全数据类的第一影子伴数为合成模数与当前安全数据类的影子数的比值, 也可以认为每个安全数据类的第一影子伴数为除当前安全数据类之外的其他安全数据类的影子数与混淆数的乘积。每个安全数据类的第二影子伴数和第一影子伴数的乘积模该安全数据类的影子数余1,并且每个安全数据类的第二影子伴数小于其影子数。步骤S15 确定第一混淆伴数和第二混淆伴数。第一混淆伴数为合成模数与混淆数的比值,也可以认为第一混淆伴数为所有安全数据类的影子数的乘积。第二混淆伴数和第一混淆伴数的乘积模该混淆数余1,并且第二混淆伴数小于混淆数。步骤S16 查询用户权限表,确定用户类的用户类标识和可处理的安全数据类。与安全数据类相对应的是用户权限,根据用户权限的不同,用户可以分成若干个用户类,用户类权限的不同主要体现在它们对安全数据类的操作权限上,权限最高的用户类可以对所有安全数据类进行所有操作。在用户权限表中存储有各个用户类的用户类标识,以及各个用户类对各安全数据类的操作权限。步骤S17 确定用户类可处理的每个安全数据类的密钥隐藏项。确定用户类可处理的一个安全数据类的密钥隐藏项的过程具体为获取该安全数据类的数据类密钥、第一影子伴数和第二影子伴数;计算该数据类密钥、第一影子伴数和第二影子伴数的乘积,该乘积即为该安全数据类的密钥隐藏项。步骤S18 确定用户类的身份隐藏项。确定用户类的身份隐藏项的过程具体为获取该用户类的用户类标识、第一混淆伴数和第二混淆伴数;计算该用户类标识、第一混淆伴数和第二混淆伴数的乘积,该乘积即为该用户类的身份隐藏项。步骤S19 确定用户类的用户类密钥,并将该用户类密钥传输至属于该用户类的用户所在的客户端。确定用户类密钥的过程具体为获取该用户类可处理的各个安全数据类的密钥隐藏项;获取该用户类的身份隐藏项;将各个密钥隐藏项与该身份隐藏项之和模合成模数, 模运算的结果即为用户类密钥。之后,将该用户类密钥传输至属于该用户类的所有用户所在的客户端。实施中,为了减小运算量,可以分别将各个密钥隐藏项和身份隐藏项模合成模数, 对获得的多个模运算结果求和,当求和结果大于合成模数时,再将该求和结果模合成模数, 此时的模运算结果即为用户类密钥。下面结合具体实施例对上述公开的密钥分配方法进行说明。根据数据保护系统中数据的安全需求,将数据库中的数据或文件夹中的文件划分为η个安全数据类,D= Wpd2,…,dn},表示数据库或文件夹由安全数据类Cli(整数i e [1, η])组成。为每个安全数据类Cli分配一个数据类密钥,K= {k1 k2,…,kn},K表示数据类密钥集,h表示与安全数据类Cli对应的数据类密钥,Ici用于对属于该安全数据类Cli的数据进行加密和解密。随机选择n+1个两两互素的数mpn^nv··、!^、!·。其中,Hli是安全数据类Cli的影子数,r是混淆数,并且每个安全数据类di的影子数HIi均大于其数据类密钥ki;混淆数r大于所有安全数据类Cli的数据类密钥ki;即Hii > ki; r > K。确定合成模数M,合成模数M为所有影子数Hii以及混淆数r的乘积,即M =
Iii1 *m2 *m3*··· *mn氺 r。确定每个安全数据类屯的第一影子伴数Mi和第二影子伴数Mi'。其中,第一影子伴数Mi为合成模数M与当前安全数据类的影子数Hii的比值,即Mi = MAii,也可以认为每个安全数据类的第一影子伴数Mi为除当前安全数据类之外的其他安全数据类的影子数与混淆数的乘积。每个安全数据类的第二影子伴数Mi'和第一影子伴数Mi的乘积与1同余,模数为该安全数据类的影子数IV即M' ,Mi ^ 1 (mod Hii),并且每个安全数据类的第二影子伴数Mi'小于其影子数Hli。确定第一混淆伴数Mr和第二混淆伴数M/。其中,第一混淆伴数Mr为合成模数与混淆数的比值,即M^ = M/r,也可以认为第一混淆伴数M^为所有安全数据类Cli的影子数 Hii的乘积。第二混淆伴数M/和第一混淆伴数轧的乘积与1同余,模数为该混淆数r,即 M' rMr ^ 1 (modr),并且第二混淆伴数Mr'小于混淆数r。根据用户权限的不同,用户可以分成m个用户类,UC= Iuc1, uc2,…,ucm},UC表示使用数据库D或多个文件夹D的用户类集,用户类权限的不同主要体现在它们对安全数据类的操作权限上,权限最高的用户类可以对所有安全数据类进行所有操作。在用户权限表中存储有各个用户类Ucj的用户类标识IDj,以及各个用户类Ucj可以处理的安全数据类屯。例如,在用户权限表中存储用户类uCl、Uc2和Uc3的用户类标识IDp ID2和ID3,并记载了用户类UC1可以对安全数据类屯、d2和d3进行处理、用户类UC2可以对安全数据类Cl1和 d2进行处理、用户类UC3可以对安全数据类d2和d3进行处理。以用户类UC1为例,对生成用户类密钥的过程进行说明。用户类UCl可以对安全数据类Clpd2和d3进行处理,分别确定安全数据类Clpd2和 d3的密钥隐藏项。安全数据类Cl1的密钥隐藏项为数据类密钥Ic1、第一影子伴数礼和第二影子伴数M1'的乘积,即Ic1M1' M1;安全数据类屯的密钥隐藏项为数据类密钥1 、第一影子伴数M2和第二影子伴数M2'的乘积,即k2M2 ‘ M2;安全数据类(13的密钥隐藏项为数据类密钥k3、第一影子伴数M3和第二影子伴数M3'的乘积,即k3M3' M3。确定用户类Uc1的身份隐藏项,具体为用户类Uc1的用户类标识ID1、第一混淆伴数Mr和第二混淆伴数Mr'的乘积,SP ID1M'具。用户类Uc1 的用户类密钥 Uck1 = Ii1M1' M^k2M2‘ M2+k3M3‘ MjID1M' rMr(modM), 即计算KM1' M1A2M2' M2^k3M3' M3与ID1M' 之和,之后将求和结果模合成模数M,该模运算的结果即为用户类密钥。或者,分别将MV M^k2M2' M2^k3M3' 113与10, A模合成模数M,获得多个模运算结果,计算多个模运算结果之和,若模运算结果之和大于合成模数M,则将该模运算结果之和模合成模数,该模运算的结果即为用户类密钥。将该用户类密钥传输至属于用户类UC1的所有用户所在的客户端。在本发明上述公开的密钥分配方法中,仅向用户所在的客户端传输一个用户类密钥,用户利用该用户类密钥即可对属于其权限内安全数据类的数据进行访问,用户无需管理多个密钥,降低了用户管理密钥的难度,并且用户不会接触到数据类密钥,避免了属于不同用户类的多个用户进行协作以获取其他用户类所掌握的数据类密钥情况的发生,提高了数据保护系统的安全性。实施中,根据用户类可处理的安全数据类生成用户类密钥,并将其传输至属于该用户类的所有用户所在的客户端中。如果后期某个用户类可处理的安全数据类发生变化后,需要根据该用户类当前可处理的安全数据类生成当前的用户类密钥。其过程具体为当用户类可处理的安全数据类增加时,分别确定增加的安全数据类的密钥隐藏项;确定用户类密钥与增加的安全数据类的密钥隐藏项之和模合成模数的结果,该结果即为当前的用户类密钥,将当前的用户类密钥传输至属于该用户类的用户所在的客户端。例如,用户类UCj增加了对数据类4的处理权限,此时用户类UCj的用户类密钥为原有用户类密钥与kfMf ‘ 和模合成模数M。其中,kf为安全数据类4的数据类密钥, Mf'为安全数据类df的第二影子伴数,Mf为安全数据类df的第一影子伴数,M为安全数据类df的合成模数。
当用户类可处理的安全数据类减少时,分别确定减少的安全数据类的密钥隐藏项;确定用户类密钥与减少的安全数据类的密钥隐藏项之差模所述合成模数的结果,该结果即为当前的用户类密钥,将当前的用户类密钥传输至属于所述用户类的用户所在的客户端。例如,用户类UCj失去了对安全数据类df的处理权限,此时用户类UCj的用户类密钥为原有用户类密钥与kfMf ‘ Mf之差模合成模数M。其中,kf为安全数据类df的数据类密钥,Mf'为安全数据类df的第二影子伴数,Mf为安全数据类df的第一影子伴数,M为安全数据类df的合成模数。当用户类可处理的安全数据类的数据类密钥发生变化时,根据数据类密钥发生变化的安全数据类的原始数据类密钥确定该安全数据类的原始密钥隐藏项;根据数据类密钥发生变化的安全数据类的当前数据类密钥确定该安全数据类的当前密钥隐藏项;用户类密钥减去该原始密钥隐藏项,再加上该当前密钥隐藏项,确定该求和结果模合成模数的结果, 该模运算的结果即为当前的用户类密钥,将当前的用户类密钥传输至属于该用户类的用户所在的客户端。例如,安全数据类df的密钥由kf变更为k' f,用户类%有权访问该数据类df,则用户类UCj当前的用户类密钥UCk/为uck' j = uckrkfM' fMf+k' fM' fMf(modM)。在实施中,用户权限表和影子表由中央授权机构生成,之后通过可靠传输通道传输至数据保护系统服务器进行存储,本发明中分配的影子数和混淆数使用公钥加密存储于影子表中。由于影子数和混淆数是使用公钥加密后存储于影子表的,所以只有数据保护系统服务器可以通过自己掌握的私钥获得影子数和混淆数,而用户是无法获得影子数和混淆数的,由此杜绝了用户根据影子数、混淆数和用户类密钥获得数据类密钥的可能,提高数据保护系统的安全性。在用户类密钥分发过程中,为了确保用户类密钥的安全,可以进一步对用户类密钥进行加密处理,之后再分发至用户所在的客户端。优选的,将用户类密钥传输至用户的过程还可以如图2所示,包括步骤S21 获取预存的用户的数字指纹。用户Ui在注册过程中,向中央授权机构输入自己的账号,该账号包括用户名Ui和密码pwdi。中央授权机构根据用户注册的账号信息生成该用户的数字指纹h (Ui I I PWdi),该数字指纹为用户名和密码组成的字符串的哈希值。其中,“I I”为字符串串联运算符号,h() 为哈希函数。步骤S22 将用户类密钥和数字指纹串联为第一字符串。将用户类密钥Uckj和数字指纹h (Ui I Ipwdi)串联为第一字符串,该第一字符串为 UCkj |h(Ui| I PWdi)。用户类密钥和数字指纹的数据位数是中央授权机构和数据保护系统服务器公知的。当然,第一字符串不限于用户类密钥在前、数字指纹在后的形式,也可以是数字指纹在前、用户类密钥在后,只要中央授权机构和数据保护系统服务器预知两者在第一字符串中的顺序即可。步骤S23 利用预存的数据保护系统服务器的公钥对第一字符串加密,获得用户密钥。
在中央授权机构中预存有数据保护系统服务器掌握的公钥,利用该公钥对第一字符串进行加密,Uki = Epk (Uckj I |h (Ui I Ipwdi)), Uki即为Ui的用户密钥,Hi为数据保护系统服务器的公钥。步骤S24 传输该用户密钥至用户所在的客户端。中央授权机构将用户密钥传输至用户所在的客户端之后,客户端利用数字指纹中的部分数据加密用户密钥,即^^(ΕρΚ(πο^ |h(Ui| Ipwdi))),其中,
|h(uj Ipwdi))为中央授权机构传输的用户密钥,p()表示取部分数据,EO为加密算法,之后存储经过加密的用户密钥。下面结合具体实施例对上述传输数据类密钥至用户的过程进行说明。用户在中央授权机构注册自己的账号,其中用户名为ahangsan,口令为=12345678,则该用户的数字指纹为:h( "zhangsan" | | "12345678"),即 h( “zhangSan12;M5678”)。假设用户所属的用户类为其用户类密钥为uc、,则第一字符串为UckjI |h( “zhangSan12;M5678”)。利用数据保护系统服务器的公钥对第一字符串进行加密,具体为Uki =ΕΡΚ(ικ^| |h(〃 zhangsan" ||〃 12345678〃)),其中,Uki 为用户密钥,之后将其传输至用户Ui所在的客户端。利用图2所示的方法传输用户类密钥至用户所在客户端的过程中,对用户类密钥和数字指纹串联成的第一字符串进行加密,获得包含了用户类密钥的用户密钥,由于除数据保护系统服务器之外的其他人员无法获取解密用户密钥的私钥,因此用户密钥即便在传输过程中被他人获取,也无法确定用户类密钥,更无法通过协作获取安全数据类密钥,进一步提高了数据保护系统的安全性。用户在登录数据保护系统服务器的过程中,需要基于自己的数字指纹进行登录验证,当用户的数字指纹通过验证后才可以登录数据保护系统服务器。目前,数据保护系统服务器将每个用户的相关信息都保存在用户登陆信息表中, 用户登录信息表至少包括四个字段用户编号、用户名、用户数字指纹和用户所属的用户类标识。由于数据库保护系统用户数量较多而用户类数量较少,而认证用户身份最关键的数据是用户数字指纹和用户类标识,所以这种存储方式会造成较大的空间浪费。另外,用户属于哪个用户类是用户的隐私信息,除用户本人和中央授权机构之外的其他任何用户都不应知道,由于数据管理员具有查看用户登录信息表的权限,因此若使用用户登录信息表来存储用户登录相关信息的话,数据管理员就可以通过查看用户登录信息表知道每个用户所属的用户类,用户隐私得不到保护。因此,本发明在将用户类密钥传输至属于该用户类的用户之后,还公开了一种存储数字指纹的方法,如图3所示,包括步骤S31 获取预存的用户的数字指纹。步骤S32 将用户的用户类标识和数字指纹串联为第二字符串。在第二字符串中,可以是用户类标识在前、数字指纹在后,或者数字指纹在前、用户类标识在后,两者在第二字符串中出现的先后顺序存储于数据保护系统服务器中,同时数据保护系统服务器中还存储有用户类标识和数字指纹的数据位数。步骤S33 利用预存的数据保护系统服务器的公钥对第二字符串加密。步骤S34 发送加密后的第二字符串至数据保护系统服务器。
步骤S35 数据保护系统服务器利用自身掌握的私钥解密该加密后的第二字符
串ο步骤S36 数据保护系统服务器在解密后的第二字符串中获取用户类标识和数字指纹。步骤S37 将数字指纹存储于以该用户类标识命名的指纹文件中。由于数据保护系统服务器中存储有用户类标识和数字指纹在第二字符串中出现的先后顺序,并且还存储有用户类标识和数字指纹的数据位数,因此可以在第二字符串中获取用户类标识和数字指纹。之后,将数字指纹存储于以该用类标识命名的指纹文件中。在图3所示的存储数字指纹的方法中,只将数字指纹存储于指纹文件中,而不再存储用户编号、用户名和用户类标识,节省了存储空间;另外,包括用户所属用户类在内的用户信息只存储在中央授权机构,因此除用户本人和中央授权机构之外的其他任何用户都不能获知用户所属的用户类,保护了用户隐私。相应于本发明上述公开的密钥分配方法,本发明还公开了一种解密方法,用户可以使用自己掌握的用户类密钥对权限内的数据进行操作。参见图4,图4为本发明公开的一种解密方法的流程图。包括步骤S41 获取用户的用户类密钥和数字指纹。用户可以通过客户端直接将自己掌握的用户类密钥和数字指纹发送至数据保护系统服务器。步骤S42 接收用户发送的包含要处理的数据的标识和操作类型的请求。该要处理数据的标识为字段名或文件名。步骤S43 获取影子表中存储的混淆数。在分配密钥的过程中,将各个安全数据类的影子数和混淆数存储于影子表中。步骤S44 根据用户类密钥和混淆数确定该用户的理论用户类标识。确定用户的理论用户类标识具体为该用户掌握的用户类密钥模混淆数,即用户类密钥与混淆数进行取余运算,模(取余)运算的结果即为理论用户类标识。
(mod r)=[kjMj MA +UjMjMh +.. -^kj Mj Ml + IDjMrMr (modM)](mod r)= [kAΜ.Μ.(mod r)+RjMjMh(mod r)+...+RjMjMj (mod r)+ IDjMMr(mod r)](modM) tons] =/Z)(modM)=IDj步骤S45 :判断理论用户类标识是否包含于用户权限表存储的用户类标识中,若是,执行步骤S46,否则,执行步骤S49。在用户权限表中存储有合法数据类的用户类标识,当根据用户发送的用户类密钥和混淆数计算出的理论用户类标识包含于用户权限表存储的用户类标识时,认为该用户为合法用户,可进行后续操作,否则认为该用户为非法用户。步骤S46 获取以该理论用户类标识命名的指纹文件。
步骤S47 判断该数字指纹是否包含于该指纹文件中,若是,则执行步骤S48,否则,执行步骤S49。步骤S48 通过查询数据字典确定要处理数据所属的安全数据类。数据库由多个数据表组成,每个需要数据保护系统保护的数据表都有一个数据字典。在数据表的数据字典中存储有字段名、字段类型、字段大小、以及字段名所标识数据所属的安全数据类。用户发送的操作请求中包含有要处理数据的字段名,根据字段名在数据表的数据字典中进行查询就可获知该用户要处理的数据所属的安全数据类。计算机中存储有多个文件夹,每个需要数据保护系统保护的文件夹都有一个数据字典,在文件夹的数据字典中存储有文件名、文件类型、文件大小、以及文件名所标识文件所属的安全数据类。用户发送的操作请求中包含有要处理数据的文件名时,根据文件名在文件夹的数据字典中进行查询就可获知该用户要处理的数据所属的安全数据类。步骤S49 向用户发送拒绝访问的提示信息,终止访问过程。当发现发送请求的用户为非法用户时,向该用户发出拒绝访问提示信息,终止访问过程。步骤S410 判断用户发送的操作类型是否未超出用户权限表存储的对该安全数据类的操作权限,若是,则执行步骤S411,否则,执行步骤S412。在用户权限表中同时存储了各个用户类的用户类标识、每个用户类可以处理的安全数据类、以及对安全数据类的操作权限,对安全数据类的操作权限包括完全控制、只可写、只可读等。当判断发送请求的用户是合法用户后,还要进一步判断该用户请求对安全数据类进行的操作是否超出了规定权限,当未超出规定权限时,进行后续操作,否则可向该用户发出访问违规的提示。步骤S411 根据用户类密钥计算安全数据类的数据类密钥,执行步骤S413。计算安全数据类的数据类密钥具体为获取影子表中存储的该安全数据类的影子数;将用户类密钥与该安全数据类的影子数进行模运算,获得的运算结果即为数据类密钥。
(mod Mi)=IkjMjMj ^kjMjMu +---+KjMjMj + IDjMrMr(mod7l^)](mod m.)=「众Jl/. (mod m)^k.hi. Μ. (mod m)+---+k.M'. Μ. (mod m)
Λ Λ Λ νι/ Ji Ji Jiι/Js Js Jsι/+ IDjMrMr (mod m. )](modM)= [LMrMr(mod m.)](modM) [οι 37] = Ui modM= kt步骤S412 向该用户发送访问违规的提示信息。当该用户请求对安全数据类进行的操作超出规定权限时,向其发送提示信息,提示其访问违规。步骤S413 利用获取的数据类密钥对该用户要处理的数据进行解密。在密钥分配的过程中,为了提高数据保护系统的安全性,进一步对用户类密钥进行了加密处理,并向用户所在的客户端发送了用户密钥,用户并没有直接掌握用户类密钥。用户不直接掌握用户密钥还使得用户账号的改变(如修改口令、账号停用等)不会对用户类密钥造成任何影响。鉴于用户密钥是冗长的字符串,使用数字指纹中的部分数据加密用户密钥,并将加密后的用户密钥以文件形式存储于用户所在的客户端。获取用户的用户类密钥和数字指纹的过程如图5所示,包括步骤S51 客户端接收用户发送的用户名和口令。步骤S52 客户端利用用户名和口令对预存的加密后的用户密钥进行解密,获取用户密钥。中央授权机构将用户密钥传输至用户所在的客户端之后,客户端利用数字指纹中的部分数据加密用户密钥,即^^(ΕρΚ(πο^ |h(Ui| Ipwdi))),其中,
|h(uj Ipwdi))为中央授权机构传输的用户密钥,p()表示取部分数据,EO为加密算法,之后存储经过加密的用户密钥。当客户端接收到用户的用户名和口令后,首先利用用户名Ui和口令Pwdi生成数字指纹h (Ui I I PWdi),之后利用数字指纹中的部分数据P (h (Ui I Ipwdi))对加密后的用户密钥进行解密,获得用户密钥,即Uki = D^^—^E^w—^EpKiuckj Wh(U1Wpwd1)))),其中,DO为解密算法。步骤S53 传输用户密钥至数据保护系统服务器。步骤S54:数据保护系统服务器利用自身掌握的私钥对用户密钥进行解密,获取
第一字符串。步骤S55 数据保护系统服务器在第一字符串中获取用户类密钥和数字指纹。数据保护系统中存储有用户类密钥和数字指纹在第一字符串中出现的先后顺序, 以及用户类密钥和数字指纹的数据位数,因此可以从第一字符串中获取用户类密钥和数字指纹。数据保护系统的用户类可能只有几种,用户类密钥较稳定,但用户数量却可能要多得多,用户账号变更较频繁。如果用户直接掌握用户类密钥,当某个用户的账号被停用时,该用户所属用户类密钥就要修改,进而要为该用户类所有用户重新分配用户类密钥。这样,账号频繁改变就会导致用户类密钥的频繁改变和重新分配,破坏整个系统的可靠性和稳定性。当用户使用用户账号解密数据时,由于用户账号的改变(如修改口令、账号停用等)不会导致用户类密钥的改变,所以可以避免上述问题。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1.一种密钥分配方法,其特征在于,应用于中央授权机构,所述方法包括 分别为每个安全数据类分配一个数据类密钥;分别为每个所述安全数据类分配一个影子数,并另外产生一个混淆数,存储所述影子数和混淆数,所述混淆数和多个影子数为互素数,所述每个安全数据类的影子数大于其数据类密钥,所述混淆数大于所有数据类密钥;确定合成模数,所述合成模数为所述影子数和混淆数的乘积; 分别确定每个安全数据类的第一影子伴数,每个安全数据类的第一影子伴数为所述合成模数与当前安全数据类的影子数的比值;分别确定每个安全数据类的第二影子伴数,每个安全数据类的第二影子伴数和第一影子伴数的乘积模该安全数据类的影子数余1,并且每个安全数据类的第二影子伴数小于其影子数;确定第一混淆伴数,所述第一混淆伴数为所述合成模数与所述混淆数的比值; 确定第二混淆伴数,所述第二混淆伴数和第一混淆伴数的乘积模所述混淆数余1,并且所述第二混淆伴数小于所述混淆数;查询用户权限表,确定用户类的用户类标识和可处理的安全数据类; 确定所述用户类可处理的每个安全数据类的密钥隐藏项,所述密钥隐藏项为该安全数据类的数据类密钥、第一影子伴数和第二影子伴数的乘积;确定所述用户类的身份隐藏项,所述身份隐藏项为所述用户类标识、第一混淆伴数和第二混淆伴数的乘积;确定所述用户类的用户类密钥,并将用户类密钥传输至属于所述用户类的用户所在的客户端,所述用户类密钥为所述用户类可处理的各安全数据类的密钥隐藏项与所述用户类的身份隐藏项之和模所述合成模数的结果。
2.根据权利要求1所述的密钥分配方法,其特征在于,在将所述用户类密钥传输至属于所述用户类的用户所在的客户端后,当所述用户类可处理的安全数据类增加时,还包括分别确定增加的安全数据类的密钥隐藏项;确定所述用户类密钥与所述增加的安全数据类的密钥隐藏项之和模所述合成模数的结果,将所述结果作为当前的用户类密钥传输至属于所述用户类的用户所在的客户端。
3.根据权利要求1所述的密钥分配方法,其特征在于,在将所述用户类密钥传输至属于所述用户类的用户后,当所述用户类可处理的安全数据类减少时,还包括分别确定减少的安全数据类的密钥隐藏项;确定所述用户类密钥与所述减少的安全数据类的密钥隐藏项之差模所述合成模数的结果,将所述结果作为当前的用户类密钥传输至属于所述用户类的用户所在的客户端。
4.根据权利要求1所述的密钥分配方法,其特征在于,在将所述用户类密钥传输至属于所述用户类的用户后,当所述用户类可处理的安全数据类的数据类密钥发生变化时,还包括根据数据类密钥发生变化的安全数据类的原始数据类密钥确定该安全数据类的原始密钥隐藏项;根据数据类密钥发生变化的安全数据类的当前数据类密钥确定该安全数据类的当前密钥隐藏项;所述用户类密钥减去所述原始密钥隐藏项,再加上所述当前密钥隐藏项,将求和运算的结果模所述合成模数,将模运算的结果作为当前的用户类密钥传输至属于所述用户类的用户所在的客户端。
5.根据权利要求1至4中任一项所述的密钥分配方法,其特征在于,所述将用户类密钥传输至属于所述用户类的用户所在的客户端的步骤,具体为获取预存的所述用户的数字指纹;将所述用户类密钥和所述数字指纹串联为第一字符串;利用预存的数据保护系统服务器的公钥对所述第一字符串加密,获得用户密钥;传输所述用户密钥至所述用户所在的客户端。
6.根据权利要求1至4中任一项所述的密钥分配方法,其特征在于,在所述将用户类密钥传输至属于所述用户类的用户所在的客户端之后,还包括获取预存的所述用户的数字指纹;将所述用户的用户类标识和数字指纹串联为第二字符串;利用所述预存的数据保护系统服务器的公钥对所述第二字符串加密;发送加密后的第二字符串至数据保护系统服务器;所述数据保护系统服务器利用自身掌握的私钥解密所述加密后的第二字符串; 所述数据保护系统服务器在解密后的第二字符串中读取用户类标识和数字指纹,并将所述数字指纹存储于以所述用户类标识命名的指纹文件中。
7.一种解密方法,其特征在于,应用于数据保护系统服务器,所述方法包括 获取用户的用户类密钥和数字指纹;获取用户发送的包含要处理数据的标识和操作类型的请求; 获取影子表中存储的混淆数;根据所述用户类密钥和所述混淆数确定所述用户的理论用户类标识,所述理论用户类标识为所述用户类密钥模所述混淆数的结果;判断所述理论用户类标识是否包含于用户权限表存储的用户类标识中,当所述理论用户类标识包含于所述用户权限表存储的用户类标识时,获取以所述理论用户类标识命名的指纹文件,判断所述数字指纹是否包含于所述指纹文件中,当所述数字指纹包含于所述指纹文件时,通过查询数据字典确定所述要处理数据所属的安全数据类;判断所述用户发送的操作类型是否未超出用户权限表存储的对所述安全数据类的操作权限,当未超出对所述安全数据类的操作权限时,根据所述用户类密钥计算所述安全数据类的数据类密钥,计算所述安全数据类的数据类密钥具体为获取影子表中存储的所述安全数据类的影子数,将所述用户类密钥模所述安全数据类的影子数,模运算的结果即为所述安全数据类的数据类密钥;利用所述安全数据类的数据类密钥对所述用户要处理的数据进行解密。
8.根据权利要求7所述的解密方法,其特征在于,所述获取用户的用户类密钥和数字指纹的步骤,具体为客户端接收用户发送的用户名和口令;所述客户端利用所述用户名和口令对预存的加密后的用户密钥进行解密,获取用户密钥,并将其传输至所述数据保护系统服务器;所述数据保护系统服务器利用自身掌握的私钥对所述用户密钥进行解密,获取第一字符串;所述数据保护系统服务器在所述第一字符串中获取用户类密钥和数字指纹。
9.根据权利要求7所述的解密方法,其特征在于,所述要处理数据的标识为字段名或文件名。
10.根据权利要求7所述的解密方法,其特征在于,当所述理论用户类标识未包含于所述用户权限表存储的用户类标识,或者当所述数字指纹未包含于所述指纹文件时,向用户发送拒绝访问的提示信息,终止访问过程;当所述用户发送的操作类型超出用户权限表存储的对所述安全数据类的操作权限时, 向所述用户发送访问违规的提示信息。
全文摘要
本发明公开了一种密钥分配方法,在本发明公开的密钥分配方法中,仅向用户所在的客户端传输一个用户类密钥,用户利用该用户类密钥即可对属于其权限内安全数据类的数据进行访问,用户无需管理多个密钥,降低了用户管理密钥的难度,并且用户不会接触到数据类密钥,避免了属于不同用户类的多个用户进行协作以获取其他用户类所掌握的数据类密钥情况的发生,提高了数据保护系统的安全性。本发明还公开了一种解密方法,用户可使用用户类密钥对具有访问权限的数据进行访问。
文档编号H04L9/08GK102244574SQ20111024570
公开日2011年11月16日 申请日期2011年8月25日 优先权日2011年8月25日
发明者冯朝胜 申请人:四川师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1