对称密钥加密算法(精选4篇)
对称密钥加密算法 篇1
0 引 言
目前国内在商用密码领域中使用的加解密算法普遍使用对称密钥算法,主要是由于其运算速度快,算法公开,技术成熟。对称密钥算法又以DES算法或3DES算法运用更为普遍。
在对称密钥算法中为了保证密钥的安全,均采用三层密钥体系来进行保护。三层密钥体系由主密钥(MK)、区域/成员主密钥(MMK)和通信/数据密钥(PIK/MAK)构成。
● 主密钥(MK)用于加密保护区域/成员主密钥(MMK);
● 区域/成员主密钥(MMK)用于加密保护通信/数据密钥(PIK/MAK);
● 通信/数据密钥(PIK/MAK)用于在交易的数据传输过程中加解密PIN(Personal Identity Number,即持卡人的私人密码)或MAC(Message Authentication Code,即消息验证码,用于检验消息来源的正确性)。
主密钥(MK)和区域/成员主密钥(MMK)一般都是由多人掌握密钥分量,通过分别注入到硬件加密机后由加密机自行异或后合成。通信/数据密钥(PIK/MAK)一般由应用系统之间自行约定产生,并由区域/成员主密钥(MMK)加密后保存在系统中,一般均保存在数据库中。
由于对称密钥体系基于算法公开、密钥保密的原理,加密机作为加密存储密钥的容器,其在日常管理中的安全控制就显得非常重要了。本文提出了在加密机日常使用过程中可能引入的安全风险,并提出了相应的控制方法和手段。
1 安全风险
1.1 密钥泄漏
1) 通过区域/成员主密钥明文获取PIN
加密机可使用某个区域/成员主密钥加密其他的区域/成员主密钥并将加密后的密文输出到加密机之外。如果存在一个已知晓明文的区域/成员主密钥,就可通过该方法导出由该密钥加密的所有的区域/成员主密钥的密文,再通过标准3DES算法进行解密就可以获得所有的区域/成员主密钥的明文,利用区域/成员主密钥的明文可再解密出数据库中保存的通信/数据密钥的明文,最后通过通信/数据密钥的明文可将原始通信报文中的PIN明文解密出来,既获取了持卡人的密码。
2)通过主密钥(MK)明文获取PIN
加密机可使用主密钥加密区域/成员主密钥后以密文方式输出到加密机之外。由于主密钥是由多人掌握密钥分量并在加密机内部异或合成的,因此一般情况下利用串谋的方式获取主密钥明文的可能性不大。但是加密机管理员一般都掌握管理加密机的口令,其具有向加密机中重新灌入主密钥的权限。因此加密机管理员可通过替换主密钥为一个已知的明文,将所有导出的区域/成员主密钥解密成明文,再利用区域/成员主密钥的明文解密出数据库中保存的通信/数据密钥的明文,最后通过通信/数据密钥的明文可将原始通信报文中的PIN明文解密出来,既获取了持卡人的密码。
1.2 PIN泄漏
根据《银行卡联网联合技术规范 第4部分:数据安全传输控制》[1]中的描述,典型的PIN加密解密过程如图1表示。这一过程保证了PIN的明码只在人工不可访问的终端和硬件加密机内出现。
图1中终端机具、受理方、银联处理中心(CUPS)、发卡方、发卡行以及之间的加密解密信息为:
① 终端机具输出PIN的密文;
② 受理方用与终端机具约定的密钥解密;
③ 受理方用与CUPS约定的密钥加密;
④ 受理方输出PIN的密文;
⑤ CUPS用与受理方约定的密钥解密;
⑥ CUPS用与发卡方约定的密钥加密;
⑦ CUPS输出PIN的密文;
⑧ 发卡方用CUPS约定的密钥解密;
⑨ 发卡方用与发卡行约定的密钥加密;
⑩ 发卡方输出PIN的密文。
上述环节中的第2、3步,第5、6步和第8、9步中通过加密机利用不同的密钥对持卡人私人密码PIN进行多次转换的操作即为“转PIN”。那么根据对称密钥的工作原理,为了保证持卡人所输入的私人密码PIN最终能被发卡行正确的接受并通过认证,持卡人的私人密码PIN在经过多个传输环节后必须能被还原成其在发卡行初始输入时的值。
如在图1的第3、6、9步骤中,所使用到的加密机中存在一个知晓明文的区域/成员主密钥,那么只要利用PIN转换指令集就可以获得由该密钥加密的通信/数据密钥所加密的PIN密文,然后通过2次解密后就可以直接获取到PIN的明文了。
故从理论上讲,只要能获得加密机中的一个区域/成员主密钥的明文,以及由该区域/成员主密钥加密的通信/数据密钥,那么就可以通过转PIN方式来获取到所有受理的交易中持卡人私人密码PIN的明文。因此其影响性和危害性对整个金融系统领域的信息安全以及广大的持卡人来说是极其严重的。
1.3 业务失败
最后再来看一下如何由于修改加密机中保存的区域/成员主密钥而导致业务失败。对称密钥体系的核心就是位于加密和解密的两端基于的密钥必须是一致的,当一端的密钥进行了改动,那么另一端也必须修改成同样的,否则就无法还原成正确的数据。因此只要能更换掉一端的密钥,则整个体系就被打破,业务也将无法正常继续。
(1) 方法一
加密机的标准指令集中可以通过指令要求加密机产生随机分量并存储到指定的位置,那么如果有一个程序对加密机中所有的存储位置均执行上述指令,那么原先保存的区域/成员主密钥将全部被替换,而对应的通信/数据密钥由于是用原来的区域/成员主密钥加的密,因此通过被替换掉的密钥将无法还原出正确的通信/数据密钥,从而导致PIN或MAC的验证出现不一致,所有的交易将全部失败。
(2) 方法二
加密机的标准指令集中还可以使用主密钥加密区域/成员主密钥后导出密钥密文,并可以将该密文再导入到使用同样的主密钥的加密机中进行还原,该功能在多台加密机需要实现大量的区域/成员主密钥的同步时是非常有用且高效的。但是,如果通过编造一个虚假的区域/成员主密钥的密文集,再通过相关指令导入到加密机中覆盖掉原先正确的密钥,那么也将会导致PIN或MAC的验证出现不一致,所有的交易将全部失败。
2 安全控制手段
上述的几个安全风险均需要基于可物理或逻辑接触到加密机后才有可能实现,因此只能由内部人员利用管理上的疏漏或人员操作失误而导致。因此,从理论上讲对称密钥算法加密机的三层密钥体系还是安全可靠的,但在加密机的日常使用和运维过程中必须要有一套严格的规范制度来确保不出现管理漏洞或操作失误。收单行、交换中心和发卡行在加密机的使用、运维过程中如何加强内部管理和控制,确保主密钥(MK)、区域/成员主密钥(MMK)以及通信/数据密钥(PIK/MAK)不被泄露或替换是至关重要的。结合多年的运维经验,提出如下几条以供参考:
1) 严格禁止将生产用的加密机既用于生产又用于测试;
2) 严格禁止在生产用的加密机中注入测试密钥;
3) 严格执行密钥分量分段保管的原则,防止密钥泄露;
4) 严格执行废弃或泄漏的密钥必须删除或覆盖;
5) 加密机管理员口令需分段保管,防止泄露;
6) 对加密机的操作行为必须要有授权,并且做到一人操作一人复核;
7) 主密钥分量口令建议修改,不建议使用初始化的默认口令;
8) 区域/成员主密钥应及时备份及妥善保管,在应急处理时可以使用备份导入的方式来进行快速恢复;
9) 建议使用管理网卡同交易网卡分开的加密机,可设定网络层面的ACL,对连接加密机的IP进行严格的限定;
10) 建议加密机的管理指令集同交易指令集分开,且可指定管理或交易指令集的应用可发布或监听在指定的管理网卡或交易网卡上;
11) 建议交易系统中不保留原始的通信报文,确实由于业务需要必须保留的,也建议将报文中的PIN密文进行替换或删除;
12) 建议对系统日志,应用日志,加密机的操作访问,以及原始通信报文的使用或访问进行监控或定期审计。
上述建议中,有些是需要加密机厂商对其产品进行优化和改造的,还有些是要对交易系统或应用进行优化和改造的。一些小型的金融机构或第三方机构往往很难严格遵守或执行,因此一旦控制不严发生内部泄密或出现人员操作失误事件,将会带来比较严重的后果。企业或机构不仅自身要有严格的检查机制和安全控制措施,同时上级主管部门也应制订相应的法律法规以及定期的安全标准检查和认证授权机制,从而确保交易的安全可靠。
3 结 语
目前看来,由于磁条卡的技术约束,在加密机的日常使用运维过程中上述安全风险和隐患是其固有的特质,管理以及技术手段上的加强只能降低该类风险而无法彻底消除。随着IC卡(PBOC2.0)标准的普及和推广,将可从根本上解决该问题。
参考文献
[1]谢幼如,柯清超.网终课程的开发与应用[M].北京:电子工业出版社,2005.
[2]Chuck M,Bill K.HTML&XHTML权威指南[M].北京:清华大学出版社,2007:510-523.
[3]陈婧.基于PHP语言远程在线教学系统的研究与开发[D].吉林大学,2006.
[4]张亚氢.基于PHP的通用数据库接口技术的研究[D].重庆:重庆大学,2004.
对称密钥加密算法 篇2
近年来,图像加密技术成了信息安全领域研究的热点之一,人们也相继提出了许多图像加密的方法[1—8]。文献[1]提出了一种基于像素扰乱的图像加密方法,即对图像的行和列进行置乱,这也是目前用的最广泛的一种图像加密方法;文献[2]利用斜帐篷映射对初值的敏感及其随机性的特点提出了一种高效的图像加密算法,由于其逆变换简单,故易于解码;文献[3]结合数字改良逻辑映射和线性反馈移位寄存器,提出了一种随机性较高安全二进制算术编码,该算法保证了很好的计算开销;文献[4,5]提出了一种新的基于扩散策略的像素间置换的快速图像加密算法,证明了两个像素异或之后,其分布更均匀,从而保证了加密过程的高随机性;文献[6]利用耦合映像格子产生的密钥生成两个简单的扩散序列,设计了一种时间复杂度较低图像加密算法,通过该算法生成的密钥流,其密钥空间大且随机性很高。综上文献所述,图像加密过程中一般会考虑两点:①计算开销是否在可接受的范围之内;②随机性是否满足要求。本文提出了一种新的密钥流的生成方法,结合耦合映像格子和SBox,通过一个对称矩阵变换(SMT)生成SBox系数,然后与初始密钥异或,循环迭代N次,得到一串密钥流,再通过该密钥流分别对原始图像的行、列进行置乱,最后对扰乱后的像素进行列处理,即每一列与等长度的密钥流进行异或,同时为了保证随机性,从第二列开始每一列密文都与前一列的密文异或。
1 密钥流发生器
基于耦合映像格子(CML)提出了一种新的密钥流生成方法,框图如图1所示。CML采用二维动态映射[6]:
式(1)中,ε是耦合映像格子的耦合强度,f是混沌映射函数。f1是下帐篷映射:
式(2)中,x是系统初始状态,x∈(0,1];p是系统的控制参数,p∈(0,1)。f2是逻辑映射:
式(3)中,a是控制参数,a取3.999 73。
生成密钥流的具体流程如下:
(1)给定一组初始值(x0,y0),x0,y0∈(0,1],CML输出(x,y);
(2)用SMT变换将(x,y)的初始区间(0,1)变换到指定的区间,即SMT的输出x',y'∈(0,15],具体变换如下:
(1)令对称矩阵
②取x',y'的下限作为SMT的输出,即floor(x'),floor(y'),将其作为初始密钥流。
(3)分别提取x0,y0的前8位,记为x1_b,y1_b,令c1=floor(x'),d1=floor(y'),则
其中,SBox是一个16×16的二维表,对应有16×16个(0,255)的十进制数,通过下标c1,d1可以找到SBox中对应的数,将其作为SBox的输出;
(4)从第二列开始,xi_b,y1_b,i=2,3,…,n分别是前一个密钥的输出左移3bit、右移3bit得到,则最终密钥流φ(i)=SBox(ci,di)⊕xi_b⊕yi_b。
2 加密与解密
传统的图像加密方案有两种[7—15]:①结合置乱和扩散操作,置乱即对图像的像素进行扰乱处理,扩散是对图像像素值进行改变;②先对图像进行分块,然后对每一块进行编码。本文结合这两种加密方案对图像进行加密,整体加密流程图如图2所示:
2.1 置乱
假设输入为一个大小为M×N的灰度图像,用CML产生的一组密钥流,即(xi,yi),i∈max{M,N},作为循环移位的密钥。对于xi,取i=M,x1,x2,…,xM组成一个一维数组(x1,x2,…,xM),然后对这个一维数组的数值进行E-R处理,即扩值取整,记为Rshift=floor[N(x1,x2,…,,xM)],用Rshitf对该灰度图像的行进行移位,即数组第一个参数控制图像第一行右移的位数,第二个参数控制图像第二行右移的位数,依次类推;同理,对于yi,取i=N,y1,y2,…,yN组成一个一维数组(y1,y2,…,yN),对其数值进行E-R处理,记为Cshift=floor[M(y1,y2,…,yN)],用Cshif对灰度图像的每一列进行下移位。
2.2 扩散和分块编码
经过置乱后的图像还是大小为M×N的图像,对置乱后的图像进行分块处理,即对图像像素进行列处理,如图3所示。令置乱后第i(i=1,2,…,N)列的像素值为Pi(j)(j=1,2,…,M),扩散后的像素值为Ci(j),前一个扩散的像素值为Ci(j-1)。编码过程如下:
Step1:第1列的像素值与密钥流异或,记为
Step2:第2列采用同样的方法编码,即,然后用第1列的密文与第2列进行异或,即
Step3:同理,每一列像素值与密钥流进行异或后再与前一列密文进行异或
2.3 解密过程
是加密过程的逆过程,即先提取密文序列,对每一块密文序列进行编号,从第N列开始每一列与前一列异或;然后恢复加密过程中使用的密钥流,分别与(1)中的每一列异或,异或的结果组成一个M×N的矩阵;最后利用2.1节中的两个一维数组,即Rshift、Cshif,分别对矩阵的列、行进行移位,移位后的结果即为原始图像。
3 实验结果与分析
为了分析该算法的可行性,做了以下实验。输入图像为256×256的Lena灰度图像,密钥系统的初始值选取x0=0.27,y0=0.837 0,p=0.7,a=3.999 73。
3.1 密钥空间分析
一种加密算法密钥空间的大小代表该算法可用于加密的不同密钥的总个数。本文算法密钥系统有四个初始值,x0,y0,p∈(0,1),a∈(3.57,4)。根据IEEE 754标准,64位双精度数的精确度为10-15,则该算法的密钥空间可以大至2197。因此,该密钥空间可以很好地抵抗暴力攻击。
3.2 信源熵
信源熵是用来描述信源符号随机出现程度的指标。信源熵可定义为
式(4)中,P(mi)为信源符号mi出现的概率。对于一副理想的随机图像,其信源熵理论上可以达到8。原图像和加密图像的信息熵如表1所示。
3.3 直方图分析
直方图是反映一幅图像在同一灰度级的像素的分布情况。一个好的加密系统,其加密图的直方图应该呈统一分布,以抵抗外界的数学统计攻击。本文的原图和加密图的直方图如图4所示。直方图显示,加密前的图像的直方图呈不规则变化,而加密后的图像的直方图基本呈统一分布,这说明密文不能为非法用户提供有效信息,从而可以有效地抵抗外界的统计攻击。
3.4 像素相关性分析
对于一幅普通的图像来说,其相邻像素,包括水平、垂直、对角线方向,理论上是高度相关的。加密图像相邻像素的相关性是衡量一个加密系统的一个重要指标,相邻像素相关性越低,其加密效果更好。本文选取了5 000对相邻像素点测试其相邻像素的相关性,原图像和加密图像的相关性如图5所示。像素相关性rxy的计算公式如下:
式中,x、y为图像相邻像素的灰度值。原图和加密图的相关系数如表2所示。
3.5 差分攻击分析
差分攻击是一种选择明文类攻击,为了抵抗这类攻击,则要求输入图像中少数像素点变化会导致密文大量像素的改变。像素个数改变率(NPCR)和统一平均变化强度(UACI)经常用来作为该类特性的分析指标,NPCR值越接近100,UACI值越接近34,其加密效果越好。NPCR和UACI的定义如下:
式中,C1、C2分别为两幅只有一个像素差别的密文图像,C1(r,c)、C2(r,c)分别为C1、C2在点(r,c)处的像素值,size(D)为对应图像的大小。该算法的NPCR和UACI的仿真结果如表3所示.可以看出,本文算法经过一轮加密就基本可以达到较为理想的效果,两轮迭代之后可以保证NPCR>0.996和UA-CI>33.4,而要得到同样的效果,其他两种算法至少要迭代两次以上才能实现。
4 结束语
一种非对称加密算法的程序实现 篇3
互联网的飞速发展极大改变了人们工作生活方式,是信息往来的重要手段。人们可以通过互谅网浏览远程主机的资源,或者可以通过email在网上交传递邮件信息,极大地提高了工作效率。然而,互联网络给人们带来方便的同时,也给用户提出了新的安全挑战。TCP/IP协议是国际互联网的核心通信协议,是对等计算机通信规则和规范的集合,TCP/IP协议在当初设计实现时是存在一定缺陷的,数据在传输到目的主机前需要经过中间计算机和通信线路,而这些中间路径对于源主机和目的主机都是透明的,或者说收发主机用户并不关心这些中间过程。数据在传输过程中可能受到第三方的攻击干扰,如侦听、窃取等。因此互联网上传输的数据会经受各种安全挑战。
数据加密技术和数字签名技术是解决网络信息安全的技术手段,其理论支撑是密码学。它的基本思想是对发送端发出原始明文进行复杂的变换,变换数据不具有规律性,十分杂乱,称之为加密过程。传输途中的中间主机很难破译原始明文,达到数据保密的效果。而合法的终端计算机用户则可以借助密钥密钥和解密算法将密文还原成明文。而加密算法是密码学的重要研究内容,高级加密标准(AES)是一种流行的非对称加密算法,有关资料文献中有该算法描述,但附有完整的程序实现较少,本文介绍该算法程序实现,让大家建立该算法感性认识。。
2 AES加密算法
2.1算法描述
AES算法是一个数据块和密钥长度都可变的迭代分组加密算法,数据块长度和密钥长可分别为128,192,256 位。在加密之前,对数据块做预处理。首先,把数据块写成字的形式,每个字包含4 个字节,每个字节包含8 个比特信息;其次,把字记为列的形式。这样数据块就可以用以下形式:
其中,每列表示一个字aj =[a0ja1ja2ja3j] ,每个aij表示一个8比特的字节,即aj ∈ GF(28)[x]/(x4+ 1),aij ∈ GF(28) 。
我们用Nb表示一个数据块中字的个数,那么Nb=4,6 或8。类似地,用Nk表示密钥中字的个数,那么Nk=4,6 或8。例如,Nk=6的密钥可以记为如下的形式:
算法轮数Nr有Nb和Nk共同决定,具体值可以表示形如序列(Nk,Nb,Nr)。一共有9 各序列(4,4,10),(4,6,12),(4,8,14),(6,4,12),(6,6,12),(6,8,14),(8,4,14),(8,6,14),(8,8,14)。加密和解密过程中,数据都是以这种字或字节形式表示的。
AES算法的加密是将明文块经过白化技术处理后,进入轮函数,而入轮函数又由字节代换、行移变换、列变换和密钥4个变换组成,这样经过Nr轮之后,把明文变换成密文块。为了在同一算法中实现加密和解密,需要对最后一轮做必要的调整,最后一轮没有列变换。
2.2算法实现
(1)AES轮变换
AES算法属于分组密钥算法,分组密钥算法加密过程、解密过程、输入分组和输出分组过程中的中间分组都是128 比特。AES的轮变换是基于Add Round Key,Sub Bytes,Shift Row和Mix Column等4 种变换的复合。限于篇幅,仅介绍前面两种变换。Add Round Key变换过程密钥将会与原矩阵合并。每次循环加密中,都会由主密钥产生一把回合密钥(通过Rijndael密钥生成方案产生),密钥大小会跟原矩阵一样,以与原矩阵中每个对应的字节作异或(⊕)运算。其示意图如图1所示。
(2)Sub Bytes变换,字节变换(Sub Bytes)是作用在字节上的一种非线性字节变换,这个变换(或称S-盒)是可逆的,它定义为图2的形式。这种利用有限域上的逆映射构造S-盒好处是:表述简单,使人相信没有陷门,最重要的是其具有良好的抗差分析和线性分析的能力。附件的仿射变换,目的是用来复杂化S-盒的代数表达,以防止代数插值攻击。当然具体实现时,S-盒也可用查表法来实现。其部分代码如下:
其示意图如下图2所示。
(3)加解密算法程序实现
加密主要是实现对数据信息的加密,先读进明文,利用密钥产生轮子密钥,然后进行各种轮变化,最终形成密文,其实现流程图如下3 所示。解密算法程序实现这部分主要实现对加密数据信息进行解密。其具体实现是:先读进密文,利用密钥产生轮子密钥,然后进行各种逆轮变换,最后得出明文。其实现流程图如图4所示。
附程序实现代码
加密代码:int jiami(unsig
解密代码:
3 结论
AES在实现方面具有速度快、可并行处理、对处理器的结构无特殊要求,算法设计相对简单,分组长度可以改变,而且具有很好的可扩充性,本文对AES算法进行了详细地分析和研究,本文介绍了AES加密解密算法基本思想和主要步骤, 最后用程序实现该算法。
参考文献
[1]赵勇.高级加密标准AES的实现研究[D].电子科技大学,2004.
[2]赵战生、吕述望.信息安全保密教程[M].中国科学技术大学出版社,2006.
[3]James Mc Caffrey.用新的高级加密标准(AES)保持你的数据安全.MSDN Magazine,2003.
[4]卢开澄.计算机密码学-计算机网络中的数据保密与安全[M].清华大学出版社,2007.
[5]谷利泽,杨义先.现代密码学教程[M].北京邮电大学出版社,2009.
[6]Joan Daemen、Vincent Rijm.高级加密标准(AES)算法-Rijn-dael的设计[M].清华大学出版社,2004.
对称密钥加密算法 篇4
DES即数据加密标准是Data Eneryption Standard的缩写,它是一种对称加密算法,也是一种分组密码。通过反复使用加密组块替代和换位两种技术,经过16轮的变换后得到密文,安全性较高。微软公司提供了DES公用密钥的加密类函数DES Crypto Service Provider(),在.NET开发系统中,利用Visual Studio编程平台,使用微软提供的加密类函数,我们可以自己编制自己的DES加密算法软件,从而可以方便地进行大文件的加密和解密,进而对文件的安全性进行游刃有余的自主控制。
2 文件的选择
首先对需要加密的文件进行选择,选择完之后,便可以对文件进行DES对称加密算法加密了。我们这里以PDF文件为例进行加密,其C#编程对话框如图1所示。
其PDF文件选择按钮代码如下:
3 文件的DES加密
选择好要加密的文件之后,在输入密码对话框中输入需要加密的密文,就可以对文件进行加密了:
在进行加密之后一定要把加密流以及文件的输入输出流给关闭,从而释放文件操作所占用的系统内存资源,以及避免文件有出现无法预料编译错误或其他结果。其中流的关闭代码如下:
对文件进行加密之后,所加密的PDF文件如果不进行解密的话,就不能正常打开,如果强行打开,那么就会出现如图2所示的错误提示。
所以只有对加密过的PDF文件进行解密,才能重新用PDF文件格式打开文件。
4 文件的DES解密
想要对加密的文件重新进行正常打开,必须对加密的文件进行DES对称解密,其解密代码如下所示。
在进行解密之后同样要把解密流以及文件的输入输出流给关闭,释放文件操作所占用的系统内存资源,这样操作才不会出现内存的泄露以及编译出现不可预知的结果。
5 结束语
DES对称加密及解密算法的Visual Studio C#实际编程应用,可灵活地对所要保护的文件进行加密,在一定程度上较好地解决了加密文件不被篡改、盗用等危害,并确保了PDF或其他格式文件的安全性。由于时间过长而忘记了加密文件的密码,可以通过编程软件对所加密文件的密文随时进行查看,然后输入密文进行解密,充分确保了文件的安全和有效。
参考文献
[1]周文婷,朱姣姣.DES加密算法的一种改进方法[J].计算机安全.2012.09:47-50.
[2]刘浩,李强.简明DES加密算法的实现[J].甘肃科技,2004.11v0120:60-62.
[3](德)侯姆,克鲁克,斯酱达著,薛兴涛,袁勤勇译.C#软件项目开发全程剖析[M].北京:清华大学出版社.