安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

基于S盒优化的轻量级加密算法设计

更新时间:2022-10-28 15:44:06


本文简介:S盒作为DES算法的一个关键环节,它的设计好坏直接影响DES的加密性能。为此,我们首先根据DES算法,并结合分组密码特点提出了一种基于s盒优化的轻量级分组加密算法。一、轻量级安全加密算法过程及实现该算法的密钥k采用28bit的0、1符号串,明文m和密文c则是由0,1组成的长度为32bit的符号串。设m=m1m2...m32,c=c1c2...32,k=k1k2...k28。由于初始置换及其逆置换不

基于S盒优化的轻量级加密算法设计

S盒作为DES算法的一个关键环节,它的设计好坏直接影响DES的加密性能。为此,我们首先根据DES算法,并结合分组密码特点提出了一种基于s盒优化的轻量级分组加密算法。

一、轻量级安全加密算法过程及实现

该算法的密钥k采用28bit的0、1符号串,明文m和密文c则是由0,1组成的长度为32bit的符号串。设m=m1m2...m32,c=c1c2...32,k=k1k2...k28。由于初始置换及其逆置换不影响加密,没有密码学意义,故将其取消,其加密过程可表达如下:

DES(m)=T16*T15....T2*T1(m)。算法流程图如图1所示。

基于S盒优化的轻量级加密算法设计
加密过程可由明文初始化、迭代过程、密钥生成方案完成。

先将明文串的每一个字符转化为其ASCII码,用8位二进制0,1串来表示,依次选取32bit划为一块,共将明文分为n块,若最后一块不满32bit,可以补随机产生的0,1串,但必须让接收者清楚哪些是多余的明文。

本加密算法的迭代过程与DES中类似。先将要加密的32bit明文块分为左右两块等长L0,R0,迭代计算式为:Li=Ri1,Ri=Li-1⊕f(Ri-1,ki),再将16bit的Ri1经E作用膨胀为24bit,
再与ki作异或运算,将运算结果分为4组,通过S盒输出结果为16bit,S盒的输出又经过一个固定置换P后得f(Ri-1,ki),迭代8轮后的结果L8R8左右交换为R8L8即密文。

每一轮都使用不同的、从初始密钥k导出的24 bit密钥ki(1≤i≤16)。k是由一个长度为32的比特串,删去第8,16,24,32位的4个校验比特得到的,校验比特主要为了检错。

二、S盒设计

1、 S盒元素选取方案

S盒中输出元素是由输入的六个比特确定,一般将首末两位构成的二进制数作为行标,而中间四位二进制数作为列标,通过增加逻辑陷阱进行选取。逻辑运算不仅实现简单,而且便于编程修改,在一定周期内可通过修改逻辑门来提高算法安全性。具体过程如下:

①在迭代过程中计算Ri-1⊕E后,将结果24比特串分成4个长度为6的比特串,将它们记为B=B1B2B3B4;

②使用4个S1、S2、S3、S4,每个Si是一个固定的4×16阶矩阵,它的元素来自0到15这16个整数。给定一个长度为6的比特串,例如:B1=b1b2b3b4b5b6,我们可按下列办法计算S1盒的输出S1(B1):用两个比特b2、b3对应的整数r (0≤r≤3)来确定S1的行(所谓两个比特b2、b3对应的整数r意指r的二进制表示为b2、b3,以下含义相同),用b1⊕b4,b4,b5,b6四位对应的整数c(0≤r≤15)来确定S1的列,S1(B1)的取值就是S1的第r行第c列的整数所对应的二进制表示。将四个S盒的输出比特记为:Dj=Sj(Bj),1≤j≤4。

③将长度为16的比特串D=D1D2D3D4通过一个固定的置换P,所得结果即为迭代过程中的f(Ri-1,ki)。

基于S盒优化的轻量级加密算法设计

表1给出了四个S盒的行列标的选择方法,通过增加逻辑运算来改变传统DES算法中的行列标选择位,打乱了原来S盒固有的选择模式,这种方案增加了元素选择方式,不仅能使算法的安全性得到提高,而且由于逻辑运算实现起来较简单,可以使算法在开销方面节俭很多。

2、S盒元素设计

S盒作为DES算法中唯一的非线性器件,是加密的关键所在,然而,多年来,一直未有人将S盒的设计准则公开。从已有的关于S盒的推理不难看出有如下几条准则。

①S盒的每一行是整数0,1,2,…,15的一个置换;

②每个S盒均为6位输入,4位输出;

③S盒的输出都不是其输入的简单线性或仿射函数;

④改变S盒的1位输入,至少要引起2位的输出变化。

通过分析知S盒行列标的选择位已发生变化,因此必须根据以上的原则重新设计S盒中元素来满足加密所需,其中要使输入的1位改变至少导致输出的2位改变是S盒非线性的关键准则。首先假设行标的2位不变,那么对于输入的4位列标中有1位发生变化,则所对应的S盒中元素至少2位变化,以S1盒设计为例说明,则有表2所示的相关表,其他三个S盒设计类似。表中带黑框的数为排在该行列代码前面的列号,下划线标出的表示与自己相同的列号可不用考虑。

当b2b3=00时,如果b1b4b5b6=0100,那么b1⊕b4=1、b4=1、b5=0、b6=0,即表示选择的是S1盒0行12列的元素,从表2中可看出,该元素必须与它前面的0、5、6列中的元素至少有两位不同,也就是说必须从0、5、6列已选择元素的非线性相关数的交集中选取。

基于S盒优化的轻量级加密算法设计

当b2b3=01或10时,由于与b2b3=00有1位不同,故该行元素的选取方法与第二行类似。当b2b3=11,由于与01,11均有一位不同,必须考虑与第1行和第2行的对应列的相关性。即第3行的每1位元素的选取不仅要考虑与本行的列代码1位不同的相关性,还要考虑与1行和2行对应列的相关性。例如:当b1b2b3b4b5b6=011101,则表示选择S盒第3行第13列元素,由于非线性要求,查表2知,该元素必须与1、4、7列元素至少有2位不同,还要与第1行13列元素,以及第2行13列中元素不同,故只能从这五个元素的交集中去选取,以此类推。表3仅给出了S1盒的元素的选定结果,其他S盒选择过程与其类似。

基于S盒优化的轻量级加密算法设计

三、安全性分析

这4个S盒的输入输出对应于4个函数。每个函数的定义域都是{0,1,2,3,…,63},而值域都是{0,1,2,3,…,15}。因为这4个S盒是相互独立的,因而可以计算出这4个S盒并出的概率分布,根据以往分析,实际DES的S盒统计特性近似满足正态分布,故也可认为本文设计的S盒近似满足正态分布特性。

由于4个S盒的输出之和取值范围是{0,1,2,3,…,60},可计算出它的均值和方差为μ=(0+1+2+...+60)/61=30和σ=17.6068。

基于S盒优化的轻量级加密算法设计

图2分别给出了实际设计的四个S盒的概率密度曲线、理论曲线、DES算法S盒曲线以及实际曲线与DES算法S盒输出概率的误差曲线,从图2中可看出理论概率密度曲线的输出值在60-80之间仍能取到,但是根据以上分析可知实际的四个S盒输出值不可能超过60。通过本算法设计的四个S盒的实际概率密度曲线与理论概率密度曲线以及标准DES算法S盒曲线进行比较,本算法S盒输出与理论S盒输出概率密度误差公式以及与DES算法S盒输出概率密度误差公式分别为如式(1)、式(2)所示:

基于S盒优化的轻量级加密算法设计

本算法S盒输出与理论S盒输出概率密度曲线平均误差为1.40×10-3,最大误差1.96×10-2,与DES算法S盒输出概率密度平均误差为1.88×10-3,最大误差2.3×10-3,与它们误差基本控制在10-3数量级,因此统计特性与DES算法中S盒统计特性近似,具有较高的安全性,从图2中以可看出绝大多数明文经过S盒替换之后,本算法中4个子S盒的输出之和将集中在30周围,DES算法也有此特性,因此,若在选择密文时使得其相应于4个S盒的输出之和尽量远离30,可防止选择密文攻击。

加密技术应用的领域很广,然而标准加密算法受成本限制在低端领域很难应用。S盒作为DES算法中的唯一非线性器件,是起混乱作用的重要环节,其设计优劣直接影响整个加密系统的性能。

小知识s盒

S盒用在分组加密算法中,是非线性结构,其密码强度直接决定了密码算法的好坏。

S盒的功能就是一种简单的“代替”操作。一个n输入、m输出的S盒所实现的功能是从二元域F2上的n维向量空间F2到二元域F2上的m维向量空间F2的映射:F2——>F2,该映射被称为S盒代替函数。

构造S盒常用的方法有如下3种:随机选择、人为构造和数学方法构造。

立即下载试用

基于3DES加密算法的研究

关于加密方法,我们之前有介绍过很多,最近大出风头的秀尔算法和DES、MD5等等一直占据鳌头,今天我们来介绍一个小众的加密算法——就是3DES。

加密算法主要通过软件和硬件两种方式来实现,软件的实现方式具有灵活方便的优点,同时也具有加密速度受限制的缺点。采用硬件实现加密算法是实际应用中必须要考虑到的问题。目前经常采用硬件FPGA等来实现,该种实验方式具有处理速度快的特点,但是对系统的复杂度要求较高。

嵌入式微处理器具有实现简单,系统集成度高,体积小,易于移植等众多优点,因此有必要研发基于嵌入式微处理器的加密算法硬件设备,在此提出一种基于ARM处理器的3DES的硬件实现方法。

3DES算法原理

DES是美国国家标准局颁布的数据加密算法,作为世界范围内的公开加密标准已经使用了20多年。随着计算机处理速度的提高,DES算法面临着一些安全威胁,DES采用56位密钥,曾经有人用穷举搜索法对DES进行过密钥搜索攻击。

近年来也有人提出了差分和线性攻击方案,该方案的实施必须有超高速计算机的支持。为了增强DES算法应对差分或线性攻击的可能性,人们提出了一系列改进方案,采用增加密钥长度是一种可行的途径。

为了增加密钥的长度,可将分组密码进行级联,在不同的密钥作用下,连续多次对一组明文进行加密。其中,最有效的方法是使用三重DES加密,它可使加密密钥长度扩展到128位,在提高加密强度的同时,足以应付目前的各种攻击。

DES是一个分组加密算法,它以64位为分组对数据加密。64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。加密的密钥为64位,实际长度为56位,DES算法的保密性取决于密钥。DES对64位的明文分组进行操作。

首先通过一个初始置换IP,将64位的明文分成各32位长的左半部分和右半部分,该初始置换只在16轮加密过程进行之前进行一次。在经过初始置换操作后,对得到的64位序列进行16轮加密运算,这些运算被称为函数f,在运算过程中,输入数据与密钥结合。经过16轮运算后,左、右两部分合在一起得到一个64位的输出序列,该序列再经过一个末尾置换IP-1,获得最终的加密结果。过程如图1所示。

在每一轮加密过程中,函数厂的运算包括以下四个部分:

首先进行密钥序列移位,从移位后的56位密钥序列中选出48位;

然后通过一个扩展置换将输入序列32位的右半部分扩展成48位,再与48位的轮密钥进行异或运算;

再者通过8个s盒将异或运算后获得的48位序列替代成一个32位序列;

最后对32位序列应用置换P进行置换变换,得到-厂的32位输出序列。将函数厂的输出与输入序列的左半部分进行异或运算后的结果作为新一轮加密过程输入序列的右半部分,当前输入序列的右半部分作为新一轮加密过程输入序列的左半部分。

上述过程重复操作16次,便实现了DES的16轮加密运算。

假设Bi是第i轮计算的结果,则Bi为一个64位的序列,Li和Ri分别是Bi的左半部分和右半部分,Ki是第i轮的48位密钥,且f是实现代换、置换及密钥异或等运算的函数,那么每一轮加密的具体过程为:

以上操作的详细过程如图2所示。

在3DES加密算法中,加密过程用两个不同的密钥K1和K2对一个分组消息进行三次DES加密。首先使用第一个密钥进行DES加密,然后使用第二个密钥对第一次的结果进行DES解密,最后使用第一个密钥对第二次的结果进行DES加密。

解密过程首先使用第一个密钥进行DES解密,然后使用第二个密钥对第一次的结果进行DES加密,最后再使用第一个密钥对第二次的结果进行DES解密。

DES算法的密钥长度是56位,三重DES算法的密钥长度是112位,加密强度显著增强,可以很好地应付各种攻击,目前尚没有可行的攻击方法,应用3DES的加密系统具有很大的实用价值。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16314.html