会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 密码体制 / 一种对称密码体制的加密方法

一种对称密码体制的加密方法

申请号 CN201110173434.8 申请日 2011-06-27 公开(公告)号 CN102857340A 公开(公告)日 2013-01-02
申请人 席继红; 发明人 席继红;
摘要 一种对称密码体制的加密方法,涉及信息加密技术领域。本发明设计建立了一个含一百万种计算公式的算法集合,以种子密钥、单位密钥、时间搅拌器为参数调用算法集合,经组合,随机,换位三轮随机运算生成1024位二级密钥数组;再以返回值对应的二级密钥、种子密钥、单位密钥、时间搅拌器的数组值为参数调用算法集合,运算过程中综合应用了缺位运算、条件运算、质数扩散运算、除商扩倍运算等非常规计算方法,同时在时间搅拌器的充分搅拌下产生了一个千万年不重复的序列密码。同时经对种子密钥的特殊处理及入口参数的特殊设置,实现了种子密钥长度无限制,可根据客户加密强度或计算机进步发展的需求,由客户随意确定密钥长度。
权利要求

1.本发明是一种对称密码体制的加密方法,主要用于信息通讯、计算机文件、账户信息、身份验证等方面,设计、制作中提出了算法集合、缺位运算、变长密钥、时间搅拌器、图标密钥、单位密钥等全新的密码设计理念。在本发明核心思想的指导下,在对明文字节的处理方式上稍作改变,即可演变为同步序列密码、自同步序列密码、分组密码三种不同的加密方式。

2.算法集合{+、-、×、÷、~、∧、%,m、n、l、h,S[]、Z[]、D[]、E[]}:是指加密软件内设的通过排列组合组成一百万种不同的计算公式的算法集合(其中m、n、l、h为常量,S[]、Z[]、D[]、E[]为变量);主要用途是每次调用算法集合时,按带入的参数决定采用哪一种计算公式,调用结束后返回三个数值,并改变二级密钥数组E[]1至3位数组元素数据;再具体点讲,是将每一百个计算公式组成一个组,共组成三个组,将上一轮的返回值经变换计算带入第一组,第一组的返回值带入第二组,第二组的返回值带入第三组,同时调用过程中还有循环调用,这样就组成了至少一百万种不同的计算公式的算法集合,再考虑到每次带入参加计算的参数不一样,可以说序列密码的每一个字节的生成所使用的计算公式及参数是不同的。

3.缺位运算:是指截取某一数据的某一位或某几位的非常规运算;如123456,缺百位的运算结果是12356,缺百位、万位的运算结果是1356;增强了算法集合计算结果的随机性、扩散性。

4.变长密钥:是指加密软件对有关参数及种子密钥特殊处理后使加密所用的种子密钥无位数限制,可随用户加密强度或计算机技术的发展由用户自行选定密钥长度。

5.时间搅拌器:是指提取系统时间年、月、日、时、分、秒分别放入时间搅拌器数组S[]的2至7位,提取时间计数器(加密软件内设)3个数据,第1个数据放在S[]的第1位,用于对年份的补充,防范类似千年虫问题,第2个数据放在S[]的第8位,第3个数据放在S[]的第9位,将秒细化到四十亿分之一,第10位作为校验位及密钥位,一是对前九个数据进行校验,二是特殊情况作为参数的一部分调用算法集合对前面数据进行转换封存;这样

1至10位数据就组成一个千万年每时每刻永不重复的数据,极大地增强了时间搅拌器的搅拌效果;11至30位存放明文相关信息,密钥提示信息,对于个人客户当密文存放时间久了,忘记了密钥、明文类型时,明文相关信息,密钥提示信息可以帮助恢复记忆;对于信息通讯类客户,可以建立种子密钥群,按密钥提示信息选择种子密钥;31、32位作为校验位及密钥位,11至30位的空余位由加密系统自动填满,并将生成的时间搅拌器S[]数据写入密文文件前部(各部分数据存放位置及存放方式可根据客户要求更改)。

6.图标密钥:是针对个人客户种子密钥简单、长度短的特点设计的,图标密钥的产生是选取一百个不同的、大家喜闻乐见的图案,如十二生肖、喜洋洋等,横竖各十个排列,每个图案对应一种密钥处理计算公式;同时设置一万页,每页对应一种密钥处理计算公式;这样个人客户选择页数和图案就是在一百万种不同的密钥处理算法中选择了其中一种。

7.单位密钥:是加密软件自带的由使用单位自行统一产生的数据环境,保证了客户系统之间加密算 法的独立性。

8.序列密码产生的主要流程:

(1)、生成随机数:将时间搅拌器S[6]、种子密钥Z[6]、单位密钥D[6]作为参数调用运算集合{}经两轮运算生成三个随机数;

(2)、生成1024位二级密钥数组E[]:通过组合,随机,换位三轮随机运算生成二级密钥数组;

①组合运算:由以上生成的三个随机数为数组下标,将所对应的时间搅拌器、种子密钥、单位密钥的数组值作为参数调用运算集合{},以返回值x1、y1、z1为下标随机组合运算产生一长整数;以此类推生成1024位二级密钥数组E[];

②随机运算:由上述运算过程中产生的数据为起始数组下标,对应的时间搅拌器、种子密钥、单位密钥,二级密钥的数组数值通过调用算法集合对二级密钥每一数据进行再运算;

二级密钥的每一位数值均是采用不同的算式及不同的参数运算生成;

③换位运算:以上述运算过程中产生的数据为数组下标,对应的时间搅拌器、种子密钥、二级密钥的数组数值调用算法集合,将产生的返回值作为二级密钥数组下标对对应的二级密钥数组数据进行大换位;

(3)、生成随机数:以上述运算过程中产生的数据作为参数调用算法集合经三轮运算后生成随机密钥序列的入口参数;

(4)生成与明文字节一样长的随机密钥序列:

①由以上生成的三个随机密钥序列的入口参数(x,y,z)为数组下标,对应的数组值(E[x],E[y],E[z])作为参数调用算法集合,由数组值大小决定选择百万种计算公式集合中的哪一种计算公式进行运算;

②运算过程中,综合应用了缺位运算、条件运算、质数扩散运算、除商扩倍运算等计算方法,带入的参数一律为上次集合运算返回值为下标对应的二级密钥E[]、时间搅拌器S[]、种子密钥Z[]的数组值,保证了每次运算和上一次运算是相对独立的,具有随机性和扩散性;

③运算过程中将本次参余运算的二级密钥数组E[]的1位或3位数组元素重新赋值,即每调用集合算法一次,也就是每加密一个字节,二级密钥数组元素就改变一次;

④每次算法集合调用返回x1、y1、z1三个数值;

a返回的数值x1作用有三:一是决定加密强度i(i=qd1+x1%qd2;i由x1决定,范围为qd1≤i<qd2),具体说就是决定加密i个字节后对运行环境(包括二级密钥和入口参数)进行改变;二是x1经过类型变换(char km1=x1%256)与明文一个字节异或;三是x1对应的数组值E[x1]作为参数参与下次集合运算;

b返回的数值y1作用有三:一是在加密强度改变时决定选择运算集合中的哪一种计算公式进行运算来改变入口参数或二级密钥全部数值;二是y1经过类型变换(char kn1=y1%256)对明文一个字节进行置换;三是y1对应的数组值E[y1]作为参数参与下次集合运算;

c返回的数组元素值z1作用有三:一是由z1对应的数组值E[z1]具体决定选择运算集合中的哪一种 计算公式进行下一轮运算;二是z1对应的数组值E[z1]作为参数参与下次集合运算;

⑤重复(1)-----(4)步骤,直到生成与明文字节一样长的序列密钥字节。

9.以上第8条第(4)点第④小点算法集合调用返回的x1或y1,在加密每一个明文字节时用明文的前一个字节代替或异或,那么该算法就变成了自同步序列密码算法。

10.以上算法执行到第8条第(4)点第④小点时,

a、读取一组明文数据(长度为cd个字节),并放入fz[]数组中,以算法集合返回的x1、y1、z1经取余处理对应的fz[]的前半部分的数组值(fz[x1%(int cd/2)],fz[y1%(int cd/2)],fz[z1%(cd/2)])为参数调用算法集合;

b、调用算法集合返回x2、y2、z2,以x2决定采用分组加密方式集合(用x2与明文一字节异或、用y2与明文一字节异或、用z2与明文一字节异或、用x2对明文的一字节进行转换、用y2对明文的一字节进行转换、用z2对明文的一字节进行转换、用x2(y2、z2)与明文一字节异或后再用y2(x2、z2)进行转换、用x2(y2、z2)与明文一字节转换后再用y2(x2、z2)进行异或,以这些加密具体方法为元素在cd/2范围内进行排列,组成一个分组加密方式集合)中的哪一种加密方式对fz[]的后半部分数据逐位进行加密;

c、以x2、y2、z2经取余处理对应的fz[]的后半部分的数组值为参数调用算法集合,返回三个数值x3、y3、z3,以x3决定采用分组加密方式集合中的哪一种加密方式对fz[]的前半部分数据进行加密;经b、c步骤,该组明文的每一个字节的加密方式都是随机的;

d、用二级密钥的一部分数据对fz[]数组元素进行异或封存;

e、重复a-----d步骤,直到明文信息不足一组字节cd的长度,然后,填充数据至cd的长度,并对这一组数据进行加密;或者用自同步序列密码加密方法对剩余明文字节进行加密;

这样该算法就变成了另一种算法即:分组密码算法;

并且分组的长度cd是可变的,是可以根据客户需求,按客户数据结构情况进行分组加密;同时分组加密过程中由于明文数据的搅拌作用,时间搅拌器可视情况取舍。

说明书全文

一种对称密码体制的加密方法

技术领域

[0001] 本发明涉及信息加密技术领域,属对称密码体制。

背景技术

[0002] 目前实际应用中的密码体制种类繁多,按现代密码学的观点,将密码体制分为两大类,对称密码体制和非对称密码体制,序列密码也称流密码,它是对称密码算法的一种。最早出现的类流密码是Vernam密码,直到1949年信息论创始人Shannon发表的两篇划时代的论文证明了只有“一次一密”才是理论上不可破译的,绝对安全的,由此奠定了序列密码技术的发展基石。可以说“一次一密”的密码方案是序列密码的雏形。由于“一次一密”的密码体制存在密钥产生、分配和管理极为困难的缺点使其应用范围受到限制。但在保密强度高的场合,如军事密码系统、政治、外交密码系统仍采用序列密码方案。鉴于序列密码在军事、政治、外交保密通讯中有重要价值,序列密码的设计基本上都是保密的。因此国内外公开的序列密码文献不多,国际上先后几次征集序列密码算法,建立序列密码工程。但至今没有一个完整的商业序列密码标准。

发明内容

[0003] 本发明就是针对序列密码的现状,提出了算法集合、时间搅拌器、缺位运算、变长密钥、图标密钥、单位密钥等全新密码设计理念,设计并制作实现了一种能产生千万年不重复的序列密码。实现了“一次一密“的加密效果。本发明是一种对称密码体制的加密方法,主要用于信息通讯、计算机文件、账户信息、身份验证等方面,在本发明核心思想的指导下,在对明文字节的处理方式上稍作改变,即可演变为同步序列密码、自同步序列密码、分组密码三种不同的加密方式。

附图说明

[0004] 图1是随机数产生的示意图。
[0005] 图2是随机组合运算的示意图。
[0006] 图3是随机运算的示意图。
[0007] 图4是随机换位运算的示意图。
[0008] 图5是随机序列密码产生的示意图。

具体实施方式

[0009] 1、本序列密码设计方案是针对国家机关、企事业单位、个人等不同单位,不同需求设计的。主模块、主功能一样,辅助模块、辅助功能由各单位自行选择。
[0010] 2、产生图标密钥:
[0011] ①选取一百个不同的、大家喜闻乐见的图案,如十二生肖、喜洋洋等,横竖各十个排列,每个图案对应一种密钥处理计算公式。
[0012] ②设置一万页,每页对应一种密钥处理计算公式。这样个人客户选择页数和图案就是在一百万种不同的密钥处理算法中选择了其中一种。
[0013] 3、处理输入的种子密钥Z[]:
[0014] 对于输入的种子密钥首先取其长度,长度小于规定数值时,将种子密钥数据Z[]、单位密钥数据D[]带入算法集合{},返回值填充到种子密钥数组中,直至长度等于规定数值;长度大于规定数值时,改变所有算法相关种子密钥的入口参数为种子密钥的实际长度。
[0015] 以上涉及的单位密钥D[]是加密软件自带的由使用单位自行统一产生数据环境。
[0016] 以上涉及的算法集合{+、-、×、÷、~、∧、%,m、n、l、h,S[]、Z[]、D[]、E[]}(为了画表方便以下用{}表示)是加密软件内设的通过排列组合组成一百万种不同的计算公式的算法集合(其中m、n、l、h为常量S[]、Z[]、D[]、E[]为变量)。主要用途是每次调用算法集合时,按带入的参数决定采用哪一种计算公式,调用结束后返回三个数值,并改变二级密钥数组E[]1至3位数组元素数据。再具体点讲,是将每一百个计算公式组成一个组,共组成三个组,将上一轮的返回值经变换计算带入第一组,第一组的返回值带入第二组,第二组的返回值带入第三组,同时调用过程中还有循环调用。这样就组成了至少一百万种不同的计算公式的算法集合。再考虑到每次带入参加计算的参数不一样,可以说序列密码的每一个字节的生成所使用的计算公式及参数是不同的(计算公式、带入计算的参数两次两者都完全一样的概率非常小)。
[0017] 另外组成算法集合的计算公式及相关常数设置综合考虑了各种因素,采用了“缺位运算”、“素数扩散运算”、“除商扩倍运算”、“条件运算”等一些非常规的计算方法,如:“缺位运算”是截取某一数据的某一位或某几位的非常规运算。如123456,如缺百位运算是12356,如缺百位、万位运算是1356。从而增强了计算结果的随机性、扩散性。
[0018] 4、生成时间搅拌器、密钥提示信息等数据:
[0019] 提取系统时间年、月、日、时、分、秒分别放入时间搅拌器数组S[]的2至7位,提取时间计数器(加密软件内设)3个数据,第1个数据放在S[]的第1位,用于对年份的补充,防范类似千年虫问题,第2个数据放在S[]的第8位,第3个数据放在S[]的第9位,将秒细化到四十亿分之一,第10位作为校验位及密钥位,一是对前九个数据进行校验,二是特殊情况作为参数的一部分调用算法集合对前面数据进行转换封存;这样1至10位数据就组成一个千万年每时每刻永不重复的数据,极大地增强了时间搅拌器的搅拌效果;11至30位存放明文相关信息,密钥提示信息,对于个人客户当密文存放时间久了,忘记了密钥、明文类型时,明文相关信息,密钥提示信息可以帮助恢复记忆;对于信息通讯类客户,可以建立种子密钥群,按密钥提示信息选择种子密钥;31、32位作为校验位及密钥位,11至30位的空余位由加密系统自动填满。并将生成的时间搅拌器S[]数据写入密文文件前部(各部分数据存放位置及存放方式可根据客户要求更改)。
[0020] 5、生成随机数:将时间搅拌器S[6]、种子密钥Z[6]、单位密钥D[6]作为参数调用运算集合{}经两轮运算生成三个随机数。如图1所示,其中x、y、z、x1、y1、z1为运算集合返回的数值。
[0021] 6、生成1024位二级密钥数组E[]:通过组合,随机,换位三轮随机运算生成二级密钥数组。
[0022] (1)组合运算:由以上生成的三个随机数为数组下标,将所对应的时间搅拌器、种子密钥、单位密钥的数组值作为参数调用运算集合{},以返回值x1、y1、z1为下标随机组合运算产生一长整数;以此类推生成1024位二级密钥数组E[]。如图2所示,其中x、y、z为程序生成的随机数,x1、y1、z1、xn、yn、zn为运算集合返回的数值。
[0023] (2)随机运算:由上述运算过程中产生的数据为起始数组下标,对应的时间搅拌器、种子密钥、单位密钥,二级密钥的数组数值通过调用算法集合对二级密钥每一数据进行再运算。二级密钥的每一位数值均是采用不同的算式及不同的参数运算生成。如图3所示,其中x、y、z为上一轮运算过程中产生的数据,x1、y1、z1、xn、yn、zn为运算集合返回的数值。
[0024] (3)换位运算:以上述运算过程中产生的数据为数组下标,对应的时间搅拌器、种子密钥、二级密钥的数组数值调用算法集合,将产生的返回值作为二级密钥数组下标对对应的二级密钥数组数据进行大换位。如图4所示,其中x、y、z为上一轮运算生成的数据,x1、y1、z1、xi、yi、zi、xn、yn、zn为运算集合返回的数值。
[0025] 7、生成随机数:以上述运算过程中产生的数据作为参数调用算法集合经三轮运算后生成随机密钥序列的入口参数。
[0026] 8、生成与明文字节一样长的随机密钥序列:
[0027] (1)由以上生成的三个随机密钥序列的入口参数(x,y,z)为数组下标,对应的数组值(E[x],E[y],E[z])作为参数调用算法集合。由数组值大小决定选择百万种计算公式集合中的哪一种计算公式进行运算;
[0028] (2)运算过程中,综合应用了缺位运算、条件运算、质数扩散运算、除商扩倍运算等计算方法,带入的参数一律为上次集合运算返回值为下标对应的二级密钥E[]、时间搅拌器S[]、种子密钥Z[]的数组值,保证了每次运算和上一次运算是相对独立的,具有随机性和扩散性;
[0029] (3)运算过程中将本次参余运算的二级密钥数组E[]的1位或3位数组元素重新赋值,即每调用集合算法一次,也就是每加密一个字节,二级密钥数组元素就改变一次;
[0030] (4)每次算法集合调用返回x1、y1、z1三个数值;
[0031] a返回的数值x1作用有三:一是决定加密强度i(i=qd1+x1%qd2;i由x1决定,范围为qd1≤i<qd2),具体说就是决定加密i个字节后对运行环境(包括二级密钥和入口参数)进行改变;二是x1经过类型变换(char km1=x1%256)与明文一个字节异或;三是x1对应的数组值E[x1]作为参数参与下次集合运算。
[0032] b返回的数值y1作用有三:一是在加密强度改变时决定选择运算集合中的哪一种计算公式进行运算来改变入口参数或二级密钥全部数值;二是y1经过类型变换(char kn1=y1%256)对明文一个字节进行转换;三是y1对应的数组值E[y1]作为参数参与下次集合运算。
[0033] c返回的数组元素值z1作用有三:一是由z1对应的数组值E[z1]具体决定选择运算集合中的哪一种计算公式进行下一轮运算;二是z1对应的数组值E[z1]作为参数参与下次集合运算。
[0034] (5)重复(1)-----(4)步骤,直到生成与明文字节一样长的序列密钥字节。如图5所示,其中:x、y、z是随机密钥序列的入口参数;x1、y1、z1,xi、yi、zi,xs、ys、zs,xj、yj、zj,xh、yh、zh都是算法集合运算返回值;i、j是运算过程中产生的加密强度;S[]、Z[]、D[]是算法集合运算过程中随机地调用该数组的某一值参加集合运算;km、kn,km1、kn1,km1、kn1,kmh、knh是生成的随机密钥序列。
[0035] 9、以上第8点第(4)小点算法集合调用返回x1或y1,在加密每一个明文字节时用明文的前一个字节代替或异或,那么该算法就变成了自同步序列密码算法。
[0036] 10、以上算法执行到第8点第(4)小点时,
[0037] a、读取一组明文数据(长度为cd个字节),并放入fz[]数组中,以算法集合返回的x1、y1、z1经取余处理对应的fz[]的前半部分的数组值(fx[x1%(int cd/2)],fx[y1%(int cd/2)],fx[z1%(cd/2)])为参数调用算法集合;
[0038] b、调用算法集合返回x2、y2、z2,以x2决定采用分组加密方式集合(用x2与明文一字节异或、用y2与明文一字节异或、用z2与明文一字节异或、用x2对明文的一字节进行转换、用y2对明文的一字节进行转换、用z2对明文的一字节进行转换、用x2(y2、z2)与明文一字节异或后再用y2(x2、z2)进行转换、用x2(y2、z2)与明文一字节转换后再用y2(x2、z2)进行异或,以这些加密具体方法为元素在cd/2范围内进行排列,组成一个分组加密方式集合)中的哪一种加密方式对fz[]的后半部分数据逐位进行加密;
[0039] c、以x2、y2、z2经取余处理对应的fz[]的后半部分的数组值为参数调用算法集合,返回三个数值x3、y3、z3,以x3决定采用分组加密方式集合中的哪一种加密方式对fz[]的前半部分数据进行加密;
[0040] d、用二级密钥的一部分数据对fz[]数组元素进行异或封存;
[0041] e、重复a-----d步骤,直到明文信息不足一组字节cd的长度,然后,填充数据至cd的长度,并对这一组数据进行加密;或者用自同步序列密码加密方法对剩余明文字节进行加密;
[0042] 这样该算法就变成了另一种算法即:分组密码算法;
[0043] 并且分组的长度cd是可变的,是可以根据客户需求,按客户数据结构情况进行分组加密;同时分组加密过程中由于明文数据的搅拌作用,时间搅拌器可视情况取舍。
[0044] 11、算法设计制作过程中,充分考虑了各种客户的多方面不同需求,充分考虑了计算机技术发展进步后的升级问题,充分考虑了各种不同计算机整数、长整数占用字节位数不一样的实际情况,对种子密钥、时间搅拌器、单位密钥、二级密钥等数组长度,计算过程中使用的常数、加密强度等都进行了宏定义,涉及字节数的地方使用了sizeof()函数,从而能在几分钟内很方便根据客户需求进行修改。对于图案、页次的长度,算法集合中的计算公式的数量,时间搅拌器的存放方式,加密时异或、置换的先后顺序也可根据客户需求较方便地进行修改。这样就是使该算法能适应国家机关、企事业单位、个人等多层次客户的多方面需求,同时还能保证客户系统之间加密算法的独立性。