CN117390642B - 一种数据加解密方法、装置、设备和计算机可读存储介质 - Google Patents

一种数据加解密方法、装置、设备和计算机可读存储介质 Download PDF

Info

Publication number
CN117390642B
CN117390642B CN202311339207.7A CN202311339207A CN117390642B CN 117390642 B CN117390642 B CN 117390642B CN 202311339207 A CN202311339207 A CN 202311339207A CN 117390642 B CN117390642 B CN 117390642B
Authority
CN
China
Prior art keywords
key
confusion
initial
data
iteration
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.)
Active
Application number
CN202311339207.7A
Other languages
English (en)
Other versions
CN117390642A (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.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
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 Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311339207.7A priority Critical patent/CN117390642B/zh
Publication of CN117390642A publication Critical patent/CN117390642A/zh
Application granted granted Critical
Publication of CN117390642B publication Critical patent/CN117390642B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及信息安全技术领域,公开了一种数据加解密方法、装置、设备和计算机可读存储介质,在获取到携带有密码算法类型的密钥生成指令时,生成与密码算法类型所对应的密钥长度相同的初始混淆参数。根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥。按照密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,直至迭代次数达到设定阈值结束迭代流程。从存储空间中获取数据加解密指令对应的目标密钥;利用目标密钥对待处理数据进行加解密处理。通过在密码算法中加入与密码运算功能无关的混淆规则,在不增加芯片的面积和成本的同时,实现了对IC芯片的安全防护。

Description

一种数据加解密方法、装置、设备和计算机可读存储介质
技术领域
本发明涉及信息安全技术领域,特别是涉及一种数据加解密方法、装置、设备和计算机可读存储介质。
背景技术
集成电路芯片(Integrated Circuit Chip,IC)是将晶体管、电阻、电容等大量微电子元器件形成的集成电路放置在一块塑基上做成的芯片。随着集成电路技术的发展,对IC芯片的攻击手段也呈现出多样化的趋势。攻击者可以通过探测IC芯片电路,或利用IC嵌入式软件接口等方式来实施攻击,破坏IC芯片的敏感数据信息或滥用其安全功能。
对IC芯片的攻击主要包括侧信道攻击。攻击者可通过采用接触式或非接触式的信号测量,得到与IC芯片正在执行的操作有关的信息,进而采用信号处理和统计分析等技术来获得密钥等敏感信息,通过对获取的信息加以利用,进而猜测用户信息和关键数据,造成安全隐患。
目前针对于侧信道攻击,采用的防护措施是增加保护电路。由检测电阻、信号检测单元和信号干扰单元构成抵抗侧信道攻击的保护电路。信号检测单元对检测电阻两端的电压进行比较,在信号检测单元检测到加密单元不工作时,通过信号干扰单元模拟加密单元工作时的能量变化,使得检测电阻两端的能量消耗波形随机化,从而实现防止侧信道攻击的功能。但是该方式增加了硬件电路,增加了芯片的面积和成本。
可见,如何在不明显增加硬件成本的情况下提升集成电路芯片的安全性,是本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供一种数据加解密方法、装置、设备和计算机可读存储介质,可以解决在不明显增加硬件成本的情况下如何提升集成电路芯片的安全性的问题。
为解决上述技术问题,本发明实施例提供一种数据加解密方法,包括:
在获取到携带有密码算法类型的密钥生成指令的情况下,生成与所述密码算法类型所对应的密钥长度相同的初始混淆参数;
根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥;
按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,直至迭代次数达到设定阈值,将所述初始密钥以及每次迭代对应的密钥存储至设定的存储空间;其中,所述本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥;所述混淆规则由所述密钥生成规则变换得到;
在获取到数据加解密指令的情况下,从所述存储空间中获取对应的目标密钥;
利用所述目标密钥对待处理数据进行加解密处理。
一方面,所述在获取到数据加解密指令的情况下,从所述存储空间中获取对应的目标密钥包括:
在获取到数据加解密指令的情况下,判断所述数据加解密指令是否与设定的指令格式匹配;
在所述数据加解密指令与设定的指令格式匹配的情况下,从所述存储空间中读取与所述数据加解密指令携带的密码算法类型匹配的目标密钥;
在所述加解密指令与设定的指令格式不匹配的情况下,从所述存储空间中读取与所述数据加解密指令携带的密码算法类型匹配的目标密钥;根据所述目标密钥及其对应的混淆参数,生成最终的目标密钥。
一方面,所述根据所述目标密钥及其对应的混淆参数,生成最终的目标密钥包括:
将所述目标密钥及其对应的混淆参数进行异或运算,以得到最终的目标密钥。
一方面,所述密码算法类型为SM4国密对称密码算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
依据设定的比特数将所述初始混淆参数划分为多个混淆子参数;
依据所述比特数将所述初始密钥划分为多个初始子密钥;
按照初始子密钥和混淆子参数相邻的方式,对多个所述初始子密钥以及多个所述混淆子参数进行拼接,以得到第一次迭代的混淆密钥。
一方面,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
将所述上一次迭代的混淆密钥中前32比特的初始子密钥和前32比特混淆子参数作为第一混淆子密钥;将所述上一次迭代的混淆密钥中除所述第一混淆子密钥外的剩余数据作为第二混淆子密钥;
将所述第二混淆子密钥与固定参数进行异或运算,以得到第一混淆密钥;其中,所述第一混淆密钥包括第一密钥和第一混淆参数;
利用SM4国密对称密码算法的S盒对所述第一密钥进行非线性变换,以得到第二密钥;
利用SM4国密对称密码算法的S盒的转置对所述第一混淆参数进行非线性变换,以得到第二混淆参数;
将所述第二密钥、所述第二密钥左移13比特后的数据和所述第二密钥左移23比特后的数据进行异或运算,以得到第三密钥;
将所述第二混淆参数、所述第二混淆参数左移13比特后的数据和所述第二混淆参数左移23比特后的数据进行异或运算,以得到第三混淆参数;
将所述第三密钥、所述第三混淆参数以及所述第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥;
将所述第二混淆子密钥与所述本次迭代的轮混淆密钥拼接作为本次迭代的混淆密钥。
一方面,所述将所述第三密钥、所述第三混淆参数以及所述第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥包括:
将所述第三密钥与所述第一混淆子密钥包括的初始子密钥进行异或运算,以得到本次迭代的轮密钥;
将所述第三混淆参数与所述第一混淆子密钥包括的混淆子参数进行异或运算,以得到本次迭代的混淆参数。
一方面,所述密码算法类型为三重数据加密算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
从所述初始密钥中提取出密钥位对应的有效密钥;
从所述初始混淆参数中提取出与所述有效密钥的位数相同的有效混淆参数;
将所述有效密钥与所述有效混淆参数合并作为第一次迭代的混淆密钥。
一方面,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对所述第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的所述第二有效密钥进行置换,以得到每次迭代的轮密钥;
基于所述第一置换数组的逆序数组,对上一次迭代的混淆密钥中包括的有效混淆参数进行置换,以得到第一有效混淆参数;对所述第一有效混淆参数循环右移,依次得到每次迭代的第二有效混淆参数;基于所述第二置换数组的逆序数组,依次对每次迭代的所述第二有效混淆参数进行置换,以得到每次迭代的混淆参数。
一方面,所述密码算法类型为三重数据加密算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
从所述初始混淆参数中选取与所述初始密钥的奇偶校验位位数相同的随机数;
将所述初始密钥中奇偶校验位的数据替换为所述随机数,将替换后的初始密钥作为第一次迭代的混淆密钥。
一方面,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对所述第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的所述第二有效密钥进行置换,以得到每次迭代的轮密钥;
将每次迭代的所述轮密钥中奇偶校验位的数据替换为随机数,将替换后的轮密钥作为每次迭代的混淆密钥。
一方面,所述密码算法类型为高级加密标准算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
将所述初始混淆参数和所述初始密钥合并作为第一次迭代的混淆密钥。
一方面,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
根据所述高级加密标准算法的密钥长度,确定出单个轮密钥所占用的数组个数;根据分组长度确定出每次迭代的分组个数;
判断当前数组值是否为所述数组个数的整数倍;其中,初始状态下所述当前数组值为零;
在所述当前数组值为所述数组个数的整数倍的情况下,将相邻的混淆密钥子数据依次进行循环移位和S盒变换,以得到第一中间混淆密钥子数据;将所述第一中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;其中,所述前向混淆密钥子数据为所述相邻的混淆密钥子数据的前向N K 个位置的混淆密钥子数据;N K 表示数组个数;
在所述当前数组值不为所述数组个数的整数倍的情况下,判断所述当前数组值是否大于分组限值并且所述当前数组值为4的整数倍;
在所述当前数组值大于分组限值并且所述当前数组值为4的整数倍的情况下,将相邻的混淆密钥子数据进行S盒变换,以得到第二中间混淆密钥子数据;将所述第二中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
在所述当前数组值小于或等于分组限值,或者所述当前数组值不为4的整数倍的情况下,将相邻的混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
每得到当前数组的混淆密钥子数据,则将当前数组值加一,直至所述当前数组值达到数组总数,结束生成混淆密钥的操作。
一方面,在所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥之前,还包括:
判断所述初始混淆参数与密钥库是否匹配;其中,所述密钥库包含弱密钥和半弱密钥;
在所述初始混淆参数与密钥库匹配的情况下,重新生成与所述密码算法类型所对应的密钥长度相同的初始混淆参数,直至得到与所述密钥库不匹配的初始混淆参数。
一方面,在所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥之前,还包括:
在得到与所述密钥库不匹配的初始混淆参数的情况下,统计所述初始混淆参数的子序列数量;其中,所述初始混淆参数中前后比特相同的数据作为一个子序列;
依据所述子序列数量和所述初始混淆参数中非零值的占比,确定出所述初始混淆参数的分布值;
在所述分布值满足标准正态分布的情况下,执行所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
一方面,还包括:
在所述分布值满足标准正态分布的情况下,利用余误差函数对所述初始混淆参数的分布值进行处理,以得到所述初始混淆参数的通过率;
在所述初始混淆参数的通过率大于或等于设定的通过阈值的情况下,执行所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
一方面,所述依据所述子序列数量和所述初始混淆参数中非零值的占比,确定出所述初始混淆参数的分布值包括:
调用分布值计算公式,对所述子序列数量和所述初始混淆参数中非零值的占比进行处理,以得到所述初始混淆参数的分布值;所述分布值计算公式为:
其中,S表示分布值,Q n 表示子序列数量,表示所述初始混淆参数中非零值的占比,n表示所述初始混淆参数的总比特数。
一方面,还包括:
判断接收到的读取密钥指令是否符合设定的读取指令格式;
在所述读取密钥指令符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入高电平,以使得密钥通过所述三态缓冲器的输出引脚输出到芯片外部设备;其中,控制器与所述三态缓冲器的使能引脚连接,所述三态缓冲器的输入引脚与用于存储密钥的存储模块连接,所述三态缓冲器的输出引脚与外部引脚连接;
在所述读取密钥指令不符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入低电平,以阻断密钥输出到芯片外部设备。
一方面,还包括:
判断接收到的读取密钥指令是否符合设定的读取指令格式;
在所述读取密钥指令符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入高电平,以使得数据选择器选择输出密钥至芯片外部设备;其中,控制器与所述数据选择器的使能引脚连接,所述数据选择器的第一路输入引脚与用于存储密钥的存储模块连接,所述数据选择器的第二路输入引脚与控制器中用于存储混淆参数的模块引脚连接,所述数据选择器的输出引脚与外部引脚连接;
在所述读取密钥指令不符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入低电平,以使得数据选择器选择输出混淆参数至芯片外部设备。
一方面,还包括:
每检测到一次所述读取密钥指令不符合设定的读取指令格式的情况,则将统计次数加一;
判断所述统计次数是否大于或等于设置的次数阈值;
在所述统计次数大于或等于设置的次数阈值的情况下,擦除存储模块中存储的密钥。
本发明实施例还提供了一种数据加解密装置,包括生成单元、构造单元、混淆处理单元、获取单元和加解密单元;
所述生成单元,用于在获取到携带有密码算法类型的密钥生成指令的情况下,生成与所述密码算法类型所对应的密钥长度相同的初始混淆参数;
所述构造单元,用于根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥;
所述混淆处理单元,用于按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,直至迭代次数达到设定阈值,将所述初始密钥以及每次迭代对应的密钥存储至设定的存储空间;其中,所述本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥;所述混淆规则由所述密钥生成规则变换得到;
所述获取单元,用于在获取到数据加解密指令的情况下,从所述存储空间中获取对应的目标密钥;
所述加解密单元,用于利用所述目标密钥对待处理数据进行加解密处理。
一方面,所述获取单元包括判断子单元、读取子单元、生成子单元;
所述判断子单元,用于在获取到数据加解密指令的情况下,判断所述数据加解密指令是否与设定的指令格式匹配;
所述读取子单元,用于在所述数据加解密指令与设定的指令格式匹配的情况下,从所述存储空间中读取与所述数据加解密指令携带的密码算法类型匹配的目标密钥;
所述生成子单元,用于在所述加解密指令与设定的指令格式不匹配的情况下,从所述存储空间中读取与所述数据加解密指令携带的密码算法类型匹配的目标密钥;根据所述目标密钥及其对应的混淆参数,生成最终的目标密钥。
一方面,所述生成子单元用于将所述目标密钥及其对应的混淆参数进行异或运算,以得到最终的目标密钥。
一方面,所述密码算法类型为SM4国密对称密码算法;所述构造单元包括划分子单元和拼接子单元;
所述划分子单元,用于依据设定的比特数将所述初始混淆参数划分为多个混淆子参数;依据所述比特数将所述初始密钥划分为多个初始子密钥;
所述拼接子单元,用于按照初始子密钥和混淆子参数相邻的方式,对多个所述初始子密钥以及多个所述混淆子参数进行拼接,以得到第一次迭代的混淆密钥。
一方面,所述混淆处理单元包括第一作为子单元、第一运算子单元、第一变换子单元、第二变换子单元、第二运算子单元、第三运算子单元、第四运算子单元和第二作为子单元;
所述第一作为子单元,用于将所述上一次迭代的混淆密钥中前32比特的初始子密钥和前32比特混淆子参数作为第一混淆子密钥;将所述上一次迭代的混淆密钥中除所述第一混淆子密钥外的剩余数据作为第二混淆子密钥;
所述第一运算子单元,用于将所述第二混淆子密钥与固定参数进行异或运算,以得到第一混淆密钥;其中,所述第一混淆密钥包括第一密钥和第一混淆参数;
所述第一变换子单元,用于利用SM4国密对称密码算法的S盒对所述第一密钥进行非线性变换,以得到第二密钥;
所述第二变换子单元,用于利用SM4国密对称密码算法的S盒的转置对所述第一混淆参数进行非线性变换,以得到第二混淆参数;
所述第二运算子单元,用于将所述第二密钥、所述第二密钥左移13比特后的数据和所述第二密钥左移23比特后的数据进行异或运算,以得到第三密钥;
所述第三运算子单元,用于将所述第二混淆参数、所述第二混淆参数左移13比特后的数据和所述第二混淆参数左移23比特后的数据进行异或运算,以得到第三混淆参数;
所述第四运算子单元,用于将所述第三密钥、所述第三混淆参数以及所述第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥;
所述第二作为子单元,用于将所述第二混淆子密钥与所述本次迭代的轮混淆密钥拼接作为本次迭代的混淆密钥。
一方面,所述第四运算子单元用于将所述第三密钥与所述第一混淆子密钥包括的初始子密钥进行异或运算,以得到本次迭代的轮密钥;
将所述第三混淆参数与所述第一混淆子密钥包括的混淆子参数进行异或运算,以得到本次迭代的混淆参数。
一方面,所述密码算法类型为三重数据加密算法;所述构造单元包括提取子单元、合并子单元;
所述提取子单元,用于从所述初始密钥中提取出密钥位对应的有效密钥;从所述初始混淆参数中提取出与所述有效密钥的位数相同的有效混淆参数;
所述合并子单元,用于将所述有效密钥与所述有效混淆参数合并作为第一次迭代的混淆密钥。
一方面,所述混淆处理单元包括第一置换子单元、循环左移子单元、第二置换子单元、第三置换子单元、循环右移子单元、第四置换子单元;
所述第一置换子单元,用于基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;
所述循环左移子单元,用于对所述第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;
所述第二置换子单元,用于基于设定的第二置换数组,依次对每次迭代的所述第二有效密钥进行置换,以得到每次迭代的轮密钥;
所述第三置换子单元,用于基于所述第一置换数组的逆序数组,对上一次迭代的混淆密钥中包括的有效混淆参数进行置换,以得到第一有效混淆参数;
所述循环右移子单元,用于对所述第一有效混淆参数循环右移,依次得到每次迭代的第二有效混淆参数;
所述第四置换子单元,用于基于所述第二置换数组的逆序数组,依次对每次迭代的所述第二有效混淆参数进行置换,以得到每次迭代的混淆参数。
一方面,所述密码算法类型为三重数据加密算法;所述构造单元包括选取子单元和替换子单元;
所述选取子单元,用于从所述初始混淆参数中选取与所述初始密钥的奇偶校验位位数相同的随机数;
所述替换子单元,用于将所述初始密钥中奇偶校验位的数据替换为所述随机数,将替换后的初始密钥作为第一次迭代的混淆密钥。
一方面,所述混淆处理单元用于基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对所述第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的所述第二有效密钥进行置换,以得到每次迭代的轮密钥;将每次迭代的所述轮密钥中奇偶校验位的数据替换为随机数,将替换后的轮密钥作为每次迭代的混淆密钥。
一方面,所述密码算法类型为高级加密标准算法;
所述构造单元包括:
将所述初始混淆参数和所述初始密钥合并作为第一次迭代的混淆密钥。
一方面,所述混淆处理单元包括确定子单元、第一判断子单元、第三变换子单元、第二判断子单元、第四变换子单元、异或子单元和累加子单元;
所述确定子单元,用于根据所述高级加密标准算法的密钥长度,确定出单个轮密钥所占用的数组个数;根据分组长度确定出每次迭代的分组个数;
所述第一判断子单元,用于判断当前数组值是否为所述数组个数的整数倍;其中,初始状态下所述当前数组值为零;
所述第三变换子单元,用于在所述当前数组值为所述数组个数的整数倍的情况下,将相邻的混淆密钥子数据依次进行循环移位和S盒变换,以得到第一中间混淆密钥子数据;将所述第一中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;其中,所述前向混淆密钥子数据为所述相邻的混淆密钥子数据的前向N K 个位置的混淆密钥子数据;N K 表示数组个数;
所述第二判断子单元,用于在所述当前数组值不为所述数组个数的整数倍的情况下,判断所述当前数组值是否大于分组限值并且所述当前数组值为4的整数倍;
所述第四变换子单元,用于在所述当前数组值大于分组限值并且所述当前数组值为4的整数倍的情况下,将相邻的混淆密钥子数据进行S盒变换,以得到第二中间混淆密钥子数据;将所述第二中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
所述异或子单元,用于在所述当前数组值小于或等于分组限值,或者所述当前数组值不为4的整数倍的情况下,将相邻的混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
所述累加子单元,用于每得到当前数组的混淆密钥子数据,则将当前数组值加一,直至所述当前数组值达到数组总数,结束生成混淆密钥的操作。
一方面,还包括密钥判断单元;
所述密钥判断单元,用于判断所述初始混淆参数与密钥库是否匹配;其中,所述密钥库包含弱密钥和半弱密钥;在所述初始混淆参数与密钥库匹配的情况下,触发所述生成单元重新生成与所述密码算法类型所对应的密钥长度相同的初始混淆参数,直至得到与所述密钥库不匹配的初始混淆参数。
一方面,还包括统计单元和确定单元;
所述统计单元,用于在得到与所述密钥库不匹配的初始混淆参数的情况下,统计所述初始混淆参数的子序列数量;其中,所述初始混淆参数中前后比特相同的数据作为一个子序列;
所述确定单元,用于依据所述子序列数量和所述初始混淆参数中非零值的占比,确定出所述初始混淆参数的分布值;在所述分布值满足标准正态分布的情况下,触发所述构造单元执行所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
一方面,还包括通过率确定单元;
所述通过率确定单元,用于在所述分布值满足标准正态分布的情况下,利用余误差函数对所述初始混淆参数的分布值进行处理,以得到所述初始混淆参数的通过率;在所述初始混淆参数的通过率大于或等于设定的通过阈值的情况下,触发所述构造单元执行所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
一方面,所述确定单元用于调用分布值计算公式,对所述子序列数量和所述初始混淆参数中非零值的占比进行处理,以得到所述初始混淆参数的分布值;所述分布值计算公式为:
其中,S表示分布值,Q n 表示子序列数量,表示所述初始混淆参数中非零值的占比,n表示所述初始混淆参数的总比特数。
一方面,还包括第一格式判断单元、第一输入单元和第二输入单元;
所述格式判断单元,用于判断接收到的读取密钥指令是否符合设定的读取指令格式;
所述第一输入单元,用于在所述读取密钥指令符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入高电平,以使得密钥通过所述三态缓冲器的输出引脚输出到芯片外部设备;其中,控制器与所述三态缓冲器的使能引脚连接,所述三态缓冲器的输入引脚与用于存储密钥的存储模块连接,所述三态缓冲器的输出引脚与外部引脚连接;
所述第二输入单元,用于在所述读取密钥指令不符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入低电平,以阻断密钥输出到芯片外部设备。
一方面,还包括第二格式判断单元、第三输入单元和第四输入单元;
所述第二格式判断单元,用于判断接收到的读取密钥指令是否符合设定的读取指令格式;
所述第三输入单元,用于在所述读取密钥指令符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入高电平,以使得数据选择器选择输出密钥至芯片外部设备;其中,控制器与所述数据选择器的使能引脚连接,所述数据选择器的第一路输入引脚与用于存储密钥的存储模块连接,所述数据选择器的第二路输入引脚与控制器中用于存储混淆参数的模块引脚连接,所述数据选择器的输出引脚与外部引脚连接;
所述第四输入单元,用于在所述读取密钥指令不符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入低电平,以使得数据选择器选择输出混淆参数至芯片外部设备。
一方面,还包括统计单元、次数判断单元和擦除单元;
所述统计单元,用于每检测到一次所述读取密钥指令不符合设定的读取指令格式的情况,则将统计次数加一;
所述次数判断单元,用于判断所述统计次数是否大于或等于设置的次数阈值;
所述擦除单元,用于在所述统计次数大于或等于设置的次数阈值的情况下,擦除存储模块中存储的密钥。
本发明实施例还提供了一种数据加解密设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述数据加解密方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据加解密方法的步骤。
由上述技术方案可以看出,在获取到携带有密码算法类型的密钥生成指令的情况下,生成与密码算法类型所对应的密钥长度相同的初始混淆参数。根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥。每种密码算法有其对应的密钥生成规则,为了防止侧信道攻击,可以将密钥生成规则变换得到混淆规则,按照密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥,直至迭代次数达到设定阈值,可以结束迭代流程。为了便于后续对密钥的调取使用,可以将初始密钥以及每次迭代对应的密钥存储至设定的存储空间。在获取到数据加解密指令的情况下,从存储空间中获取对应的目标密钥;利用目标密钥对待处理数据进行加解密处理。本发明的有益效果在于,通过在密码算法中加入与密码运算功能无关的逻辑处理,即增加了混淆参数以及对混淆参数处理的混淆规则,在生成密钥阶段可以起到混淆的作用,防止攻击者通过侧信道的途径分析与密钥相关的特征点来获取真实的密钥信息,提高了芯片的安全性。并且整个实现过程不占用额外的硬件电路,只占用少量逻辑资源,因此在不明显增加芯片的面积和成本的同时,实现了对IC芯片的安全防护以保障芯片的数据和功能的安全,保护了芯片厂商的利益。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据加解密方法的流程图;
图2为本发明实施例提供的一种基于数据加解密指令从存储空间中获取对应的目标密钥的方法的流程图;
图3为本发明实施例提供的一种基于SM4国密对称密码算法生成混淆密钥的方法的流程图;
图4为本发明实施例提供的一种SM4国密对称密码算法生成轮混淆密钥的运算逻辑示意图;
图5为本发明实施例提供的一种基于三重数据加密算法生成混淆密钥的方法的流程图;
图6为本发明实施例提供的一种三重数据加密算法生成轮混淆密钥的运算逻辑示意图;
图7为本发明实施例提供的一种采用随机数替换奇偶校验位的方式生成轮混淆密钥的示意图;
图8为本发明实施例提供的一种高级加密标准算法生成混淆密钥的方法的流程图;
图9为本发明实施例提供的一种对初始混淆参数进行验证的方法的流程图;
图10为本发明实施例提供的一种安全隔离装置的连接关系示意图;
图11为本发明实施例提供的另一种安全隔离装置的连接关系示意图;
图12为本发明实施例提供的一种安全芯片对数据进行加解密的状态机逻辑;
图13为本发明实施例提供的一种IC芯片的安全架构图;
图14为本发明实施例提供的一种数据加解密装置;
图15为本发明实施例提供的一种数据加解密设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”,以及与“包括”和“具有”相关的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种数据加解密方法。图1为本发明实施例提供的一种数据加解密方法的流程图,该方法包括:
S101:在获取到携带有密码算法类型的密钥生成指令的情况下,生成与密码算法类型所对应的密钥长度相同的初始混淆参数。
密码算法的类型有多种,包括SM4国密对称密码算法(SM4)、三重数据加密算法(Triple Data Encryption Algorithm,3DES)、高级加密标准算法(Advanced EncryptionStandard,AES)。
不同密码算法所对应的密钥长度有所不同,因此在生成初始混淆参数时,需要根据密码算法类型所对应的密钥长度,生成相同长度的初始混淆参数。
为了便于描述,可以将SM4国密对称密码算法简称为SM4密码算法。例如,SM4密码算法的数据分组长度和密钥长度都是128bit,则可以引入128bit的随机数作为初始混淆参数。
在本发明实施例中,采用随机数作为初始混淆参数。通过随机数生成器生成随机数。随机数生成器可以采用物理噪声源等模块,用于生成真随机数作为密钥、初始向量等密码运算的混淆参数。
S102:根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥。
不同的密码算法所对应的密钥生成方式不同,因此第一次迭代的混淆密钥的构造方式也不同。
以密码算法类型为SM4国密对称密码算法为例,可以依据设定的比特数将初始混淆参数划分为多个混淆子参数;依据比特数将初始密钥划分为多个初始子密钥;按照初始子密钥和混淆子参数相邻的方式,对多个初始子密钥以及多个混淆子参数进行拼接,以得到第一次迭代的混淆密钥。
举例说明,SM4国密对称密码算法的初始密钥Key=(K0,K1,K2,K3),Key是由K0至K3,4个32bit数据组成的128bit数据。引入128bit的随机数R作为初始混淆参数,与Key一起参与轮密钥的计算过程。将R拆分为R0至R3,然后分别附加到K0至K3后面构成扩展为256bit长度的混淆密钥Key’=(K0,R0,K1,R1,K2,R2,K3,R3)。
以密码算法类型为三重数据加密算法为例,可以从初始密钥中提取出密钥位对应的有效密钥;从初始混淆参数中提取出与有效密钥的位数相同的有效混淆参数;将有效密钥与有效混淆参数合并作为第一次迭代的混淆密钥。
举例说明,三重数据加密算法的密钥长度为64bit,假设K0为64bit的初始密钥,64bit的密钥分为8个字节,每个字节的前7bit是密钥位,第8bit是奇偶校验位,因此有效的密钥位实际为56bit。因此可以从64bit的初始密钥中提取出56bit密钥位的数据作为有效密钥;从64bit的随机数中选取56bit随机数作为有效混淆参数。对于有效混淆参数,也可以在一开始生成混淆参数时,就生成56bit的随机数作为有效混淆参数。
以密码算法类型为高级加密标准算法为例,可以将初始混淆参数和初始密钥合并作为第一次迭代的混淆密钥。
举例说明,初始密钥为128bit,则可以生成128bit的随机数作为初始混淆参数。初始密钥为192bit,则可以生成192bit的随机数作为初始混淆参数。初始密钥为256bit,则可以生成256bit的随机数作为初始混淆参数。
S103:按照密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,直至迭代次数达到设定阈值,将初始密钥以及每次迭代对应的密钥存储至设定的存储空间。
其中,本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥;混淆规则由密钥生成规则变换得到。
在IC芯片中可以预先记录不同密码算法所对应的密钥生成规则和混淆规则。
在本发明实施例中,可以采用随机数作为混淆参数。
通过在密钥生成过程中加入随机数,可以起到混淆的作用,即使攻击者非法获取到密钥信息,由于真实的密钥是和随机数参杂在一起的数据,因此攻击者也无法获取到真实的密钥。
不同密码算法所对应的密钥生成规则有所不同,在实际应用中混淆规则可以采用与密钥生成规则相同的规则,采用混淆规则对生成的混淆参数进行处理。考虑到密钥生成规则属于已知信息,因此为了增加混淆的强度,可以对密钥生成规则进行变换从而得到混淆规则。
例如,对于SM4密码算法的密钥生成规则包括密钥的异或运算、S盒变换、循环左移等操作,相应的,混淆规则可以把S盒修改为S盒的转置。对于3DES算法的密钥生成规则包括数组置换、循环左移等操作,相应的,混淆规则可以把数组置换中的数组修改为数组的逆序数组,基于逆序数组进行置换;将循环左移修改为循环右移。
不同的密码算法有其各自对应的迭代次数,基于当前所选取的密码算法的类型,可以确定出迭代次数。每次迭代可以获取到本次迭代的混淆密钥,混淆密钥可以包括本次迭代的混淆参数和本次迭代的轮密钥。其中,轮密钥为对数据进行加解密处理的真实密钥。
S104:在获取到数据加解密指令的情况下,从存储空间中获取对应的目标密钥。
在实际应用中,针对于每种密码算法,可以将每次迭代得到的轮密钥存储至设定的存储空间中。在获取到数据加解密指令的情况下,可以根据数据加解密指令所选择的密码算法类型,从存储空间中读取对应的密钥,为了便于和存储空间中其它密码算法的密钥相区分,可以将数据加解密指令所选择的密码算法类型对应的密钥称作目标密钥。
S105:利用目标密钥对待处理数据进行加解密处理。
在获取到目标密钥后,便可以基于目标密钥完成数据的加解密处理,数据加解密处理过程属于常规操作,在此不再赘述。
在本发明实施例中,为了防止逻辑攻击,可以对指令的格式进行验证。图2为本发明实施例提供的一种基于数据加解密指令从存储空间中获取对应的目标密钥的方法的流程图,该方法包括:
S201:在获取到数据加解密指令的情况下,判断数据加解密指令是否与设定的指令格式匹配。
设定的指令格式可以包括正确的数据加解密指令格式。
在数据加解密指令与设定的指令格式匹配的情况下,说明数据加解密指令属于正确的指令,此时可以执行S202;在加解密指令与设定的指令格式不匹配的情况下,说明数据加解密指令属于不正确的指令,极有可能是攻击者为了非法获取密钥从而仿冒的指令,此时可以执行S203。
S202:从存储空间中读取与数据加解密指令携带的密码算法类型匹配的目标密钥。
在数据加解密指令与设定的指令格式匹配的情况下,可以直接从存储空间中读取与数据加解密指令携带的密码算法类型匹配的目标密钥。
S203:从存储空间中读取与数据加解密指令携带的密码算法类型匹配的目标密钥;根据目标密钥及其对应的混淆参数,生成最终的目标密钥。
在加解密指令与设定的指令格式不匹配的情况下,在从存储空间中读取与数据加解密指令携带的密码算法类型匹配的目标密钥之后,为了防止密钥被攻击者非法获取,此时可以根据目标密钥及其对应的混淆参数,生成最终的目标密钥。也即向发送数据加解密指令的设备反馈掺杂了混淆参数的目标密钥,即使攻击者获取到了目标密钥,也无法从目标密钥中确定出哪些信息属于真实的密钥,哪些信息属于混淆参数。
在本发明实施例中,可以将目标密钥及其对应的混淆参数进行异或运算,以得到最终的目标密钥。
通过对数据加解密指令的指令格式进行验证,可以有效的识别逻辑攻击行为,从而在具有逻辑攻击风险时,输出掺杂了混淆参数的目标密钥,可以保证真实密钥不被非法获取,提升了密钥的安全性,保证了***上数据的安全。
图3为本发明实施例提供的一种基于SM4国密对称密码算法生成混淆密钥的方法的流程图,该方法包括:
S301:将上一次迭代的混淆密钥中前32比特的初始子密钥和前32比特混淆子参数作为第一混淆子密钥;将上一次迭代的混淆密钥中除第一混淆子密钥外的剩余数据作为第二混淆子密钥。
SM4密码算法的数据分组长度和密钥长度都是128bit,每次加密/解密都需要经过32轮迭代运算,每一轮运算时使用一个轮密钥rki(i= 0,1,2,......,31),rki的长度为32bit。
轮密钥由128bit的初始密钥经过密钥扩展方式生成,也需要经过32轮运算。为了在密钥运算过程中防止侧信道攻击,加入了密码运算废逻辑,即与密码运算无关的逻辑,起到混淆作用,防止攻击者通过侧信道分析的方法获取密钥。
初始密钥Key=(K0,K1,K2,K3),是由K0~K3,4个32bit数据组成的128bit数据,K4~K35是经过32轮密钥扩展后生成的新的密钥。引入128bit的随机数R作为混淆参数,与Ki一起参与轮密钥计算过程。混淆参数经过每一轮运算后成为Ri(i=4,5,......,35)。
按照32bit的长度将R拆分为R0~R3后,分别附加到K0~K3后面构成扩展为256bit长度的初始混淆密钥Key’=(K0,R0,K1,R1,K2,R2,K3,R3)。在本发明实施例中,可以将(K0,R0)作为第一混淆子密钥,将(K1,R1)、(K2,R2)和(K3,R3)作为第二混淆子密钥。
S302:将第二混淆子密钥与固定参数进行异或运算,以得到第一混淆密钥。
其中,第一混淆密钥包括第一密钥和第一混淆参数。
固定参数为32bit的已知数据,可以采用CKi表示,其中下标i表示为第i轮迭代。
为了便于描述,可以将第一密钥采用A表示,第一混淆参数采用NA表示。将第二混淆子密钥与固定参数进行异或运算,可以得到第一混淆密钥(A,NA)。
结合上述举例,第一混淆密钥:
在每一轮中(Ki+1,Ri+1)、(Ki+2,Ri+2)、(Ki+3,Ri+3)与CKi进行异或后成为64bit的数据(A,NA),即:
,其中A和NA都是32bit。
S303:利用SM4国密对称密码算法的S盒对第一密钥进行非线性变换,以得到第二密钥。
SM4密码算法对应的S盒属于已知信息。S盒以由16行×16列的矩阵构成,矩阵中的每个数据是8bit。为了便于描述,可以将经由S盒变换得到的第二密钥采用B表示。
根据S盒对第一密钥A进行非线性变换,以得到第二密钥B。
S304:利用SM4国密对称密码算法的S盒的转置对第一混淆参数进行非线性变换,以得到第二混淆参数。
为了便于描述,可以将经由S盒的转置变换得到的第二混淆参数采用NB表示。根据S盒的转置即ST对第一混淆参数NA进行非线性变换,以得到第二混淆参数NB。
S305:将第二密钥、第二密钥左移13比特后的数据和第二密钥左移23比特后的数据进行异或运算,以得到第三密钥。
为了便于描述,可以将第三密钥采用C表示。
其中,B<<13表示第二密钥左移13比特后的数据,B<<23表示第二密钥左移23比特后的数据。
S306:将第二混淆参数、第二混淆参数左移13比特后的数据和第二混淆参数左移23比特后的数据进行异或运算,以得到第三混淆参数。
为了便于描述,可以将第三混淆参数采用NC表示。
其中,NB<<13表示第二混淆参数左移13比特后的数据,NB<<23表示第二混淆参数左移23比特后的数据。
S307:将第三密钥、第三混淆参数以及第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥。
在实际应用中,可以将第三密钥与第一混淆子密钥包括的初始子密钥进行异或运算,以得到本次迭代的轮密钥。
举例说明,C与Ki异或后形成Ki+4,即。每次迭代得到的轮密钥rki=Ki+4(i=0,1,2,......,31)。
将第三混淆参数与第一混淆子密钥包括的混淆子参数进行异或运算,以得到本次迭代的混淆参数。
举例说明,NC与Ri异或后形成Ri+4,即。每次迭代得到的混淆参数Ri+4(i=0,1,2,......,31)。
S308:将第二混淆子密钥与本次迭代的轮混淆密钥拼接作为本次迭代的混淆密钥。
在实际应用中,每次迭代的轮混淆密钥可以采用(Ki+4,Ri+4)(i= 0,1,2,......,31)表示。
图4为本发明实施例提供的一种SM4国密对称密码算法生成轮混淆密钥的运算逻辑示意图,在每一轮中(Ki+1,Ri+1)、(Ki+2,Ri+2)、(Ki+3,Ri+3)与CKi异或后成为64bit的数据(A,NA)。A经过S盒非线性变换后成为数据B,即S(A[31..0])=B[31..0]。
S盒中行/列从0开始计数,范围是0~15,共16行、16列。16进制的“F”为15,即最后一行。例如,A[7..0]=0xF2对应于矩阵中第15行和第2列,的值0x7D,则经过S盒变换后成为B[7..0]= S(A[7..0])=0x7D,若A[15..8]=0x21,则经过S盒变换后成为B[15..8]=0x42,依次类推。之后对B循环移位后再进行异或运算形成C。最后C与Ki异或后形成Ki+4
NA的处理过程与A类似,经过ST盒非线性变换后成为数据NB,之后对NB循环移位后再进行异或运算形成NC,最后NC与Ri异或后形成Ri+4
图4中Ri+4与Ki+4构成了经过混淆扩展后的轮混淆密钥rki’= (Ki+4,Ri+4)(0,1,2,......,31),rki’为64bit。
在本发明实施例中,引入的随机数R、对S盒进行转置形成ST盒、并进行32轮迭代计算的过程,构成了密码运算的废逻辑。SM4国密对称密码算法在每一轮的加密/解密过程中使用包含了混淆参数的轮密钥作为轮混淆密钥,能够起到混淆的作用,防止侧信道攻击,使攻击者不能探测到实际的密钥。
图5为本发明实施例提供的一种基于三重数据加密算法生成混淆密钥的方法的流程图,该方法包括:
S501:基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的第二有效密钥进行置换,以得到每次迭代的轮密钥。
3DES是将DES算法运算了3次,以提高安全性。DES算法的密钥长度为64bit,经过置换操作、循环左移等变换,产生出16个子密钥,子密钥的长度为48bit。为了防止测信道攻击,在子密钥运算过程中加入了废逻辑。
为了便于描述,可以采用K0表示初始密钥,C0表示第一有效密钥,Ci表示第i轮迭代得到的第二有效密钥。第一置换数组包括两个数组,分布为数组a和数组b。第二置换数组可以采用e表示。Ki表示第i轮迭代得到的轮密钥。其中,数组a、数组b和数组e属于已知信息。
图6为本发明实施例提供的一种三重数据加密算法生成轮混淆密钥的运算逻辑示意图,K0为64bit的初始密钥,64bit的密钥分为8个字节,每个字节的前7bit是密钥位,第8bit是奇偶校验位,因此有效的密钥位实际为56bit。第一置换数组即置换1的作用是对56bit密钥位打乱重排,且将前28bit作为C,后28bit作为D。按照数组a对C进行置换得到C0,按照数组b对D进行置换得到D0
a[28]={57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36},即C0中的各bit依次为K0中的第57,49,…,36bit位。
b[28]={63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4},即D0中的各bit依次为K0中的第63,55,…,4bit位。
C0和D0经过循环左移一位后成为C1和D1,C1和D1合并成1个56bit的数据,之后置换2按照数组e[48]对该56bit数据进行选择重组,形成一个48bit的轮密钥K1。在下一轮迭代时,可以直接对C1和D1经过循环左移一位后成为C2和D2,C2和D2合并成1个56bit的数据,之后置换2按照数组e[48]对该56bit数据进行选择重组,形成一个48bit的轮密钥K2,依次类推,可以得到后续每一轮迭代的轮密钥K3~K16。由于涉及循环左移,因此在图3中循环左移后的数据采用Ci和Di表示;同理,由于涉及循环右移,因此在图3中循环右移后的数据采用NCi和NDi表示。
S502:基于第一置换数组的逆序数组,对上一次迭代的混淆密钥中包括的有效混淆参数进行置换,以得到第一有效混淆参数;对第一有效混淆参数循环右移,依次得到每次迭代的第二有效混淆参数;基于第二置换数组的逆序数组,依次对每次迭代的第二有效混淆参数进行置换,以得到每次迭代的混淆参数。
为了防止测信道攻击,引入64bit的随机数R0参与每一轮密钥的计算过程,计算过程与计算子密钥K1~K16的过程一致,所不同的是数组a-1[28],b-1[28],e-1[48]分别对应数组a[28],b[28],e[48]的逆序数组,即数组中的数据是倒序排列的。另外,循环操作为循环右移。经过逆置换及循环操作后,生成48bit的随机数Ri
R0为64bit的初始混淆参数,根据有效的密钥位实际为56bit,因此可以从初始有效混淆参数中选取56bit数据作为有效混淆参数,且将前28bit作为NC,后28bit作为ND。按照数组a的逆序数组对NC进行置换得到NC0,按照数组b的逆序数组对ND进行置换得到ND0
NC0和ND0经过循环右移一位后成为NC1和ND1,NC1和ND1合并成1个56bit的数据,之后逆置换2按照数组e-1[48]对该56bit数据进行选择重组,形成一个48bit的混淆参数R1。在下一轮迭代时,可以直接对NC1和ND1经过循环右移一位后成为NC2和ND2,NC2和ND2合并成1个56bit的数据,之后逆置换2按照数组e-1[48]对该56bit数据进行选择重组,形成一个48bit的混淆参数R2,依次类推,可以得到后续每一轮迭代的混淆参数R3~R16
Ri的生成过程作为密码运算的废逻辑,Ri与Ki拼接在一起发送给3DES密码算法作为每一轮的轮混淆密钥,能够起到混淆的作用。
在本发明实施例中,除了按照上述图6所示的轮混淆密钥的运算逻辑生成轮混淆密钥外,也可以采用随机数替换奇偶校验位的方式生成轮混淆密钥。
在实际应用中,可以基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的第二有效密钥进行置换,以得到每次迭代的轮密钥;将每次迭代的轮密钥中奇偶校验位的数据替换为随机数,将替换后的轮密钥作为每次迭代的混淆密钥。
图7为本发明实施例提供的一种采用随机数替换奇偶校验位的方式生成轮混淆密钥的示意图,DES的64bit密钥分为8个字节,每个字节的前7位是真正的密钥位,第8位是奇偶校验位,如图7所示。奇偶校验位是从前7位密钥计算得出的,因而不起密钥的作用,只是用于检测密钥中是否有错误,确保密钥的完整性。因此可以将密钥中的奇偶校验位进行替换,并不会影响密码算法运算的正确性。将奇偶校验位K[0]、K[8]、K[16]、K[24]、K[32]、K[40]、K[48]、K[56]用一个8bit的随机数替换为R[0]、R[8],…,R[56]。替换后形成一个新的密钥K’[63..0]作为三重数据加密算法的密钥,能够起到混淆作用,且不影响密码运算的正确性。该实现方式不占用额外的硬件电路,从而节省芯片的硬件逻辑资源。
图8为本发明实施例提供的一种高级加密标准算法生成混淆密钥的方法的流程图,该方法包括:
S801:根据高级加密标准算法的密钥长度,确定出单个轮密钥所占用的数组个数;根据分组长度确定出每次迭代的分组个数。
AES算法的圈密钥轮密钥是由用户密钥产生得到的,圈密钥的比特总数为数据分组长度与圈数加1的乘积。例如,对于128bit的分组长度和10圈迭代,圈密钥的总长度为128×(10+1)=1408bit。
轮密钥的生成包括密钥扩展和轮密钥选择。首先将用户密钥扩展为一个扩展密钥,再从扩展密钥中选出轮密钥:第一个轮密钥由扩展密钥中的前Nb个32bit字组成,第二个圈密钥由接下来的Nb个字组成,以此类推。其中,Nb表示分组个数。Nb是数据分组长度除以32,例如,分组长度为128bit时,Nb=128/32=4。
在本发明实施例中,可以采用Nk表示单个轮密钥所占用的数组个数。Nk是密钥长度除以32,例如,密钥长度为128bit时,Nk=128/32=4。
S802:判断当前数组值是否为数组个数的整数倍。
其中,初始状态下当前数组值为零。
在实际应用中,可以用数组W[Nb×(Nr+1)]存储扩展密钥即轮密钥,数组W中的每个数据的长度为32bit。
以Nb=4、Nk=4为例,轮密钥1由W[4]~W[7]构成,轮密钥2由W[8]~W[11]构成,依次类推,轮密钥10由W[40]~W[43]构成。
将初始密钥和每次迭代获取的轮密钥合并作为用户密钥,初始密钥K包含在数组W最开始的Nk个数据中。Nr表示迭代的圈数(轮数),Nr由Nb和Nk共同决定,例如,当Nb=4,Nk=4时,Nr=10。
在当前数组值为数组个数的整数倍的情况下,执行S803;在当前数组值不为数组个数的整数倍的情况下,执行S804。
S803:将相邻的混淆密钥子数据依次进行循环移位和S盒变换,以得到第一中间混淆密钥子数据;将第一中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据。
其中,前向混淆密钥子数据为相邻的混淆密钥子数据的前向N K 个位置的混淆密钥子数据;N K 表示数组个数;
在初始状态下,可以将初始混淆参数和初始密钥合并作为第一次迭代的混淆密钥。
数组W存储扩展密钥,最前面的Nk个数据由初始密钥K填充。
一个轮密钥所占用多个数组,因此可以将每个数组中记录的数据称作轮密钥子数据。混淆密钥中包括轮密钥和混淆参数,本发明实施例中提及的混淆密钥子数据包括轮密钥子数据和混淆参数子数据。轮密钥和混淆参数的生成方式类似,接下来将以轮密钥的生成为例展开介绍。
针对于上一次得到的数组W[i],如果i是Nk的整数倍,需要对W[i-1]进行循环左移(Rotl操作)和S盒变换(S_box操作)。当前数组的W[i]等于变换之后的数据W[i-1]与Nk个位置之前的数据W[i-Nk]进行异或。
对于混淆参数子数据而言,可以采用循环左移(Rotl操作)和S盒变换的处理方式,也可以采用循环右移(Rotr操作)和S盒逆变换(ST_box操作)的处理方式。
S804:判断当前数组值是否大于分组限值并且当前数组值为4的整数倍。
在当前数组值大于分组限值并且当前数组值为4的整数倍的情况下,执行S805;在当前数组值小于或等于分组限值,或者当前数组值不为4的整数倍的情况下,执行S806。
S805:将相邻的混淆密钥子数据进行S盒变换,以得到第二中间混淆密钥子数据;将第二中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据。
分组限值的取值可以依据AES算法的密钥长度设置,例如分组限值可以设置为6。
时,如果i是4的整数倍,则先将W[i-1]进行S盒变换。当前数组的W[i]等于变换之后的数据W[i-1]与Nk个位置之前的数据W[i-Nk]进行异或。
S806:将相邻的混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据。
结合上述举例,当时,则可以直接将W[i-1]与Nk个位置之前的数据W[i-Nk]进行异或运算,从而将运行结果作为当前数组的W[i]。
S807:每得到当前数组的混淆密钥子数据,则将当前数组值加一,直至当前数组值达到数组总数,结束生成混淆密钥的操作。
数组总数为Nb×(Nr+1)。
在实际应用中,每得到当前数组的混淆密钥子数据,则将当前数组值加一,然后返回S802,直至当时,说明已经生成所需的所有轮密钥,此时可以结束生成混淆密钥的操作。
轮密钥i由W[Nb×i]到W[Nb×(i+1)-1]的数据组成。例如,对于Nb=4、Nk=4的情况,圈密钥1由W[4]~W[7]构成,圈密钥2由W[8]~W[11]构成,…,圈密钥10由W[40]~W[43]构成。
当用户在芯片的I/O接口输入正确的加解密指令后,启动正确的AES加密算法,对用户密钥(128bit/192bit/256bit)进行密钥扩展后对128bit明文数据进行加密及迭代等操作,直到生成正确的128bit密文数据。
当攻击者通过芯片I/O接口进行尝试输入加解密指令以得到密钥信息的逻辑攻击时,由于不知道正确的加解密指令,一旦输入错误的指令后,AES算法启动废逻辑运算过程,生成一个128bit、192bit或256bit的随机数,之后对密钥进行扩展;在密码算法迭代过程中用经过逆变换的虚假S盒进行非线性运算,最终生成错误的密文数据。
在本发明实施例中,为了在密钥扩展过程中防止侧信道攻击,对处理流程进行改进,采用随机数R作为混淆参数来替换初始密钥K,R同样包括Nk个数据。为了提升混淆效果,对于混淆参数的处理可以采用S盒逆变换和循环右移,其余处理流程可以按照轮密钥的处理流程执行。通过对随机数进行扩展的方式,使得生成的混淆参数可以作为伪密钥起到混淆作用,防止侧信道攻击。
由于DES算法本身存在一定的设计缺陷,存在弱密钥和半弱密钥。正常密钥的操作是对明文进行加密得到密文后,对密文进行解密才能得到明文,即P=Dk(Ek(P))。弱密钥的操作是对明文进行加密形成密文后,不对密文进行解密,而是利用该弱密钥再次对密文进行加密后会得到明文,即:P=Ek(Ek(P))。另外还存在6对半弱密钥k1、k2(),使用半弱密钥对相同的明文进行加密后,会得到相同的密文,即Ek1(P)=Ek2(P)。而正常的密钥是对于任意2个不同的密钥/>,对同一明文加密会得到不同的密文,即/>
在生成随机数作为DES的密钥时,若生成的随机数为DES的弱密钥或半弱密钥,对数据的加密过程是非安全的,容易被攻击者分析和解密。因此,在控制器中加入随机数比对功能,对获取的随机数与弱密钥/半弱密钥值进行比对,当比对一致时将随机数丢弃,令随机数生成模块重新生成随机数,直到与弱密钥/半弱密钥值比对不一致以及符合随机性要求为止,从而降低安全风险。DES具体的弱密钥和半弱密钥值如下:
4个弱密钥值:0101010101010101,1F1F1F1F0E0E0E0E,E0E0E0E0F1F1F1F1,FEFEFEFEFEFEFEFE。
6对半弱密钥值:
(1)01FE01FE01FE01FE,FE01FE01FE01FE01。
(2)1FE01FE00EF10EF1,E01FE01FF10EF10E。
(3)01E001E001F101F1,E001E001F101F101。
(4)1FFE1FFE0EFE0EFE,FE1FFE1FFE0EFE0E。
(5)011F011F010E010E,1F011F010E010E01。
(6)E0FEE0FEF1FEF1FE,FEE0FEE0FEF1FEF1。
在本发明实施例中,在根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥之前,可以判断初始混淆参数与密钥库是否匹配;其中,密钥库包含弱密钥和半弱密钥。
在初始混淆参数与密钥库匹配的情况下,重新生成与密码算法类型所对应的密钥长度相同的初始混淆参数,直至得到与密钥库不匹配的初始混淆参数。
图9为本发明实施例提供的一种对初始混淆参数进行验证的方法的流程图,该方法包括:
S901:在得到与密钥库不匹配的初始混淆参数的情况下,统计初始混淆参数的子序列数量。
其中,初始混淆参数中前后比特相同的数据作为一个子序列。
初始混淆参数是由连续的0和1组成的随机数,子序列指的是前序比特值和后续比特值均与其本身的比特值不同。
在实际应用中,可以按照公式(1)计算出初始混淆参数的子序列数量。
(1);
其中,当a i =a i+1ci)=0,当ci)=1,Q n 表示子序列数量,n表示初始混淆参数的长度。
例如,长度n=5的随机数11011,根据子序列的划分方式,该随机数可以划分为“11”、“0”、“11”这三个字序列。相应的,按照公式(1)可以确定出子序列数量Q n =3。
S902:依据子序列数量和初始混淆参数中非零值的占比,确定出初始混淆参数的分布值。
在实际应用中,可以按照如下公式(2)计算出初始混淆参数中非零值的占比。初始混淆参数由0和1组成,因此非零值的占比即为初始混淆参数中1的数量占初始混淆参数总比特的比例。
(2);
其中,表示初始混淆参数中非零值的占比,/>表示初始混淆参数中第i个比特的比特值。
调用分布值计算公式,对子序列数量和初始混淆参数中非零值的占比进行处理,以得到初始混淆参数的分布值。
分布值计算公式(3)如下:
(3);
其中,S表示分布值,Q n 表示子序列数量,表示初始混淆参数中非零值的占比,n表示初始混淆参数的总比特数。
S903:在分布值满足标准正态分布的情况下,利用余误差函数对初始混淆参数的分布值进行处理,以得到初始混淆参数的通过率。
在分布值满足标准正态分布的情况下,说明初始混淆参数的随机性较好。为了进一步确保初始混淆参数的随机性,可以按照余误差函数即如下公式(4)计算初始混淆参数的通过率。
(4);
其中,erfc表示余误差函数,P表示初始混淆参数的通过率。
S904:在初始混淆参数的通过率大于或等于设定的通过阈值的情况下,执行根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
设定阈值的取值可以根据实际应用中对通过率的要求设置,通过率要求越高,设定的通过阈值的取值可以越小。
举例说明,例如检测1000个随机数,期望其中至少900个随机数通过检测,则通过阈值=(1000-900)/1000=0.1;期望其中至少990个随机数通过检测,则通过阈值=(1000-990)/1000=0.01。
对于检测不通过的初始混淆参数,可以将其丢弃,重新生成随机数后再次进行检测,直到得到符合要求的初始混淆参数。
在本发明实施例中,考虑到若使用不合格的随机数作为密钥,攻击者可利用随机数缺陷攻击获取密钥等关键参数,造成安全损失。为提高随机数质量,可设置通过阈值,从而防止因使用不合格的随机数导致随机数缺陷攻击的安全风险。
在本发明实施例中,为了进一步对IC芯片的密钥存储区进行保护,可以在密钥存储区和外部接口之间设置安全隔离装置。
安全隔离装置可以采用三态缓冲器。控制器与三态缓冲器的使能引脚连接,三态缓冲器的输入引脚与用于存储密钥的存储模块连接,三态缓冲器的输出引脚与外部引脚连接。在实际应用中,有多少个轮密钥可以设置对应个数的三态缓冲器。外部引脚指的是IC芯片上用于与外部设备连接的引脚。
在本发明实施例中,控制器可以判断接收到的读取密钥指令是否符合设定的读取指令格式。
在读取密钥指令符合设定的读取指令格式的情况下,说明读取密钥指令属于安全指令,此时可以向三态缓冲器的使能引脚输入高电平,以使得密钥通过三态缓冲器的输出引脚输出到芯片外部设备。
在读取密钥指令不符合设定的读取指令格式的情况下,说明读取密钥指令极有可能属于攻击者传输的非法指令,此时可以向三态缓冲器的使能引脚输入低电平,以阻断密钥输出到芯片外部设备。
图10为本发明实施例提供的一种安全隔离装置的连接关系示意图,安全隔离装置由n组三态缓冲器组成,芯片内部的存储模块(ROM)的密钥输出端K[n..0]连接至缓冲器的各个输入引脚,三态缓冲器的各输出引脚连接至IC芯片的输出引脚即数据输出端口D[n..0]。三态缓冲器的使能引脚(ENB)连接至控制器。控制器用于判断输入的读取密钥指令是否正确,当输入指令正确时ENB为高电平,此时三态缓冲器为打开状态,使得密钥K[n..0]能够通过D[n..0]端口输出到芯片外部;当输入指令错误时ENB为低电平,此时三态缓冲器为高阻状态,阻断密钥输出到芯片外部,从而不能通过外部的PCI-E、PCI物理总线读取芯片内部的密钥等关键信息,从硬件层面实现了安全隔离。
除了采用三态缓冲器作为安全隔离装置外,也可以采用数据选择器进行安全隔离。控制器与数据选择器的使能引脚连接,数据选择器的第一路输入引脚与用于存储密钥的存储模块连接,数据选择器的第二路输入引脚与控制器中用于存储混淆参数的模块引脚连接,数据选择器的输出引脚与外部引脚连接。在实际应用中,有多少个轮密钥可以设置对应个数的数据选择器。
在本发明实施例中,可以判断接收到的读取密钥指令是否符合设定的读取指令格式。
在读取密钥指令符合设定的读取指令格式的情况下,说明读取密钥指令属于安全指令,此时可以向数据选择器的使能引脚输入高电平,以使得数据选择器选择输出密钥至芯片外部设备。在读取密钥指令不符合设定的读取指令格式的情况下,说明读取密钥指令极有可能属于攻击者传输的非法指令,此时可以向数据选择器的使能引脚输入低电平,以使得数据选择器选择输出混淆参数至芯片外部设备。
图11为本发明实施例提供的另一种安全隔离装置的连接关系示意图,安全隔离装置由n组数据选择器(MUX)组成,各MUX的第一数据输入端连接存储区的密钥数据K[n..0],第二数据输入端连接随机数R[n..0],控制器控制MUX的使能引脚(ENB)。当输入指令正确时ENB为高电平,此时数据选择器输出K[n..0],使得外部总线能够正确的访问密钥数据。当输入指令错误时ENB为低电平,此时数据选择器输出随机数R[n..0],此时攻击者通过外部总线获取的不是真正的密钥,得到的只是作为随机数的伪密钥,从而起到混淆的作用。
为了进一步保证密钥的安全性,可以每检测到一次读取密钥指令不符合设定的读取指令格式的情况,则将统计次数加一。判断统计次数是否大于或等于设置的次数阈值;在统计次数大于或等于设置的次数阈值的情况下,可以擦除存储模块中存储的密钥。
次数阈值的取值可以基于实际需求设置,例如,次数阈值可以设置为5。当连续五次接收到不符合设定的读取指令格式的读取密钥指令的情况下,说明存储模块正遭受不断的非法攻击,为了保证存储模块中存储的密钥的安全性,可以直接将存储模块中存储的密钥擦除。
在本发明实施例中,从硬件层面实现了芯片内部的密钥存储区与外部访问通道之间的安全隔离,使攻击者不能通过外部的PCI-E、PCI物理总线读取芯片内部的关键信息,另外实现了对内部密钥等关键信息的混淆与清除。
在实际应用中,安全芯片对数据进行加解密的状态机逻辑如图12所示,包括空闲(IDLE)、读命令(RD_CMD)、密钥生成(KEY_GEN)、读数据(RD_DATA)、等待1(WAIT1)、写数据(WR_DATA)、等待2(WAIT2)共7个状态。
以一次数据的加密/解密操作为例(包含n个待加密或待解密的数据分组)。各状态间的转换关系具体如下:
(1)芯片复位后进入IDLE状态,当复位结束并且芯片的启动引脚(STR)为高电平时进入RD_CMD状态。
(2)在RD_CMD状态,接收芯片外部输入的控制命令,例如选择SM4、3DES或AES密码算法、数据加密/数据解密、密钥生成等命令,之后进入KEY_GEN状态。
(3)在KEY_GEN状态,状态机控制随机数生成模块生成符合随机性要求的随机数作为密钥,或直接读取ROM存储的已有的密钥,之后进入RD_DATA状态。
(4)在RD_DATA状态,状态机读取芯片数据引脚DATA_in[n..0]输入的一个待加密/解密的数据分组,之后进入WAIT1状态。
(5)在WAIT1状态,状态机根据读取的命令字,调用对应的密码算法(SM4/3DES/AES中的一种)对数据进行加密/解密操作,状态机等待密码算法模块运算完成后进入WR_DATA状态。
(6)在WR_DATA状态,状态机把经过加密/解密后的密文/明文数据传输到芯片的数据输出引脚DATA_out[n..0],之后进入WAIT2状态。
(7)在WAIT2状态,状态机判断是否完成了所有数据分组的处理,如果未处理完成所有的数据分组,需要返回到RD_DATA状态处理下一个数据分组(重复上述步骤4~7,直到处理完n个数据分组)。如果所有数据分组都已处理完成,状态机将芯片的完成标识引脚(Done)设置为高电平,之后返回IDLE状态。至此完成了一次数据的加密/解密操作过程。在IDLE状态状态机清除Done信号和STR信号,即设置Done=0,STR=0,以等待下一次数据运算的开始。
结合上述介绍,为了提升IC芯片的安全性,可以根据所需实现的功能,在IC芯片中设置不同的模块。图13为本发明实施例提供的一种IC芯片的安全架构图,IC芯片包括密码算法模块、随机数生成器、随机数检测模块、控制器、存储模块、I/O接口、外部引脚、时钟单元。控制器通过I/O接口可以实现与芯片其它模块的连接,以及与IC芯片的外部引脚连接。
密码算法模块:包括3DES、AES和SM4,用于对数据进行加密/解密。为了防止侧信道攻击,对应每种算法增加了对应的密码运算废逻辑,密码运算废逻辑包含了对混淆参数进行处理的混淆规则。在生成轮密码的过程中基于密码运算废逻辑生成混淆参数,从而提升密钥的安全性。
随机数生成器:可以是物理噪声源等模块,用于生成真随机数作为密钥、初始向量等密码运算的参数。
随机数检测模块:用于检测生成的随机数的质量,满足随机性要求,只有通过检测的随机数才能使用,防止随机数缺陷攻击。
存储模块:用于存储密钥等关键数据,该存储模块为非易失存储器,例如ROM,芯片掉电以后存储的数据不会丢失。存储模块也可以放置于芯片外部的安全区域,使攻击者获取芯片后不能探测芯片中存储的关键数据。
控制器是安全功能模块的控制单元,作用是通过输入输出接口(I/O)接收芯片其他模块的发送的命令和数据,把命令和数据发送至SM4、AES、3DES密码算法模块中的一种,由对应的密码算法模块对数据进行加密/解密。控制随机数生成器生成随机数作为密钥、初始向量等参数,并且把密钥、初始向量传输至对应的SM4/AES/3DES密码算法模块,用于密码运算过程。数据完成加密/解密后,控制器把经过加密/解密后的数据密文/明文通过I/O接口传输至芯片其他模块,由芯片内部使用;或通过I/O接口直接发送到芯片引脚,由芯片外部使用。把需要保留的密钥、初始向量等关键数据传输至存储模块中,下次数据加密/解密时可直接使用,提高数据加解密的效率。为了满足密钥使用的安全性,降低长期使用同一密钥存在泄漏的安全风险,也可以在下次数据加解密时生成新的密钥。
时钟单元:用于芯片上电后为安全功能模块提供时钟频率。
对于不包含密码算法的IC芯片,通过部署图13所示的安全功能模块,可以对数据进行加解密,增加了芯片的安全功能。对于包含密码算法的IC芯片,通过密码运算废逻辑、随机数检测、以及增加安全隔离装置等,可以防止对芯片的侧信道攻击、随机数缺陷攻击、逻辑攻击等,进一步提高了芯片的安全性。
通过采用密码运算废逻辑、安全隔离装置、随机数质量检测等密钥保护等方法,有效防止芯片的侧信道攻击、随机数缺陷攻击、逻辑攻击等,提高了芯片的安全性,维护了芯片厂商的利益。
图14为本发明实施例提供的一种数据加解密装置,包括生成单元141、构造单元142、混淆处理单元143、获取单元144和加解密单元145;
生成单元141,用于在获取到携带有密码算法类型的密钥生成指令的情况下,生成与密码算法类型所对应的密钥长度相同的初始混淆参数;
构造单元142,用于根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥;
混淆处理单元143,用于按照密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,直至迭代次数达到设定阈值,将初始密钥以及每次迭代对应的密钥存储至设定的存储空间;其中,本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥;混淆规则由密钥生成规则变换得到;
获取单元144,用于在获取到数据加解密指令的情况下,从存储空间中获取对应的目标密钥;
加解密单元145,用于利用目标密钥对待处理数据进行加解密处理。
在一些实施例中,获取单元包括判断子单元、读取子单元、生成子单元;
判断子单元,用于在获取到数据加解密指令的情况下,判断数据加解密指令是否与设定的指令格式匹配;
读取子单元,用于在数据加解密指令与设定的指令格式匹配的情况下,从存储空间中读取与数据加解密指令携带的密码算法类型匹配的目标密钥;
生成子单元,用于在加解密指令与设定的指令格式不匹配的情况下,从存储空间中读取与数据加解密指令携带的密码算法类型匹配的目标密钥;根据目标密钥及其对应的混淆参数,生成最终的目标密钥。
在一些实施例中,生成子单元用于将目标密钥及其对应的混淆参数进行异或运算,以得到最终的目标密钥。
在一些实施例中,密码算法类型为SM4国密对称密码算法;构造单元包括划分子单元和拼接子单元;
划分子单元,用于依据设定的比特数将初始混淆参数划分为多个混淆子参数;依据比特数将初始密钥划分为多个初始子密钥;
拼接子单元,用于按照初始子密钥和混淆子参数相邻的方式,对多个初始子密钥以及多个混淆子参数进行拼接,以得到第一次迭代的混淆密钥。
在一些实施例中,混淆处理单元包括第一作为子单元、第一运算子单元、第一变换子单元、第二变换子单元、第二运算子单元、第三运算子单元、第四运算子单元和第二作为子单元;
第一作为子单元,用于将上一次迭代的混淆密钥中前32比特的初始子密钥和前32比特混淆子参数作为第一混淆子密钥;将上一次迭代的混淆密钥中除第一混淆子密钥外的剩余数据作为第二混淆子密钥;
第一运算子单元,用于将第二混淆子密钥与固定参数进行异或运算,以得到第一混淆密钥;其中,第一混淆密钥包括第一密钥和第一混淆参数;
第一变换子单元,用于利用SM4国密对称密码算法的S盒对第一密钥进行非线性变换,以得到第二密钥;
第二变换子单元,用于利用SM4国密对称密码算法的S盒的转置对第一混淆参数进行非线性变换,以得到第二混淆参数;
第二运算子单元,用于将第二密钥、第二密钥左移13比特后的数据和第二密钥左移23比特后的数据进行异或运算,以得到第三密钥;
第三运算子单元,用于将第二混淆参数、第二混淆参数左移13比特后的数据和第二混淆参数左移23比特后的数据进行异或运算,以得到第三混淆参数;
第四运算子单元,用于将第三密钥、第三混淆参数以及第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥;
第二作为子单元,用于将第二混淆子密钥与本次迭代的轮混淆密钥拼接作为本次迭代的混淆密钥。
在一些实施例中,第四运算子单元用于将第三密钥与第一混淆子密钥包括的初始子密钥进行异或运算,以得到本次迭代的轮密钥;
将第三混淆参数与第一混淆子密钥包括的混淆子参数进行异或运算,以得到本次迭代的混淆参数。
在一些实施例中,密码算法类型为三重数据加密算法;构造单元包括提取子单元、合并子单元;
提取子单元,用于从初始密钥中提取出密钥位对应的有效密钥;从初始混淆参数中提取出与有效密钥的位数相同的有效混淆参数;
合并子单元,用于将有效密钥与有效混淆参数合并作为第一次迭代的混淆密钥。
在一些实施例中,混淆处理单元包括第一置换子单元、循环左移子单元、第二置换子单元、第三置换子单元、循环右移子单元、第四置换子单元;
第一置换子单元,用于基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;
循环左移子单元,用于对第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;
第二置换子单元,用于基于设定的第二置换数组,依次对每次迭代的第二有效密钥进行置换,以得到每次迭代的轮密钥;
第三置换子单元,用于基于第一置换数组的逆序数组,对上一次迭代的混淆密钥中包括的有效混淆参数进行置换,以得到第一有效混淆参数;
循环右移子单元,用于对第一有效混淆参数循环右移,依次得到每次迭代的第二有效混淆参数;
第四置换子单元,用于基于第二置换数组的逆序数组,依次对每次迭代的第二有效混淆参数进行置换,以得到每次迭代的混淆参数。
在一些实施例中,密码算法类型为三重数据加密算法;构造单元包括选取子单元和替换子单元;
选取子单元,用于从初始混淆参数中选取与初始密钥的奇偶校验位位数相同的随机数;
替换子单元,用于将初始密钥中奇偶校验位的数据替换为随机数,将替换后的初始密钥作为第一次迭代的混淆密钥。
在一些实施例中,混淆处理单元用于基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的第二有效密钥进行置换,以得到每次迭代的轮密钥;将每次迭代的轮密钥中奇偶校验位的数据替换为随机数,将替换后的轮密钥作为每次迭代的混淆密钥。
在一些实施例中,密码算法类型为高级加密标准算法;
构造单元用于将初始混淆参数和初始密钥合并作为第一次迭代的混淆密钥。
一方面,混淆处理单元包括确定子单元、第一判断子单元、第三变换子单元、第二判断子单元、第四变换子单元、异或子单元和累加子单元;
确定子单元,用于根据高级加密标准算法的密钥长度,确定出单个轮密钥所占用的数组个数;根据分组长度确定出每次迭代的分组个数;
第一判断子单元,用于判断当前数组值是否为数组个数的整数倍;其中,初始状态下当前数组值为零;
第三变换子单元,用于在当前数组值为数组个数的整数倍的情况下,将相邻的混淆密钥子数据依次进行循环移位和S盒变换,以得到第一中间混淆密钥子数据;将第一中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;其中,前向混淆密钥子数据为相邻的混淆密钥子数据的前向N K 个位置的混淆密钥子数据;N K 表示数组个数;
第二判断子单元,用于在当前数组值不为数组个数的整数倍的情况下,判断当前数组值是否大于分组限值并且当前数组值为4的整数倍;
第四变换子单元,用于在当前数组值大于分组限值并且当前数组值为4的整数倍的情况下,将相邻的混淆密钥子数据进行S盒变换,以得到第二中间混淆密钥子数据;将第二中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
异或子单元,用于在当前数组值小于或等于分组限值,或者当前数组值不为4的整数倍的情况下,将相邻的混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
累加子单元,用于每得到当前数组的混淆密钥子数据,则将当前数组值加一,直至当前数组值达到数组总数,结束生成混淆密钥的操作。
在一些实施例中,还包括密钥判断单元;
密钥判断单元,用于判断初始混淆参数与密钥库是否匹配;其中,密钥库包含弱密钥和半弱密钥;在初始混淆参数与密钥库匹配的情况下,触发生成单元重新生成与密码算法类型所对应的密钥长度相同的初始混淆参数,直至得到与密钥库不匹配的初始混淆参数。
在一些实施例中,还包括统计单元和确定单元;
统计单元,用于在得到与密钥库不匹配的初始混淆参数的情况下,统计初始混淆参数的子序列数量;其中,初始混淆参数中前后比特相同的数据作为一个子序列;
确定单元,用于依据子序列数量和初始混淆参数中非零值的占比,确定出初始混淆参数的分布值;在分布值满足标准正态分布的情况下,触发构造单元执行根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
在一些实施例中,还包括通过率确定单元;
通过率确定单元,用于在分布值满足标准正态分布的情况下,利用余误差函数对初始混淆参数的分布值进行处理,以得到初始混淆参数的通过率;在初始混淆参数的通过率大于或等于设定的通过阈值的情况下,触发构造单元执行根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
在一些实施例中,确定单元用于调用分布值计算公式,对子序列数量和初始混淆参数中非零值的占比进行处理,以得到初始混淆参数的分布值;分布值计算公式为:
其中,S表示分布值,Q n 表示子序列数量,表示初始混淆参数中非零值的占比,n表示初始混淆参数的总比特数。
在一些实施例中,还包括第一格式判断单元、第一输入单元和第二输入单元;
格式判断单元,用于判断接收到的读取密钥指令是否符合设定的读取指令格式;
第一输入单元,用于在读取密钥指令符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入高电平,以使得密钥通过三态缓冲器的输出引脚输出到芯片外部设备;其中,控制器与三态缓冲器的使能引脚连接,三态缓冲器的输入引脚与用于存储密钥的存储模块连接,三态缓冲器的输出引脚与外部引脚连接;
第二输入单元,用于在读取密钥指令不符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入低电平,以阻断密钥输出到芯片外部设备。
在一些实施例中,还包括第二格式判断单元、第三输入单元和第四输入单元;
第二格式判断单元,用于判断接收到的读取密钥指令是否符合设定的读取指令格式;
第三输入单元,用于在读取密钥指令符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入高电平,以使得数据选择器选择输出密钥至芯片外部设备;其中,控制器与数据选择器的使能引脚连接,数据选择器的第一路输入引脚与用于存储密钥的存储模块连接,数据选择器的第二路输入引脚与控制器中用于存储混淆参数的模块引脚连接,数据选择器的输出引脚与外部引脚连接;
第四输入单元,用于在读取密钥指令不符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入低电平,以使得数据选择器选择输出混淆参数至芯片外部设备。
在一些实施例中,还包括统计单元、次数判断单元和擦除单元;
统计单元,用于每检测到一次读取密钥指令不符合设定的读取指令格式的情况,则将统计次数加一;
次数判断单元,用于判断统计次数是否大于或等于设置的次数阈值;
擦除单元,用于在统计次数大于或等于设置的次数阈值的情况下,擦除存储模块中存储的密钥。
图14所对应实施例中特征的说明可以参见图1至图12所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,在获取到携带有密码算法类型的密钥生成指令的情况下,生成与密码算法类型所对应的密钥长度相同的初始混淆参数。根据初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥。每种密码算法有其对应的密钥生成规则,为了防止侧信道攻击,可以将密钥生成规则变换得到混淆规则,按照密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥,直至迭代次数达到设定阈值,可以结束迭代流程。为了便于后续对密钥的调取使用,可以将初始密钥以及每次迭代对应的密钥存储至设定的存储空间。在获取到数据加解密指令的情况下,从存储空间中获取对应的目标密钥;利用目标密钥对待处理数据进行加解密处理。本发明的有益效果在于,通过在密码算法中加入与密码运算功能无关的逻辑处理,即增加了混淆参数以及对混淆参数处理的混淆规则,在生成密钥阶段可以起到混淆的作用,防止攻击者通过侧信道的途径分析与密钥相关的特征点来获取真实的密钥信息,提高了芯片的安全性。并且整个实现过程不占用额外的硬件电路,只占用少量逻辑资源,因此在不明显增加芯片的面积和成本的同时,实现了对IC芯片的安全防护以保障芯片的数据和功能的安全,保护了芯片厂商的利益。
图15为本发明实施例提供的一种数据加解密设备的结构图,如图15所示,数据加解密设备包括:存储器150,用于存储计算机程序;
处理器151,用于执行计算机程序时实现如上述实施例数据加解密方法的步骤。
本实施例提供的数据加解密设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器151可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器151可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器151也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器151可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器151还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器150可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器150还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器150至少用于存储以下计算机程序1501,其中,该计算机程序被处理器151加载并执行之后,能够实现前述任一实施例公开的数据加解密方法的相关步骤。另外,存储器150所存储的资源还可以包括操作***1502和数据1503等,存储方式可以是短暂存储或者永久存储。其中,操作***1502可以包括Windows、Unix、Linux等。数据1503可以包括但不限于密钥生成规则、混淆规则、初始密钥以及每次迭代对应的密钥等。
在一些实施例中,数据加解密设备还可包括有显示屏152、输入输出接口153、通信接口154、电源155以及通信总线156。
本领域技术人员可以理解,图15中示出的结构并不构成对数据加解密设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的数据加解密方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对目前技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述数据加解密方法的步骤。
以上对本发明实施例所提供的一种数据加解密方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上对本发明所提供的一种数据加解密方法、装置、设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (21)

1.一种数据加解密方法,其特征在于,包括:
在获取到携带有密码算法类型的密钥生成指令的情况下,生成与所述密码算法类型所对应的密钥长度相同的初始混淆参数;
根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥;
按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,直至迭代次数达到设定阈值,将所述初始密钥以及每次迭代对应的密钥存储至设定的存储空间;其中,所述本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥;所述混淆规则由所述密钥生成规则变换得到;
在获取到数据加解密指令的情况下,从所述存储空间中获取对应的目标密钥;利用所述目标密钥对待处理数据进行加解密处理;
所述密码算法类型为SM4国密对称密码算法的情况下,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
将所述上一次迭代的混淆密钥中前32比特的初始子密钥和前32比特混淆子参数作为第一混淆子密钥;将所述上一次迭代的混淆密钥中除所述第一混淆子密钥外的剩余数据作为第二混淆子密钥;
将所述第二混淆子密钥与固定参数进行异或运算,以得到第一混淆密钥;其中,所述第一混淆密钥包括第一密钥和第一混淆参数;
利用SM4国密对称密码算法的S盒对所述第一密钥进行非线性变换,以得到第二密钥;
利用SM4国密对称密码算法的S盒的转置对所述第一混淆参数进行非线性变换,以得到第二混淆参数;
将所述第二密钥、所述第二密钥左移13比特后的数据和所述第二密钥左移23比特后的数据进行异或运算,以得到第三密钥;
将所述第二混淆参数、所述第二混淆参数左移13比特后的数据和所述第二混淆参数左移23比特后的数据进行异或运算,以得到第三混淆参数;
将所述第三密钥、所述第三混淆参数以及所述第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥;
将所述第二混淆子密钥与所述本次迭代的轮混淆密钥拼接作为本次迭代的混淆密钥。
2.根据权利要求1所述的数据加解密方法,其特征在于,所述在获取到数据加解密指令的情况下,从所述存储空间中获取对应的目标密钥包括:
在获取到数据加解密指令的情况下,判断所述数据加解密指令是否与设定的指令格式匹配;
在所述数据加解密指令与设定的指令格式匹配的情况下,从所述存储空间中读取与所述数据加解密指令携带的密码算法类型匹配的目标密钥;
在所述加解密指令与设定的指令格式不匹配的情况下,从所述存储空间中读取与所述数据加解密指令携带的密码算法类型匹配的目标密钥;根据所述目标密钥及其对应的混淆参数,生成最终的目标密钥。
3.根据权利要求2所述的数据加解密方法,其特征在于,所述根据所述目标密钥及其对应的混淆参数,生成最终的目标密钥包括:
将所述目标密钥及其对应的混淆参数进行异或运算,以得到最终的目标密钥。
4.根据权利要求1所述的数据加解密方法,其特征在于,所述密码算法类型为SM4国密对称密码算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
依据设定的比特数将所述初始混淆参数划分为多个混淆子参数;
依据所述比特数将所述初始密钥划分为多个初始子密钥;
按照初始子密钥和混淆子参数相邻的方式,对多个所述初始子密钥以及多个所述混淆子参数进行拼接,以得到第一次迭代的混淆密钥。
5.根据权利要求4所述的数据加解密方法,其特征在于,所述将所述第三密钥、所述第三混淆参数以及所述第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥包括:
将所述第三密钥与所述第一混淆子密钥包括的初始子密钥进行异或运算,以得到本次迭代的轮密钥;
将所述第三混淆参数与所述第一混淆子密钥包括的混淆子参数进行异或运算,以得到本次迭代的混淆参数。
6.根据权利要求1所述的数据加解密方法,其特征在于,所述密码算法类型为三重数据加密算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
从所述初始密钥中提取出密钥位对应的有效密钥;
从所述初始混淆参数中提取出与所述有效密钥的位数相同的有效混淆参数;
将所述有效密钥与所述有效混淆参数合并作为第一次迭代的混淆密钥。
7.根据权利要求6所述的数据加解密方法,其特征在于,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对所述第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的所述第二有效密钥进行置换,以得到每次迭代的轮密钥;
基于所述第一置换数组的逆序数组,对上一次迭代的混淆密钥中包括的有效混淆参数进行置换,以得到第一有效混淆参数;对所述第一有效混淆参数循环右移,依次得到每次迭代的第二有效混淆参数;基于所述第二置换数组的逆序数组,依次对每次迭代的所述第二有效混淆参数进行置换,以得到每次迭代的混淆参数。
8.根据权利要求1所述的数据加解密方法,其特征在于,所述密码算法类型为三重数据加密算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
从所述初始混淆参数中选取与所述初始密钥的奇偶校验位位数相同的随机数;
将所述初始密钥中奇偶校验位的数据替换为所述随机数,将替换后的初始密钥作为第一次迭代的混淆密钥。
9.根据权利要求8所述的数据加解密方法,其特征在于,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
基于设定的第一置换数组,对上一次迭代的混淆密钥中包括的有效密钥进行置换,以得到第一有效密钥;对所述第一有效密钥循环左移,依次得到每次迭代的第二有效密钥;基于设定的第二置换数组,依次对每次迭代的所述第二有效密钥进行置换,以得到每次迭代的轮密钥;
将每次迭代的所述轮密钥中奇偶校验位的数据替换为随机数,将替换后的轮密钥作为每次迭代的混淆密钥。
10.根据权利要求1所述的数据加解密方法,其特征在于,所述密码算法类型为高级加密标准算法;
所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥包括:
将所述初始混淆参数和所述初始密钥合并作为第一次迭代的混淆密钥。
11.根据权利要求10所述的数据加解密方法,其特征在于,所述按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥包括:
根据所述高级加密标准算法的密钥长度,确定出单个轮密钥所占用的数组个数;根据分组长度确定出每次迭代的分组个数;
判断当前数组值是否为所述数组个数的整数倍;其中,初始状态下所述当前数组值为零;
在所述当前数组值为所述数组个数的整数倍的情况下,将相邻的混淆密钥子数据依次进行循环移位和S盒变换,以得到第一中间混淆密钥子数据;将所述第一中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;其中,所述前向混淆密钥子数据为所述相邻的混淆密钥子数据的前向N K 个位置的混淆密钥子数据;N K 表示数组个数;
在所述当前数组值不为所述数组个数的整数倍的情况下,判断所述当前数组值是否大于分组限值并且所述当前数组值为4的整数倍;
在所述当前数组值大于分组限值并且所述当前数组值为4的整数倍的情况下,将相邻的混淆密钥子数据进行S盒变换,以得到第二中间混淆密钥子数据;将所述第二中间混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
在所述当前数组值小于或等于分组限值,或者所述当前数组值不为4的整数倍的情况下,将相邻的混淆密钥子数据与前向混淆密钥子数据进行异或运算,以得到当前数组的混淆密钥子数据;
每得到当前数组的混淆密钥子数据,则将当前数组值加一,直至所述当前数组值达到数组总数,结束生成混淆密钥的操作。
12.根据权利要求1所述的数据加解密方法,其特征在于,在所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥之前,还包括:
判断所述初始混淆参数与密钥库是否匹配;其中,所述密钥库包含弱密钥和半弱密钥;
在所述初始混淆参数与密钥库匹配的情况下,重新生成与所述密码算法类型所对应的密钥长度相同的初始混淆参数,直至得到与所述密钥库不匹配的初始混淆参数。
13.根据权利要求12所述的数据加解密方法,其特征在于,在所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥之前,还包括:
在得到与所述密钥库不匹配的初始混淆参数的情况下,统计所述初始混淆参数的子序列数量;其中,所述初始混淆参数中前后比特相同的数据作为一个子序列;
依据所述子序列数量和所述初始混淆参数中非零值的占比,确定出所述初始混淆参数的分布值;
在所述分布值满足标准正态分布的情况下,执行所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
14.根据权利要求13所述的数据加解密方法,其特征在于,还包括:
在所述分布值满足标准正态分布的情况下,利用余误差函数对所述初始混淆参数的分布值进行处理,以得到所述初始混淆参数的通过率;
在所述初始混淆参数的通过率大于或等于设定的通过阈值的情况下,执行所述根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥的步骤。
15.根据权利要求13所述的数据加解密方法,其特征在于,所述依据所述子序列数量和所述初始混淆参数中非零值的占比,确定出所述初始混淆参数的分布值包括:
调用分布值计算公式,对所述子序列数量和所述初始混淆参数中非零值的占比进行处理,以得到所述初始混淆参数的分布值;所述分布值计算公式为:
其中,S表示分布值,Q n 表示子序列数量,表示所述初始混淆参数中非零值的占比,n表示所述初始混淆参数的总比特数。
16.根据权利要求1所述的数据加解密方法,其特征在于,还包括:
判断接收到的读取密钥指令是否符合设定的读取指令格式;
在所述读取密钥指令符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入高电平,以使得密钥通过所述三态缓冲器的输出引脚输出到芯片外部设备;其中,控制器与所述三态缓冲器的使能引脚连接,所述三态缓冲器的输入引脚与用于存储密钥的存储模块连接,所述三态缓冲器的输出引脚与外部引脚连接;
在所述读取密钥指令不符合设定的读取指令格式的情况下,向三态缓冲器的使能引脚输入低电平,以阻断密钥输出到芯片外部设备。
17.根据权利要求1所述的数据加解密方法,其特征在于,还包括:
判断接收到的读取密钥指令是否符合设定的读取指令格式;
在所述读取密钥指令符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入高电平,以使得数据选择器选择输出密钥至芯片外部设备;其中,控制器与所述数据选择器的使能引脚连接,所述数据选择器的第一路输入引脚与用于存储密钥的存储模块连接,所述数据选择器的第二路输入引脚与控制器中用于存储混淆参数的模块引脚连接,所述数据选择器的输出引脚与外部引脚连接;
在所述读取密钥指令不符合设定的读取指令格式的情况下,向数据选择器的使能引脚输入低电平,以使得数据选择器选择输出混淆参数至芯片外部设备。
18.根据权利要求16或17所述的数据加解密方法,其特征在于,还包括:
每检测到一次所述读取密钥指令不符合设定的读取指令格式的情况,则将统计次数加一;
判断所述统计次数是否大于或等于设置的次数阈值;
在所述统计次数大于或等于设置的次数阈值的情况下,擦除存储模块中存储的密钥。
19.一种数据加解密装置,其特征在于,包括生成单元、构造单元、混淆处理单元、获取单元和加解密单元;
所述生成单元,用于在获取到携带有密码算法类型的密钥生成指令的情况下,生成与所述密码算法类型所对应的密钥长度相同的初始混淆参数;
所述构造单元,用于根据所述初始混淆参数以及初始密钥,构造第一次迭代的混淆密钥;
所述混淆处理单元,用于按照所述密码算法类型所对应的密钥生成规则以及混淆规则,对上一次迭代的混淆密钥进行处理以生成本次迭代的混淆密钥,直至迭代次数达到设定阈值,将所述初始密钥以及每次迭代对应的密钥存储至设定的存储空间;其中,所述本次迭代的混淆密钥包括本次迭代的混淆参数和本次迭代的轮密钥;所述混淆规则由所述密钥生成规则变换得到;
所述获取单元,用于在获取到数据加解密指令的情况下,从所述存储空间中获取对应的目标密钥;
所述加解密单元,用于利用所述目标密钥对待处理数据进行加解密处理;
所述密码算法类型为SM4国密对称密码算法的情况下,所述混淆处理单元包括第一作为子单元、第一运算子单元、第一变换子单元、第二变换子单元、第二运算子单元、第三运算子单元、第四运算子单元和第二作为子单元;所述第一作为子单元,用于将所述上一次迭代的混淆密钥中前32比特的初始子密钥和前32比特混淆子参数作为第一混淆子密钥;将所述上一次迭代的混淆密钥中除所述第一混淆子密钥外的剩余数据作为第二混淆子密钥;所述第一运算子单元,用于将所述第二混淆子密钥与固定参数进行异或运算,以得到第一混淆密钥;其中,所述第一混淆密钥包括第一密钥和第一混淆参数;所述第一变换子单元,用于利用SM4国密对称密码算法的S盒对所述第一密钥进行非线性变换,以得到第二密钥;所述第二变换子单元,用于利用SM4国密对称密码算法的S盒的转置对所述第一混淆参数进行非线性变换,以得到第二混淆参数;所述第二运算子单元,用于将所述第二密钥、所述第二密钥左移13比特后的数据和所述第二密钥左移23比特后的数据进行异或运算,以得到第三密钥;所述第三运算子单元,用于将所述第二混淆参数、所述第二混淆参数左移13比特后的数据和所述第二混淆参数左移23比特后的数据进行异或运算,以得到第三混淆参数;所述第四运算子单元,用于将所述第三密钥、所述第三混淆参数以及所述第一混淆子密钥进行异或运算,以得到本次迭代的轮混淆密钥;所述第二作为子单元,用于将所述第二混淆子密钥与所述本次迭代的轮混淆密钥拼接作为本次迭代的混淆密钥。
20.一种数据加解密设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至18任意一项所述数据加解密方法的步骤。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至18任意一项所述数据加解密方法的步骤。
CN202311339207.7A 2023-10-17 2023-10-17 一种数据加解密方法、装置、设备和计算机可读存储介质 Active CN117390642B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311339207.7A CN117390642B (zh) 2023-10-17 2023-10-17 一种数据加解密方法、装置、设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311339207.7A CN117390642B (zh) 2023-10-17 2023-10-17 一种数据加解密方法、装置、设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN117390642A CN117390642A (zh) 2024-01-12
CN117390642B true CN117390642B (zh) 2024-03-01

Family

ID=89471477

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311339207.7A Active CN117390642B (zh) 2023-10-17 2023-10-17 一种数据加解密方法、装置、设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117390642B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228504A (zh) * 2016-07-17 2016-12-14 西安电子科技大学 基于明文和密钥构造加密参数的数字图像加密方法
CN107257279A (zh) * 2017-06-29 2017-10-17 努比亚技术有限公司 一种明文数据加密方法及设备
CN107579813A (zh) * 2017-09-12 2018-01-12 四川阵风科技有限公司 信息加密、解密方法及装置
CN108183790A (zh) * 2018-02-13 2018-06-19 中山大学 一种aes加密装置、芯片及***
CN116455570A (zh) * 2023-06-14 2023-07-18 北京集度科技有限公司 数据处理方法、装置、计算机设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228504A (zh) * 2016-07-17 2016-12-14 西安电子科技大学 基于明文和密钥构造加密参数的数字图像加密方法
CN107257279A (zh) * 2017-06-29 2017-10-17 努比亚技术有限公司 一种明文数据加密方法及设备
CN107579813A (zh) * 2017-09-12 2018-01-12 四川阵风科技有限公司 信息加密、解密方法及装置
CN108183790A (zh) * 2018-02-13 2018-06-19 中山大学 一种aes加密装置、芯片及***
CN116455570A (zh) * 2023-06-14 2023-07-18 北京集度科技有限公司 数据处理方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《一种基于LDAP 的属性加密模型》;麻付强;《计算机技术与发展》;第第33卷卷(第第6期期);全文 *

Also Published As

Publication number Publication date
CN117390642A (zh) 2024-01-12

Similar Documents

Publication Publication Date Title
CN105450620B (zh) 一种信息处理方法及装置
EP2290872B1 (en) Device for generating a message authentication code for authenticating a message
KR20180002069A (ko) 부채널 분석에 대응한 보호 방법 및 장치
CN107103246A (zh) 使电路免受侧信道分析的方法
CN108964872B (zh) 一种基于aes的加密方法及装置
CN102411694B (zh) 加密装置及存储器***
US11258579B2 (en) Method and circuit for implementing a substitution table
WO2006038104A1 (en) Method and apparatus for generating cryptographic sets of instructions automatically and code generation
KR102628010B1 (ko) 가상 암호화 연산을 수행하는 암호화 회로
US8566609B2 (en) Integrity of ciphered data
US8826042B2 (en) Memory controller, memory control apparatus, memory device, memory information protection system, control method for memory control apparatus, and control method for memory device
US20170257212A1 (en) Cryptographic Apparatuses And Methods For Encrypting And Decrypting Data Using Automata
CN116305197A (zh) 一种数据加密方法、装置及可读存储介质
US11824969B2 (en) Method and circuit for performing a substitution operation
CN117640256B (zh) 一种无线网卡的数据加密方法、推荐装置和存储介质
Jana et al. Differential fault attack on photon-beetle
CN1996830A (zh) 具有高级加密标准核的集成电路及验证该标准核的外包
EP3200173B1 (en) Method of protecting electronic circuit against eavesdropping by power analysis and electronic circuit using the same
CN117390642B (zh) 一种数据加解密方法、装置、设备和计算机可读存储介质
US11244078B2 (en) Side channel attack protection
US20120321079A1 (en) System and method for generating round keys
CN104718718A (zh) 用于执行密码方法的装置和方法
KR101105384B1 (ko) 키 암호화 및 셔플링이 적용된 부채널 공격에 안전한 키 관리방법
Panato et al. A low device occupation IP to implement Rijndael algorithm [cryptography]
EP3264397B1 (en) A protection method and device against a side-channel analysis

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