密码及加密技术
密码技术概述
现在的学术界一般认为,密码学研究的目的乃是要保证数据的保密性、完整性和认证性。
数据的保密性是指未经授权的用户不可获得原始数据的内容。
数据的完整性是验证数据在传输中未经篡改。
数据的认证(审查)性是指验证当前数据发送方的真实身份。
密码学正是研究信息保密性、完整性和认证性的科学,是数学和计算机的交叉学科,也是一门新兴并极有发展前景的学科。
密码学包含两个互相对立的分支
研究编制密码的技术称为密码编码学(Cryptography),主要研究对数据进行变换的原理、手段和方法,用于密码*设计。
研究破译密码的技术称为密码分析学(Cryptanalysis),主要研究内容如何破译密码算法。密码编制学和密码分析学共同组成密码学。
基本概念
在学习密码技术之前,首先定义一些术语。
- 明文是原始的信息(Plaintext,记为P)
- 密文是明文经过变换加密后信息(Ciphertext,记为C)
- 加密是从明文变成密文的过程(Enciphering,记为E)
- 解密是密文还原成明文的过程(Deciphering,记为D)
- 加密算法(Encryption Algorithm)是实现加密所遵循的规则。用于对明文进行各种代换和变换,生成密文
- 解密算法(Decryption Algorithm)是实现解密所遵循的规则,是加密算法的逆运行,由密文得到明文
- **(Key,记为K)。为了有效地控制加密和解密算法的实现,密码*中要有通信双方的专门的保密“信息”参与加密和解密操作,这种专门信息称为**
- 加密协议定义了如何使用加密、解密算法来解决特定的任务
- 发送消息的对象称作发送方(Sender)
- 传送消息的预定接收对象称作接收方 (Receiver)
- 非授权进入计算机及其网络系统者称为入侵者(Intruder)
- 在消息传输和处理系统中,除了意定的接收者外,非授权者通过某种办法(如搭线窃听、电磁窃听、声音窃听等)来窃取机密信息,称为窃听者 (Eavesdropper)
- 入侵者主动向系统窜扰,采用删除、更改、增添、重放、伪造等手段向系统注入假消息,以达到损人利己的目的,这类攻击称作主动攻击 (Active Attack)
- 对一个密码*采取截获密文进行分析,称作被动攻击 (Passive Attack)
密码*
任何一个密码*至少包括五个组成部分:明文、密文、加密、解密算法及**。
一个密码*的基本工作过程是:发送方用加***,通过加密算法,将明文信息加密成密文后发送出去;
接收方在收到密文后,用解***,通过解密算法将密文解密,恢复为明文。如果传输中有人窃取,他只能得到无法理解的密文,从而对信息起到保密作用。
密码*的分类
对称密码*
加密、解密都需要**。如果加、解***相同,这样的系统称为对称**密码*(Symmetric Key System),也称单钥密码*。系统特点是加、解密的**是相同的、保密的。
非对称密码*
如果加、解***不同,则这种系统是非对称**密码* (Non-Symmetric Key System) ,又称双钥密码*、公开**密码*
混合密码*
对称与非对称密码*特性对比
对称与非对称密码*特性对比表
混合密码*基本原理
Kerckhoff原理
系统密文不可破译;
系统的保密性不依赖于对加密算法的保密,而是依赖于**;
加密和解密算法适用于**空间中的所有**;
系统应该有良好的可用性,便于实现和使用。
按照密码*所处的时代,密码*又可以划分为:
古典密码*。 在计算机出现之前所涉及的密码*一般称为古典密码*。这类密码一般直接对明文采用置换和代换操作,运算较为简单,安全性差。
现代密码*。自计算机出现后产生的密码*,使用计算机加密运算较为复杂,破译难度大。
安全的密码*应具有的性质
从密文恢复明文应该是难的,即使分析者知道明文空间,如明文是英语。
从密文计算出明文部分信息应该是难的。
从密文探测出简单却有用的事实应该是难的,如相同的信息被发送了两次。
密码*安全性评价
无条件安全性如果一个密码*满足条件:无论有多少可使用的密文,都不足以惟一地确定密文所对应的明文,则称该密码*是无条件安全的。
计算安全性
人们更关心在计算复杂性上不可破译的密码*。如果一个密码*满足以下标准:
破译密码的代价超出密文信息的价值;
破译密码复杂度超出了攻击者现有的计算能力;
破译密码的时间超过了密文信息的有效生命期;
数据传输加密
- 链路加密
- 节点对节点加密
- 端对端加密
三种加密方式比较:
- 链路加密的目的是保护链路两端网络设备间的通信安全;节点加密的目的是对源节点到目的节点之间的信息传输提供保护;
- 端到端加密的目的是对源端用户到目的端用户的应用系统通信提供保护。
- 链路加密和端对端加密方式的区别是:链路加密方式是对整个链路的传输采取保护措施,而端对端方式则是对整个网络系统采取保护措施。端对端加密方式是未来发展主要方向。对于重要的特殊机密信息,可以采用将二者结合的加密方式。
数据存储加密:
利用系统本身的加密功能加密
密码加密法
通过**加密
数据存储加密方法比较:
利用系统本身的加密功能加密特点是加密方式对系统的依赖性强,离开系统会出现无法读取现象;
密码加密法是读取时加密,没有对文件加密;通过密匙加密;是对文件整体加密。
密码破译与**管理
密码破译方法
穷举搜索**攻击
密码分析
惟密文攻击 (Ciphertext-only attack)
在这种方法中,密码分析员已知加密算法,掌握了一段或几段要解密的密文,通过对这些截获的密文进行分析得出明文或**。
惟密文**是最容易防范的,因为攻击者拥有的信息量最少。但是在很多情况下,分析者可以得到更多的信息。如捕获到一段或更多的明文信息及相应的密文,也可能知道某段明文信息的格式。
已知明文攻击(Known-plaintext attack)
在这种方法中,密码分析员已知加密算法,掌握了一段明文和对应的密文。目的是发现加密的钥匙。在实际使用中,获得与某些密文所对应的明文是可能的。
惟选定明文攻击 (Chosen-plaintext attack)
在这种方法中,密码分析员已知加密算法,设法让对手加密一段分析员选定的明文,并获得加密后的密文。目的是确定加密的钥匙。差别比较分析法也是选定明文破译法的一种,密码分析员设法让对手加密一组相似却差别细微的明文,然后比较加密后的结果,从而获得加密的钥匙。
选择密文攻击 (Chosen-ciphertext attack)
选择密文攻击指的是一种攻击模型。在此种攻击模型中,密码分析者事先任意搜集一定数量的密文,让这些密文透过被攻击的加密算法解密,透过未知的**获得解密后的明文。它在密码分析技术中很少用到。
防止密码破译的措施
- 增强密码算法安全性。通过增加密码算法的破译复杂程度,进行密码保护。例如增加密码系统的**长度,一般在其他条件相同的情况下,*** 越长破译越困难,而且加密系统也就越可靠。
- 使用动态会话**。每次会话所使用的**不相同。
- 定期更换会话**。
**管理
- **管理是指对所用**生命周期的全过程实施的安全保密管理。包括**的产生、存储、分配、使用和销毁等一系列技术问题。主要任务是如何在公用数据网上安全地传递**而不被窃取。
- 目前主要有两种网络**管理方法:KDC(Key Distribution Center)和Diffie-Hellman。
- KDC使用可信第三方来验证通信双方的真实性,产生会话**,并通过数字签名等手段分配**。Diffie-Hellman则不需KDC,通信发起方产生通信会话的私用**,并通过数字签名或零知识证明等方式安全传递通信**。
- 网络**主要有会话**(Session Key)、基本**(Basic Key)和主**(Master Key)三种。
**分配
- **分配协定是这样的一种机制:系统中的一个成员先选择一个秘***,然后将它传送另一个成员或别的成员。**协定是一种协议,是通过两个或多个成员在一个公开的信道上通信联络建立一个秘***。
理想的**分配协议应满足以下两个条件:
- 传输量和存储量都比较小;
- 每一对用户U和V都能独立地计算一个秘***K。
**交换
Diffic-Hellmen算法
仅当需要时才生成**,减少了因**存储期长而使遭受攻击的机会;除对全局参数的约定外,**交换不需要事先存在的基础结构。
Oakley算法
是对Diffie-Hellman**交换算法的优化,保留了后者的优点,同时克服了其弱点。Oakley算法具有五个重要特征:采用cookie程序的机制来对抗阻塞攻击;使双方能够协商一个全局参数集合;使用了限时来抵抗重演攻击;能够交换Diffie-Hellman公开**;它对Diffie-Hellman交换进行鉴别以对抗中间人的攻击。
秘密共享技术
Shamir于1979年提出了一种解决方法,称为门限法,实质上是一种秘密共享的思想。
**托管技术
美国*于1993年4月16日通过美国商业部颁布了具有**托管功能的加密标准EES。
实用密码技术概述
实用密码技术主要包括:
古典对称密码
现代分组密码
现代流密码算法
现代散列算法
1.古典对称密码
1)代换技术
代换技术是将明文中的每个元素(字母、比特、比特组合或字母组合)映射为另一个元素的技术,即明文的元素被其他元素所代替而形成密文。常见的代换技术的古典对称密码包括凯撒密码、单字母替换密码及Vigenere密码。
2)置换技术
置换是在不丢失信息的前提下对明文中的元素进行重新排列,分为矩阵置换和列置换。矩阵置换:这种加密法是把明文中的字母按给定的顺序安排在一矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。
2.现代对称加密技术
如果在一个密码体系中,加***和解***相同,就称为对称加密。现代密码技术阶段加密和解密算法是公开的,数据的安全性完全取决于**的安全性,因此,对称加密体系中如果**丢失,数据将不再安全。
代表性的对称加密算法有DES(数学加密标准),IDEA(国际数据加密算法),Rijndael,AES,RC4算法等。
数据加密标准算法DES
- 最早而且得到最广泛应用的分组密码算法是数据加密标准DES(Data Encryption Standard)算法,是由IBM公司在70年代发展起来的。
- DES于1976年11月被美国*采用,随后被美国国家标准局(现为国家标准和技术研究所NIST)承认,并被采纳为联帮信息处理标准46(FIPS PUB 46)。
- DES算法采用了64位的分组长度和56位的**长度。它将64位的比特输入经过16轮迭代变换得到64位比特的输出,解密采用相同的步骤和相同的**。
DES
算法思想:DES算法将输入的明文分为64位的数据分组,使用64位的**进行变换,每个64位明文分组数据经过初始置换、16次迭代和逆初始置换3个主要阶段,最后输出得到64位密文。
三重DES
DES算法现在已经不能提供足够的安全性,因为其有效**只有56位。因此,后来又提出了三重DES(或称3DES),该方法的强度大约和112比特的**强度相当。
这种方法用两个**对明文进行三次运算。设两个**是K1和K2:
(1) 用**K1进行DES加密。
(2) 用K2对步骤1的结果进行DES解密。
(3) 用步骤2的结果使用**K1进行DES加密。
三重(Triple DES)是DES的加强版。它能够使用多个**,对信息逐次作三次DES加密操作。3DES在使用DES算法三次,其中可以用到两组或者三组56比特长度**。
3DES有2个显著的优点。首先它的**长度可以达到168比特,能克服 DES 面对的穷举攻击问题;其次,3DES 的底层加密算法与 DES 的加密算法相同,使得原有的加密设备能够得到升级。
最后, DES加密算法比其他加密算法受到分析的时间要长得多,相应地3DES对分析攻击有很强的免疫力。缺点是用软件实现该算法比较慢。
NIST在2001年发布了高级加密标准AES(Advanced Encryption Standard)。NIST从最终的五个候选者中选择Rijndael算法作为AES标准.
AES的分组长度128位,**长度可以为128、192或256位。
AES算法具有能抵抗所有的已知攻击,平台通用性强,运行速度快,设计简单等特点。
目前最流行的版本是128比特**长度的AES-128, 其对128比特的消息块使用10轮迭代后得到密文。相比DES,AES的安全性更好,但其加密步骤和解密步骤不同,因而其硬件实现没有DES简单。
分组密码运行模式
电子密码本模式(ECB)
密码块链接模式(CBC)
密文反馈模式(CFB)
输出反馈模式(OFB)
计数器模式 (CTR)
现代流密码算法
一个流密码通常是使用**和种子生成一个任意长度的**流,再将生成的**流与需要进行加密操作的数据进行逐比特的异或操作。
流密码既可以直接通过分组密码相应的运行模式得到,也可以直接特定的设计。很多基于硬件实现的流密码都会使用到线性移位寄存器(LFSR) ,所以其运行速度非常快。
A5/1及A5/2。 该算法被用在全球移动通信系统GSM蜂窝移动电话中,是90年代最广泛应用的流密码算法。目前该算法已经被成功破译,不再得到应用。
KASUMI。 KASUMI算法是第三代合作伙伴计划(3GPP)中的日本学者提出的用在第三代移动通信网络(3G)上的流密码算法,KASUMI是“雾”的意思,其运行速度快,安全性好,已被使用在通用移动通信系统UMTS中。
其他的知名流密码算法包括美国图灵奖得主Ronald Rivest设计的RC4, 比利时密码学家Bart Preneel等人设计的Trivium及瑞士密码学家Willi Meier等人设计的Grain等。
现代散列算法
Hash算法将任意长度的二进制消息转化成固定长度的散列值。
Hash算法是一个不可逆的单向函数。不同的输入可能会得到相同的输出,而不可能从散列值来唯一的确定输入值。
散列函数广泛应用在密码检验、身份认证、消息认证以及数字签名上,因此散列函数往往是被应用的最广泛的密码算法。
据统计Windows XP操作系统就需要用到散列算法700多次。
常见的散列算法包括MD4、MD5、SHA-1、SHA-2 以及最新的美国国家标准与技术局发布的SHA-3。
MD4和MD5
MD4(Message Digest 4),是麻省理工学院的教授Ronald Rivest 的研究小组在1990年设计的散列算法,因其是他们设计的一系列散列算法中的第4个算法,所以称为MD4。MD4算法是基于 32 位操作数的比特位操作来实现的,其输出散列值长度为128位。该算法设计后被成功破译。
MD5是 Rivest 于1991年对MD4的改进版本。与MD4算法一样,MD5 算法将输入的信息进行分组,每组仍以512 位(64个 字节),顺序处理完所有分组后输出128 位散列值。在每一组消息的处理中,都要进行4 轮、每轮16 步、总计64 步的处理。其中,每步计算中含一次左循环移位,每一步结束时将计算结果进行一次右循环移位。
安全散列算法SHA,SHA-1, SHA-2 和 SHA-3
1993年,美国国家安全局(NSA)和美国国家标准技术局(NIST)共同提出了安全散列算法SHA, 并作为联邦信息处理标准(FIPS PUB 180)公布
1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1。SHA-1是基于MD4算法的,并且它的设计在很大程度上是模仿MD4的。SHA-1 输出160比特的散列值,已经得到广泛的应用。
随着MD5散列算法的**,SHA-1的安全性也受到了质疑。NIST建议之后的商业软件产品由SHA-1转移到SHA-2散列算法上。SHA-2 是一类可变长度的散列算法,其包含SHA-256, SHA-384和SHA-512, 分别输出256、384和512比特的散列值。
由于SHA-1和SHA-2的设计思路都与MD5类似,所以他们可能受到同一种攻击的威胁。所以NIST于2007年发起了一轮新的安全散列算法标准的竞赛,共有64个算法参加了竞赛。
最终在2012年由来自意法半导体公司的Joan Daemen (此人也是AES算法的设计者) 领导的小组设计的Keccak算法胜出,成为了新一代的散列算法标准SHA-3。
非对称加密*
对称密码*的一个缺点就是每一对通信双方必须共享一个**,使得**管理复杂。为解决此类问题,1976年,美国斯坦福两位学者Diffie和Hellman提出了著名的非对称密码*。
非对称密码*可有效的用在**管理、加密和数字签名上。
非对称加密算法需要两个**:公开**和私有**,并且相互关联。如果用公开**对数据进行加密,只有用对应的私有**才能解密;如果用私有**对数据进行加密,那么只有用对应的公开**才能解密。
典型的得到实用的非对称加密算法有RSA、Elgamal和 ECC(椭圆曲线算法)。
RSA算法
RSA算法由Rivest、Shamir和Adleman设计的,是最著名的公钥密码算法。
- 其安全性是建立在“大数因子分解”这一已知的著名数论难题的基础上,即将两个大素数相乘在计算上很容易实现,但将该乘积分解为两个大素数因子的计算量是相当巨大的,以至于在实际计算中是不能实现的。
- RSA既可用于加密,也可用于数字签名。其得到了广泛的应用,先进的网上银行大多采用RSA算法来计算签名。
RSA方法基于下面的两个数论上的事实:
- 已有确定一个整数是不是质数的快速概率算法;
- 尚未找到确定一个合数的质因子的快速算法。
RSA算法
RSA算法的优点是应用更加广泛,而其缺点是加密速度慢。
如果 RSA 和 AES 结合使用,则正好弥补 RSA 的缺点。 即 AES 用于明文加密,RSA 用于 AES 的**加密。由于AES加密速度快,适合加密较长的消息;而 RSA 可解决 AES **传输问题。
非对称密码算法大多是基于数学困难问题,如大整数因子分解(RSA)、离散对数难题 (DSA)、椭圆曲线离散对数难题 (ECC) 等等,运行速度较慢。非对称密码算法与同等安全强度的对称密码算法相比,一般要慢三个数量级。因此非对称密码算法一般用来加密短数据或者用作数字签名,而不是直接用在数据加密上。
无线网络加密技术
1.有线等效协议WEP加密技术
WEP主要通过无线网络通信双方共享的**来保护传输的加密帧数据,利用加密数据帧加密的过程如图所示。
2. WPA安全加密方式
WPA加密即Wi-Fi Protected Access,其加密特性决定了它比WEP更难以入侵。所以如果对数据安全性有很高要求,那就必须选用WPA加密方式了(Windows XP SP2已经支持WPA加密方式)。WPA作为IEEE 802.11通用的加密机制WEP的升级版,在安全的防护上比WEP更为周密,主要体现在身份认证、加密机制和数据包检查等方面,而且它还提升了无线网络的管理能力。
3.TKIP(临时**完整性协议)
TKIP是一种基本的技术,允许WPA向下兼容WEP和现有的无线硬件。这种加密方法比WEP更安全。
4. EAP(可扩展认证协议)
在EAP协议的支持下,WPA加密提供了更多的根据PKI(公共**基础设施)控制无线网络访问的功能,而不是仅根据MAC地址来进行过滤。
5. 隧道加密技术
方式一:这种加密隧道用于客户端到无线访问点之间,这种加密隧道保证了无线链路间的传输安全,但是无法保证数据报文和有线网络服务器之间的安全。
方式二:这种加密隧道穿过了无线访问点,但是仅到达网络接入一种用来分离无线网络和有线网络的控制器就结束,这种安全隧道同样不能达到端到端的安全传输。
方式三:这种加密隧道即端到端加密传输,它从客户端到服务器,在无线网络和有线网络中都保持,是真正的端到端加密。
一般采用将对称、非对称和Hash加密进行综合运用的方法。由于不同算法各有不同的特点,如表6-1,在实现网络信息安全过程中,每种加密*的应用也有所不同。
表6-1 两种加密算法的特性
1.数字信封
2.数字签名
数字签名必须保证做到以下3点:
(1) 接收者能够核实发送者对信息的签名;
(2) 发送者事后不能抵赖对信息的签名;
(3) 接收者不能伪造对信息的签名。
数字签名,那么怎么满足数字签名的三个条件:
(1)如果接收者用发送者的公钥实现了对接收到的数字签名进行解密,因为对信息签名的私钥只有发送者才有,而发送者的公钥只能解密由发送者私钥加密的签名,由此接收者能够核实发送者对信息的签名。
(2)发送者的公钥只能解密发送者的签名,而发送者的私钥只有发送者才有,由此发送者事后不能抵赖对信息的签名。
(3)发送者的签名要用发送者的私钥实现,而发送者的私钥只有发送者才有,接收者没法得到,由此接收者不能伪造对信息的签名。
4.PKI
PKI 作为一种**管理平台,能够为各种网络应用透明地提供**和证书管理。PKI 体系由六大部分组成。
(1)认证机构(Certification Authority,CA):证书的签发机构,它是PKI的核心,是PKI应用中权威的、可信任的公正的第三方机构。认证中心作为一个可信任的机构,管理各个主体的公钥并对其进行公证,目的是证明主体的身份与其公钥的匹配关系。认证中心的功能包括证书的分发、更新、查询、作废和归档等功能。
(2)***构(Registration Authority,RA):RA是可选的实体,RA实现分担CA部分职责的功能,其基本职责是认证和验证服务,可将RA配置为代表CA处理认证请求和撤销请求服务。
(3)证书库:包含了CA发行证书的数据库,集中存放证书,提供公众查询.
(4)**备份及恢复系统:用户的解***进行备份,当丢失时进行恢复,而签名**不能备份和恢复。
(5)证书作废处理系统:证书由于某种原因需要作废,终止使用,这将通过证书撤销列表CRL(Certificate Revcocation List)完成。
(1)保密:双方的通信内容高度保密,第三方无从知晓。
(2)完整性:通信的内容无法被篡改。
(3)身份认证:收方通过发方的电子签名才能够确认发方的确切身份,但无法伪造。
(4)不可抵赖:发方一旦将电子签字的信息发出,就不能再否认。
5. PGP
密码技术的发展趋势
密码技术是信息安全的核心技术,无处不在。随着现代科技高速发展和进步,诞生了许多高新密码技术,目前已经渗透到许多领域。如:
(1)密码专用芯片
(2)量子密码技术的研究
(3)全息防伪标识的隐型加密技术