根据不同时期密码技术采用的加密和解密实现手段的不同特点,密码技术的发展历史大致可以划分为三个时期,即古典密码、近代密码和现代密码时期。
在信息安全的诸多涉及面中,密码学主要为存储和传输中的数字信息提供如下几个方面的安全保护:
机密性:是一种允许特定用户访问和阅读信息,而非授权用户对信息内容不可理解的安全属性。指保证信息不被非授权访问。
完整性:数据完整性即用以确保数据在存储和传输过程中不被非授权修改的的安全属性。密码学可通过采用数据加密、报文鉴别或数字签名等技术来实现数据的完整性保护。
鉴别:这是一种与数据来源和身份鉴别有关的安全服务。鉴别服务包括对身份的鉴别和对数据源的鉴别。对于一次通信,必须确信通信的对端是预期的实体,这就涉及到身份的鉴别。对于数据,仍然希望每一个数据单元发送到或来源于预期的实体,这就是数据源鉴别。数据源鉴别隐含地提供数据完整性服务。
抗抵赖性:是一种用于阻止通信实体抵赖先前的通信行为及相关内容的安全特性。密码学通过对称加密或非对称加密,以及数字签名等技术,并借助可信机构或证书机构的辅助来提供这种服务。也称作抗否认性,是面向通信双方信息真实统一的安全要求,它包括收、发双方均不可抵赖。
密码技术的一个基本功能是实现保密通信,经典的保密通信模型
也简称密码(Cipher),通常是指加、解密过程所使用的信息变换规则,是用于信息加密和解密的数学函数。 对明文进行加密时所采用的规则称作加密算法,而对密文进行解密时所采用的规则称作解密算法。加密算法和解密算法的操作通常都是在一组密钥的控制下进行的。 密钥(Secret Key ) 用于加密算法的叫做加密密钥,用于解密算法的叫做解密密钥,加密密钥和解密密钥可能相同,也可能不相同。 密钥常用k表示。在密钥k的作用下,加密变换通常记为Ek(·),解密变换记为Dk(·)或Ek-1(·)。
通常一个密码体制可以有如下几个部分:
消息空间M(又称明文空间):所有可能明文m的集合;
密文空间C:所有可能密文c的集合;
密钥空间K:所有可能密钥k的集合,其中每一密钥k由加密密钥ke和解密密钥kd组成,即k=(ke,kd);
加密算法E:一簇由加密密钥控制的、从M到C的加密变换;
解密算法D: 一簇由解密密钥控制的、从C到M的解密变换。
五元组{ M,C,K,E,D }就称为一个密码系统
对于明文空间M中的每一个明文m,加密算法E在加密密钥ke的控制下将明文m加密成密文c;而解密算法D则在密钥kd的控制下将密文c解密成同一明文m,即:对m∈M,(ke,kd)∈K,有:
数据安全基于密钥而不是算法的保密。也就是说,对于一个密码体制,其算法是可以公开的,让所有人来使用、研究。但具体对于某次加密过程中所使用的密钥,则是保密的。
密码攻击:在信息传输和处理系统中,除了合法的接收者外,还有“黑客”,他们试图努力从截获的密文中推断出原来的明文,这一过程称为密码攻击(密码分析)。 密码分析在外交、军事、公安、商业等方面都具有重要作用,也是研究历史、考古、古语言学和古乐理论的重要手段之一。 密码分析者破译或攻击密码的方法主要有穷举攻击法、统计分析法和数学分析攻击法。 密码分析除了依靠数学、工程背景、语言学等知识外,还要靠经验、统计、测试、眼力、直觉判断能力……,有时还靠点运气
穷举攻击法又称为强力或蛮力攻击。这种攻击方法是对截获到的密文尝试遍历所有可能的密钥,直到获得了一种从密文到明文的可理解的转换;或使用不变的密钥对所有可能的明文加密直到得到与截获到的密文一致为止。 只要有足够多的计算时间和存储容量,原则上穷举法总是可以成功的。实际上,任何一种能保障安全要求的实用密码都会设计得使这一方法在实际上是不可行的。
利用明文的已知统计规律进行破译的方法。密码破译者对截收的密文进行统计分析,总结出其间的统计规律,并与明文的统计规律进行对照比较,从中提取出明文和密文之间的对应或变换信息
利用一个或几个已知量(比如,已知密文或明文-密文对)用数学关系式表示出所求未知量(如密钥等)。已知量和未知量的关系视加密和解密算法而定,寻求这种关系是确定性分析法的关键步骤。
在假设密码分析者已知所用加密算法全部知识的情况下,根据密码分析者对明文、密文等数据资源的掌握程度,可以将针对加密系统的密码分析攻击类型分为以下四种:
攻击类型 | 攻击者拥有的资源 |
---|---|
惟密文攻击 | 加密算法 , 截获的部分密文 |
已知明文攻击 | **加密算法, ** 截获的部分密文和相应的明文 |
选择明文攻击 | 加密算法, 加密黑盒子,可加密任意明文得到相应的密文 |
选择密文攻击 | **加密算法 ** 解密黑盒子,可解密任意密文得到相应的明文 |
① 惟密文攻击(Ciphtext-only attack) 密码分析者有一些消息的密文,这些消息都用同一加密算法加密,密码分析者知道密码算法。密码分析者的任务是恢复尽可能多的明文,或者最好是能推算出加密消息的密钥来,以便可采用相同的密钥解出其他被加密的消息。
已知:C1=EK(P1),C2=EK(P2),…, Ci=EK(Pi) 要推出:P1,P2, … ,Pi;k或者找出一个算法从 Ci+1= EK(Pi+1)推出Pi+1。
②已知明文攻击(Plaintext-known attack) 密码分析者不仅可得到一些消息的密文,而且也知道这些消息的明文。分析者的任务就是用加密信息推出用来加密的密钥或导出一个算法,此算法可以对用同一密钥加密的任何新的消息进行解密。
已知:P1,C1=Ek(P1),P2,C2=Ek(P2), …,Pi,Ci=Ek(Pi). 推导出:密钥k,或从Ci+1= Ek(Pi+1)推出Pi+1的算法。
③ 选择明文攻击(Chosen-plaintext attack) 分析者不仅可得到一些消息的密文和相应的明文,而且他们也可选择被加密的明文。这比已知明文攻击更有效。因为密码分析者能选择特定的明文块去加密,那些块可能产生更多关于密钥的信息,分析者的任务是推出用来加密消息的密钥或导出一个算法,此算法可以对用同一密钥加密的任何新消息进行解密。
已知:P1,C1=Ek(P1),P2,C2=Ek(P2), …,Pi,Ci=Ek(Pi) 其中P1,P2 … ,Pi是由密码分析者选择的。 推导出:密钥k,或从Ci+1= Ek(Pi+1)推出Pi+1的算法
④ 选择密文攻击(Chosen—ciphenext attack) 选择密文攻击是指密码分析者可以选择一些密文,并得到相应的明文。密码分析者的任务目标是推出密钥。这种密码分析多用于攻击公钥密码体制。
衡量密码系统攻击的复杂性主要考虑三个方面的因素: 数据复杂性:用做密码攻击所需要输入的数据量; 处理复杂性:完成攻击所需要花费的时间; 存储需求:进行攻击所需要的数据存储空间大小。 攻击的复杂性取决于以上三个因素的最小复杂度,在实际实施攻击时往往要考虑这三种复杂性的折衷,如存储需求越大,攻击可能越快。
一个密码系统的安全性主要与两个方面的因素有关。
对于实际应用中的密码系统而言,由于至少存在一种破译方法,即强力攻击法,因此都不能满足无条件安全性,只提供计算安全性。 密码系统要达到实际安全性,就要满足以下准则: (1)破译该密码系统的实际计算量(包括计算时间或费用)十分巨大,以致于在实际上是无法实现的。 (2)破译该密码系统所需要的计算时间超过被加密信息有用的生命周期。。 (3)破译该密码系统的费用超过被加密信息本身的价值。
密码系统的柯克霍夫斯(Kerckhoffs)原则: 即使密码系统中的算法为密码分析者所知,也难以从截获的密文推导出明文或密钥。 也就是说,密码体制的安全性仅应依赖于对密钥的保密,而不应依赖于对算法的保密。 只有在假设攻击者对密码算法有充分的研究,并且拥有足够的计算资源的情况下仍然安全的密码才是安全的密码系统。
综上,一个提供机密性服务的密码系统是实际可用的,必须满足的基本要求: 系统的保密性不依赖于对加密体制或算法的保密,而仅依赖于密钥的安全性。 满足实际安全性,使破译者取得密文后在有效时间和成本范围内,确定密钥或相应明文在计算上是不可行的。 加密和解密算法应适用于明文空间、密钥空间中的所有元素。 加密和解密算法能有效地计算,密码系统易于实现和使用。
对密码体制的分类方法有多种,常用的分类方法有以下三种。
根据加密算法与解密算法所使用的密钥是否相同,可以将密码体制分为:对称密码体制(Symmetric cipher,也称为单钥密码体制、秘密密钥密码体制、对称密钥密码体制或常规密码体制)与非对称密码体制(Asymmetric cipher,也称为双钥密码体制、公开密钥密码体制、非对称密钥密码体制)如果一个提供保密服务的密码系统,它的加密密钥和解密密钥相同,或者虽然不相同,但由其中的任意—个可以很容易地导出另外一个,那么该系统所采用的就是对称密码体制。 如果一个提供保密服务的密码系统,其加密算法和解密算法分别用两个不同的密钥实现,并且由加密密钥不能推导出解密密钥,则该系统所采用的就是非对称密码体制。 采用非对称密钥密码体制的每个用户都有一对选定的密钥。其中一个是可以公开的,称为公开密钥(Public key),简称公钥;另一个由用户自己秘密保存,称为私有密钥(Private key),简称私钥。
在安全性方面,对称密钥密码体制是基于复杂的非线性变换与迭代运算实现算法安全性的,而非对称密钥密码体制则一般是基于某个公认的数学难题而实现安全性的。
根据对明文信息的处理方式
分组密码是将消息进行分组,一次处理一个数据块(分组)元素的输入,对每个输入块产生一个输出块。在用分组密码加密时,一个明文分组被当做一个整体来产生一个等长的密文分组输出。分组密码通常使用的分组大小是64比特或128比特。 序列密码则是连续地处理输入元素,并随着处理过程的进行,一次产生一个元素的输出,在用序列密码加密时,一次加密一个比特或一个字节。
(3)根据是否能进行可逆的加密变换 根据密码算法是否能进行可逆的加密变换,可以将密码体制分为: 单向函数密码体制 双向变换密码体制。
单向函数密码体制是一类特殊的密码体制,其性质是可以很容易地把明文转换成密文,但再把密文转换成正确的明文却是不可行的,有时甚至是不可能的。 单向函数只适用于某种特殊的、不需要解密的应用场合,如用户口令的存储和信息的完整性保护与鉴别等。 双向变换密码体制是指能够进行可逆的加密、解密变换,绝大多数加密算法都属于这一类,它要求所使用的密码算法能够进行可逆的双向加解密变换,否则接收者就无法把密文还原成明文。 其他的方法,按照在加密过程中是否引入了客观随机因素,可以分为确定型密码体制和概率密码体制等等。
1.3.6 对称与非对称密码体制的主要特点
对称密码体制的主要优势是: 加密、解密运算的处理速度块,效率高,算法安全性高。 对称密码体制存在的局限性或不足: (1)对称密码算法的密钥分发过程复杂,所花代价高; (2)密钥管理量的困难; (3)保密通信系统的开放性差; (4)存在数字签名的困难性。
非对称密码体制的主要优势是: (1)密钥分配简单。 (2)系统密钥量少,便于管理。 (3)系统开放性好。 (4)可以实现数字签名。 非对称密码体制存在的局限性是加密、解密运算效率较低,处理速度较慢,同等安全强度下,非对称密码体制的密钥位数较多。 另外,由于加密密钥是公开发布的,客观上存在“可能报文攻击”的威胁。