发明名称 一种基于耦合混沌映射的消息完整性认证方法
摘要 本发明公开了一种消息完整性认证方法。本方法为1)消息发送者产生初始链接值和保密的认证密钥;2)发送者把认证密钥、初始链接值和消息输入散列方法,输出消息认证码,该散列方法采用一维耦合混沌映射系统,输入消息与扩展子密钥作为混沌系统的参数,通过混沌系统有限次的迭代操作,可以使消息和密钥达到足够的混乱与扩散,产生随机分布、不重复的散列值(认证码);3)发送者把初始链接值、认证密钥、消息和认证码发给消息接收者;4)接收者把认证密钥、初始链接值和消息输入散列方法中,生成消息认证码;5)接收者根据步骤4)所生成的认证码和接收到的认证码进行消息完整性认证,如果两者一致,证明接收到的消息是完整的。该方法具有强的安全性和易于软件实现的特性。
申请公布号 CN102082668B 申请公布日期 2013.06.19
申请号 CN201010576336.4 申请日期 2010.12.07
申请人 北京邮电大学 发明人 王世红;李达;胡岗
分类号 H04L9/32(2006.01)I;H04L9/14(2006.01)I;H04L9/00(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 代理人
主权项 1.一种消息的完整性认证方法,其过程特征在于以下处理步骤:A1)消息发送者产生初始链接值和保密的认证密钥;A2)消息发送者把认证密钥、初始链接值和消息输入以下散列方法中,生成认证码,具体的步骤是:A2.1)进行消息整形,把消息通过填充补位后进行分组;A2.2)进行密钥扩展,把256比特的密钥K扩展成1024比特的子密钥;A2.3)进行参数生成,输入消息和扩展子密钥,产生一维耦合映射系统的两组参数;A2.4)进行消息压缩,把输入的1024比特消息压缩,输出256比特;A2.5)依次处理所有消息分组,并对最后分组的输出值进行变换,输出消息认证码;A3)消息发送者把初始链接值、保密的认证密钥、消息和消息认证码发给消息接收者;A4)消息接收者把认证密钥、初始链接值和消息输入散列方法中,重复步骤A2中每个步骤,生成消息认证码;A5)消息接收者根据步骤A4所生成的认证码和接收到的认证码进行消息完整性认证,如果两者一致,证明接收到的消息是完整的;如果两者不一致,证明接收到的消息是不完整的;其中步骤A2.3)参数生成是由输入的分组消息M<sub>i</sub>和扩展子密钥ka(j),产生一维耦合映射系统的两组参数,具体方法如下:第一组参数,通过线性变换可以把第i个消息分组M<sub>i</sub>{m(1),m(2),...,m(32)}转化为32个双精度实数b<sub>i,j</sub>,即b<sub>i,j</sub>=2.0+m((i-1)*8+j)/2<sup>31</sup>,i=1,2,3,4,j=1,2,...,8其中每个m(k)∈[0,2<sup>32</sup>),k=1,2,...,32;第二组参数,扩展得到的子密钥ka(j)∈[0,2<sup>32</sup>)与输入的消息分组M<sub>i</sub>混合后,转化为另外一组32个双精度实数a<sub>i,j</sub>,即<maths num="0001"><![CDATA[<math><mrow><msub><mi>a</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mn>2.0</mn><mo>+</mo><mo>[</mo><mi>ka</mi><mrow><mo>(</mo><mrow><mo>(</mo><mi>i</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>*</mo><mn>8</mn><mo>+</mo><mi>j</mi><mo>)</mo></mrow><mo>&CirclePlus;</mo><mrow><mo>(</mo><mi>m</mi><mrow><mo>(</mo><mrow><mo>(</mo><mi>i</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>*</mo><mn>8</mn><mo>+</mo><mi>j</mi><mo>)</mo></mrow><mo>></mo><mo>></mo><mo>></mo><mn>8</mn><mo>)</mo></mrow><mo>]</mo><mo>/</mo><msup><mn>2</mn><mn>31</mn></msup><mo>,</mo></mrow></math>]]></maths>i=1,2,3,4,j=1,2,...,8其中操作<img file="FSB00001047397200022.GIF" wi="40" he="41" />是按比特位异或,操作x>>>y表示对x右循环移位y比特;其中步骤A2.4)压缩过程是把输入的1024比特消息压缩,输出256比特,所述方法由一维迭代耦合映射系统和非线性变换实现:A2.4.1)一维迭代耦合映射系统的动力学表示为:x<sub>n+1</sub>(j)=f<sub>1</sub>(a<sub>1,j</sub>,x<sub>n</sub>(j))+f<sub>1</sub>a<sub>2,j+1</sub>,x<sub>n</sub>(j+1))+f<sub>1</sub>(a<sub>3,j-1</sub>,x<sub>n</sub>(j-1))(1)+f<sub>2</sub>(a<sub>4,j+4</sub>,c<sub>j=4</sub>,x<sub>n</sub>(j+4))mod1,j=1,2,...,8x<sub>n+2</sub>(j)=f<sub>1</sub>b<sub>1,j</sub>,x<sub>n+1</sub>(j))+f<sub>1</sub>b<sub>2,j+1</sub>,x<sub>n+1</sub>(j+1))+f<sub>1</sub>(b<sub>3,j-1</sub>,x<sub>n+1</sub>(j-1))(2)+f<sub>2</sub>(b<sub>4,j+4</sub>,c<sub>j+4</sub>,x<sub>n+1</sub>(j+4))mod1,j=1,2,...,8其中n为离散时间迭代步数,j为格点坐标,格点长度为8,x<sub>n+1</sub>(j)表示第j个格子第n+1步时间的状态值,x<sub>n</sub>(j)表示第j个格子第n步时间的状态值,x<sub>n+2</sub>(j)表示第j个格子第n+2步时间的状态值,对所有参量使用周期边界条件;f<sub>1</sub>(a,x)=ax(1-x)是逻辑斯蒂映射,当a>3.57时,逻辑斯蒂映射是混沌的;f<sub>2</sub>(a,c,x)=ax+c;c<sub>1</sub>=0.1,c<sub>4</sub>=0.2,其他c<sub>j</sub>=0;参数a<sub>i,j</sub>和b<sub>i,j</sub>,i=1,2,3,4,j=1,2,..,8,由步骤A2.3)得到;在参数a<sub>i,j</sub>和b<sub>i,j</sub>所取的范围内,一维耦合映射系统是一个混沌系统;依次执行式(1)和(2)r次得到输出变量x<sub>2r</sub>(j),j=1,2,...,8;当迭代次数不等于4和8次,即r≠4和r≠8时,输出变量x<sub>2r</sub>(j)直接反馈执行(1)和(2)迭代操作,当迭代次数等于4和8次,即r=4和r=8时,输出变量x<sub>2r</sub>(j)执行A2.4.2)非线性变换;所述的一维迭代耦合映射系统,进一步包括以下两种情况:对于第一个消息分组M<sub>1</sub>,式(1)的初始值定义为:x<sub>0</sub>(j)=h<sub>0</sub>(j)/2<sup>32</sup>,j=1,2,...,8其中h<sub>0</sub>(j)是在步骤A1)中消息发送者选定的初始链接变量H<sub>0</sub>,即H<sub>0</sub>={h<sub>0</sub>(1),h<sub>0</sub>(2),...,h<sub>0</sub>(8)};对于第i个(i>1)消息分组M<sub>i</sub>,式(1)的初始值定义为:x<sub>0</sub>(j)=h<sub>i-1</sub>(j)/2<sup>32</sup>,j=1,2,...,8,i=1,2,...,t其中h<sub>i-1</sub>(j)是对第(i-1)个消息分组M<sub>i-1</sub>压缩过程计算输出的中间变量H<sub>i-1</sub>,即H<sub>i-1</sub>={h<sub>i-1</sub>(1),h<sub>i-1</sub>(2),...,h<sub>i-1</sub>(8)},每个h<sub>i-1</sub>(j)都是属于[0,2<sup>32</sup>)区间上的整数;A2.4.2)非线性变换是把上述步骤A2.4.1)中的模拟信号x<sub>2r</sub>(j)进行两次非线性变换,所述的非线性变换的过程,进一步包括:对于第4次迭代,即r=4时,依据以下公式对输出变量x<sub>2r</sub>(j)进行非线性操作:x<sub>2r</sub>(j)=(x<sub>2r</sub>(j)×2<sup>50</sup>mod2<sup>32</sup>)/2<sup>32</sup>,j=1,2,...,8所述上式首先把双精度实数x<sub>2r</sub>(j)放大2<sup>50</sup>倍,然后取模2<sup>32</sup>,得到32比特长的整数(模数转换),最后再转化为双精度实数;对于第8次迭代,即r=8时,依据以下公式对其进行非线性操作,并得到中间变量H<sub>i</sub>={h<sub>i</sub>(1),h<sub>i</sub>(2),...,h<sub>i</sub>(8)}:h<sub>i</sub>(j)=x<sub>2r</sub>(j)×2<sup>50</sup>mod2<sup>32</sup>,j=1,2,...,8,i=1,2,...,t所述上式首先把双精度实数x<sub>2r</sub>(j)放大2<sup>50</sup>倍,然后取模2<sup>32</sup>,得到32比特长的整数h<sub>i</sub>(j)。
地址 100876 北京市海淀区西土城路10号北京邮电大学主楼309室
您可能感兴趣的专利