需要采用穷举法解密的随机加密方法

文档序号:7944265阅读:390来源:国知局
专利名称:需要采用穷举法解密的随机加密方法
技术领域
本发明涉及一种随机加密方法,用该加密方法加密生成的密文无论解密程序如何编写都需要用穷举法进行解密。

背景技术
目前普遍使用的操作系统Windows XP和Windows Vista中采用了先进的EFS(Encrypting File System,加密文件系统)。该密码系统中的证书和私钥丢失后,无法解密被EFS加密的文件。EFS导出的私钥备份的加密强度完全取决于用户导出私钥过程中所输入的密码。为了保证证书和私钥备份的安全,使用EFS的人们往往将备份保存在移动存储设备中。当操作系统中的证书和私钥丢失时,用户常常需要翻箱倒柜寻找移动存储设备,找到后将保存在移动存储设备中备份的证书和私钥导入操作系统,然后用导入的证书和私钥解密被EFS加密的文件。现有的EFS导出导入证书和私钥的方法不但不易使用,使许多人不敢使用EFS,而且导出导入证书和私钥、两次取用和两次放置移动存储设备后所花时间平均在一分钟以上,还可能因为移动存储设备丢失而无法恢复证书和私钥,使许多用户对EFS敬而远之。另一方面,已公知的加密方法利用用户身份信息对明文加密时,采用各种算法生成密码识别信息,利用该密码识别信息对用户身份信息的验证,为用户提供了方便,但也给破解者提供了捷径,并且该密码识别信息往往经不起攻击。还有,现有的随机加密方法在生成密码识别信息时,虽然将随机密钥加密,但只将用户身份信息锁在密码识别信息中,并没有将随机密钥锁在密码识别信息中,解密时只需要对用户身份信息进行比对,并不需要对随机密钥进行比对。


发明内容
本发明正是针对以上三方面的问题而产生,主要用来加密保护证书和私钥的备份。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 I输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, II利用用户身份信息UserID和随机密钥Random派生一个代码串UR,采用预定算法加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, III利用重要明文Text与密码识别信息PassID派生一个代码串TP, IV采用预定算法加密代码串TP,以生成重要明文Text的密文ReText。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 I输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, II利用用户身份信息UserID、随机密钥Random和重要明文Text派生一个代码串URT, III采用预定算法加密代码串URT,以生成重要明文Text的密文ReText。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 I输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, II利用用户身份信息UserID和随机密钥Random派生一个代码串UR,采用预定算法加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, III采用预定算法加密重要明文Text,以生成重要明文Text的密文ReText, IV将密码识别信息PassID插入密文ReText中,其中,所述将密码识别信息PassID插入密文ReText中,是指将密码识别信息PassID作为一个单位或拆分为多个单位添加到密文ReText中某一个或多个位置构成一个新代码串的动作,并且插入位置不局限于密文ReText里的位置,也可以插入密文ReText的首尾两端。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 I输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, II采用预定算法加密重要明文Text,以生成重要明文Text的密文ReText, III利用用户身份信息UserID和随机密钥Random派生一个代码串UR,采用预定算法加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, IV将密码识别信息PassID插入密文ReText中,其中,所述将密码识别信息PassID插入密文ReText中,是指将密码识别信息PassID作为一个单位或拆分为多个单位添加到密文ReText中某一个或多个位置构成一个新代码串的动作,并且插入位置不局限于密文ReText里的位置,也可以插入密文ReText的首尾两端。
根据权利要求1至4中任何一项,其特征是其中,密文ReText中含有一个大于或等于随机密钥Random长度Long的数据,用来给解密程序指定用穷举法探测的随机密钥的长度范围,任何针对本加密方法的解密程序都需要采用穷举法或采用穷举法与密码分析技术相结合的方法寻找随机密钥,不仅需要对解密时输入的用户身份信息与解密过程中释放的用户身份信息进行比对,还需要对穷举循环枚举的随机密钥与解密过程中释放的随机密钥进行比对,只有在前述两种密钥的比对都一致后,才能确保正确解密密文ReText,以释放重要明文Text,所述预定算法是指利用用户身份信息UserID和随机密钥Random进行加密的加密算法,并且包括下列加密算法中的一种或多种数学关系加密、变位加密、逻辑加密、算术加密、分组加密、流密码加密、线性加密、非线性加密、统计数据加密、伪随机加密、利用随着加密进程增加项数和调整幂次的多项式产生的流密码加密的算法、根据排序所产生的序号代码调整代码位置的加密算法,所述加密强度取决于加密用户身份信息UserID和随机密钥Random后所生成的密码识别信息PassID,解密时,只有先完成对密码识别信息PassID的解密,才能保证对重要明文Text的密文ReText进行正确解密,以释放重要明文Text,并且解密时,在确认用户身份信息UserID和随机密钥Random都正确后,从重要明文Text的密文ReText中解出重要明文Text的计算量相对总计算量而言往往非常小。因此,所述加密强度也等于对重要明文Text进行加密的加密强度并且是下列其中之一解密的平均计算量、解密的最大计算量、解密的平均计算量相对加密时计算量的放大倍数、解密的最大计算量相对加密时计算量的放大倍数、解密的平均计算量相对单次解密时计算量的放大倍数、解密的最大计算量相对单次解密时计算量的放大倍数、在预定速度机器上的平均解密时间、在预定速度机器上的最长解密时间,所述随机密钥是由下列其中一种或多种信息构成系统产生的随机信息、利用排序产生的序号代码重排系统产生的随机数据得到的信息、利用对内存或外存中的统计数据对系统产生的随机数据用某种算法干预后得到的信息、利用内存或外存中数据对系统产生的随机数据用某种算法干预后得到的信息、利用时钟数对系统产生的随机数据干预后得到的信息。
根据权利要求5,其特征是其中所述利用用户身份信息UserID和随机密钥Random进行加密,是指先用用户身份信息UserID和随机密钥Random两者之中的一个加密,然后用另一个在前述加密的基础上再次加密。
根据权利要求5,其特征是其中所述利用用户身份信息UserID和随机密钥Random进行加密,是指先用用户身份信息UserID和随机密钥Random派生一个密钥,然后用该密钥加密。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 I输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, II利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, III利用私钥KeyText与密码识别信息PassID派生一个代码串KP, IV利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,生成私钥KeyText的经加密的备份ReCome, V将一个大于或等于随机密钥Random长度Long的数据和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 A加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中, B在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则结束;若没找到,则执行CC输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, D利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, E利用私钥KeyText与密码识别信息PassID派生一个代码串KP, F利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, G将随机密钥的长度Long和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, H将私钥KeyText的经加密的备份ReCome保存在用于保存密文BeMF的相关存储空间中,结束。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 A判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行B;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行CB在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行H;若没找到,则执行CC输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, D利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, E利用私钥KeyText与密码识别信息PassID派生一个代码串KP, F利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, G将随机密钥的长度Long和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, H将私钥KeyText的经加密的备份ReCome保存在用于保存密文BeMF的相关存储空间中, I加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,结束。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 1用户请求对存贮盘Disk中的文件加密, 2判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行53在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行4;若没找到,则执行54加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束本进程, 5增加一个加密备份私钥KeyText的进程PKey,进程PKey执行6,原进程执行46进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息, 7检测用户命令,如果用户输入的命令是确认,则执行8,如果用户输入的命令是退出,则结束本进程, 8进程PKey判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行9,若没有输入,则从系统提取用户身份信息UserID,然后执行109进程PKey判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行10,若无效,则向6中要显示的图形界面发送出错提示信息,并执行610进程PKey将384个字节的随机数据传送到数列ID的前384字节上,并将数列ID的前128个字节信息作为一个大整数x,用一个循环计算(x/K[i])%256并将计算结果添加在数列ID后面, /*......添加后,ID已有512个数据,K[i]为大于65536的质数,0≤i<128,这是因为后面要采用排序所产生的位置序号代码来加密,用这种加密方法处理密码识别信息时,可能存在错误通过比对的情况,为了防止这种情况的出现,通过计算(x/K[i])%256并将结果保存在数列ID后面,记录大整数x的一些特征,以便在通过对用户身份信息UserID和随机密钥Random进行验证后,用大整数x的一些特征来进一步验证,以保证密码验证的可靠性。............*/ 11进程PKey产生长度为256个字节的随机数列P,利用私钥KeyText产生具有256字节数据的数列S,将数列S按照从小到大的顺序排列,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中。用一个循环计算, d[i+128]=d[i+128]^p[r[i]] /*...这里对随机数据进行处理,是为了破坏伪随机的周期性,以便后面将这些数据用作随机密钥,其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,d[i]、p[i]分别表示数列ID、P中第i个数据,0≤i<256...*/ 从数列ID中字节位置序号为128的位置开始,将用户身份信息UserID按顺序填入, 根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,在数列ID中从用户身份信息UserID结束的位置后面开始,读取Long位的数据作为随机密钥Random, /*...这里要求用户身份信息UserID和随机密钥Random总长度不超过256×8比特,如果超过,要调整数列ID的长度...*/ 12进程PKey从数列ID中序号为256的字节开始,复制128个字节到数列P中,将数列P复制到数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环,将p[r[i]]传送到s[i] /*...(0≤i<128),或用s[i]=p[r[i]]表示p[r[i]]传送到s[i]...*/ 用一个循环,计算 d[2×i]=d[2×i]^s[2×i] d[2×i+1]=(d[2×i+1]+s[2×i+1])%256 /*......即用数列S中数据加密数列ID首部的数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<64......*/ 13进程PKey将数列S复制到数列P,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中。
/*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环,将p[r[i]]传送到s[i]/*...(0≤i<128)...*/ 用一个循环,计算 d[2×i]=d[2×i]^s[2×i-128] d[2×i+1]=(d[2×i+1]-s[2×i-127]+256)%256 /*......即用数列S中数据加密数列ID中部的信息数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,64≤i<128......*/ 14进程PKey将ID的最后128个字节信息复制到数列P中,将数列P复制数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环, 将p[r[i]]传送到s[i] 计算d[i]=d[i]^s[i] /*...即用数列S中数据加密数列ID首部数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<128......*/ 15进程PKey将数列S复制到数列P,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*......其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环, 将p[r[i]]传送到s[i] 计算d[i+256]=d[i+256]^s[i] /*...即用数列S中数据加密数列ID中部的信息数据,,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<128...*/ 16进程PKey将数列ID中奇数字节位置上的数都向前移两位,并将移出的信息添加到前一个奇数位置字节数据的尾部,将第一个字节数据移出的信息添加在倒数第二个字节数据的尾部, 将数列ID中偶数字节位置上的数都向后移一位,并将移出的信息添加到后一个偶数位置字节数据的首部,将最后一个字节数据移出的信息传送给第二个字节数据的首部, 将数列ID的前256字节复制到数列Q前256字节中,将数列ID的后256字节数据按序复制到数列ID中位置序号为奇数的字节上,将数列Q中前256字节数据复制到ID中位置序号为偶数的字节上, 17进程PKey产生一个由516个字节构成的随机数列,并将该数列复制到数列P中,采用某种算法利用随机密钥Random和用户身份信息UserID派生一个由516字节构成的数列,并将该数列复制到数列S,用一个循环计算, p[i]=p[i]^s[i] /*...s[i]、p[i]分别表示数列S、P中第i个数据,0≤i<516,这一步用于防止产生的随机数据具有周期性,通过这步处理可使流密码分析法失效......*/ 18进程PKey将数列P前512个字节复制到数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的数据在排序后,被放在序号为r[i]的位置。.........*/ 用一个循环,将d[r[i]]传送到q[i] 将p[r[i]+4]传送到s[i] /*...,q[i]、s[i]、d[i]、p[i]分别表示数列Q、S、ID、P中第i个数据,0≤i<512......*/ 19进程PKey设置v=0, 用一个循环加密数列ID v=((i+5)(p[i/2])(i+5)+(i+4)(p[i/2+1])(i+4)+(i+3)(p[i/2+2])(i+3)+.....+(i/2+1)(p[i+4])(i/2+1))%(2563)+v/256 d[i]=q[i]^(v%256) /*............其中v为定义的变量,0≤i<512,取变量v后一个字节中信息给数列ID中的信息加密,d[i]、p[i]、q[i]分别表示数列ID、P、Q中第i个数据,这里里使用增加多项式中的项数,增加多项式中的最高幂次的非线性加密的方法来加密....*/ 20进程PKey产生一个由2048个字节构成的随机数列,并将该数列复制到数列Q前2048个字节中,将私钥KeyText转变为一个字符串KTs,从数列Q的第2048字节开始向前覆盖,将字符串KTs复制在数列Q的前2048字节内,从数列Q的第2048字节开始向后,将数列ID中前512字节中数据添加在Q的尾部, 21进程PKey从数列ID第一个字节开始,将数列P复制到数列ID上,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],..,r[i],..构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的数据在排序后,被放在序号为r[i]的位置。....*/ 用一个循环计算 d[516+i×5]=q[r[i]×5] d[516+i×5+1]=q[r[i]×5+1] d[516+i×5+2]=q[r[i]×5+2] d[516+i×5+3]=q[r[i]×5+3] d[516+i×5+4]=q[r[i]×5+4] /*...d[i]、q[i]分别表示数列ID、Q中第i个数据,0≤i<512..*/ 22进程PKey将随机密钥Random在前、用户身份信息UserID在后,两者连接在一起,构成一个长为n位的二进制数列RU,将数列ID中前(n/4-11)字节中的奇数位的信息复制添加到数列RU的尾部, 从数列ID第(n/4-10)个字节开始,将数列ID中字节数据添加到数列RU的尾部,直到数列U的长度为3080×8位, 设置v=0 用一个循环加密随机数列ID v=((i+5)(u[i/2])(i+5)+(i+4)(u[i/2+1])(i+4)+(i+3)(u[i/2+2])(i+3)+...+(i/2+1)(u[i+4])(i/2+1))%(2563)+v/256 d[i]=d[i]^(v%256) /*...........d[i]、u[i]分别表示数列ID、RU中第i个字节数据,0≤i<3076,n>8×8,这里可能导致加密计算量过大,若如此,可将上式适当修改,这里里使用增加多项式中的项数,增加多项式中的最高幂次的非线性加密的方法来加密......*/ 23进程PKey将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入数列ID中,然后在存贮盘Disk将数列ID保存为私钥KeyText的经加密的备份ReCome,结束本进程。
其中,上面在生成密码识别信息PassID的过程中,多次用到了排序所产生的序号代码来给某一个数列调整位置的方法,本文将这种方法叫做排序码加密。排序码加密可防止现有的各种密码分析方法,1922在产生流密码的算法中都采用了增加多项式中的项数,增加多项式中的最高幂次的非线性加密的方法来加密,这种加密方法可使线性分析、差分分析法失效,又因本发明将随机密钥锁在密码识别信息中,解密时需要用穷举法来寻找,使计算量完全超出破解者的承受能力,所唯密文攻击也失效。在实际应用中,产生流密码的方法还可利用项数随着加密进程增加,最高幂次不变,但最低幂次随着加密进程增加变化的多项式来实现。即产生流密码多项式中的幂次可根据需要调整。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 1用户请求对存贮盘Disk中的文件加密, 2判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行53在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行4;若没找到,则执行54加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束本进程, 5增加一个进程,该进程和原进程两者之中的一个进程PKey执行6,另一个进程执行46进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UsedD或不输入采用系统中当前用户的用户身份信息, 7检测用户命令。如果用户输入的命令是确认,则执行8,如果用户输入的命令是退出,则结束本进程, 8进程PKey判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行9,若没有输入,则从系统提取用户身份信息UserID,然后执行109进程PKey判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行10,若无效,则向6中要显示的图形界面发送出错提示信息,并执行610进程PKey根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long位的随机密钥Random, 11进程PKey利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, 12进程PKey提取私钥KeyText,并利用提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP, 13进程PKey利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, 14进程PKey将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, 15进程PKey将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间,结束本进程。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 1用户请求对存贮盘Disk中的文件加密, 2加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中, 3在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则结束;若没找到,则执行44进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息, 5检测用户命令。如果用户输入的命令是确认,则执行6,如果用户输入的命令是退出,则结束, 6判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行7;若没有输入,则从系统提取用户身份信息UserID,然后执行87判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行8,若无效,则向4中要显示的图形界面发送出错提示信息,并执行48根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long的随机密钥Random, 9利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, 10提取私钥KeyText,并将提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP, 11利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, 12将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, 13将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间,结束。
根据本发明的一个方面,提供一种加密方法,其加密流程如下 1用户请求对存贮盘Disk中的文件加密, 2判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行43在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行14;若没找到,则执行44进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息, 5检测用户命令。如果用户输入的命令是确认,则执行6,如果用户输入的命令是退出,则执行146判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行7,若没有输入,则从系统提取用户身份信息UserID,然后执行87判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行8,若无效,则向4中要显示的图形界面发送出错提示信息,并执行48根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long的随机密钥Random, 9利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, 10提取私钥KeyText,并利用提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP, 11利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, 12将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, 13将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间, 14加密明文MessFile,以得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束。
根据权利要求8至14中所述的加密方法,其特征是其中,任何针对本加密方法的解密程序都需要采用穷举法或采用穷举法与密码分析技术相结合的方法寻找随机密钥,不仅需要对解密时输入的用户身份信息与解密过程中释放的用户身份信息进行比对,还需要对穷举循环枚举的随机密钥与解密过程中释放的随机密钥进行比对,只有在前述两种密钥的比对都一致后,才能保证对私钥KeyText的经加密的备份ReCome进行正确解密,以释放私钥KeyText,所述加密强度取决于加密用户身份信息UserID和随机密钥Random后所生成的密码识别信息PassID,解密时,只有先完成对密码识别信息PassID的解密,才能保证对私钥KeyText的经加密的备份ReCome进行正确解密,以释放私钥KeyText,并且解密时,在确认用户身份信息UserID和随机密钥Random都正确后,从私钥KeyText的经加密的备份ReCome中解出私钥KeyText的计算量相对总计算量而言往往非常小。因此,所述加密强度也等于对私钥KeyText进行加密的加密强度并且是下列其中之一解密的平均计算量、解密的最大计算量、解密的平均计算量相对加密时计算量的放大倍数、解密的最大计算量相对加密时计算量的放大倍数、解密的平均计算量相对单次解密时计算量的放大倍数、解密的最大计算量相对单次解密时计算量的放大倍数、在预定速度机器上的平均解密时间、在预定速度机器上的最长解密时间,所述随机密钥是由下列其中一种或多种信息构成系统产生的随机信息、利用排序产生的序号代码重排系统产生的随机数据得到的信息、利用对内存或外存中的统计数据对系统产生的随机数据用某种算法干预后得到的信息、利用内存或外存中数据对系统产生的随机数据用某种算法干预后得到的信息、利用时钟数对系统产生的随机数据干预后得到的信息。所述插入是指将一个代码串作为一个单位或拆分为多个单位添加到另一个代码串中某一个或多个位置构成一个新代码串的动作,并且插入位置不局限于代码串里的位置,也可以插入代码串的首尾两端。
本发明中的加密方法即使利用相同的用户身份信息,对同样的信息加密,加密强度也是可变的,本发明中的加密方法可以通过调整随机密钥长度而使该加密方法的加密强度随着加密机器速度的提高而提高或者使用者需求而变化。因此,本发明中的加密方法可以应对将来破解设备的发展,有效地保证被本发明中的加密方法加密的信息安全。



图1为本发明第一个实施例的加密流程图, 图2为本发明第二个实施例的加密流程图, 图3为本发明第三、第四个实施例的加密流程图, 图4-A和图4-B为本发明第四个实施例的加密流程图, 图5为本发明第五个实施例的加密流程图, 图6为本发明第六个实施例的加密流程图。

具体实施例方式 为与普通文件和信息区别,本文将用本发明中的加密方法来加密保护的私钥、证书、重要文件等信息称为重要明文。本发明利用用户身份信息和随机密钥共同加密,将随机密钥和用户身份信息锁在密码识别信息中,并且在生成密码识别信息时采用反密码分析方法的措施。根据本发明加密的密文,无论破解者怎样编写解密程序,除了使用穷举法或采用穷举法与密码分析技术相结合的方法外,无法有效利用其它密码分析方法对密文进行破解,即使在提供的用户身份信息正确的情况下,任何针对本发明的解密程序仍需要采用穷举法或采用穷举法与密码分析技术相结合的方法寻找随机密钥,才能保证成功的将密文解密。本发明中的加密方法对同样的信息,使用相同的用户身份信息,所获得的加密强度是可变的,本发明中的加密方法可以通过调整随机密钥长度而使该加密方法的加密强度随着加密机器速度的提高而提高或者使用者需求而变化。因此,本发明中的加密方法可以应对将来破解设备的发展,有效地保证被本发明中的加密方法加密的信息安全。
根据本发明的加密方法的基本特征是输入用户身份信息和加密强度,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度,并产生该长度的随机密钥,这是一个不能根据任何明文、用户身份信息算出的随机密钥;利用用户身份信息和随机密钥共同加密重要明文;并在加密过程中将随机密钥和用户身份信息锁在密码识别信息中。即使在提供的用户身份信息正确的情况下,任何针对本发明的解密程序仍需要采用穷举法或采用穷举法与密码分析技术相结合的方法寻找随机密钥,才能保证成功的将密文解密。
针对本发明的解密程序,使用穷举法来解密并不指只用穷举法来解密,也可采用其它的先进的密码分析技术来排除部分不可能的随机密钥,以加快穷举法寻找随机密钥的速度。前句所述的穷举法是指在输入用户身份信息的前提下,且在随机密钥变动范围内,解密程序用某种算法逐个列出尚未被排除的随机密钥,并用某种算法将当前列出的随机密钥、用户身份信息与密码识别信息进行比对以验证当前列出的随机密钥。直至正确的随机密钥被找到或已尝试所有可能的随机密钥。
本发明这种密码系统在加密、解密时都需要用户或系统提供被加密信息的用户身份信息。本文中所说的用户身份信息是指能够由用户完全掌握的密钥,加密和解密时都可由用户输入,包括用户名、用户密码、用户指纹、DNA、兴趣爱好、社会关系、特殊经历、身份证号码、软件序列号等各种由用户、软件设定用于识别用户身份并参与加密、解密的信息。
为便于表述,下面首先在所有密码分析方法都失效的条件下进行说明。为便于控制解密的平均计算量,本发明中的随机密钥采用对称密钥。这里假设加密时,用户输入的用户身份信息为含有x个字符的用户密码,并且用户密码中每个字符为含有U个元素集合中的任意一个元素。加密所用的时间为T,解密时需要用穷举法寻找的随机密钥由y个单元组成,每个单元为含有R个元素集合中的任意一个元素,且假设加密、解密过程都在速度相等的计算机上完成。在用户身份信息正确时,计算机解密被加密的信息所需的时间为t=k×T×S(式中k为修正系数且k>0,S为用穷举法尝试的次数)。通常随着S的增大,k会逐渐接近某一常数,因此下面可将k作为一个常数来考虑。在前述情况下,合法用户解密所需的最长时间为k×T×Ry,平均解密时间t1=0.5×k×T×(Ry+1),破解者因不知道用户身份信息,所以对用户身份信息和随机密钥都要进行试探,因此其平均成功破解时间 t2=0.5×k×T×(Ux×Ry+1) =0.5×k×T×(Ry+1)(Ux+1÷Ry)÷(1+1÷Ry) ≈t1×(Ux+0)÷(1+0) =t1×Ux ① 破解者在h时间内成功破解的概率为 P=h÷(k×T×Ux×Ry) =h(Ry+1)÷(2×0.5×k×T×(Ry+1)×Ux×Ry) =h(1+1÷Ry)÷(2×t1×Ux) ≈h÷(2×t1×Ux) ② 据此,我们可推出在平均解密时间t1为1分钟,在用户密码长度x为8,且密码中字符仅为数字与大小英文字母的情况下,此时U为62,破解者在一年之内成功破解的概率为1.20445119×10-9,即使破解计算机的速度为加密计算机速度的10000倍,破解者在一年之内成功破解的概率也只有1.20445119×10-5,这个概率对绝大多数用户来说仍足够安全,况且在实际应用中通过用户输入多种信息使用户身份信息的长度x很容易大于8,构成用户身份信息的元素个数U还可增大,需要用穷举法寻找的随机密钥长度y可进一步增加,即很容易进一步降低破解者成功破解的概率。本发明加密的信息因需要用穷举法寻找随机密钥,增加了平均解密计算量,从而引起平均解密时间增大,大大降低了单位时间内成功破解的概率,而且平均解密时间可以控制在合法用户能够接受的范围之内,但对破解者而言因没有掌握正确的用户身份信息,这个时间被用户身份信息进一步增大到Ux倍,使破解时间超出破解者的承受能力,迫使破解者放弃强行破解,从而达到保证信息安全的目的。
本发明中加密强度取决于加密用户身份信息和随机密钥后所生成的密码识别信息,解密时,只有先完成对密码识别信息的解密,才能保证对其他密文进行正确解密,以释放重要明文,并且解密时,在确认用户身份信息和随机密钥都正确后,从密文中解出重要明文的计算量相对总计算量而言往往非常小。因此,所述加密强度也可被认为就等于对重要明文进行加密的加密强度。本发明中加密强度是指解密的平均计算量、或指解密的最大计算量、或指解密的平均计算量相对加密时计算量的放大倍数、或指解密的最大计算量相对加密时计算量的放大倍数、或指解密的平均计算量相对单次解密时计算量的放大倍数、或指解密的最大计算量相对单次解密时计算量的放大倍数、或指在预定速度机器上的平均解密时间、或指在预定速度机器上的最长解密时间。用户或系统输入的加密强度要求可通过设置随机密钥的长度来实现。
可在解密程序中插入计数器统计得到解密程序枚举一个可能的随机密钥,并用该随机密钥完成一次尝试解密的计算量函数f(x,y,z),式中x为用户身份信息的长度,y为随机密钥的长度,z为密文的长度,随机密钥长度以比特为单位。在不考虑密码分析威胁的条件下, 当用户或系统输入的加密强度为解密的平均计算量j时,可通过对方程j×2=f(x,y,z)×2y ③ 求解,算出加密时应使用的随机密钥的长度y。
当用户或系统输入的加密强度为预定速度为v的计算机上解密的平均解密时间t1时,可通过对方程v×t1×2=f(x,y,z)×2y ④ 求解,算出加密时应使用的随机密钥的长度y。
可在加密程序中插入计数器统计得到加密程序加密的计算量函数g(x,y,z),其中x为用户身份信息的长度,y为随机密钥的长度,z为密文的长度,随机密钥长度以比特为单位。在不考虑密码分析威胁的条件下, 当用户或系统输入的加密强度为解密的平均计算量相对加密时计算量的放大倍数w时,可通过对方程 g(x,y,z)×w×2=f(x,y,z)×2y ⑤ 求解,算出加密时应使用的随机密钥的长度y。
以上都是利用计算量列方程,当用户或系统输入的加密强度为其它类型参数时也可通过与上面相似的方式,从方程中算出加密时应使用的随机密钥的长度y。
上面的方程都是在密码分析方法失效的条件下得到的,当加密时生成用于识别用户身份信息和随机密钥的密码识别信息的加密算法,能被破解者采用密码分析方法进行分析时,为防止非法用户破解,本发明在加密之前计算随机密钥长度时,根据密码系统运行的用于计算加速能力的子程序,得到系统中掌握的最新密码分析方法对解密进程的加速能力,适当加长随机密钥的长度达到阻止利用该密码分析方法破解本发明的效果,这样能确保本发明总能跟上密码分析方法的发展,并且采用本发明编写的加密程序,可以做到不更新加密方法,只要及时更新用于计算加速能力的子程序即可,有时该子程序可能也不需要更新,只需要更新与加速能力相关的参数,该子程序或参数更新后,加密程序就可自动提高加密强度,自动使当前最新破解技术立即失效。下文计算时,加速能力用旧破解方法针对某长度密文解密时的平均计算量与用新破解方法针对同样长度密文解密时的平均计算量比值来表示,当然也可其它形式来表示,当然在实际应用中,可用上述比值减1来表示,也可用上述比值的倒数来表示,还用1减这个倒数来表示,为了在自动提高加密强度后,用户对密文的平均解密时间在可以接受的范围之内,本发明的实施者应及时将当前最快的密码分析方法应用到针对本发明的解密程序中,尽量减少穷举程序的循环次数,即要在充分利用密码分析的基础上,使用穷举循环进行解密,为合法用户提供便捷。
假设依据本发明所产生的加密方法,采用某种算法对用户身份信息和随机密钥加密,以生成用于识别用户身份信息和随机密钥的密码识别信息,这个生成密码识别信息的算法在公布之前,除了用穷举法破解外,没有其它的有效破解方法,这个生成密码识别信息的算法公布后,出现了新的密码分析方法,能加速对该算法产生的密文的破解,经过统计或计算,新的密码分析方法对解密进程的加速能力可表示为函数m(x,y,z),其中x为已知的用户身份信息的长度,y为随机密钥的长度,z为密文的长度,随机密钥长度以比特为单位,函数m(x,y,z)表示用旧破解方法针对某长度密文解密时的平均计算量与用新破解方法针对同样长度密文解密时的平均计算量比值。本发明的实施者,在知晓该破解方法后,立即将该破解方法应用到合法用户的解密方法中,以提高合法用户解密程序的工作效率,并同时将包含该方法的加速能力函数m(x,y,z)计算功能的子程序提交给加密程序。此时 当用户或系统输入的加密强度为预定速度为v的计算机上解密的平均解密时间t1时,合法用户已知用户身份信息,可得合法用户解密时的有关方程 v×t1×2×m(x,y,z)=f(x,y,z)×2y ⑥ 求解,算出加密时应使用的随机密钥的长度y。当用户或系统输入的加密强度为其它类型参数时,加密前计算应使用的随机密钥的长度y的过程中也要将加速能力m(x,y,z)考虑进去。
当破解者没有掌握用户身份信息时,可得破解密时的有关方程 v×t2×2×m(0,xLog2U+y,z)=f(x,y,z)×2y×Ux      ⑦ 其中x为用户身份信息的长度,y为随机密钥的长度,z为密文的长度,随机密钥长度以比特为单位。由方程⑥、⑦得到 v×t2×2×m(0,y+xLog2U,z)=v×t1×2×m(x,y,z)×Ux⑧ 由方程⑧得到破解时间t2为 t2=t1×Ux×m(x,y,z)÷m(0,y+xLog2U,z) ⑨ 求解,算出加密时应使用的随机密钥的长度y。
由于加速能力函数m(x,y,z)中的x为已知的用户身份信息的长度,y是未知的随机密钥长度,z为密文的长度,在被分析的加密算法为现有的非线性加密算法条件下,当z不变、x变小、y变大时,加速能力m(x,y,z)减小,据此,可知,当x>0时, m(x,y,z)>m(0,m(0,y+xLog2U,z),z), 又因m(x,y,z)>0 所以m(x,y,z)÷m(0,m(0,y+xLog2U,z),z)>1 所以,可由⑨得到 t2>t1×Ux ⑩ 比较①式与⑩就会发现,当采用非线性加密算法依据本发明来加密保护密码识别信息时,在更新计算新密码分析方法加速能力的子程序、并利用新密码分析方法更新解密程序后,在合法用户的平均解密时间不变的情况下,破解者的平均破解时间将更长,单位时间内破解成功的概率将更低,也就是本发明所产生的加密方法将使被加密的密码识别信息变得更加安全,当然也使重要明文加密后所生成的密文也更安全。因此,本发明主张用非线性加密方法对用户身份信息和随机密钥加密,以生成密码识别信息,但不排除在加密过程中使用线性加密方法。
若本发明中的方法加密用户身份信息和随机密钥的算法已有密码分析方法,编写解密程序时,可将密码分析方法和穷举法相结合,以求在用户设置的时间内,用穷举法处理更长的随机密钥。本文将随机密钥的长度、变动范围及随机密钥中单元的长度、变动范围统称为随机长度。用户或系统设置加密强度通过调节随机长度来实现。为了保证本发明中所采用的随机密钥具有高度的随机性,密码系统可将排序产生的序号代码重排系统产生的随机数据得到的信息作为随机密钥,也可将利用内存或外存中的统计数据对系统产生的随机数据用某种算法干预后得到的信息作为随机密钥,还可将利用内存或外存中数据对系统产生的随机数据用某种算法干预后得到的信息作为随机密钥,还可利用时钟数对系统产生的随机数据干预后得到的信息作为随机密钥,甚至是由以上两种或多种数据共同构成。
本发明在对信息的加密运算中可采用异或、非、与、或等逻辑运算来加密;也可采用加、减、乘、除、乘方、开方、取模及函数等算术运算来加密;还可采用数学关系运算来加密。前句所说的“数学关系”有大小关系、集合关系等,其中大小关系包括大于、大于或等于、等于、小于或等于、小于、不等于,集合关系包括元素与集合之间的关系(属于、不属于)、集合与集合之间的包含、映射关系等,采用数学关系运算加密是指依据数学关系所建立的加密算法,例如根据加密对象的代码与某一数据的大小关系来选择密码或加密算法等、根据元素(本文中指加密对象或由加密对象等生成的代码)与某集合的关系来选择密码或加密算法等、根据映射关系(一一映射或非一一映射)建立的密码表加密等。为简便起见,本文将用逻辑运算来实现的加密简称为逻辑加密,将用算术运算来实现的加密简称为算术加密,将采用数学关系运算来实现的加密简称为数学关系加密。本发明在对信息的加密中既可采用向前移动信息代码位置(后面被移空的位置既可用前面或后面移出的代码填充,也可用随机码或非随机码填充),又可采用向后移动信息代码位置(前面被移空的位置既可用前面或后面移出的代码填充,也可用随机码或非随机码填充),也可采用交换信息代码位置,还可采用按某一规则重新排列信息代码位置,还可采用向信息代码中插入非随机代码,甚至采用向信息代码中插入随机代码(该随机代码在解密时可能不需要用穷举法寻找,也可能需要用穷举法寻找)等引起信息代码位置变化的方式加密信息,本文将这种能引起信息代码位置变化的加密算法叫做变位加密。本发明既可采用流密码加密、线性加密算法、对称加密算法,又可采用分组加密算法、非线性加密算法、不对称加密算法,还可利用统计数据加密,甚至使用伪随机加密和本发明之外的随机加密算法。
为便于说明,下面将采用本发明来备份关键密码、证书的文件保密系统(包括加密系统和解密系统)简称为FKSS;采用本发明来备份和恢复的私钥KeyText就是利用本发明中加密方法来保护的重要明文;将私钥KeyText用本发明中的加密方法加密后生成私钥KeyText的经加密的备份称为ReCome(在生成ReCome后,FKSS中仍保留私钥KeyText);将除私钥KeyText以外的等待FKSS加密的文件或信息称为明文MessFile;将明文MessFile被FKSS加密后生成的密文称为BeMF。FKSS加密明文MessFile时,若采用对称加密算法,则用私钥KeyText加密明文MessFile,若采用非对称加密算法,用与私钥KeyText配对的公钥加密明文MessFile,由于对明文MessFile加密并非本发明的重点,因此后面的实施例中在涉及“FKSS加密明文MessFile得到密文BeMF”这步时,不提用何种密钥加密。为了快速识别,FKSS给私钥KeyText产生一个识别标志KeyID,备份私钥KeyText生成ReCome时FKSS将KeyID备份到用于保存密文的相关空间作为ReCome的识别标志,加密明文MessFile时FKSS从即将用于保存密文的相关空间读取备份的KeyID,并根据该KeyID与当前用户的KeyID是否一致,来判断当前用户的私钥KeyText是否已有备份ReCome。通常,FKSS备份KeyID时采用复制的方式进行,当然也可采用某种算法保存KeyID的加密副本。本文推荐KeyID由FKSS的版本号、私钥KeyText的修改时间和随机数据这三者共同组成,当然不排除KeyID由其他数据构成。
参见图1,本发明第一个实施例,其加密流程如下 A、加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中, B、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则结束;若没找到,则执行CC、输入加密强度和用户身份信息UserlD,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, D、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, E、利用私钥KeyText与密码识别信息PassID派生一个代码串KP, F、利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, G将随机密钥的长度Long和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, H、将私钥KeyText的经加密的备份ReCome保存在用于保存密文BeMF的相关存储空间中,结束。
参见图2,本发明第二个实施例,其加密流程如下 A、判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行B;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行CB、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行H;若没找到,则执行CC、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random, D、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, E、利用私钥KeyText与密码识别信息PassID派生一个代码串KP, F、利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, G将随机密钥的长度Long和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, H、将私钥KeyText的经加密的备份ReCome保存在用于保存密文BeMF的相关存储空间中, I、加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,结束。
参见图3,本发明第三个实施例,其加密流程如下 1、用户向FKSS请求对存贮盘Disk中的文件加密, 2、FKSS判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行53、FKSS在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行4;若没找到,则执行54、FKSS加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束本进程, 5、FKSS增加一个加密备份私钥KeyText的进程PKey,进程PKey执行6,FKSS的原进程执行46、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用FKSS默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息, 7检测用户命令,如果用户输入的命令是确认,则执行8,如果用户输入的命令是退出,则结束本进程, 8、进程PKey判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行9,若没有输入,则从系统提取用户身份信息UserID,然后执行109、进程PKey判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行10,若无效,则向6中要显示的图形界面发送出错提示信息,并执行610、进程PKey将384个字节的随机数据传送到数列ID的前384字节上,并将数列ID的前128个字节信息作为一个大整数x,用一个循环计算(x/K[i])%256并将计算结果添加在数列ID后面, /*......添加后,ID已有512个数据,K[i]为大于65536的质数,0≤i<128,这是因为后面要采用排序所产生的位置序号代码来加密,用这种加密方法处理密码识别信息时,可能存在错误通过比对的情况,为了防止这种情况的出现,通过计算(x/K[i])%256并将结果保存在数列ID后面,记录大整数x的一些特征,以便在通过对用户身份信息UserID和随机密钥Random进行验证后,用大整数x的一些特征来进一步验证,以保证密码验证的可靠性。............*/ 11、进程PKey产生长度为256个字节的随机数列P,利用私钥KeyText产生具有256字节数据的数列S,将数列S按照从小到大的顺序排列,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中。用一个循环计算, d[i+128]=d[i+128]^p[r[i]] /*...这里对随机数据进行处理,是为了破坏伪随机的周期性,以便后面将这些数据用作随机密钥,其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,d[i]、p[i]分别表示数列ID、P中第i个数据,0≤i<256...*/ 从数列ID中字节位置序号为128的位置开始,将用户身份信息UserID按顺序填入, 根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,在数列ID中从用户身份信息UserlD结束的位置后面开始,读取Long位的数据作为随机密钥Random, /*...这里要求用户身份信息UserID和随机密钥Random总长度不超过256×8比特,如果超过,要调整数列ID的长度...*/ 12、进程PKey从数列ID中序号为256的字节开始,复制128个字节到数列P中,将数列P复制到数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环,将p[r[i]]传送到s[i] /*...(0≤i<128),或用s[i]=p[r[i]]表示p[r[i]]传送到s[i]...*/ 用一个循环,计算 d[2×i]=d[2×i]^s[2×i] d[2×i+1]=(d[2×i+1]+s[2×i+1])%256 /*......即用数列S中数据加密数列ID首部的数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<64......*/ 13、进程PKey将数列S复制到数列P,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中。
/*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环,将p[r[i]]传送到s[i] /*...(0≤i<128)...*/ 用一个循环,计算 d[2×i]=d[2×i]^s[2×i-128] d[2×i+1]=(d[2×i+1]-s[2×i-127]+256)%256 /*......即用数列S中数据加密数列ID中部的信息数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,64≤i<128......*/ 14、进程PKey将ID的最后128个字节信息复制到数列P中,将数列P复制数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环, 将p[r[i]]传送到s[i] 计算d[i]=d[i]^s[i] /*...即用数列S中数据加密数列ID首部数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<128......*/ 15、进程PKey将数列S复制到数列P,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*......其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/ 用一个循环, 将p[r[i]]传送到s[i] 计算d[i+256]=d[i+256]^s[i] /*...即用数列S中数据加密数列ID中部的信息数据,,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<128...*/ 16、进程PKey将数列ID中奇数字节位置上的数都向前移两位,并将移出的信息添加到前一个奇数位置字节数据的尾部,将第一个字节数据移出的信息添加在倒数第二个字节数据的尾部, 将数列ID中偶数字节位置上的数都向后移一位,并将移出的信息添加到后一个偶数位置字节数据的首部,将最后一个字节数据移出的信息传送给第二个字节数据的首部, 将数列ID的前256字节复制到数列Q前256字节中,将数列ID的后256字节数据按序复制到数列ID中位置序号为奇数的字节上,将数列Q中前256字节数据复制到ID中位置序号为偶数的字节上, 17、进程PKey产生一个由516个字节构成的随机数列,并将该数列复制到数列P中,采用某种算法利用随机密钥Random和用户身份信息UserID派生一个由516字节构成的数列,并将该数列复制到数列S,用一个循环计算, p[i]=p[i]^s[i] /*...s[i]、p[i]分别表示数列S、P中第i个数据,0≤i<516,这一步用于防止产生的随机数据具有周期性,通过这步处理可使流密码分析法失效......*/ 18、进程PKey将数列P前512个字节复制到数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r[o],r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的数据在排序后,被放在序号为r[i]的位置。.........*/ 用一个循环,将d[r[i]]传送到q[i] 将p[r[i]+4]传送到s[i] /*...,q[i]、s[i]、d[i]、p[i]分别表示数列Q、S、ID、P中第i个数据,0≤i<512......*/ 19、进程PKey设置v=0, 用一个循环加密数列ID v=((i+5)(p[i/2])(i+5)+(i+4)(p[i/2+1])(i+4)+(i+3)(p[i/2+2])(i+3)+....+(i/2+1)(p[i+4])(i/2+1))%(2563)+v/256 d[i]=q[i]^(v%256) /*............其中v为定义的变量,0≤i<512,取变量v后一个字节中信息给数列ID中的信息加密,d[i]、p[i]、q[i]分别表示数列ID、P、Q中第i个数据,这里里使用增加多项式中的项数,增加多项式中的最高幂次的非线性加密的方法来加密......*/ 20、进程PKey产生一个由2048个字节构成的随机数列,并将该数列复制到数列Q前2048个字节中,将私钥KeyText转变为一个字符串KTs,从数列Q的第2048字节开始向前覆盖,将字符串KTs复制在数列Q的前2048字节内,从数列Q的第2048字节开始向后,将数列ID中前512字节中数据添加在Q的尾部, 21、进程PKey从数列ID第一个字节开始,将数列P复制到数列ID上,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中, /*...其中r[i]表示数列S中原位置序号为i的数据在排序后,被放在序号为r[i]的位置。......*/ 用一个循环计算 d[516+i×5]=q[r[i]×5] d[516+i×5+1]=q[r[i]×5+1] d[516+i×5+2]=q[r[i]×5+2] d[516+i×5+3]=q[r[i]×5+3] d[516+i×5+4]=q[r[i]×5+4] /*...d[i]、q[i]分别表示数列ID、Q中第i个数据,0≤i<512...*/ 22、进程PKey将随机密钥Random在前、用户身份信息UserID在后,两者连接在一起,构成一个长为n位的二进制数列RU,将数列ID中前(n/4-11)字节中的奇数位的信息复制添加到数列RU的尾部, 从数列ID第(n/4-10)个字节开始,将数列ID中字节数据添加到数列RU的尾部,直到数列U的长度为3080×8位, 设置v=0 用一个循环加密随机数列ID v=((i+5)(u[i/2])(i+5)+(i+4)(u[i/2+1])(i+4)+(i+3)(u[i/2+2])(i+3)+......+(i/2+1)(u[i+4])(i/2+1))%(2563)+v/256 d[i]=d[i]^(v%256) /*............d[i]、u[i]分别表示数列ID、RU中第i个字节数据,0≤i<3076,n>8×8,这里可能导致加密计算量过大,若如此,可将上式适当修改,这里里使用增加多项式中的项数,增加多项式中的最高幂次的非线性加密的方法来加密......*/ 23、进程PKey将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入数列ID中,然后在存贮盘Disk将数列ID保存为私钥KeyText的经加密的备份ReCome,结束本进程。
参见图3,本发明第四个实施例,其加密流程如下 1、用户向FKSS请求对存贮盘Disk中的文件加密, 2、FKSS判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行53、FKSS在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行4;若没找到,则执行54、FKSS加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束本进程, 5、FKSS增加一个进程,该进程和原进程两者之中的一个进程PKey执行6,另一个进程执行46、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用FKSS默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息, 7、检测用户命令。如果用户输入的命令是确认,则执行8,如果用户输入的命令是退出,则结束本进程, 8、进程PKey判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行9,若没有输入,则从系统提取用户身份信息UserID,然后执行109、进程PKey判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行10,若无效,则向6中要显示的图形界面发送出错提示信息,并执行610、进程PKey根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long位的随机密钥Random, 11、进程PKey利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, 12、进程PKey提取私钥KeyText,并利用提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP, 13、进程PKey利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, 14、进程PKey将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, 15、进程PKey将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间,结束本进程。
参见图4-A和图4-B,本发明第四个实施例,其解密流程如下 1、用户向FKSS请求对存贮盘Disk中的密文BeMF解密, 2、用当前用户的私钥KeyText解密密文BeMF,以得到明文MessFile,若解密成功,则解密结束;若解密失败或当前用户的私钥KeyText不存在,则执行下一步, 3、在电脑各存贮盘中,寻找与密文BeMF具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行7;若没找到,则执行4, /*......识别标志KeyID中的版本号可以不相同.........*/ 4、显示一个带命令按钮的图形交互界面,在该界面上提示电脑中找不到解密密文BeMF的私钥KeyText及其备份,提示选择退出解密或将私钥备份移动盘连接到电脑继续解密, 5、检测移动盘变更情况和用户命令,如果检测到有刚连接的移动盘,则执行6,如果系统检测到用户输入退出命令,则结束, 6、在刚连接的移动盘中,寻找与密文BeMF具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行7;若没找到,则执行47、依据私钥KeyText的经加密的备份ReCome中的识别标志KeyID中的版本号,判断FKSS能否给私钥KeyText的经加密的备份ReCome解密,若能,则执行8,若不能,则提示用户FKSS版本陈旧不能解密,并启动更新程序或结束, 8、调用相应的解密私钥KeyText的经加密的备份ReCome的程序(下面的步骤参见图4-B,针对本实施例加密中所产生的私钥KeyText的经加密的备份ReCome的解密程序步骤如下), 9、定义随机密钥变量TryPass,从备份密文ReCome中,提取随机密钥Random的长度Long 10、显示一个带命令按钮的图形交互界面,提供输入用户身份信息的编辑框,提示用户输入用户身份信息; 11、检测用户命令,如果用户输入确认,则执行12,如果用户输入退出,则结束, 12、判断用户是否输入用来解密私钥KeyText的经加密的备份ReCome的用户身份信息,若输入,则将输入的用户身份信息存放在字符串ID中,然后执行13,若没输入,则FKSS则从系统中提取当前用户的用户身份信息,并将该信息存放在字符串ID中,然后执行1313、将TryPass归0(即将TryPass占用空间的内容都设为0), 14、利用随着解密进程增加项数和调整幂次的多项式产生的流密码来解密私钥KeyText的经加密的备份ReCome,以释放代码串KP,利用排序产生的序号代码,将代码串KP中各代码的位置复原, 15、从代码串KP提取密码识别信息PassID, 16、利用随着解密进程增加项数和调整幂次的多项式产生的流密码来解密密码识别信息PassID,以释放代码串UR,利用排序产生的序号代码,将代码串UR中各代码的位置复原, 17、从代码串UR提取用户身份信息UserID和随机密钥Random, 18、将从代码串UR提取的用户身份信息UserID与字符串ID进行比对,将从代码串UR提取的随机密钥Random与程序枚举的随机密钥TryPass进行比对,若用户身份信息的比对和随机密钥的比对都一致,则执行21,否则执行19
19、将TryPass加1, /*......这里通过特定的程序将TryPass的前Long位数据看作一个非负整数,并用加1这种算法使TryPass更新,从而列出一个新的随机密钥。本文假设TryPass的第一位为前端,且低位在前高位在后。这个穷举循环包括1420这七步。当然使TryPass更新的方法多种多样的,例如将TryPass减1等等............*/ 20、判断TryPass的第Long+1位是否为1,若是,则向10中要显示的图形界面发送用户身份信息错误的消息,并执行10;若不是,则执行1421、从代码串KP提取私钥KeyText,并用该私钥KeyText解密密文BeMF,以得到明文MessFile,解密结束。
参见图5,本发明第五个实施例,其加密流程如下 1、用户向FKSS请求对存贮盘Disk中的文件加密, 2、FKSS加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中, 3、FKSS在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则结束;若没找到,则执行44、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用FKSS默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息, 5、检测用户命令。如果用户输入的命令是确认,则执行6,如果用户输入的命令是退出,则结束, 6、FKSS判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行7;若没有输入,则从系统提取用户身份信息UserID,然后执行87、FKSS判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行8,若无效,则向4中要显示的图形界面发送出错提示信息,并执行48、FKSS根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long的随机密钥Ramdom, 9、FKSS利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, 10、FKSS提取私钥KeyText,并将提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP, 11、FKSS利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, 12、FKSS将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, 13、FKSS将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间,结束。
参见图6,本发明第六个实施例,其加密流程如下 1、用户向FKSS请求对存贮盘Disk中的文件加密, 2、判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行43、FKSS在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行14;若没找到,则执行44、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用FKSS默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息, 5、检测用户命令。如果用户输入的命令是确认,则执行6,如果用户输入的命令是退出,则执行146、FKSS判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行7,若没有输入,则从系统提取用户身份信息UserID,然后执行87、FKSS判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行8,若无效,则向4中要显示的图形界面发送出错提示信息,并执行48、FXSS根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long的随机密钥Random, 9、FKSS利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID, 10、FKSS提取私钥KeyText,并利用提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP, 11、FKSS利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome, 12、FKSS将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中, 13、FKSS将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间, 14、FKSS加密明文MessFile,以得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束。
在上述各实施例中ReCome里被本发明中的加密方法加密生成的信息,在正常情况下不需要解密,只有在FKSS中现有的私钥KeyText不能解密BeMF时才需要解密,用于挽救被加密的数据。实际上ReCome需要全部解密使用的频率很低,因此我们可以通过调整随机长度,使FKSS在用户身份信息正确的情况下,将ReCome全部解密的平均计算量相对加密时的计算量放大很多倍。当然FKSS在设置随机长度时,可以加密机器的速度为依据,在用户身份信息正确的情况下,将ReCome全部解密的平均解密时间设为1分钟、1小时、1天、1周甚至更长,当然不排除使用其他设置方式。
可以以多种方法来实现本发明的实施例,包括写在计算机可读记录介质上的计算机可读代码。计算机可读记录介质可以是任意类型的记录设备,在其中数据以计算机可读形式存储。计算机可读记录介质包括、但不局限于ROM、RAM、CD-ROM、磁带、软盘、硬盘、移动存贮盘、光数据存储、和载波(例如,通过因特网的数据传输)。计算机可读记录介质可以分布在多个连接到网络的计算机系统上,以使得计算机可读代码能够以分布方式写到其上以及从其上执行。另外,实现本发明的实施例所需要的功能程序、代码或代码段可以被本领域的普通技术人员解释。
尽管已经参照本发明的给定优选实施例示出并描述了本发明,但是本领域的技术人员应当理解,在不脱离如所附权利要求所限定的本发明的精神和范围的条件下,可以在这里进行形式和细节上的各种变化。
产业上的可利用性 根据本发明的加密方法可以自动或根据需要调整加密强度。根据本发明的加密方法可用于加密私钥、证书等重要文件信息的备份生成高度安全的密文。根据本发明的加密方法生成的密文可以对付各种高性能的破解机器。
权利要求
1、一种加密方法,其加密流程如下
I、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random,
II、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,采用预定算法加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
III、利用重要明文Text与密码识别信息PassID派生一个代码串TP,
IV、采用预定算法加密代码串TP,以生成重要明文Text的密文ReText。
2、一种加密方法,其加密流程如下
I、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random,
II、利用用户身份信息UserID、随机密钥Random和重要明文Text派生一个代码串URT,
III、采用预定算法加密代码串URT,以生成重要明文Text的密文ReText。
3、一种加密方法,其加密流程如下
I、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random,
II、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,采用预定算法加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
III、采用预定算法加密重要明文Text,以生成重要明文Text的密文ReText,
IV、将密码识别信息PassID插入密文ReText中,其中,所述将密码识别信息PassID插入密文ReText中,是指将密码识别信息PassID作为一个单位或拆分为多个单位添加到密文ReText中某一个或多个位置构成一个新代码串的动作,并且插入位置不局限于密文ReText里的位置,也可以插入密文ReText的首尾两端。
4、一种加密方法,其加密流程如下
I、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random,
II、采用预定算法加密重要明文Text,以生成重要明文Text的密文ReText,
III、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,采用预定算法加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
IV、将密码识别信息PassID插入密文ReText中,其中,
所述将密码识别信息PassID插入密文ReText中,是指将密码识别信息PassID作为一个单位或拆分为多个单位添加到密文ReText中某一个或多个位置构成一个新代码串的动作,并且插入位置不局限于密文ReText里的位置,也可以插入密文ReText的首尾两端。
5、根据权利要求1至4中任何一项,其特征是其中,
密文ReText中含有一个大于或等于随机密钥Random长度Long的数据,用来给解密程序指定用穷举法探测的随机密钥的长度范围,任何针对本加密方法的解密程序都需要采用穷举法或采用穷举法与密码分析技术相结合的方法寻找随机密钥,不仅需要对解密时输入的用户身份信息与解密过程中释放的用户身份信息进行比对,还需要对穷举循环枚举的随机密钥与解密过程中释放的随机密钥进行比对,只有在前述两种密钥的比对都一致后,才能确保正确解密密文ReText,以释放重要明文Text,
所述预定算法是指利用用户身份信息UserID和随机密钥Random进行加密的加密算法,并且包括下列加密算法中的一种或多种数学关系加密、变位加密、逻辑加密、算术加密、分组加密、流密码加密、线性加密、非线性加密、统计数据加密、伪随机加密、利用随着加密进程增加项数和调整幂次的多项式产生的流密码加密的算法、根据排序所产生的序号代码调整代码位置的加密算法,
所述加密强度取决于加密用户身份信息UserID和随机密钥Random后所生成的密码识别信息PassID,解密时,只有先完成对密码识别信息PassID的解密,才能保证对重要明文Text的密文ReText进行正确解密,以释放重要明文Text,并且解密时,在确认用户身份信息UserID和随机密钥Random都正确后,从重要明文Text的密文ReText中解出重要明文Text的计算量相对总计算量而言往往非常小。因此,所述加密强度也等于对重要明文Text进行加密的加密强度并且是下列其中之一解密的平均计算量、解密的最大计算量、解密的平均计算量相对加密时计算量的放大倍数、解密的最大计算量相对加密时计算量的放大倍数、解密的平均计算量相对单次解密时计算量的放大倍数、解密的最大计算量相对单次解密时计算量的放大倍数、在预定速度机器上的平均解密时间、在预定速度机器上的最长解密时间,
所述随机密钥是由下列其中一种或多种信息构成系统产生的随机信息、利用排序产生的序号代码重排系统产生的随机数据得到的信息、利用对内存或外存中的统计数据对系统产生的随机数据用某种算法干预后得到的信息、利用内存或外存中数据对系统产生的随机数据用某种算法干预后得到的信息、利用时钟数对系统产生的随机数据干预后得到的信息。
6、根据权利要求5,其特征是其中所述利用用户身份信息UserID和随机密钥Random进行加密,是指先用用户身份信息UserID和随机密钥Random两者之中的一个加密,然后用另一个在前述加密的基础上再次加密。
7、根据权利要求5,其特征是其中所述利用用户身份信息UserID和随机密钥Random进行加密,是指先用用户身份信息UserID和随机密钥Random派生一个密钥,然后用该密钥加密。
8、一种加密方法,其加密流程如下
I、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random,
II、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
III、利用私钥KeyText与密码识别信息PassID派生一个代码串KP,
IV、利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,生成私钥KeyText的经加密的备份ReCome,
V、将一个大于或等于随机密钥Random长度Long的数据和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中。
9、一种加密方法,其加密流程如下
A、加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,
B、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则结束;若没找到,则执行C
C、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random,
D、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
E、利用私钥KeyText与密码识别信息PassID派生一个代码串KP,
F、利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome,
G将随机密钥的长度Long和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中,
H、将私钥KeyText的经加密的备份ReCome保存在用于保存密文BeMF的相关存储空间中,结束。
10、一种加密方法,其加密流程如下
A、判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行B;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行C
B、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行H;若没找到,则执行C
C、输入加密强度和用户身份信息UserID,根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,产生长度为Long的随机密钥Random,
D、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR,以生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
E、利用私钥KeyText与密码识别信息PassID派生一个代码串KP,
F、利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome,
G将随机密钥的长度Long和私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中,
H、将私钥KeyText的经加密的备份ReCome保存在用于保存密文BeMF的相关存储空间中,
I、加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,结束。
11、一种加密方法,其加密流程如下
1、用户请求对存贮盘Disk中的文件加密,
2、判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行5
3、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行4;若没找到,则执行5
4、加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束本进程,
5、增加一个加密备份私钥KeyText的进程PKey,进程PKey执行6,原进程执行4
6、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息,
7检测用户命令,如果用户输入的命令是确认,则执行8,如果用户输入的命令是退出,则结束本进程,
8、进程PKey判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行9,若没有输入,则从系统提取用户身份信息UserID,然后执行10
9、进程PKey判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行10,若无效,则向6中要显示的图形界面发送出错提示信息,并执行6
10、进程PKey将384个字节的随机数据传送到数列ID的前384字节上,并将数列ID的前128个字节信息作为一个大整数x,用一个循环计算(x/K[i])%256并将计算结果添加在数列ID后面,
/*......添加后,ID已有512个数据,K[i]为大于65536的质数,0≤i<128,这是因为后面要采用排序所产生的位置序号代码来加密,用这种加密方法处理密码识别信息时,可能存在错误通过比对的情况,为了防止这种情况的出现,通过计算(x/K[i])%256并将结果保存在数列ID后面,记录大整数x的一些特征,以便在通过对用户身份信息UserID和随机密钥Random进行验证后,用大整数x的一些特征来进一步验证,以保证密码验证的可靠性。............*/
11、进程PKey产生长度为256个字节的随机数列P,利用私钥KeyText产生具有256字节数据的数列S,将数列S按照从小到大的顺序排列,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中。用一个循环计算,
d[i+128]=d[i+128]^p[r[i]]
/*...这里对随机数据进行处理,是为了破坏伪随机的周期性,以便后面将这些数据用作随机密钥,其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,d[i]、p[i]分别表示数列ID、P中第i个数据,0≤i<256...*/
从数列ID中字节位置序号为128的位置开始,将用户身份信息UserID按顺序填入,
根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,在数列ID中从用户身份信息UserID结束的位置后面开始,读取Long位的数据作为随机密钥Random,
/*...这里要求用户身份信息UserID和随机密钥Random总长度不超过256×8比特,如果超过,要调整数列ID的长度...*/
12、进程PKey从数列ID中序号为256的字节开始,复制128个字节到数列P中,将数列P复制到数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中,
/*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/
用一个循环,将p[r[i]]传送到s[i]
/*...(0≤i<128),或用s[i]=p[r[i]]表示p[r[i]]传送到s[i]...*/
用一个循环,计算
d[2×i]=d[2×i]^s[2×i]
d[2×i+1]=(d[2×i+1]+s[2×i+1])%256
/*......即用数列S中数据加密数列ID首部的数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<64......*/
13、进程PKey将数列S复制到数列P,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中。
/*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/
用一个循环,将p[r[i]]传送到s[i]/*...(0≤i<128)...*/
用一个循环,计算
d[2×i]=d[2×i]^s[2×i-128]
d[2×i+1]=(d[2×i+1]-s[2×i-127]+256)%256
/*......即用数列S中数据加密数列ID中部的信息数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,64≤i<128......*/
14、进程PKey将ID的最后128个字节信息复制到数列P中,将数列P复制数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中,
/*...其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/
用一个循环,
将p[r[i]]传送到s[i]
计算d[i]=d[i]^s[i]
/*...即用数列S中数据加密数列ID首部数据,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<128......*/
15、进程PKey将数列S复制到数列P,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中,
/*......其中r[i]表示数列S中原位置序号为i的整数在排序后,被放在序号为r[i]的位置,...*/
用一个循环,
将p[r[i]]传送到s[i]
计算d[i+256]=d[i+256]^s[i]
/*...即用数列S中数据加密数列ID中部的信息数据,,s[i]、d[i]、p[i]分别表示数列S、ID、P中第i个数据,0≤i<128...*/
16、进程PKey将数列ID中奇数字节位置上的数都向前移两位,并将移出的信息添加到前一个奇数位置字节数据的尾部,将第一个字节数据移出的信息添加在倒数第二个字节数据的尾部,
将数列ID中偶数字节位置上的数都向后移一位,并将移出的信息添加到后一个偶数位置字节数据的首部,将最后一个字节数据移出的信息传送给第二个字节数据的首部,
将数列ID的前256字节复制到数列Q前256字节中,将数列ID的后256字节数据按序复制到数列ID中位置序号为奇数的字节上,将数列Q中前256字节数据复制到ID中位置序号为偶数的字节上,
17、进程PKey产生一个由516个字节构成的随机数列,并将该数列复制到数列P中,采用某种算法利用随机密钥Random和用户身份信息UserID派生一个由516字节构成的数列,并将该数列复制到数列S,用一个循环计算,
p[i]=p[i]^s[i]
/*...s[i]、p[i]分别表示数列S、P中第i个数据,0≤i<516,这一步用于防止产生的随机数据具有周期性,通过这步处理可使流密码分析法失效......*/
18、进程PKey将数列P前512个字节复制到数列S,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中,
/*...其中r[i]表示数列S中原位置序号为i的数据在排序后,被放在序号为r[i]的位置。.........*/
用一个循环,将d[r[i]]传送到q[i]
将p[r[i]+4]传送到s[i]
/*...,q[i]、s[i]、d[i]、p[i]分别表示数列Q、S、ID、P中第i个数据,0≤i<512......*/
19、进程PKey设置v=0,
用一个循环加密数列ID
v=((i+5)(p[i/2])(i+5)+(i+4)(p[i/2+1])(i+4)+(i+3)(p[i/2+2])(i+3)+......+(i/2+1)(p[i+4])(i/2+1))%(2563)+v/256
d[i]=q[i]^(v%256)
/*............其中v为定义的变量,0≤i<512,取变量v后一个字节中信息给数列ID中的信息加密,d[i]、p[i]、q[i]分别表示数列ID、P、Q中第i个数据......*/
20、进程PKey产生一个由2048个字节构成的随机数列,并将该数列复制到数列Q前2048个字节中,将私钥KeyText转变为一个字符串KTs,从数列Q的第2048字节开始向前覆盖,将字符串KTs复制在数列Q的前2048字节内,从数列Q的第2048字节开始向后,将数列ID中前512字节中数据添加在Q的尾部,
21、进程PKey从数列ID第一个字节开始,将数列P复制到数列ID上,按照从大到小的顺序排列数列S中各字节数据,并将数列S中的字节数据在排序后的位置序号记录到由r
,r[1],r[2],r[3],r[4],...,r[i],...构成的整数数列R中,
/*...其中r[i]表示数列S中原位置序号为i的数据在排序后,被放在序号为r[i]的位置。......*/
用一个循环计算
d[516+i×5]=q[r[i]×5]
d[516+i×5+1]=q[r[i]×5+1]
d[516+i×5+2]=q[r[i]×5+2]
d[516+i×5+3]=q[r[i]×5+3]
d[516+i×5+4]=q[r[i]×5+4]
/*...d[i]、q[i]分别表示数列ID、Q中第i个数据,0≤i<512...*/
22、进程PKey将随机密钥Random在前、用户身份信息UserID在后,两者连接在一起,构成一个长为n位的二进制数列RU,将数列ID中前(n/4-11)字节中的奇数位的信息复制添加到数列RU的尾部,
从数列ID第(n/4-10)个字节开始,将数列ID中字节数据添加到数列RU的尾部,直到数列U的长度为3080×8位,
设置v=0
用一个循环加密随机数列ID
v=((i+5)(u[i/2])(i+5)+(i+4)(u[i/2+1])(i+4)+(i+3)(u[i/2+2])(i+3)
+......+(i/2+1)(u[i+4])(i/2+1))%(2563)+v/256
d[i]=d[i]^(v%256)
/*............d[i]、u[i]分别表示数列ID、RU中第i个字节数据,0≤i<3076,n>8×8,这里可能导致加密计算量过大,若如此,可将上式适当修改,......*/
23、进程PKey将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入数列ID中,然后在存贮盘Disk将数列ID保存为私钥KeyText的经加密的备份ReCome,结束本进程。
12、一种加密方法,其加密流程如下
1、用户请求对存贮盘Disk中的文件加密,
2、判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行5
3、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行4;若没找到,则执行5
4、加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束本进程,
5、增加一个进程,该进程和原进程两者之中的一个进程PKey执行6,另一个进程执行4
6、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息,
7、检测用户命令。如果用户输入的命令是确认,则执行8,如果用户输入的命令是退出,则结束本进程,
8、进程PKey判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行9,若没有输入,则从系统提取用户身份信息UserID,然后执行10
9、进程PKey判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行10,若无效,则向6中要显示的图形界面发送出错提示信息,并执行6
10、进程PKey根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long位的随机密钥Random,
11、进程PKey利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
12、进程PKey提取私钥KeyText,并利用提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP,
13、进程PKey利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome,
14、进程PKey将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中,
15、进程PKey将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间,结束本进程。
13、一种加密方法,其加密流程如下
1、用户请求对存贮盘Disk中的文件加密,
2、加密明文MessFile得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,
3、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则结束;若没找到,则执行4
4、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息,
5、检测用户命令。如果用户输入的命令是确认,则执行6,如果用户输入的命令是退出,则结束,
6、判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行7;若没有输入,则从系统提取用户身份信息UserID,然后执行8
7、判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行8,若无效,则向4中要显示的图形界面发送出错提示信息,并执行4
8、根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long的随机密钥Random,
9、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
10、提取私钥KeyText,并将提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP,
11、利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome,
12、将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中,
13、将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间,结束。
14、一种加密方法,其加密流程如下
1、用户请求对存贮盘Disk中的文件加密,
2、判断私钥KeyText是否存在,若存在,则提取私钥KeyText的识别标志KeyID,然后执行3;若不存在,则产生私钥KeyText及其识别标志KeyID并保存,然后执行4
3、在用于保存密文BeMF的相关存储空间,寻找与当前用户私钥KeyText具有相互吻合识别标志KeyID的私钥KeyText的经加密的备份ReCome,若找到,则执行14;若没找到,则执行4
4、进程PKey在一个带命令按钮的图形交互界面上,提供选择加密强度类型的选项,提供输入加密强度数值的编辑框及调整该框内数值的上下箭头或其它控件,提供输入用户身份信息UserID的编辑框,提示用户输入加密强度或不输入采用默认的加密强度,提示用户输入加密私钥KeyText备份的用户身份信息UserID或不输入采用系统中当前用户的用户身份信息,
5、检测用户命令。如果用户输入的命令是确认,则执行6,如果用户输入的命令是退出,则执行14
6、判断用户是否输入用来加密私钥KeyText备份的用户身份信息UserID,若输入,则执行7,若没有输入,则从系统提取用户身份信息UserID,然后执行8
7、判断用户输入的用户身份信息UserID是否有效,若有效则接收用户输入的用户身份信息UserID,然后执行8,若无效,则向4中要显示的图形界面发送出错提示信息,并执行4
8、根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度Long,并产生长度为Long的随机密钥Random,
9、利用用户身份信息UserID和随机密钥Random派生一个代码串UR,利用排序产生的序号代码重排代码串UR中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串UR生成用于在解密时识别用户身份信息UserID和随机密钥Random的密码识别信息PassID,
10、提取私钥KeyText,并利用提取到的私钥KeyText与密码识别信息PassID派生一个代码串KP,
11、利用排序产生的序号代码重排代码串KP中各代码的位置,利用随着加密进程增加项数和调整幂次的多项式产生的流密码来加密代码串KP,以生成私钥KeyText的经加密的备份ReCome,
12、将随机密钥Random的长度Long、私钥KeyText的识别标志KeyID插入私钥KeyText的经加密的备份ReCome中,
13、将私钥KeyText的经加密的备份ReCome保存在与密文BeMF的相关存储空间,
14、加密明文MessFile,以得到密文BeMF,并将私钥KeyText的识别标志KeyID插入密文BeMF中,然后结束。
15、根据权利要求8至14中所述的加密方法,其特征是其中,
任何针对本加密方法的解密程序都需要采用穷举法或采用穷举法与密码分析技术相结合的方法寻找随机密钥,不仅需要对解密时输入的用户身份信息与解密过程中释放的用户身份信息进行比对,还需要对穷举循环枚举的随机密钥与解密过程中释放的随机密钥进行比对,只有在前述两种密钥的比对都一致后,才能保证对私钥KeyText的经加密的备份ReCome进行正确解密,以释放私钥KeyText,
所述加密强度取决于加密用户身份信息UserID和随机密钥Random后所生成的密码识别信息PassID,解密时,只有先完成对密码识别信息PassID的解密,才能保证对私钥KeyText的经加密的备份ReCome进行正确解密,以释放私钥KeyText,并且解密时,在确认用户身份信息UserID和随机密钥Random都正确后,从私钥KeyText的经加密的备份ReCome中解出私钥KeyText的计算量相对总计算量而言往往非常小。因此,所述加密强度也等于对私钥KeyText进行加密的加密强度并且是下列其中之一解密的平均计算量、解密的最大计算量、解密的平均计算量相对加密时计算量的放大倍数、解密的最大计算量相对加密时计算量的放大倍数、解密的平均计算量相对单次解密时计算量的放大倍数、解密的最大计算量相对单次解密时计算量的放大倍数、在预定速度机器上的平均解密时间、在预定速度机器上的最长解密时间,
所述随机密钥是由下列其中一种或多种信息构成系统产生的随机信息、利用排序产生的序号代码重排系统产生的随机数据得到的信息、利用对内存或外存中的统计数据对系统产生的随机数据用某种算法干预后得到的信息、利用内存或外存中数据对系统产生的随机数据用某种算法干预后得到的信息、利用时钟数对系统产生的随机数据干预后得到的信息。
所述插入是指将一个代码串作为一个单位或拆分为多个单位添加到另一个代码串中某一个或多个位置构成一个新代码串的动作,并且插入位置不局限于代码串里的位置,也可以插入代码串的首尾两端。
全文摘要
本发明提供一种需要采用穷举法解密的随机加密方法,这种加密方法基于增加对用户身份信息和随机密钥的加密强度而设计,其主要用途在于加密备份私钥、证书和重要文件。加密流程如下输入用户身份信息和加密强度;根据随机密钥的长度、加密强度和预定解密程序速度三者之间的关系,计算随机密钥的长度,并产生该长度的随机密钥;利用用户身份信息和随机密钥按照由程序确定的加密算法加密私钥和证书以得到经过加密的私钥和证书的备份,并用由程序确定的加密算法将用户身份信息和随机密钥锁在密码识别信息中。用这种加密方法所产生的备份,无论如何编写解密程序,即使输入正确的用户身份信息也需要使用穷举法进行解密,并且既要对用户身份信息进行比对,还要对随机密钥进行比对。
文档编号H04L9/32GK101488858SQ20091000421
公开日2009年7月22日 申请日期2009年2月12日 优先权日2008年2月13日
发明者刘海云 申请人:刘海云
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1