CN107124267A - 一种密码芯片上的固定位宽密钥产生方法 - Google Patents

一种密码芯片上的固定位宽密钥产生方法 Download PDF

Info

Publication number
CN107124267A
CN107124267A CN201710200373.7A CN201710200373A CN107124267A CN 107124267 A CN107124267 A CN 107124267A CN 201710200373 A CN201710200373 A CN 201710200373A CN 107124267 A CN107124267 A CN 107124267A
Authority
CN
China
Prior art keywords
iota
round
xor
bit binary
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710200373.7A
Other languages
English (en)
Other versions
CN107124267B (zh
Inventor
廖澴桓
张跃军
丁代鲁
潘钊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ningbo University
Original Assignee
Ningbo University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ningbo University filed Critical Ningbo University
Priority to CN201710200373.7A priority Critical patent/CN107124267B/zh
Publication of CN107124267A publication Critical patent/CN107124267A/zh
Application granted granted Critical
Publication of CN107124267B publication Critical patent/CN107124267B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种密码芯片上的固定位宽密钥产生方法,通过将n位二进制数据结构的初始密码数据按照串行的方式从低位到高位输入到密码芯片中并保存在密码芯片的内部存储器中,然后从初始密码数据中截取1600位二进制数据作为中间密码数据,接着将中间密码数据按照从低位到高位的顺序进行划分,每64位二进制数据划分为一组,得到25组64位二进制数据,然后在密码芯片中设定六个64位中间寄存器,将24组64位二进制数据按照查找表的方式依次进行变换,最后随机选择四组二进制数据拼接为256位二进制数据作为固定位宽的密钥输出;优点是占用的硬件资源少,速度快,且随着被攻击的轮数的增加,安全性不会随之降低,安全性较高。

Description

一种密码芯片上的固定位宽密钥产生方法
技术领域
本发明涉及一种密码芯片上的密钥产生方法,尤其是涉及一种密码芯片上的固定位宽密钥产生方法。
背景技术
集成电路和信息技术的日益发展、互联网的迅速普及,为人们日常生活、学习和工作带来极大便利,如支付宝、淘宝、网银以及微信等。大量的信息共享与方便的同时,也出现信息被泄露与篡改的威胁,如网上银行账户被盗、个人隐私泄露以及棱镜门事件等等。如何保证数据信息的安全在密码学中显得尤为突出。密码算法在信息安全领域发挥着至关重要的作用,是保证信息安全传送最有效的方法,其中分组密码和流密码是应对现代通信中信息安全威胁最有效最常用的方法。分组密码是对固定长度的消息进行加密操作,高级加密标准(AES)因其复杂的数学结构,是目前安全性最高的分组密码算法,广泛应于到各种加密系统当中。而流密码则是比特级的加密操作,将产生的具有特定位宽的密钥与需要进行加密的明文数据进行逐比特的异或操作,其安全强度取决于密钥的生成算法。因此,在密码芯片对数据进行安全处理的过程中,固定位宽密钥的产生与选择对安全性有着举足轻重的影响。
Hash函数又称哈希函数或者杂凑函数,是现代密码学中最基本的模块之一,该函数以任意长度的消息值作为输入,生成固定长度的输出数据,具有将任意长度数据转换为固定位宽数据的功能。自从2004年密码学家王小云教授宣布攻破常用的Hash算法以来,网络信息安全问题进一步凸显。美国国家标准与技术研究所(NIST)于2007年公开征集杂凑函数新标准(SHA-3算法)的活动,并于2012年10月2日将Keccak杂凑算法定位新一代杂凑函数标准,其具有新颖的Sponge迭代结构、较强的安全性能以及良好的实现方法。文献(李建瑞,汪鹏君,张跃军,李刚.基于SHA-3算法的图像密钥生成方法.华东理工大学学报(自然科学版),Vol.41No.5,P693-P697,2015.10)提出采用SHA-3算法将任意长度的图像数据转换为固定位宽的密钥产生方法。该密钥产生方法具体过程如下:首先,将待处理图像转换为BMP格式图像,并将BMP格式图像转换为n位十六进制数据;然后,将n位十六进制数据由低位到高位依次进行分组,每64位作为一组十六进制数据,如果一组十六进制数据不足64位,则其高位用0补充;其次,通过Keccak-f[b]为迭代置换函数进行12轮的压缩迭代,每一轮的置换函数f都是作用在一个三维矩阵上的五步迭代置换;最后,得到Keccak杂凑算法输出数据作为图像密钥。但是,该密钥产生方法存在以下几个方面的问题:1、由于采用三维矩阵的压缩迭代,电路实现所占用的硬件资源较大;2、图像数据的转换速度太慢,且五步迭代置换算法所需处理的时间较长,在实际应用中必须进一步优化;3、由于需要进行12轮的迭代运算,存在轮攻击的数量会较多,其安全性也可能随之降低。
鉴此,设计一种占用的硬件资源较少,速度快,且安全性较高的密码芯片上的固定位宽密钥产生方法,在密码芯片的实际应用方面具有重要意义。
发明内容
本发明所要解决的技术问题是提供一种占用的硬件资源少,速度快,且随着被攻击的轮数的增加,安全性不会随之降低,安全性较高的密码芯片上的固定位宽密钥产生方法。
本发明解决上述技术问题所采用的技术方案为:一种密码芯片上的固定位宽密钥产生方法,包括以下步骤:
a.将n位二进制数据结构的初始密码数据按照串行的方式从低位到高位输入到密码芯片并保存在密码芯片的内部存储器中,其中n为大于等于1的整数;
b.获取初始密码数据的位数,如果初始密码数据的位数大于1600,则从最低位开始向高位截取1600位二进制数据作为中间密码数据;如果初始密码数据的位数等于1600,则从最低位为开始向高位截取1600位二进制数据作为中间密码数据,如果初始密码数据的位数小于1600,则在其高位补0到1600位二进制数据作为中间密码数据;
c.将中间密码数据按照从低位到高位的顺序进行划分,每64位二进制数据划分为一组,得到25组64位二进制数据,将第k组64位二进制数据记为Mk,k=1,2,3,…,25,25组64位二进制数据按划分先后顺序依次存储到密码芯片的内部存储器中;
d.将24组64位二进制数据M1-M24按照查找表的方式依次进行变换,将当前变换的轮数记为nr_round,nr_round=1,2,…,24,将Mt变换后的值记为M″t,t=1,2,…,24,在密码芯片中设定六个64位中间寄存器,六个64位中间寄存器分别记为r1_out、r2_out、r3_out、rho_out、iota_out和chi_out;
第1轮-第22轮变换的具体过程为:
d-1.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=1,2,…,22;
d-2.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-3.将64位二进制数据Mj+2的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'j+2
d-4.将64位二进制数据M'j+2与步骤d-2中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-5.将64位二进制数据Mj+3与步骤d-2中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out。
d-6.设定轮常数为iota,iota用16进制数据表示如下:
当nr_round=1时,iota=0000000000000001;
当nr_round=2时,iota=0000000000008082;
当nr_round=3时,iota=800000000000808A;
当nr_round=4时,iota=8000000080008000;
当nr_round=5时,iota=000000000000808B;
当nr_round=6时,iota=0000000080000001;
当nr_round=7时,iota=8000000080008081;
当nr_round=8时,iota=8000000000008009;
当nr_round=9时,iota=000000000000008A;
当nr_round=10时,iota=0000000000000088;
当nr_round=11时,iota=0000000080008009;
当nr_round=12时,iota=000000008000000A;
当nr_round=13时,iota=000000008000808B;
当nr_round=14时,iota=800000000000008B;
当nr_round=15时,iota=8000000000008089;
当nr_round=16时,iota=8000000000008003;
当nr_round=17时,iota=8000000000008002;
当nr_round=18时,iota=8000000000000080;
当nr_round=19时,iota=000000000000800A;
当nr_round=20时,iota=800000008000000A;
当nr_round=21时,iota=8000000080008081;
当nr_round=22时,iota=8000000000008080;
d-7.将步骤d-2中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据赋值给rho_out;
d-8.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-9.将r2_out进行非运算后,与步骤d-2中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到的值赋值给chi_out;
d-10.当步骤d-2中更新后的r1_out的从低位到高位方向的第3位值为“1”时,将rho_out的值赋给M″j,当步骤d-2中更新后的r1_out的从低位到高位方向的第2位值为“1”时,将chi_out的值赋给M″j,当步骤d-2中更新后的r1_out的从低位到高位方向的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M″j
第23轮变换的具体过程为:
d-11.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=23;
d-12.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-13.将64位二进制数据Mj+2的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'j+2
d-14.将64位二进制数据M'j+2与步骤d-12中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-15.将64位二进制数据M1与步骤d-12中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out;
d-16.设定轮常数为iota,iota用16进制数据表示如下:当nr_round=23时,iota=0000000080000001;
d-17.将步骤d-12中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据赋值给rho_out;
d-18.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-19.将r2_out进行非运算后,与步骤d-12中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到的混合逻辑值赋值给chi_out;
d-20.当步骤d-12中更新后的r1_out的第3位值为“1”时,将rho_out的值赋给M″j,当步骤d-12中更新后的r1_out的第2位值为“1”时,将chi_out的值赋给M″j,当步骤d-12中更新后的r1_out的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M″j
第24轮变换的具体过程为:
d-21.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=24;
d-22.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-23.将64位二进制数据M1的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'1
d-24.将64位二进制数据M'1与更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-25.将64位二进制数据M2与更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out;
d-26.设定轮常数为iota,iota用16进制数据表示如下:当nr_round=24时,iota=8000000080008008;
d-27.将步骤d-22中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据值赋给rho_out;
d-28.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-29.将r2_out进行非运算后,与步骤d-22中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到混合逻辑值赋值给chi_out;
d-30.当步骤d-22中更新后的r1_out的第3位值为“1”时,将rho_out的值赋给M″j,当步骤d-22中更新后的r1_out的第2位值为“1”时,将chi_out的值赋给M″j,当步骤d-22中更新后的r1_out的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M″j
e.从步骤d中得到的M"1-M"24和M25这25组二进制数据中随机选择四组二进制数据拼接为256位二进制数据作为固定位宽的密钥输出。
与现有技术相比,本发明的优点在于通过将n位二进制数据结构的初始密码数据按照串行的方式从低位到高位输入到密码芯片中并保存在密码芯片的内部存储器中,然后获取初始密码数据的位数,如果初始密码数据的位数大于1600,则从最低位开始向高位截取1600位二进制数据作为中间密码数据;如果初始密码数据的位数等于1600,则从最低位为开始向高位截取1600位二进制数据作为中间密码数据,如果初始密码数据的位数小于1600,则在其高位补0到1600位二进制数据作为中间密码数据,接着将中间密码数据按照从低位到高位的顺序进行划分,每64位二进制数据划分为一组,得到25组64位二进制数据,将第k组64位二进制数据记为Mk,k=1,2,3,…,25,25组64位二进制数据按划分先后顺序依次存储到密码芯片的内部存储器中,然后在密码芯片中设定六个64位中间寄存器,六个64位中间寄存器分别记为r1_out、r2_out、r3_out、rho_out、iota_out和chi_out,将24组64位二进制数据M1-M24按照查找表的方式依次进行变换,得到M"1-M"24,最后从M"1-M"24和M25这25组二进制数据中随机选择四组二进制数据拼接为256位二进制数据作为固定位宽的密钥输出,该方法在采用查找表对数据进行变换过程中,每轮查找表的大小都保持一致,不会随着轮数的增加引起芯片安全性的降低,结合加密芯片内部的存储器和寄存器进行数据存储和数据交换,从加密芯片内部的存储器读写数据实现读取运算,在寄存器中寄存每次计算结果以及一些中间变量,涉及的六个中间变量在每一轮运算中都采取共用的方式,可以有效降低芯片的硬件资源开销,实现同时对一个分组数据进行运算处理,覆盖新的运算结果,降低算法执行功耗,安全性较高,在提高处理速度的同时有效降低面积开销。
具体实施方式
以下结合实施例对本发明作进一步详细描述。
实施例:一种密码芯片上的固定位宽密钥产生方法,包括以下步骤:
a.将n位二进制数据结构的初始密码数据按照串行的方式从低位到高位输入到密码芯片中并保存在密码芯片的内部存储器中,其中n为大于等于1的整数;
b.获取初始密码数据的位数,如果初始密码数据的位数大于1600,则从最低位开始向高位截取1600位二进制数据作为中间密码数据;如果初始密码数据的位数等于1600,则从最低位为开始向高位截取1600位二进制数据作为中间密码数据,如果初始密码数据的位数小于1600,则在其高位补0到1600位二进制数据作为中间密码数据;
c.将中间密码数据按照从低位到高位的顺序进行划分,每64位二进制数据划分为一组,得到25组64位二进制数据,将第k组64位二进制数据记为Mk,k=1,2,3,…,25,25组64位二进制数据按划分先后顺序依次存储到密码芯片的内部存储器中;
d.将24组64位二进制数据M1-M24按照查找表的方式依次进行变换,将当前变换的轮数记为nr_round,nr_round=1,2,…,24,将Mt变换后的值记为M″t,t=1,2,…,24,在密码芯片中设定六个64位中间寄存器,六个64位中间寄存器分别记为r1_out、r2_out、r3_out、rho_out、iota_out和chi_out;
第1轮-第22轮变换的具体过程为:
d-1.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=1,2,…,22;
d-2.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-3.将64位二进制数据Mj+2的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'j+2
d-4.将64位二进制数据M'j+2与步骤d-2中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-5.将64位二进制数据Mj+3与步骤d-2中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out。
d-6.设定轮常数为iota,iota用16进制数据表示如下:
当nr_round=1时,iota=0000000000000001;
当nr_round=2时,iota=0000000000008082;
当nr_round=3时,iota=800000000000808A;
当nr_round=4时,iota=8000000080008000;
当nr_round=5时,iota=000000000000808B;
当nr_round=6时,iota=0000000080000001;
当nr_round=7时,iota=8000000080008081;
当nr_round=8时,iota=8000000000008009;
当nr_round=9时,iota=000000000000008A;
当nr_round=10时,iota=0000000000000088;
当nr_round=11时,iota=0000000080008009;
当nr_round=12时,iota=000000008000000A;
当nr_round=13时,iota=000000008000808B;
当nr_round=14时,iota=800000000000008B;
当nr_round=15时,iota=8000000000008089;
当nr_round=16时,iota=8000000000008003;
当nr_round=17时,iota=8000000000008002;
当nr_round=18时,iota=8000000000000080;
当nr_round=19时,iota=000000000000800A;
当nr_round=20时,iota=800000008000000A;
当nr_round=21时,iota=8000000080008081;
当nr_round=22时,iota=8000000000008080;
d-7.将步骤d-2中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据赋值给rho_out;
d-8.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-9.将r2_out进行非运算后,与步骤d-2中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到的值赋值给chi_out;
d-10.当步骤d-2中更新后的r1_out的从低位到高位方向的第3位值为“1”时,将rho_out的值赋给M″j,当步骤d-2中更新后的r1_out的从低位到高位方向的第2位值为“1”时,将chi_out的值赋给M″j,当步骤d-2中更新后的r1_out的从低位到高位方向的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M″j
第23轮变换的具体过程为:
d-11.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=23;
d-12.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-13.将64位二进制数据Mj+2的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'j+2
d-14.将64位二进制数据M'j+2与步骤d-12中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-15.将64位二进制数据M1与步骤d-12中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out;
d-16.设定轮常数为iota,iota用16进制数据表示如下:当nr_round=23时,iota=0000000080000001;
d-17.将步骤d-12中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据赋值给rho_out;
d-18.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-19.将r2_out进行非运算后,与步骤d-12中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到的混合逻辑值赋值给chi_out;
d-20.当步骤d-12中更新后的r1_out的从低位到高位方向的第3位值为“1”时,将rho_out的值赋给M″j,当步骤d-12中更新后的r1_out的从低位到高位方向的第2位值为“1”时,将chi_out的值赋给M″j,当步骤d-12中更新后的r1_out的从低位到高位方向的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M″j
第24轮变换的具体过程为:
d-21.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=24;
d-22.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-23.将64位二进制数据M1的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'1
d-24.将64位二进制数据M'1与更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-25.将64位二进制数据M2与更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out;
d-26.设定轮常数为iota,iota用16进制数据表示如下:当nr_round=24时,iota=8000000080008008;
d-27.将步骤d-22中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据值赋给rho_out;
d-28.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-29.将r2_out进行非运算后,与步骤d-22中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到混合逻辑值赋值给chi_out;
d-30.当步骤d-22中更新后的r1_out的从低位到高位方向的第3位值为“1”时,将rho_out的值赋给M″j,当步骤d-22中更新后的r1_out的从低位到高位方向的第2位值为“1”时,将chi_out的值赋给M″j,当步骤d-22中更新后的r1_out的从低位到高位方向的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M″j
e.从步骤d中得到的M"1-M"24和M25这25组二进制数据中随机选择四组二进制数据拼接为256位二进制数据作为固定位宽的密钥输出。

Claims (1)

1.一种密码芯片上的固定位宽密钥产生方法,其特征在在于包括以下步骤:
a.将n位二进制数据结构的初始密码数据按照串行的方式从低位到高位输入到密码芯片并保存在密码芯片的内部存储器中,其中n为大于等于1的整数;
b.获取初始密码数据的位数,如果初始密码数据的位数大于1600,则从最低位开始向高位截取1600位二进制数据作为中间密码数据;如果初始密码数据的位数等于1600,则从最低位开始向高位截取1600位二进制数据作为中间密码数据,如果初始密码数据的位数小于1600,则在其高位补0到1600位二进制数据作为中间密码数据;
c.将中间密码数据按照从低位到高位的顺序进行划分,每64位二进制数据划分为一组,得到25组64位二进制数据,将第k组64位二进制数据记为Mk,k=1,2,3,…,25,25组64位二进制数据按划分先后顺序依次存储到密码芯片的内部存储器中;
d.将24组64位二进制数据M1-M24按照查找表的方式依次进行变换,将当前变换的轮数记为nr_round,nr_round=1,2,…,24,将Mt变换后的值记为M”t,t=1,2,…,24,在密码芯片中设定六个64位中间寄存器,六个64位中间寄存器分别记为r1_out、r2_out、r3_out、rho_out、iota_out和chi_out;
第1轮-第22轮变换的具体过程为:
d-1.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=1,2,…,22;
d-2.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-3.将64位二进制数据Mj+2的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'j+2
d-4.将64位二进制数据M'j+2与步骤d-2中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-5.将64位二进制数据Mj+3与步骤d-2中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out。
d-6.设定轮常数为iota,iota用16进制数据表示如下:
当nr_round=1时,iota=0000000000000001;
当nr_round=2时,iota=0000000000008082;
当nr_round=3时,iota=800000000000808A;
当nr_round=4时,iota=8000000080008000;
当nr_round=5时,iota=000000000000808B;
当nr_round=6时,iota=0000000080000001;
当nr_round=7时,iota=8000000080008081;
当nr_round=8时,iota=8000000000008009;
当nr_round=9时,iota=000000000000008A;
当nr_round=10时,iota=0000000000000088;
当nr_round=11时,iota=0000000080008009;
当nr_round=12时,iota=000000008000000A;
当nr_round=13时,iota=000000008000808B;
当nr_round=14时,iota=800000000000008B;
当nr_round=15时,iota=8000000000008089;
当nr_round=16时,iota=8000000000008003;
当nr_round=17时,iota=8000000000008002;
当nr_round=18时,iota=8000000000000080;
当nr_round=19时,iota=000000000000800A;
当nr_round=20时,iota=800000008000000A;
当nr_round=21时,iota=8000000080008081;
当nr_round=22时,iota=8000000000008080;
d-7.将步骤d-2中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位的得到的64位二进制数据赋值给rho_out;
d-8.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-9.将r2_out进行非运算后,与步骤d-2中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到的值赋值给chi_out;
d-10.当步骤d-2中更新后的r1_out的从低位到高位方向的第3位值为“1”时,将rho_out的值赋给M”j,当步骤d-2中更新后的r1_out的从低位到高位方向的第2位值为“1”时,将chi_out的值赋给M”j,当步骤d-2中更新后的r1_out的从低位到高位方向的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M”j
第23轮变换的具体过程为:
d-11.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=23;
d-12.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-13.将64位二进制数据Mj+2的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'j+2
d-14.将64位二进制数据M'j+2与步骤d-12中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-15.将64位二进制数据M1与步骤d-12中更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out;
d-16.设定轮常数为iota,iota用16进制数据表示如下:当nr_round=23时,iota=0000000080000001;
d-17.将步骤d-12中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据赋值给rho_out;
d-18.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-19.将r2_out进行非运算后,与步骤d-12中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到的混合逻辑值赋值给chi_out;
d-20.当步骤d-12中更新后的r1_out的从低位到高位方向的第3位值为“1”时,将rho_out的值赋给M”j,当步骤d-12中更新后的r1_out的从低位到高位方向的第2位值为“1”时,将chi_out的值赋给M”j,当步骤d-12中更新后的r1_out的从低位到高位方向的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M”j
第24轮变换的具体过程为:
d-21.将64位二进制数据Mj的值赋给r1_out,j=nr_round,nr_round=24;
d-22.将64位二进制数据Mj+1与r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r1_out对r1_out进行更新,得到更新后的r1_out;
d-23.将64位二进制数据M1的最高位移到其最低位的右边,然后整体左移1位得到64位二进制数据M'1
d-24.将64位二进制数据M'1与更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r2_out;
d-25.将64位二进制数据M2与更新后的r1_out按位进行异或运算,得到异或运算逻辑值,并将该异或运算逻辑值赋给r3_out;
d-26.设定轮常数为iota,iota用16进制数据表示如下:当nr_round=24时,iota=8000000080008008;
d-27.将步骤d-22中更新后的r1_out的最高位移除并在其最低位的右边补一个0后,然后整体左移1位得到的64位二进制数据值赋给rho_out;
d-28.将当前轮的轮常数iota转换为64位二进制数据后与rho_out相加后的值赋值给iota_out;
d-29.将r2_out进行非运算后,与步骤d-22中更新后的r1_out进行异或运算,然后再与r3_out进行异或运算,得到混合逻辑值赋值给chi_out;
d-30.当步骤d-22中更新后的r1_out的从低位到高位方向的第3位值为“1”时,将rho_out的值赋给M”j,当步骤d-22中更新后的r1_out的从低位到高位方向的第2位值为“1”时,将chi_out的值赋给M”j,当步骤d-22中更新后的r1_out的从低位到高位方向的第1位值为“1”时,将chi_out与rho_out进行异或运算后的值赋给M”j
e.从步骤d中得到的M"1-M"24和M25这25组二进制数据中随机选择四组二进制数据拼接为256位二进制数据作为固定位宽的密钥输出。
CN201710200373.7A 2017-03-30 2017-03-30 一种密码芯片上的固定位宽密钥产生方法 Active CN107124267B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710200373.7A CN107124267B (zh) 2017-03-30 2017-03-30 一种密码芯片上的固定位宽密钥产生方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710200373.7A CN107124267B (zh) 2017-03-30 2017-03-30 一种密码芯片上的固定位宽密钥产生方法

Publications (2)

Publication Number Publication Date
CN107124267A true CN107124267A (zh) 2017-09-01
CN107124267B CN107124267B (zh) 2020-04-17

Family

ID=59717455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710200373.7A Active CN107124267B (zh) 2017-03-30 2017-03-30 一种密码芯片上的固定位宽密钥产生方法

Country Status (1)

Country Link
CN (1) CN107124267B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107612684A (zh) * 2017-10-20 2018-01-19 中博龙辉(北京)信息技术股份有限公司 基于国产化处理器平台专有指令集的数据对称加密方法
CN109872161A (zh) * 2019-03-01 2019-06-11 山东大学 一种加速iota子链交易验证过程的芯片及系统
CN116303308A (zh) * 2022-12-30 2023-06-23 北京海泰方圆科技股份有限公司 秘密数据分享方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1921382A (zh) * 2006-09-06 2007-02-28 华为技术有限公司 一种基于aes算法的加解密方法及加解密器
WO2011119606A2 (en) * 2010-03-25 2011-09-29 Altera Corporation Look up table structure supporting quaternary adders
CN103946796A (zh) * 2011-12-13 2014-07-23 英特尔公司 处理keccak安全散列算法的方法和设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1921382A (zh) * 2006-09-06 2007-02-28 华为技术有限公司 一种基于aes算法的加解密方法及加解密器
WO2011119606A2 (en) * 2010-03-25 2011-09-29 Altera Corporation Look up table structure supporting quaternary adders
CN103946796A (zh) * 2011-12-13 2014-07-23 英特尔公司 处理keccak安全散列算法的方法和设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MUZAFFAR RAO等: "Efficient High Speed Implementation of Secure Hash Algorithm-3", 《2014 17TH EUROMICRO CONFERENCE ON DIGITAL SYSTEM DESIGN》 *
李建瑞等: "基于SHA-3算法的图像密钥生成方法", 《华东理工大学学报(自然科学版)》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107612684A (zh) * 2017-10-20 2018-01-19 中博龙辉(北京)信息技术股份有限公司 基于国产化处理器平台专有指令集的数据对称加密方法
CN109872161A (zh) * 2019-03-01 2019-06-11 山东大学 一种加速iota子链交易验证过程的芯片及系统
CN116303308A (zh) * 2022-12-30 2023-06-23 北京海泰方圆科技股份有限公司 秘密数据分享方法、装置、电子设备及存储介质
CN116303308B (zh) * 2022-12-30 2023-12-08 北京海泰方圆科技股份有限公司 秘密数据分享方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN107124267B (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
CN101371480B (zh) 加密保护方法
CN1989726A (zh) 用于执行加密计算的方法和装置
CN101034978A (zh) 用于密码过程的表分裂
CN107124267A (zh) 一种密码芯片上的固定位宽密钥产生方法
CN109361507A (zh) 一种数据加密方法及加密设备
CN105656619B (zh) 一种aes加密方法和基于其的抗功耗攻击方法
CN105933108B (zh) 一种对sm4算法实现破解的方法
CN102904711A (zh) 信息加密方法
CN108429613A (zh) 一种基于en-present算法的电网信息加密方法
CN104917608B (zh) 一种密钥抗功耗攻击的方法
Zhang et al. LAC: A lightweight authenticated encryption cipher
CN109861809A (zh) 一种实用化的分组随机加解密方法
CN102710413A (zh) 一种抗dpa/spa攻击的系统和方法
CN105471855A (zh) 一种用于电子标签快速身份鉴别的低功耗椭圆曲线加密引擎
CN107483182B (zh) 一种基于乱序执行的面向aes算法的抗功耗攻击方法
CN107070633B (zh) 一种抗高阶功耗分析的aes掩码加密方法
CN101826959B (zh) 一种面向字节的密钥流生成方法及加密方法
CN107994980A (zh) 一种采用时钟乱序技术和混沌触发器的抗dpa攻击方法
CN105933120A (zh) 一种基于Spark平台的口令哈希值恢复方法和装置
CN104219045A (zh) Rc4 流密码生成器
CN111614457B (zh) 基于p置换改进的轻量级分组加解密方法、装置及存储介质
CN109936437B (zh) 一种基于d+1阶掩码的抗功耗攻击方法
CN115811398A (zh) 基于动态s盒的分组密码算法、装置、系统及存储介质
Li et al. An implementation method for SM4-GCM on FPGA
CN104683095B (zh) 一种des加密方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20170901

Assignee: SANMEN SANYOU TECHNOLOGY Inc.

Assignor: Ningbo University

Contract record no.: X2022330000855

Denomination of invention: A Fixed Bit Width Key Generation Method on Cryptographic Chip

Granted publication date: 20200417

License type: Common License

Record date: 20221226