密码学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密码学
一. 密码学简介据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛
”密码机,密码学在战争中起着非常重要的作用。随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等。我国也相应提出了自己国家的ECC、SCB2、SCH等加密算法。使用密码学可以达到以下目的:1. 保密性:防止用户的标识或数据被读取。
2. 数据完整性:防止数据被更改。
3. 身份验证:确保数据发自特定的一方。二. 加密算法介绍根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。两者的区别在于:对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的私密性。非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。2.1 对称加密算法对称加密算法用来
对敏感数据等信息进行加密,现在,通常使用分组密码(block cipher)或序列密码(stream cipher)实现对称密码,由于序列密码算法不常用,所以本文将只讨论分组密码,常用的分组密码算法包括:1. DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。2. 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。3. AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。分组密钥常见术语置换(Permutation)与替代(Substitution)置换与替代是对称密钥中常用的两种手段。置换是对数据重新进行排列,而替代是将一个数据单元替换为另一个。通常替代要借助非线性查找表来进行,即DES和AES中所称的S-Box。轮(Round)对称密钥中经常对输入进行多轮迭代,这些迭代通常操作相同,只是具体上有些许差异,对称密钥的这种特性使得对称密钥适于用流水结构实现,因而数据吞吐量大,容易实现高速加解密。2.1.1 DESDES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法有三个输入:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES 的工作方式,有两种:加密或解密。算法原理DES算法把64
位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步:1 初始置换其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为
D1D2D3……D64,则经过初始置换后的结果
为:L0=D58D50……D8;R0=
D57D49……D7。2 逆置换经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。 2.1.2
3DES3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES 的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。3DES一共有两种,一种是使用两个56位长度的密钥key1和key2,这样密码强度提高到了112位;另一种是使用三个56位长度的密钥key1、key2和key3,这样密码强度提高到了168位。使用两个密钥的3DES:加密过程:用key1加密,用key2解密再用key1加密解密过程:用key1解密,用key2加密再用key1解密使用三个密钥的3DES:加密过程:用key1加密,用key2解密
再用key3加密解密过程:用key3解密,用key2加密再用key1解密2.1.3 AES2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。Rijndael被选中成为将来的AES。Rijndael 是在1999 年下半年,由研究员Joan Daemen 和Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。美国标准与技术研究院(NIST) 于2002 年5 月26 日制定了新的高级加密标准(AES) 规范。算法原理AES 算法基于置换和替代运算。AES 使用几种不同的方法来执行置换和替代运算。AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和256 位长度的密钥,并且用128 位(16字节)分组密钥(轮密钥)加密和解密数据。数据长度为128位。通过分组密码返回的加密数据长度与输入数据长度相同。迭代加密使用一个循环结构,在该循环中重复置换(permutation)和替代(substitution)输入数据。密钥扩展(Key Expansion)AES对原始密钥进行密钥扩展操作,将其扩展并应用到每轮迭代加密中。State矩阵AES将输入和每轮迭代的中间结果表达为4×4矩阵,矩阵中每个元素为8位。AES算法的主循环对State矩阵执行四种不同的操作,分别为SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换)、AddRoundKey(轮密钥相加)。SubBytes:将State矩阵中的字节用S-box中相