一种保护主密钥的工具及其工作方法与流程

文档序号:11410643阅读:233来源:国知局
一种保护主密钥的工具及其工作方法与流程

本发明涉及信息安全领域,尤其涉及一种保护主密钥的工具及其工作方法。



背景技术:

不论是由于互联网的出现,还是由于越来越庞大且需要大量介质的应用软件的出现,数据量现已呈现出巨大的增长态势。目前,各行各业中对数据的保护通常是使用明文主密钥对数据进行加解密,并使用秘密对明文主密钥加密得到密文主密钥,将密文主密钥保存至数据库,同时将秘密交由管理员进行保管;该数据保护方法中,由于秘密是集中保护的,一旦秘密被窃取便可以对数据库中的密文主密钥解密得到明文主密钥,从而窃取数据;可见,如何有效的保护秘密进而有效的保护主密钥成为一个急需解决的问题。



技术实现要素:

为解决现有技术的缺陷,本发明提供一种保护主密钥的工具及其工作方法;

一方面,本发明提供了一种保护主密钥的工具的工作方法,包括:生成原始密钥流程、生成秘密流程、生成密文主密钥流程和分割秘密流程;

所述生成原始密钥流程,包括:

所述工具生成第一字符,根据所述第一字符生成原始密钥,将所述原始密钥保存;

所述生成秘密流程,包括:

所述工具生成第二字符,根据所述第二字符生成秘密,将所述秘密保存;

所述生成密文主密钥流程,包括:

所述工具获取与用户对应的原始密钥和秘密,根据获取到的原始密钥生成主密钥,并使用获取到的秘密对生成的主密钥加密得到密文主密钥,将所述密文主密钥提供给所述用户;

所述分割秘密流程,包括:

所述工具获取与用户对应的秘密,将其作为待分割秘密,并接收所述用户输入的第一数量和第二数量,所述第二数量小于或者等于所述第一数量;

所述工具根据所述待分割秘密、所述第一数量和所述第二数量,分割所述待分割秘密得到所述第一数量的影子秘密和所述影子秘密的序号,并将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者。

可选地,所述方法还包括:所述工具判断接收到的来自用户的触发信息的类型,如为生成原始密钥,则执行所述生成原始密钥流程;如为生成秘密,则执行所述生成秘密流程;如为生成密文主密钥,则执行所述生成密文主密钥流程;如为分割秘密,则执行所述分割秘密流程。

其中,所述生成密文主密钥流程中,所述工具获取与用户对应的原始密钥和秘密之前,还包括:所述工具判断与用户对应的原始密钥和秘密是否均存在,是则获取与用户对应的原始密钥和秘密,否则报错,结束;

其中,所述分割秘密流程中,所述工具获取与用户对应的秘密之前,还包括:所述工具判断与用户对应的秘密是否存在,是则获取与用户对应的秘密,否则报错,结束。

可选地,所述方法中,当所述工具接收到来自用户的触发信息时,依次执行所述生成原始密钥流程、生成秘密流程、生成密文主密钥流程和分割秘密流程。

可选地,所述生成原始密钥流程中,所述工具生成第一字符,具体为:所述工具依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度。

可选地,所述生成秘密流程中,所述工具生成第二字符,具体为:所述工具依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度。

可选地,所述工具依次随机生成各预设类型的字符,具体包括:

步骤1-1:所述工具确定所述各预设类型的字符的生成顺序,并将所述生成顺序中的第一个类型作为当前类型;

步骤1-2:所述工具生成随机数,根据所述随机数确定当前类型的字符的数量,随机生成对应数量的当前类型的字符;

步骤1-3:所述工具判断当前类型在所述生成顺序中的位置是否为所述预设类型的个数减1,是则执行步骤1-4,否则将下一个类型作为当前类型,返回步骤1-2;

步骤1-4:所述工具根据所述预设长度和已确定的字符的数量计算所述生成顺序中最后一个类型的字符的数量,随机生成对应数量及类型的字符。

可选地,所述工具依次随机生成各预设类型的字符,具体为:

所述工具初始化各预设类型的字符的数量,并依次随机生成对应数量及类型的字符;

或者,

所述工具将所述预设长度与所述预设类型的个数求商得到各预设类型的字符的数量,并依次生成对应数量及类型的字符。

可选地,所述生成原始密钥流程中,所述根据所述第一字符生成原始密钥,具体为:所述工具将所述第一字符作为参数传入第一函数接口,调用所述第一函数接口生成原始密钥;

所述生成秘密流程中,所述根据所述第二字符生成秘密,具体为:所述工具将所述第二字符作为参数传入所述第一函数接口,调用所述第一函数接口生成秘密。

可选地,所述生成原始密钥流程中,所述将所述原始秘密保存,具体为:

步骤2:所述工具创建第一文件,根据创建时间定义所述第一文件的文件名称,将所述原始密钥保存至所述第一文件中,保存所述第一文件;

所述生成秘密流程中,所述将所述秘密保存,具体为:

步骤3:所述工具创建第二文件,根据创建时间定义所述第二文件的文件名称,将所述秘密保存至所述第二文件中,保存所述第二文件。

可选地,所述生成密文主密钥流程中,所述工具获取与用户对应的原始密钥,具体为:

所述工具查找自身维护的所有第一文件,解析查找到的第一文件的文件名称得到对应的第一文件的创建时间,比对得到的创建时间得到最晚创建时间,读取所述最晚创建时间对应的第一文件中的原始密钥。

可选地,所述步骤2中,所述保存所述第一文件之后,还包括:将所述第一文件的文件名称返回给用户,并提示所述用户保存;

对应地,所述生成密文主密钥流程中,所述工具获取与用户对应的原始密钥,具体为:所述工具获取自身维护的所有第一文件,并弹框显示给所述用户,读取所述用户选择的第一文件中的原始密钥。

可选地,所述生成原始密钥流程中,所述根据所述第一字符生成原始密钥之后,还包括:将生成的原始密钥在操作页面中显示给用户,并提示所述用户保存;

对应地,所述生成密文主密钥流程中,所述工具获取与用户对应的原始密钥,具体为:

所述工具从所述操作页面中获取显示的原始密钥;

或者,

所述工具接收用户输入的原始密钥。

可选地,所述生成密文主密钥流程中,所述工具获取与用户对应的秘密,具体为:

所述工具查找自身维护的所有第二文件,解析查找到的第二文件的文件名称得到对应的第二文件的创建时间,比对得到的创建时间得到最晚创建时间,读取所述最晚创建时间对应的第二文件中的秘密。

可选地,所述步骤3中,所述保存所述第二文件之后,还包括:将所述第二文件的文件名称返回给用户,并提示所述用户保存;

对应地,所述生成密文主密钥流程中,所述工具获取与用户对应的秘密,具体为:所述工具获取自身维护的所有第二文件,并弹框显示给所述用户,读取所述用户选择的第二文件中的秘密。

可选地,所述生成秘密流程中,所述根据所述第二字符生成秘密之后,还包括:将生成的秘密在操作页面中显示给用户;

对应地,所述生成密文主密钥流程中,所述工具获取与用户对应的秘密,具体为:所述工具从所述操作页面中获取显示的秘密。

可选地,所述生成密文主密钥流程中,所述根据获取到的原始密钥生成主密钥,具体为:

所述工具将所述获取到的原始密钥、预存私有数据、预设迭代次数及第一预设算法作为参数传入第二函数接口,并调用所述第二函数接口生成主密钥。

可选地,所述生成密文主密钥流程中,所述将所述密文主密钥提供给用户,具体为:

所述工具将所述密文主密钥在操作页面中显示给用户;

或者,

所述工具将所述密文主密钥发送至用户指定的地址中。

可选地,所述分割秘密流程中,所述工具根据所述待分割秘密、所述第一数量和所述第二数量,分割所述待分割秘密得到所述第一数量的影子秘密及所述影子秘密的序号,具体为:

所述工具将所述待分割秘密、所述第一数量、所述第二数量及第二预设算法作为参数传入第三函数接口,调用所述第三函数接口得到所述第一数量的影子秘密及所述影子秘密的序号。

可选地,所述分割秘密流程中,所述将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者之前,还包括:所述工具接收用户输入的所述多个分散管理者的地址;

对应地,所述分割秘密流程中,所述将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者,具体为:所述工具将所述影子秘密和所述影子秘密的序号对应分别发送至接收到的分散管理者的地址中。

可选地,所述分割秘密流程中,所述将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者之前,还包括:所述工具创建所述第一数量的第三文件,根据所述影子秘密的序号分别定义所述第三文件的文件名称,并将所述影子秘密和所述影子秘密的序号分别保存至所对应的第三文件中;

对应地,所述分割秘密流程中,所述将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者,具体为:所述工具将所述第三文件分别发送给多个分散管理者。

可选地,所述步骤s5中,所述将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者之前,还包括:

步骤c:所述工具从得到的所述第一数量的影子秘密中随机选择所述第二数量的影子秘密,根据选择的所述第二数量的影子秘密和对应的影子秘密的序号聚合秘密,判断聚合得到的秘密与所述待分割秘密是否相同,是则将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者,否则提示操作失败。

所述步骤c中,所述根据选择的所述第二数量的影子秘密和对应的影子秘密的序号聚合秘密,具体为:

所述工具将第二预设算法、所述选择的所述第二数量的影子秘密和对应的影子秘密的序号作为参数传入第四函数接口,调用所述第四函数接口聚合秘密。

可选地,所述第二预设算法,具体为:拉格朗日内插多项式算法,或者射影几何,或者线性代数,或者孙子定理。

可选地,所述分割秘密流程中,所述将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者之后,还包括:所述工具将所述待分割秘密、所述影子秘密及所述影子秘密的序号删除。

另一方面,本发明提供了一种保护主密钥的工具,其特征在于,包括:

第一生成模块,用于生成第一字符;

第二生成模块,用于根据所述第一生成模块生成的第一字符生成原始密钥;

第一保存模块,用于将所述第二生成模块生成的原始密钥保存;

第三生成模块,用于生成第二字符;

第四生成模块,用于根据所述第三生成模块生成的第二字符生成秘密;

第二保存模块,用于将所述第四生成模块生成的秘密保存;

第一获取模块,用于获取与用户对应的原始密钥;

第二获取模块,用于获取与所述用户对应的秘密;

第五生成模块,用于根据所述第一获取模块获取到的原始密钥生成主密钥;

加密模块,用于使用所述第二获取模块获取到的秘密对第五生成模块生成的主密钥加密得到密文主密钥;

提供模块,用于将所述加密模块得到的密文主密钥提供给所述用户;

第三获取模块,用于获取与用户对应的秘密,将其作为待分割秘密;

接收模块,用于接收用户输入的第一数量和第二数量,所述第二数量小于或者等于所述第一数量;

分割模块,用于根据所述第三获取模块获取到的待分割秘密、所述接收模块接收到的所述第一数量和所述第二数量,分割所述待分割秘密得到所述第一数量的影子秘密和所述影子秘密的序号;

发送模块,用于将所述分割模块得到的所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者。

可选地,所述工具还包括:第一判断模块;

所述接收模块,还用于接收来自用户的触发信息;

所述第一判断模块,用于判断所述接收模块接收到的触发信息的类型;

所述第一生成模块,具体用于:当所述第一判断模块判断出所述接收模块接收到的触发信息为生成原始密钥时,生成第一字符;

所述第三生成模块,具体用于:当所述第一判断模块判断出所述接收模块接收到的触发信息为生成秘密时,生成第二字符;

所述第一获取模块,具体用于:当所述第一判断模块判断出所述接收模块接收到的触发信息为生成密文主密钥时,获取与所述用户对应的原始密钥;

所述第二获取模块,具体用于:当所述第一判断模块判断出所述接收模块接收到的触发信息为生成密文主密钥时,获取与所述用户对应的秘密;

所述第三获取模块,具体用于:当所述第一判断模块判断出所述接收模块接收到的触发信息为分割秘密时,获取与用户对应的秘密,将其作为待分割秘密。

可选地,所述工具还包括:第二判断模块、第三判断模块和报错模块;

所述第二判断模块,用于判断与用户对应的原始密钥和秘密是否均存在;

所述第一获取模块,具体用于:当所述第二判断模块判断出与用户对应的原始密钥和秘密均存在时,获取与用户对应的原始密钥;

所述第二获取模块,具体用于:当所述第二判断模块判断出与用户对应的原始密钥和秘密均存在时,获取与用户对应的秘密;

所述第三判断模块,用于判断与用户对应的秘密是否存在;

所述第三获取模块,具体用于:当所述第三判断模块判断出与用户对应的秘密存在时,获取与用户对应的秘密;

所述报错模块,用于当所述第二判断模块判断出与用户对应的原始密钥和秘密不是均存在时,报错;还用于当所述第三判断模块判断出与用户对应的秘密不存在时,报错。

可选地,所述接收模块,还用于接收来自用户的触发信息;

所述第一生成模块,具体用于:所述接收模块接收到来自用户的触发信息之后,生成第一字符;

所述第三生成模块,具体用于:所述第一保存模块将所述原始密钥保存之后,生成第二字符;

所述第一获取模块,具体用于:所述第二保存模块将所述秘密保存之后,获取与用户对应的原始密钥;

所述第二获取模块,具体用于:所述第二保存模块将所述秘密保存之后,获取与用户对应的秘密;

所述第三获取模块,具体用于:所述提供模块将所述密文主密钥提供给所述用户之后,获取与用户对应的秘密,将其作为待分割秘密。

可选地,所述第一生成模块,具体用于:依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度。

可选地,所述第三生成模块,具体用于:依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度。

可选地,所述第一生成模块和所述第三生成模块,具体包括:

第一确定单元,用于确定所述各预设类型的字符的生成顺序;

作为单元,用于将所述第一确定单元确定的生成顺序中的第一个类型作为当前类型;

第一生成单元,用于生成随机数;

第二确定单元,用于根据所述第一生成单元生成的随机数确定当前类型的字符的数量;

第二生成单元,用于随机生成与所述第二确定单元确定的数量对应的当前类型的字符;

判断单元,用于判断当前类型在所述生成顺序中的位置是否为所述预设类型的个数减1;

所述作为单元,还用于当所述判断单元判断出当前类型在所述生成顺序中的位置不是所述预设类型的个数减1时,将下一个类型作为当前类型,触发第一生成单元;

第三确定单元,用于当所述判断单元判断出当前类型在所述生成顺序中的位置是所述预设类型的个数减1时,根据所述预设长度和已确定的字符的数量计算最后一个类型的字符的数量;

所述生成单元,还用于随机生成对应数量及类型的字符。

可选地,所述第一生成模块和所述第三生成模块,具体用于:

初始化各预设类型的字符的数量,并依次随机生成对应数量及类型的字符;

或者,

将所述预设长度与所述预设类型的个数求商得到各预设类型的字符的数量,并依次随机生成对应数量及类型的字符。

可选地,所述第二生成模块,具体用于:将所述第一字符作为参数传入第一函数接口,调用所述第一函数接口生成原始密钥;

所述第四生成模块,具体用于:将所述第二字符作为参数传入第一函数接口,调用所述第一函数接口生成秘密。

可选地,所述第一保存模块,具体用于:创建第一文件,根据创建时间定义所述第一文件的文件名称,将所述原始密钥保存至所述第一文件中,保存所述第一文件;

可选地,所述第二保存模块,具体用于:创建第二文件,根据创建时间定义所述第二文件的文件名称,将所述秘密保存至所述第二文件中,保存所述第二文件。

对应地,所述第一获取模块,具体用于:查找自身维护的所有第一文件,解析查找到的第一文件的文件名称得到对应的第一文件的创建时间,比对得到的创建时间得到最晚创建时间,读取所述最晚创建时间对应的第一文件中的原始密钥。

可选地,所述发送模块,还用于在所述第一保存模块保存所述第一文件之后,将所述第一文件的文件名称返回给用户,并提示所述用户保存;

对应地,所述第一获取模块,具体用于:获取自身维护的所有第一文件,并弹框显示给所述用户,读取所述用户选择的第一文件中的原始密钥。

可选地,所述工具还包括:第一显示模块;

所述第一显示模块,用于在所述第二生成模块根据所述第一字符生成原始密钥之后,将生成的原始密钥在操作页面中显示给用户,并提示所述用户保存;

对应地,所述第一获取模块,具体用于:

从所述操作页面中获取所述第一显示模块显示的原始密钥;

或者,

接收用户输入的原始密钥。

可选地,所述第二获取模块,具体用于:查找自身维护的所有第二文件,解析查找到的第二文件的文件名称得到对应的第二文件的创建时间,比对得到的创建时间得到最晚创建时间,读取所述最晚创建时间对应的第二文件中的秘密。

可选地,所述发送模块,还用于在所述第二保存模块保存所述第二文件之后,将所述第二文件的文件名称返回给用户,并提示所述用户保存;

对应地,所述第二获取模块,具体用于:获取自身维护的所有第二文件,并弹框显示给所述用户,读取所述用户选择的第二文件中的秘密。

可选地,所述工具还包括:第二显示模块;

所述第二显示模块,用于在所述第四生成模块根据所述第二字符生成秘密之后,将所述第四生成模块生成的秘密在操作页面中显示给所述用户;

对应地,所述第二获取模块,具体用于:从所述操作页面中获取显示的秘密。

可选地,所述第五生成模块,具体用于:将所述第一获取模块获取到的原始密钥、预存私有数据、预设迭代次数及第一预设算法作为参数传入第二函数接口,并调用所述第二函数接口生成主密钥。

可选地,所述提供模块,具体用于:

将所述密文主密钥在操作页面中显示给用户;

或者,

将所述密文主密钥发送至用户指定的地址中。

可选地,所述分割模块,具体用于:

将所述待分割秘密、所述第一数量、所述第二数量及第二预设算法作为参数传入第三函数接口,调用所述第三函数接口得到所述第一数量的影子秘密及所述影子秘密的序号。

可选地,所述接收模块,还用于接收用户输入的所述多个分散管理者的地址;

对应地,所述发送模块,具体用于:将所述分割模块得到的所述影子秘密和所述影子秘密的序号对应分别发送至所述接收模块接收到的分散管理者的地址中。

可选地,所述工具还包括:第三保存模块;

所述第三保存模块,用于创建所述第一数量的第三文件,根据所述影子秘密的序号分别定义所述第三文件的文件名称,并将所述影子秘密和所述影子秘密的序号分别保存至所对应的第三文件中;

对应地,所述发送模块,具体用于:将所述第三文件分别发送给多个分散管理者。

可选地,所述工具还包括:聚合模块、第二判断模块和提示模块;

其中,所述聚合模块,用于所述发送模块将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者之前,从所述第一数量的影子秘密中随机选择所述第二数量的影子秘密,根据选择的所述第二数量的影子秘密和对应的影子秘密的序号聚合秘密;

所述第二判断模块,用于判断所述聚合模块聚合的秘密与所述待分割秘密是否相同;

所述发送模块,具体用于:当所述第二判断模块判断出所述聚合模块聚合的秘密与所述待分割秘密相同时,将所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者;

所述提示模块,用于当所述第二判断模块判断出所述聚合模块聚合的秘密与所述待分割秘密不相同时,提示操作失败。

可选地,所述聚合模块,具体用于:

将第二预设算法、所述选择的第二数量的影子秘密和对应的影子秘密的序号作为参数传入第四函数接口,调用所述第四函数接口聚合秘密。

可选地,所述工具还包括:删除模块;

所述删除模块,用于所述发送模块将所述分割模块得到的影子秘密和所述影子秘密的序号对应发送给多个分散管理者之后,将所述第三获取模块获取到的待分割秘密、所述分割模块得到的影子秘密及所述影子秘密的序号删除。

本发明与现有技术相比,具有以下优点:

本发明中的技术方案,一方面,明文主密钥不落地,保障了明文主密钥的安全;另一方面,既能防止秘密过于集中而带来的风险,又能保证秘密的安全性和完整性,从而有效的保护主密钥,进而保障了通过主密钥保护的数据的安全;再者,用户可以根据需求随时更新秘密。

附图说明

图1为本发明实施例二提供的一种保护主密钥的工具的工作方法流程图;

图2为本发明实施例三提供的一种保护主密钥的工具的模块组成框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述;显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本发明实施例一提供一种保护主密钥的工具的工作方法,包括:

生成原始密钥流程、生成秘密流程、生成密文主密钥流程和分割秘密流程;

所述生成原始密钥流程,包括:

工具生成第一字符,根据第一字符生成原始密钥,将原始密钥保存;

所述生成秘密流程,包括:

工具生成第二字符,根据第二字符生成秘密,将秘密保存;

所述生成密文主密钥流程,包括:

工具获取与用户对应的原始密钥和秘密,根据获取到的原始密钥生成主密钥,并使用获取到的秘密对生成的主密钥加密得到密文主密钥,将密文主密钥提供给用户;

所述分割秘密流程,包括:

工具获取与用户对应的秘密,将其作为待分割秘密,并接收用户输入的第一数量和第二数量,第二数量小于或者等于第一数量;

工具根据待分割秘密、第一数量和第二数量,分割待分割秘密得到第一数量的影子秘密和影子秘密的序号,并将得到的影子秘密和影子秘密的序号对应分别发送给多个分散管理者。

可选地,本实施例中的方法,还包括:工具判断接收到的来自用户的触发信息的类型,如为生成原始密钥,则执行生成原始密钥流程;如为生成秘密,则执行生成秘密流程;如为生成密文主密钥,则执行生成密文主密钥流程;如为分割秘密,则执行分割秘密流程。

对应地,所述生成密文主密钥流程中,工具获取与用户对应的原始密钥和秘密之前,还包括:工具判断与用户对应的原始密钥和秘密是否均存在,是则获取与用户对应的原始密钥和秘密,否则报错,结束;

所述分割秘密流程中,工具获取与用户对应的秘密之前,还包括:工具判断与用户对应的秘密是否存在,是则获取与用户对应的秘密,否则报错,结束。

可选地,在本实施例中,当工具接收到来自用户的触发信息时,依次执行所述生成原始密钥流程、生成秘密流程、生成密文主密钥流程和分割秘密流程。

在本实施例中,所述生成原始密钥流程中,将原始秘密保存,具体为:

步骤2:工具创建第一文件,根据创建时间定义第一文件的文件名称,将原始密钥保存至第一文件中,保存第一文件;

对应地,所述生成密文主密钥流程中,工具获取与用户对应的原始密钥,具体为:

工具查找自身维护的所有第一文件,解析查找到的第一文件的文件名称得到对应的第一文件的创建时间,比对得到的创建时间得到最晚创建时间,读取最晚创建时间对应的第一文件中的原始密钥。

可选地,步骤2中,保存第一文件之后,还包括:将第一文件的文件名称返回给用户,并提示所述用户保存;

对应地,所述生成密文主密钥流程中,工具获取与用户对应的原始密钥,具体为:工具获取自身维护的所有第一文件,并弹框显示给用户,读取用户选择的第一文件中的原始密钥。

可选地,所述生成原始密钥流程中,根据第一字符生成原始密钥之后,还包括:将生成的原始密钥在操作页面中显示给用户,并提示用户保存;

对应地,所述生成密文主密钥流程中,工具获取与用户对应的原始密钥,具体为:

工具从所述操作页面中获取显示的原始密钥;

或者,

工具接收用户输入的原始密钥。

在本实施例中,所述生成秘密流程中,将秘密保存,具体为:

步骤3:工具创建第二文件,根据创建时间定义第二文件的文件名称并将秘密保存至第二文件中,保存第二文件。

对应地,所述生成密文主密钥流程中,工具获取与用户对应的秘密,具体为:

工具查找自身维护的所有第二文件,解析查找到的第二文件的文件名称得到对应的第二文件的创建时间,比对得到的创建时间得到最晚创建时间,读取最晚创建时间对应的第二文件中的秘密。

可选地,步骤3中,保存第二文件之后,还包括:将第二文件的文件名称返回给用户,并提示用户保存;

对应地,所述生成密文主密钥流程中,工具获取与用户对应的秘密,具体为:工具获取自身维护的所有第二文件,并弹框显示给用户,读取用户选择的第二文件中的秘密。

可选地,所述生成秘密流程中,根据第二字符生成秘密之后,还包括:将生成的秘密在操作页面中显示给用户;

对应地,所述生成密文主密钥流程中,工具获取与用户对应的秘密,具体为:工具从操作页面中获取显示的秘密。

在本实施例中,所述分割秘密流程中,将影子秘密和影子秘密的序号对应分别发送给多个分散管理者之前,还包括:工具接收用户输入的多个分散管理者的地址;

对应地,所述分割秘密流程中,将影子秘密和影子秘密的序号对应分别发送给多个分散管理者,具体为:工具将影子秘密和影子秘密的序号对应分别发送至接收到的分散管理者的地址中。

进一步地,在本实施例中,所述分割秘密流程中,将影子秘密和影子秘密的序号对应分别发送给多个分散管理者之前,还包括:工具创建第一数量的第三文件,根据影子秘密的序号分别定义第三文件的文件名称,并将影子秘密分别保存至对应的第三文件中;

对应地,所述分割秘密流程中,将影子秘密和影子秘密的序号对应分别发送给多个分散管理者,具体为:工具将第三文件分别发送给多个分散管理者。

更进一步地,在本实施例中,所述分割秘密流程中,将影子秘密和影子秘密的序号对应分别发送给多个分散管理者之前,还包括:

步骤c:工具从得到的所述第一数量的影子秘密中随机选择第二数量的影子秘密,根据选择的第二数量的影子秘密和对应的影子秘密的序号聚合秘密,判断聚合得到的秘密与待分割秘密是否相同,是则将影子秘密和影子秘密的序号对应分别发送给多个分散管理者,否则提示操作失败。

在本实施例中,所述分割秘密流程中,将影子秘密和影子秘密的序号对应分别发送给多个分散管理者之后,还包括:工具将待分割秘密、影子秘密及影子秘密的序号删除。

实施例二

本发明实施例二提供一种保护主密钥的工具的工作方法,如图1所示,包括:

步骤201:工具等待并接收来自用户的触发信息,判断接收到的触发信息的类型,如为生成原始密钥,则执行步骤202,如为生成秘密,则执行步骤205,如为生成密文主密钥,则执行步骤208,如为分割秘密,则执行步骤213;

进一步地,在本实施例中,步骤201还可以替换为:当工具接收到用户的触发信息时,依次执行生成原始密钥流程、生成秘密流程、生成密文主密钥流程和分发秘密流程,即依次执行步骤202至步骤220。

步骤202:工具生成第一字符;

具体地,工具依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度,并将生成的字符作为第一字符;

例如,在本实施例中,预设长度为16位,预设类型包括小写字母a-z、大写字母a-z、数字0-9和特殊字符(例如“*”)四个类型。

在本实施例中,步骤202具体包括:

步骤202-1:工具确定各预设类型的字符的生成顺序,并将生成顺序中的第一个类型作为当前类型;

例如,工具确定各预设类型的字符的生成顺序依次为:小写字母、大写字母、数字、特殊字符;将小写字母作为当前类型。

步骤202-2:工具生成随机数;

具体地,工具生成非负整数的随机数;

例如,工具生成随机数168。

步骤202-3:工具根据生成的随机数确定当前类型的字符的数量,随机生成对应数量的当前类型的字符;

在本实施例中,工具根据生成的随机数确定当前类型的字符的数量,具体为:工具将预设长度与预设数据求商,将生成的随机数与求得的商进行取余运算得到余数,并将求得的商与得到的余数求和,将求得的和作为当前类型的字符的数量;

优选地,在本实施例中,为使原始密钥中含有上述四个类型的字符,所述预设数据设定为8;需要说明地,预设数据不限为8;

例如,在本实施例中,当前类型为小写字母,工具根据上述生成的随机数可得小写字母的数量为168%(16/8)+16/8=2个,随机生成2个小写字母hf。

步骤202-4:工具判断当前类型在生成顺序中的位置是否为所述预设类型的个数减1,是则执行步骤202-5,否则将下一个类型作为当前类型,返回步骤202-2;

步骤202-5:工具根据预设长度和已确定的字符的数量计算生成顺序中最后一个类型的字符的数量,并随机生成对应数量及类型的字符。

具体地,工具将预设长度与已确定的字符的数量求差得到最后一个类型的字符的数量。

例如,在本实施例中,已确定的字符的数量分别为2个、4个和4个,则计算可得最后一个类型的字符的数量为16-2-4-4=6个。

进一步地,在本实施例中,工具确定各预设类型的字符的数量还可以为:

工具初始化各预设类型的字符的数量,并依次随机生成对应数量及类型的字符;

或者,

工具将预设长度与预设类型的个数求商的到各预设类型的字符的数量,并依次生成对应数量及类型的字符。

步骤203:工具根据生成的第一字符生成原始密钥;

具体地,工具将生成的第一字符作为参数传入第一函数接口,调用第一函数接口生成原始密钥;

在本实施例中,第一函数接口具体为:intgen_passwd();

例如,在本实施例中,步骤202中生成的第一字符包括小写字母hf、大写字母cmdh、数字6248和特殊字符*#@!@=,步骤203中生成的原始密钥为6hc@m48*d2!fh@#=。

在本实施例中,工具根据第一字符生成原始密钥之后,还可以包括:将生成的原始密钥在操作页面中显示给用户;

在本实施例中,工具根据第一字符生成原始密钥之后,还可以包括:将生成的原始密钥在操作页面中显示给用户,并提示用户保存。

步骤204:工具创建第一文件,定义第一文件的文件名称,并将原始密钥保存至第一文件中,保存第一文件;

在本实施例中,工具根据第一文件的创建时间定义第一文件的文件名称;例如,第一文件的创建时间为2016年11月16日13时09分05秒,则定义的第一文件的文件名称为initkey-20161116130905.txt。

在本实施例中,步骤204之后,还可以包括:工具将第一文件的文件名称返回给用户,并提示用户保存。

步骤205:工具生成第二字符;

在本实施例中,秘密的长度与原始密钥的长度可以相同,也可以不相同;秘密所含的字符类型与原始密钥所含的字符类型可以相同,也不可不同;优选地,在本实施例中,秘密的长度与原始密钥的长度相同,秘密所含的字符类型与原始密钥所含的字符类型相同;

具体地,工具依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度,将生成的字符作为第二字符;

进一步地,在本实施例中,步骤205的具体实现方法同步骤202的具体实现方法相同,在此不再赘述。

例如,在本实施例中,工具生成的第二字符包括小写字母etun、大写字母ogv、数字586和特殊字符*!@*=&。

步骤206:工具根据生成第二字符生成秘密;

具体地,工具将生成的第二字符作为参数传入上述第一函数接口,并调用第一函数接口生成秘密;

例如,在本实施例中,生成的秘密为otu8g*v5en!@6*=&。

在本实施例中,工具根据生成的各类型的字符生成秘密之后,还可以包括:将生成的秘密在操作页面中显示给用户。

步骤207:工具创建第二文件,定义第二文件的文件名称,并将生成的秘密保存至第二文件中,保存第二文件;

在本实施例中,工具根据第二文件的创建时间定义第二文件的文件名称,例如,第二文件的创建时间为2016年11月16日13时09分46秒,则定义的第二文件的文件名称为secret-20161116130946.txt。

在本实施例中,步骤207之后,还可以包括:工具将第二文件的文件名称返回给用户,并提示用户保存。

步骤208:工具获取与用户对应的原始密钥;

具体地,工具查找自身维护的所有第一文件,解析查找到的第一文件的文件名得到对应的第一文件的生成时间,比对得到的生成时间得到最晚生成时间,读取最晚生成时间对应的第一文件中的原始密钥;

在本实施例中,当步骤203中工具根据生成第一字符生成原始密钥之后,还包括“将生成的原始密钥在操作页面中显示给用户”时,如上述步骤202至步骤208之间,用户未退出工具,则对应地,步骤208还可以为:工具从操作页面中获取显示的原始密钥;

在本实施例中,当步骤204之后还包括“工具将第一文件的文件名称返回给用户,并提示用户保存”时;对应地,步骤208还可以为:工具获取自身维护的所有第一文件,并弹框显示给用户,供用户选择,工具读取用户选择的第一文件中的原始密钥;

在本实施例中,当步骤203中工具根据生成第一字符生成原始密钥之后,还包括“将生成的原始密钥在操作页面中显示给用户,并提示用户保存”时;对应地,步骤208还可以为:工具等待并接收用户输入的原始密钥。

步骤209:工具根据获取到的原始密钥生成主密钥;

具体地,工具将获取到的原始密钥、预存私有数据、预设迭代次数及第一预设算法作为参数传入第二函数接口,并调用第二函数接口生成主密钥;

在本实施例中,第二函数接口具体为:voidpbkdf2();

进一步地,在本实施例中,第一预设算法可以为sm3、sm4、sha1等,优选地,在本实施例中,第一预设算法为sm3;

例如,在本实施例中,工具获取到的原始密钥为6hc@m48*d2!fh@#=,预存私有数据为1234567890,预设迭代次数为10,预设算法为sm3,生成的主密钥为3e63ccb259d98e1255a055eb268433ad51e6b09e。

步骤210:工具获取与用户对应的秘密;

具体地,工具查找到自身维护的所有第二文件,解析查找到的第二文件的文件名得到对应的第二文件的生成时间,比对得到的生成时间得到最晚生成时间,读取最晚生成时间对应的第二文件中的秘密;

在本实施例中,当步骤206中工具根据第二字符生成秘密之后,还包括“工具将生成的秘密在操作页面中显示给用户”时,如上述步骤202至步骤210之间,用户未退出工具,则对应地,步骤210还可以为:工具从操作页面中获取显示的秘密;

在本实施例中,当步骤207之后还包括“工具将第二文件的文件名称返回给用户,并提示用户保存”时;对应地,步骤210还可以为:工具获取自身维护的所有第二文件,并弹框显示给用户,供用户选择,工具读取用户选择的第二文件中的秘密;

进一步地,在本实施例中,步骤210还可以位于步骤208之前。

步骤211:工具根据预设加密算法,使用获取到的秘密对生成的主密钥进行加密得到密文主密钥;

具体地,在本实施例中,工具根据des算法使用获取到的秘密对生成的主密钥进行加密得到密文主密钥;

例如,在本实施例中,工具根据des算法使用获取到的秘密otu8g*v5en!@6*=&对生成的主密钥3e63ccb259d98e1255a055eb268433ad51e6b09e进行加密得到密文主密钥f17effa79982337057ec9bab3cb8d4d6ccfeac184411911a521a476afccea8dd。

步骤212:工具将得到的密文主密钥提供给用户;

具体地,工具将得到的密文主密钥在在操作页面中显示给用户;

或者,

工具将得到的密文主密钥发送至用户指定的地址中。

进一步地,在本实施例中,用户接收到密文主密钥之后,将密文主密钥保存至数据库中,或者保存至用户认为安全的地方。

步骤213:工具获取与用户对应的待分割秘密;

在本实施例中,步骤213的实现方法,同步骤210的实现方法相同,在此不再赘述;

例如,在本实施例中,工具获取到的待分割秘密为otu8g*v5en!@6*=&。

步骤214:工具等待并接收用户输入的第一数量和第二数量;

在本实施例中,第一数量为分割待分割秘密得到的影子秘密的数量,第二数量为聚合秘密所需的影子秘密的数量;第一数量和第二数量均为非负整数,且第二数量小于或者等于第二数量;

例如,在本实施例中,工具接收到用户输入的第一数量为3,第二数量为2。

步骤215:工具等待并接收用户输入的分散管理者的地址;

具体地,工具等待并接收用户输入的用于保管影子秘密的分散管理者的地址;

在本实施例中,用户输入的分散管理者的地址的数量不小于第一数量,即不小于影子秘密的数量;

优选地,在本实施例中,用户输入的分散管理者的地址的数量为第一数量,且用户输入的分散管理者的地址为邮箱;

例如,用户输入的邮箱为yingzimimi1.com.cn、yingzimimi2.com.cn、yingzimimi3.com.cn。

步骤216:工具分割获取到的待分割秘密得到第一数量的影子秘密及影子秘密的序号;

具体地,工具将获取到的待分割秘密、第二预设算法、接收到的第一数量和第二数量作为参数传入第三函数接口,并调用第三函数接口得到第一数量的影子秘密及影子秘密的序号;

在本实施例中,第三函数接口具体为intshare();

其中,第二预设算法可以为拉格朗日内插多项式算法、射影几何、线性代数、孙子定理等;优选地,在本实施例中,第二预设算法为拉格朗日内插多项式算法;

例如,在本实施例中,工具将获取到的待分割秘密otu8g*v5en!@6*=&,及拉格朗日内插多项式算法、第一数量3个、第二数量2个传入上述第三函数接口,分发得到的影子秘密分别为8b42139776b3807530d987c4cb7536bc、da18b97b2505e7b5cf1d7055d1942b0f和1e2edfd4149c31f59aaad6d12ccb2095,影子秘密的序号分别为001、002和003。

步骤217:工具从得到的第一数量的影子秘密中随机选择第二数量的影子秘密,根据选择的第二数量的影子秘密和对应的影子秘密的序号聚合秘密,判断聚合得到的秘密与获取到的待分割秘密是否相同,是则执行步骤218,否则提示用户操作失败;

其中,根据选择的第二数量的影子秘密和对应的影子秘密的序号聚合秘密,具体为:工具将第二预设算法、选择的第二数量的影子秘密及对应的影子秘密的序号传入第四函数接口,调用第四函数接口聚合秘密;

在本实施例中,第四函数接口具体为intreconstruct();

在本实施例中,第二预设算法可以为拉格朗日内插多项式算法、射影几何、线性代数、孙子定理等;优选地,在本实施例中,第二预设算法为拉格朗日内插多项式算法

例如,工具将拉格朗日内插多项式算法、选择的的影子秘密8b42139776b3807530d987c4cb7536bc和da18b97b2505e7b5cf1d7055d1942b0f及对应的影子秘密的序号001和002传入第四函数接口,并调用第四函数接口聚合秘密得到秘密otu8g*v5en!@6*=&,与待分割秘密相同,则执行步骤218。

步骤218:工具创建第一数量的第三文件,根据影子秘密的序号分别定义第三文件的文件名称,并将影子秘密保存至对应的第三文件中;

在本实施例中,第三文件的文件名称中含有影子秘密的序号;

例如,在本实施例中,定义创建的第三文件的文件名称分别为share001.shr、share002.shr、share003.shr;将序号为001的影子秘密8b42139776b3807530d987c4cb7536bc保存至文件名称为share001.shr的第三文件中,将序号为002的影子秘密da18b97b2505e7b5cf1d7055d1942b0f保存至文件名称为share002.shr的第三文件中,将序号为003的影子秘密1e2edfd4149c31f59aaad6d12ccb2095保存至文件名称为share003.shr的第三文件中。

步骤219:工具将第三文件分别发送至分散管理者的地址中;

优选地,在本实施例中,工具接收到的管理者的地址的数量为第一数量,则步骤219具体为:工具随机将创建的第三文件分别随机发送至不同的管理者的地址中;

例如,工具将上述文件名称为share001.shr的第三文件发送邮箱yingzimimi2.com.cn中;将文件名称为share002.shr的第三文件发送至邮箱yingzimimi1.com.cn中;将文件名称为share003.shr的第三文件发送至邮箱yingzimimi03.com.cn中。

进一步地,在本实施例中,如工具接收到的管理者的地址的数量大于影子秘密的数量,则步骤219具体为:工具随机将创建的第三文件分别发送至不同的管理者的地址中之后,随机选择第三文件中的一个,随机选择未使用的管理者的地址中的一个,并将选择的第三文件发送至选择的管理者的地址中,直至所有管理者的地址均被发送到第三文件。

步骤220:工具将待分割秘密对应的第二文件和创建的第三文件删除;

上述工具对秘密进行分发得到多个影子秘密,并将得到的影子秘密分别发送至不同的分散管理者处,通过对影子秘密的分散保管,提升了秘密的安全,进而保证了主密钥的安全。

可选地,在本实施例中,步骤201之前,还可以包括:

步骤t:工具接收用户输入的登录信息,并验证接收到的登录信息是否正确,是则执行步骤201,否则提示用户登录失败;

在本实施例中,登录信息具体为用户名和密码;

具体地,工具判断自身维护的用户库中是否存在接收到的用户名与密码的对应关系,是则判定接收到的登录信息正确,否则判定接收到的登录信息不正确。

对应地,步骤204中,工具保存第一文件,具体为:工具将第一文件与登录用户的用户名对应保存;

步骤207中,工具保存第二文件,具体为:工具将第二文件与登录用户的用户名对应保存。

进一步地,在本实施例中,当步骤208中,当工具接收到用户随机输入的原始密钥时,工具将保存的与用户对应的第一文件中的原始密钥更新为接收到的原始密钥;

更进一步地,用户还可以通过本发明中的工具更换秘密,进而更换密文主密钥;

具体地,用户收集第二数量的分散管理者处的影子秘密及对应的影子秘密的序号,根据收集的影子秘密及影子秘密的序号聚合对应的秘密,使用秘密解密密文主密钥得到明文主密钥;当工具接收到用户输入的明文主密钥及生成秘密触发信息时,工具生成秘密;当工具接收到来自用户的生成密文主密钥触发信息时,使用生成的秘密,对用户输入的明文主密钥进行加密得到密文主密钥。

实施例三

本实施例中提供一种保护主密钥的工具,如图2所示,包括:

第一生成模块301,用于生成第一字符;

第二生成模块302,用于根据所述第一生成模块生成的第一字符生成原始密钥;

第一保存模块303,用于将所述第二生成模块生成的原始密钥保存;

第三生成模块304,用于生成第二字符;

第四生成模块305,用于根据所述第三生成模块生成的第二字符生成秘密;

第二保存模块306,用于将所述第四生成模块生成的秘密保存;

第一获取模块307,用于获取与用户对应的原始密钥;

第二获取模块308,用于获取与所述用户对应的秘密;

第五生成模块309,用于根据所述第一获取模块获取到的原始密钥生成主密钥;

加密模块310,用于使用所述第二获取模块获取到的秘密对第五生成模块生成的主密钥加密得到密文主密钥;

提供模块311,用于将所述加密模块得到的密文主密钥提供给所述用户;

第三获取模块312,用于获取与用户对应的秘密,将其作为待分割秘密;

接收模块313,用于接收用户输入的第一数量和第二数量,所述第二数量小于或者等于所述第一数量;

分割模块314,用于根据所述第三获取模块获取到的待分割秘密、所述接收模块接收到的所述第一数量和所述第二数量,分割所述待分割秘密得到所述第一数量的影子秘密和所述影子秘密的序号;

发送模块315,用于将所述分割模块得到的所述影子秘密和所述影子秘密的序号对应分别发送给多个分散管理者。

可选地,本实施例中的工具,还包括:第一判断模块;

对应地,接收模块313,还用于接收来自用户的触发信息;

第一判断模块,用于判断接收模块313接收到的触发信息的类型;

第一生成模块301,具体用于:当第一判断模块判断出接收模块313接收到的触发信息为生成原始密钥时,生成第一字符;

第三生成模块304,具体用于:当第一判断模块判断出接收模块313接收到的触发信息为生成秘密时,生成第二字符;

第一获取模块307,具体用于:当第一判断模块判断出接收模块313接收到的触发信息为生成密文主密钥时,获取与用户对应的原始密钥;

第二获取模块308,具体用于:当第一判断模块判断出接收模块313接收到的触发信息为生成密文主密钥时,获取与用户对应的秘密;

第三获取模块312,具体用于:当第一判断模块判断出接收模块313接收到的触发信息为分割秘密时,获取与用户对应的秘密,将其作为待分割秘密。

当本实施例中的工具包括第一判断模块时,工具还包括:第二判断模块、第三判断模块和报错模块;

其中,第二判断模块,用于判断与用户对应的原始密钥和秘密是否均存在;

第一获取模块307,具体用于:当所述第二判断模块判断出与用户对应的原始密钥和秘密均存在时,获取与用户对应的原始密钥;

第二获取模块308,具体用于:当第二判断模块判断出与用户对应的原始密钥和秘密均存在时,获取与用户对应的秘密;

所述第三判断模块,用于判断与用户对应的秘密是否存在;

第三获取模块312,具体用于:当第三判断模块判断出与用户对应的秘密存在时,获取与用户对应的秘密;

报错模块,用于当第二判断模块判断出与用户对应的原始密钥和秘密不是均存在时,报错;还用于当第三判断模块判断出与用户对应的秘密不存在时,报错。

在本实施例中,接收模块313,还用于接收来自用户的触发信息;

对应地,第一生成模块301,具体用于:在接收模块313接收到来自用户的触发信息之后,生成第一字符;

第三生成模块304,具体用于:在第一保存模块303将原始密钥保存之后,生成第二字符;

第一获取模块307,具体用于:在第二保存模块306将秘密保存之后,获取与用户对应的原始密钥;

第二获取模块308,具体用于:在第二保存模块306将秘密保存之后,获取与用户对应的秘密;

第三获取模块312,具体用于:在提供模块311将密文主密钥提供给用户之后,获取与用户对应的秘密,将其作为待分割秘密。

在本实施例中,第一生成模块301,具体用于:依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度。

在本实施例中,第三生成模块304,具体用于:依次随机生成各预设类型的字符,生成的各预设类型的字符的长度为预设长度。

进一步地,第一生成模块301和第三生成模块304,具体包括:

第一确定单元,用于确定各预设类型的字符的生成顺序;

作为单元,用于将第一确定单元确定的生成顺序中的第一个类型作为当前类型;

第一生成单元,用于生成随机数;

第二确定单元,用于根据第一生成单元生成的随机数确定当前类型的字符的数量;

第二生成单元,用于随机生成与第二确定单元确定的数量对应的当前类型的字符;

判断单元,用于判断当前类型在生成顺序中的位置是否为预设类型的个数减1;

作为单元,还用于当判断单元判断出当前类型在生成顺序中的位置不是预设类型的个数减1时,将下一个类型作为当前类型,触发第一生成单元;

第三确定单元,用于当判断单元判断出当前类型在所述生成顺序中的位置是预设类型的个数减1时,根据预设长度和已确定的字符的数量计算最后一个类型的字符的数量;

生成单元,还用于随机生成对应数量及类型的字符。

在本实施例中,第一生成模块301和第三生成模块304,还可以具体用于:

初始化各预设类型的字符的数量,并依次随机生成对应数量及类型的字符;

或者,

将预设长度与预设类型的个数求商得到各预设类型的字符的数量,并依次随机生成对应数量及类型的字符。

在本实施例中,第二生成模块302,具体用于:将第一字符作为参数传入第一函数接口,调用第一函数接口生成原始密钥;

第四生成模块305,具体用于:将第二字符作为参数传入第一函数接口,调用第一函数接口生成秘密。

进一步地,在本实施例中,第一保存模块303,具体用于:创建第一文件,根据创建时间定义第一文件的文件名称,并将原始密钥保存至第一文件中,保存第一文件;

第二保存模块306,具体用于:创建第二文件,根据创建时间定义第二文件的文件名称,并将秘密保存至第二文件中,保存第二文件。

对应地,第一获取模块307,具体用于:查找自身维护的所有第一文件,解析查找到的第一文件的文件名称得到对应的第一文件的创建时间,比对得到的创建时间得到最晚创建时间,读取最晚创建时间对应的第一文件中的原始密钥;

第二获取模块308,具体用于:查找自身维护的所有第二文件,解析查找到的第二文件的文件名称得到对应的第二文件的创建时间,比对得到的创建时间得到最晚创建时间,读取所述最晚创建时间对应的第二文件中的秘密。

可选地,发送模块315,还用于在第一保存模块303保存第一文件之后,将第一文件的文件名称返回给用户,并提示所述用户保存;

对应地,第一获取模块307,具体用于:获取自身维护的所有第一文件,并弹框显示给所述用户,读取用户选择的第一文件中的原始密钥。

可选地,本实施例中的工具,还包括:第一显示模块;

第一显示模块,用于第二生成模块302根据第一字符生成原始密钥之后,将生成的原始密钥在操作页面中显示给用户,并提示用户保存;

对应地,第一获取模块307,具体用于:

从操作页面中获取第一显示模块显示的原始密钥;

或者,

接收用户输入的原始密钥。

可选地,发送模块315,还用于在第二保存模块306保存第二文件之后,将第二文件的文件名称返回给用户,并提示用户保存;

对应地,第二获取模块308,具体用于:获取自身维护的所有第二文件,并弹框显示给用户,读取用户选择的第二文件中的秘密。

可选地,本实施例中的工具,还包括:第二显示模块;

第二显示模块,用于第四生成模块根据第二字符生成秘密之后,将第四生成模块生成的秘密在操作页面中显示给用户;

对应地,第二获取模块308,具体用于:从操作页面中获取显示的秘密。

在本实施例中,第五生成模块309,具体用于:将第一获取模块307获取到的原始密钥、预存私有数据、预设迭代次数及第一预设算法作为参数传入第二函数接口,并调用第二函数接口生成主密钥。

可选地,提供模块311,具体用于:

将密文主密钥在操作页面中显示给用户;

或者,

将密文主密钥发送至用户指定的地址中。

进一步地,在本实施例中,分割模块314,具体用于:

将待分割秘密、第一数量、第二数量及第二预设算法作为参数传入第三函数接口,调用第三函数接口得到第一数量的影子秘密及所述影子秘密的序号。

可选地,接收模块313,还用于接收用户输入的多个分散管理者的地址;

对应地,发送模块315,具体用于:将分割模块314得到的影子秘密和影子秘密的序号对应分别发送至接收模块接313接收到的分散管理者的地址中。

可选地,本实施例中的工具,还包括:第三保存模块;

第三保存模块,用于创建第一数量的第三文件,根据影子秘密的序号分别定义第三文件的文件名称,并将影子秘密和影子秘密的序号分别保存至所对应的第三文件中;

对应地,发送模块315,具体用于:将第三文件分别发送给多个分散管理者。

本实施例中的工具,还包括:聚合模块、第二判断模块和提示模块;

其中,聚合模块,用于在发送模块315将影子秘密和影子秘密的序号对应分别发送给多个分散管理者之前,从第一数量的影子秘密中随机选择第二数量的影子秘密,根据选择的第二数量的影子秘密和对应的影子秘密的序号聚合秘密;

第二判断模块,用于判断聚合模块聚合的秘密与待分割秘密是否相同;

发送模块315,具体用于:当第二判断模块判断出聚合模块聚合的秘密与待分割秘密相同时,将影子秘密和影子秘密的序号对应分别发送给多个分散管理者;

所述提示模块,用于当所述第二判断模块判断出所述聚合模块聚合的秘密与所述待分割秘密不相同时,提示操作失败。

在本实施例中,所述聚合模块,具体用于:

将第二预设算法、选择的第二数量的影子秘密和对应的影子秘密的序号作为参数传入第四函数接口,调用第四函数接口聚合秘密。

本实施例中的工具,还包括:删除模块;

删除模块,用于发送模块315将分割模块得到的影子秘密和影子秘密的序号对应发送给多个分散管理者之后,将第三获取模块312获取到的待分割秘密、分割模块314得到的影子秘密及影子秘密的序号删除。

本发明中,由工具生成原始密钥和秘密,工具根据生成的原始密钥生成明文主密钥,并使用秘密对明文主密钥加密得到密文主密钥,将密文主密钥提供给用户,使明文主密钥不落地,保障了明文主密钥的安全;同时,工具将生成的秘密分割为多个影子秘密并分别发送至多个管理者处,当用户需要解密密文主密钥时,根据上述多个影子秘密中的任意几个即可聚合秘密,使用聚合的秘密即可解密密文主密钥得到明文主密钥,进而使用明文主密钥去解密保护的数据;

该技术方案中,明文主密钥不落地,保障了明文主密钥的安全,并且通过对秘密的分散管理,既防止了秘密过于集中而带来的风险,又能保证秘密的安全性和完整性,从而有效的保护主密钥,进而保障了通过主密钥保护的数据的安全。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1