CN104683096B - 动态s盒变换方法及系统 - Google Patents

动态s盒变换方法及系统 Download PDF

Info

Publication number
CN104683096B
CN104683096B CN201310631264.2A CN201310631264A CN104683096B CN 104683096 B CN104683096 B CN 104683096B CN 201310631264 A CN201310631264 A CN 201310631264A CN 104683096 B CN104683096 B CN 104683096B
Authority
CN
China
Prior art keywords
mtd
mtr
msub
mtable
boxes
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
CN201310631264.2A
Other languages
English (en)
Other versions
CN104683096A (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.)
Tianjin Jinhang Computing Technology Research Institute
Original Assignee
No 8357 Research Institute of Third Academy of CASIC
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 No 8357 Research Institute of Third Academy of CASIC filed Critical No 8357 Research Institute of Third Academy of CASIC
Priority to CN201310631264.2A priority Critical patent/CN104683096B/zh
Publication of CN104683096A publication Critical patent/CN104683096A/zh
Application granted granted Critical
Publication of CN104683096B publication Critical patent/CN104683096B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种动态S盒变换方法及系统,包括接口模块、S盒控制模块和S盒变换模块,接口模块实现密钥、信息和控制信号的接收、存储与发送;S盒控制模块实现整个S盒变换的动态控制;S盒变换模块实现S盒变换的动态变换。本发明在S盒变换中增加了初始密钥奇偶性的依赖关系,同时增加了S盒变换的数目,让S盒变换动态化和多样化,克服了传统S盒变换固定单一且独立于密码算法的缺陷,提高了S盒变换输入和输出之间的复杂性,增强了密码算法的安全性能,且提高了运行速度,有效地节省了硬件资源。

Description

动态S盒变换方法及系统
技术领域
本发明涉及一种S盒变换方法及系统,具体涉及加解密过程中的动态S盒变换方法及系统。
背景技术
随着计算机网络及通信技术的迅速发展,密码学的研究得到前所未有得重视,信息社会中的信息安全问题受到越来越多的关注,信息安全问题已经被我国政府提高到了国家发展战略的层次。
S盒变换,也称字节替换变换,就是将一个字节数据用另一个不相关的字节数据替代。S盒变换是许多密码算法中的唯一非线性变换,主要用于密码设计中的混淆功能,它的密码学性质往往决定了整个密码算法的安全性能。一般,在密码算法的整个算法过程中,S盒变换是固定且唯一的,也即是一种静态的S盒变换,这样的S盒变换的输入和输出具有固定且单一的依赖关系,致使密码算法的抗破译性能不够高,有可能导致秘密信息的泄露、甚至重要情报被敌人获取,严重危害国家安全。
发明内容
本发明旨在克服传统S盒变换固定单一且独立于密码算法的缺陷,让S盒变换动态化和多样化,加强S盒变换输入和输出之间的复杂性,增强密码算法的安全性能及提高运行速度,提供一种动态S盒变换方法及系统。
本发明采用如下的技术方案实现的:
一种动态S盒变换系统,包括接口模块、S盒控制模块和S盒变换模块;
接口模块包括密钥寄存器、输入信息存储器、输出信息存储器和控制信号寄存器,实现密钥、信息和控制信号的接收、存储与发送;
S盒控制模块包括奇偶判别器、加解密控制器和乘法累加运算单元控制器,实现整个S盒变换的动态控制;
S盒变换模块包括有限域GF(28)乘法逆元变换器和4个乘法累加运算单元,实现S盒变换的动态变换。
在上述系统基础,更进一步的小改进:
S盒变换结果依赖于初始密钥的奇偶性;初始密钥的奇偶性不同,则S盒变换的结果也不同。
S盒变换模块,还可包括两个子模块:S盒变换1和S盒变换2;其中S盒变换1和S盒变换2分别与初始密钥的奇偶性相对应,并且S盒变换1和S盒变换2均包含了有限域GF(28)的乘法逆元运算和仿射变换的线性运算;
有限域GF(28)的乘法逆元运算中,S盒变换1和S盒变换2均以m(x)=x8+x4+x3+x+1为不可约多项式,仿射变换的线性运算中,S盒变换1的仿射变换为公式1和公式3,S盒变换2的仿射变换为公式2和公式4;
公式1:
公式2:
公式3:
公式4:
S盒变换1和S盒变换2共用同一个有限域GF(28)乘法逆元变换器,实现有限域GF(28)的乘法逆元运算。
一种动态S盒变换方法,包括:
a.密钥寄存器存储接收到的初始密钥信息;
输入信息寄存器存储接收到的待处理输入信息;
控制信号寄存器存储接收到的加解密控制信号;
b.奇偶判别器判别初始密钥的奇偶性,并将判别结果传送给乘法累加运算单元控制器;
加解密控制器控制4个乘法累加运算单元,根据控制信号寄存器的值控制动态S盒工作于加密模式或解密模式;根据模式选择的结果对待处理信息进行S盒变换;
乘法累加运算单元控制器控制4个乘法累加运算单元,根据奇偶判别器的结果控制动态S盒工作于S盒变换1模式或S盒变换2模式;
c.有限域GF(28)乘法逆元变换器存储有256个固定的逆元字节数据,该256个固定的逆元字节数据与有限域GF(28)上的256个元素一一对应,将输入的数据用该存储器中的对应逆元替代;
4个乘法累加运算单元实现数据之间的乘积运算和加法运算;
d.输出信息寄存器存储处理完毕的信息;等待外部设备读取。
本发明的优点是,将初始密钥的奇偶性和S盒变换联系到一起,同时增加了S盒变换的数目,让S盒变换动态化和多样化,增强了S盒变换的输入和输出之间的依赖关系,使得密文和明文之间的依赖关系更加复杂,增强了密码算法的安全性能;同时将两种S盒变换及其逆变换集成在一个系统中,共用同一个有限域乘法逆元变换器,实现加密的动态S盒变换和解密的动态S盒变换,提高了运行速度,且有效地节省了硬件资源。
附图说明
图1是本发明提供的一种动态S盒变换系统的结构框图;
图2是本发明提供的一种动态S盒变换方法的示意图;
图3是有限域GF(28)上的256个字节数据及其逆元数据表。
具体实施方式
下面,结合附图和具体实施例,对发明的X种实施方式作进一步的说明。
实施例1
如附图1、2所示,一种动态S盒变换方法及系统,接口模块包括密钥寄存器、输入信息存储器、输出信息存储器和控制信号寄存器,实现密钥、信息和控制信号的接收、存储与发送;S盒控制模块包括奇偶判别器、加解密控制器和乘法累加运算单元控制器,实现整个S盒变换的动态控制;S盒变换模块包括有限域GF(28)乘法逆元变换器和4个乘法累加运算单元,实现S盒变换的动态变换。
如附图2所示,有限域GF(28)乘法逆元变换器中存储有256个有限域GF(28)的逆元字节数据,该字节数据是将有限域GF(28)上的256个数据以m(x)=x8+x4+x3+x+1为不可约多项式求逆得到的256个逆元数据,结果如附图3所示。有限域GF(28)乘法逆元变换器根据接收到的字节信息,输出相对应的字节逆元信息。
如附图2所示,4个乘法累加运算单元包括乘法累加运算单元1、乘法累加运算单元2、乘法累加运算单元3和乘法累加运算单元4。其中乘法累加运算单元1完成公式1的矩阵运算;乘法累加运算单元2完成公式2的矩阵运算;乘法累加运算单元3完成公式3的矩阵运算;乘法累加运算单元4完成公式4的矩阵运算。
公式1:
公式2:
公式3:
公式4:
如附图2所示,本发明工作过程如下:
(1)接收信息及处理命令
控制信号寄存器接收加解密的处理命令并存储;信息存储器接收待处理信息并存储;密钥寄存器接收加解密的初始密钥并存储。
(2)数据处理
(a)、奇偶判别
奇偶判别器将密钥寄存器的初始密钥做逐位异或运算,判断初始密钥的奇偶性,并将结果送入乘法累加运算单元控制器。
(b)、模式选择
加解密控制器根据控制信号寄存器的值决定变换工作于加密模式还是解密模式:如果加解密控制器的信号值为1,则乘法累加运算单元1和乘法累加运算单元2失效,乘法累加运算单元3和乘法累加运算单元4有效;如果加解密控制器的信号值为0,则乘法累加运算单元1和乘法累加运算单元2有效,乘法累加运算单元3和乘法累加运算单元4失效。
乘法累加运算单元控制器根据接收到的奇偶判别器的结果选择相应的乘法累加运算单元:如果奇偶判别器的结果为1,则乘法累加运算单元1和乘法累加运算单元3有效,乘法累加运算单元2和乘法累加运算单元4失效;如果奇偶判别器的结果为0,则乘法累加运算单元1和乘法累加运算单元3失效,乘法累加运算单元2和乘法累加运算单元4有效。
(c)、S盒变换
根据模式选择的结果对待处理信息进行S盒变换:如果加解密控制器的信号值为1,同时奇偶判别器的值为1,则将待处理信息送入有限域GF(28)乘法逆元变换器,再将得到的逆元值送入乘法累加运算单元3,完成整个S盒变换;如果加解密控制器的信号值为0,同时奇偶判别器的值为0,则将待处理信息送入乘法累加运算单元2,再将得到的结果送入有限域GF(28)乘法逆元变换器,完成整个S盒逆变换。
(3)信息输出
输出信息存储器接收S盒变换完成的数据并存储,等待外部设备读取。
以上所述仅为本发明的较佳可行实施例,并非因此局限本发明的专利范围,故凡是运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的保护范围。

Claims (5)

1.一种动态S盒变换系统,包括:接口模块、S盒控制模块和S盒变换模块;
所述接口模块包括密钥寄存器、输入信息存储器、输出信息存储器和控制信号寄存器,实现密钥、信息和控制信号的接收、存储与发送;
所述S盒控制模块包括奇偶判别器、加解密控制器和乘法累加运算单元控制器,实现整个S盒变换的动态控制;奇偶判别器将密钥寄存器的初始密钥做逐位异或运算,判断初始密钥的奇偶性,并将结果送入乘法累加运算单元控制器;加解密控制器根据控制信号寄存器的值决定变换工作于加密模式还是解密模式;乘法累加运算单元控制器根据接收到的奇偶判别器的结果选择相应的乘法累加运算单元;
所述S盒变换模块包括有限域GF(28)乘法逆元变换器和4个乘法累加运算单元,实现S盒变换的动态变换;S盒变换模块包括两个子模块:S盒变换1和S盒变换2;其中S盒变换1和S盒变换2分别与初始密钥的奇偶性相对应,并且S盒变换1和S盒变换2均包含了有限域GF(28)的乘法逆元运算和仿射变换的线性运算。
2.根据权利要求1所述的动态S盒变换系统,其特征在于,所述S盒变换依赖于初始密钥的奇偶性;初始密钥的奇偶性不同,则S盒变换的结果也不同,仿射变换的线性运算中,S盒变换1的仿射变换为公式1和公式3,S盒变换2的仿射变换为公式2和公式4;其中:
公式1:
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>y</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>x</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
公式2:
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>y</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>x</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
公式3:
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>y</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>x</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
公式4:
<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>y</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>x</mi> <mn>7</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>5</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>4</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>3</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>2</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mn>0</mn> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>
3.根据权利要求1所述的动态S盒变换系统,其特征在于,所述有限域GF(28)的乘法逆元运算中,S盒变换1和S盒变换2均以m(x)=x8+x4+x3+x+1为不可约多项式。
4.根据权利要求3所述的动态S盒变换系统,其特征在于:S盒变换1和S盒变换2共用同一个有限域GF(28)乘法逆元变换器,实现有限域GF(28)的乘法逆元运算。
5.一种动态S盒变换方法,包括:
a.密钥寄存器存储接收到的初始密钥信息;
输入信息寄存器存储接收到的待处理输入信息;
控制信号寄存器存储接收到的加解密控制信息;
b.奇偶判别器用于判别初始密钥的奇偶性,并将判别结果传送给乘法累加运算单元控制器;
加解密控制器控制4个乘法累加运算单元,根据控制信号寄存器的值控制动态S盒工作于加密模式还是解密模式;
乘法累加运算单元控制器控制4个乘法累加运算单元,4个乘法累加运算单元包括乘法累加运算单元1、乘法累加运算单元2、乘法累加运算单元3和乘法累加运算单元4,根据奇偶判别器的结果控制动态S盒工作于S盒变换1还是S盒变换2,即如果奇偶判别器的结果为1,则乘法累加运算单元1和乘法累加运算单元3有效,乘法累加运算单元2和乘法累加运算单元4失效;如果奇偶判别器的结果为0,则乘法累加运算单元1和乘法累加运算单元3失效,乘法累加运算单元2和乘法累加运算单元4有效;
c.有限域GF(28)乘法逆元变换器存储有256个固定的逆元字节数据,该256个固定的逆元字节数据与有限域GF(28)上的256个元素一一对应,将输入的数据用该存储器中的对应逆元替代;
4个乘法累加运算单元实现数据之间的乘积运算和加法运算。
d.输出信息寄存器存储处理完毕的信息;等待外部设备读取。
CN201310631264.2A 2013-11-29 2013-11-29 动态s盒变换方法及系统 Active CN104683096B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310631264.2A CN104683096B (zh) 2013-11-29 2013-11-29 动态s盒变换方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310631264.2A CN104683096B (zh) 2013-11-29 2013-11-29 动态s盒变换方法及系统

Publications (2)

Publication Number Publication Date
CN104683096A CN104683096A (zh) 2015-06-03
CN104683096B true CN104683096B (zh) 2017-12-22

Family

ID=53317730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310631264.2A Active CN104683096B (zh) 2013-11-29 2013-11-29 动态s盒变换方法及系统

Country Status (1)

Country Link
CN (1) CN104683096B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115801227B (zh) * 2022-11-10 2023-07-21 北京海泰方圆科技股份有限公司 一种生成置换表的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314186B1 (en) * 1997-06-23 2001-11-06 Samsung Electronics Co., Ltd. Block cipher algorithm having a robust security against differential cryptanalysis, linear cryptanalysis and higher-order differential cryptanalysis
DE10200351A1 (de) * 2002-01-08 2003-07-17 Hoetker Andreas Alice - Ein Algorithmus zur Sicherung von Daten
TW584998B (en) * 2002-01-15 2004-04-21 Tsai Heng Sung Dynamic S-Box method of advanced encryption standard
CN101814985A (zh) * 2010-02-08 2010-08-25 河南大学 应用多混沌映射多动态s盒的分组密码系统
CN101848081A (zh) * 2010-06-11 2010-09-29 中国科学院软件研究所 一种s盒构造方法及s盒
CN101951314A (zh) * 2010-10-12 2011-01-19 北京航空航天大学 对称密码加密中s-盒的设计方法
CN103391186A (zh) * 2013-06-27 2013-11-13 清华大学 一种实现aes算法中s盒和逆s盒替换的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314186B1 (en) * 1997-06-23 2001-11-06 Samsung Electronics Co., Ltd. Block cipher algorithm having a robust security against differential cryptanalysis, linear cryptanalysis and higher-order differential cryptanalysis
DE10200351A1 (de) * 2002-01-08 2003-07-17 Hoetker Andreas Alice - Ein Algorithmus zur Sicherung von Daten
TW584998B (en) * 2002-01-15 2004-04-21 Tsai Heng Sung Dynamic S-Box method of advanced encryption standard
CN101814985A (zh) * 2010-02-08 2010-08-25 河南大学 应用多混沌映射多动态s盒的分组密码系统
CN101848081A (zh) * 2010-06-11 2010-09-29 中国科学院软件研究所 一种s盒构造方法及s盒
CN101951314A (zh) * 2010-10-12 2011-01-19 北京航空航天大学 对称密码加密中s-盒的设计方法
CN103391186A (zh) * 2013-06-27 2013-11-13 清华大学 一种实现aes算法中s盒和逆s盒替换的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
密钥控制的多S盒Rijndeal算法;殷新春;《通信学报》;20090930;第28卷(第9期);全文 *

Also Published As

Publication number Publication date
CN104683096A (zh) 2015-06-03

Similar Documents

Publication Publication Date Title
Ye et al. An efficient chaotic image encryption algorithm based on a generalized Arnold map
CN106850221B (zh) 信息加密、解密方法及装置
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
CN107579813A (zh) 信息加密、解密方法及装置
CN106571905A (zh) 一种数值型数据同态保序加密方法
CN104852798B (zh) 一种数据加解密系统及方法
CN103167213A (zh) 基于Cat映射与超混沌Lorenz系统的数字图像加密方法
Wegener et al. Spin me right round rotational symmetry for FPGA-specific AES: Extended version
CN107257279A (zh) 一种明文数据加密方法及设备
CN104683096B (zh) 动态s盒变换方法及系统
CN106788976A (zh) 一种aes加解密电路仿真分析方法及装置
EP4152681A1 (en) Low overhead side channel protection for number theoretic transform
Liu et al. Optimization of AES and RSA algorithm and its mixed encryption system
CN114826560B (zh) 一种轻量级分组密码cref实现方法及系统
CN110266481A (zh) 基于矩阵的后量子加、解密方法与解密装置
Cheng et al. Lightweight and flexible hardware implementation of authenticated encryption algorithm SIMON‐Galois/Counter Mode
Wu et al. A low cost and inner-round pipelined design of ECB-AES-256 crypto engine for Solid State Disk
CN107437990A (zh) 加密方法、解密方法、加密装置和解密装置
CN110430038B (zh) 分组密码设计中面向硬件实现的mds矩阵构造方法及装置
Kanda et al. Design of an Integrated Cryptographic SoC Architecture for Resource-Constrained Devices
RU2503135C1 (ru) Способ криптографического преобразования информации и устройство для его реализации
D’Anvers One-Hot Conversion: Towards Faster Table-Based A2B Conversion
CN115037485B (zh) 轻量级认证加密算法的实现方法、装置及设备
Chen et al. Generation of high-order random key matrix for Hill Cipher encryption using the modular multiplicative inverse of triangular matrices
CN112134691B (zh) 一种部件可重复的nlcs分组密码实现方法、装置及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180408

Address after: 300308 Tianjin District of Dongli City Airport Economic Zone bonded Road No. 357

Patentee after: TIANJIN JINHANG INSTITUTE OF COMPUTING TECHNOLOGY

Address before: 300308 Tianjin District of Dongli City Airport Economic Zone bonded Road No. 357

Patentee before: NO.8357 Research Institute of the Third Academy of China Aerospace Science & Industry Corp.

TR01 Transfer of patent right