1.密码学的主要任务

密码学 ( cryptology ) 不仅仅是提供信息安全的一些方法,更是一个数学技术的集合。毫无疑问,密码学主要是应对信息安全而存在的学科,但总的来说,在信息安全的诸多方面,密码学主要为存储和传输中的数字信息提供以下几个方面的保护。

机密性

是一种允许特定用户访问和阅读信息,而非授权用户对信息内容不可理解的安全属性。在密码学中,信息的机密性通过加密技术实现。

数据完整性

数据完整性即用以确保数据在存储和传输过程中不被非授权修改的安全属性。为提供这种信息安全属性,用户必须有检测非授权修改的能力。非授权修改包括数据的篡改、删除、插入和重放等。密码学可以通过采用数据加密、报文鉴别或数字签名等技术来实现数据的完整性保护。

鉴别

鉴别服务包括对身份的鉴别和对数据源的鉴别。对于一次通信,必须确信通信的对端是预期的实体,这就涉及身份的鉴别。对于数据,仍然希望每一个数据单元发送到或来源于预期的实体,这就是数据源鉴别。数据源鉴别隐含地提供数据完整性服务。密码学可通过数据加密、数字签名或鉴别协议等技术来提供这种真实性服务。

抗抵赖性

这是一种用于阻止通信实体抵赖先前的通信行为及相关内容的完全特性。密码学通过对称加密或非对称加密,以及数字签名等技术,并借助可信机构或证书机构的辅助来提供这种服务。

2.密码系统的概念

明文 ( plaintext ):原始的消息。
密文 ( ciphertext ):经过变换的消息。
加密( encrypt ):把原始的信息(明文)转换为密文的信息变换过程。
解密 ( decrypt ):把已加密的信息(密文)恢复成原始信息明文的过程,也称为脱密。
密码算法 ( cryptography algorithm ):简称 ( cipher ),通常是指加、解密过程所使用的信息变换规则,是用于信息加密和解密的数学函数。对明文进行加密时所采用的规则称为加密算法,而对密文进行解密时所采用的规则称作解密算法。加密算法和解密算法的操作通常都是在一组密钥的控制下进行的。
密钥 ( secrect key ):密码算法中的一个可变参数,通常是一组满足一定条件的随机序列。用于加密算法的叫做加密密钥,用于解密算法的叫做解密密钥,加密密钥和解密密钥可能相同,也可能不同。密钥常用 k 表示。在密钥 k 的作用下,加密变换通常记为$$E_k(.)$$,解密变换记为$$D_k(.)$$或$$E_k^{-1}(.)$$。

3.密码体制

通常一个密码体制可以有如下几个部分:

  1. 消息空间 $$M$$(又称明文空间):所有可能的明文 $$m$$ 的集合;

  2. 密文空间 $$c$$:所有可能的密文 $$c$$ 的集合;

  3. 密钥空间 $$K$$:所有可能密钥 $$k$$ 的集合,其中每一密钥 k 由加密密钥 $$k$$,和解密密钥 $$k_d$$ 组成,即 $$k = (k_e,k_d)$$;

  4. 加密算法 $$E$$:一簇由加密密钥控制的、从 $$M$$ 到 $$C$$ 的加密变换;

  5. 解密算法 $$D$$:一簇由解密密钥控制的、从 $$C$$到 $$M$$ 的解密变换。

五元祖 $${ M, C, K, E, D }$$,就称为一个密码系统。在密码系统中,对于每一个确定的密钥 $$k$$,加密算法将确定一个具体的加密变换,解密算法将确定一个具体的解密变换,而且解密变换就是加密变换的逆变换。对于明文空间 $$M$$ 中的每一个明文 $$m$$,加密算法 $$E$$ 在加密密钥 $$k$$ 的控制下将明文 $$m$$ 加密成密文 $$c$$;而在密钥 $$k_d$$ 的控制下将密文 $$c$$ 解密成同一明文 $$m$$,即:对 $$\forall m\in M,(k_e,kd)\in K$$,有$$D{kd}(E{k_e}(m)) = m$$ 。
在上面通信模型中,还存在一个密码攻击者或破译者可以从普通信道上拦截到的密文 $$c$$,其工作目标就是要在不知道密钥$$k$$的情况下,试图从密文 $$c$$ 恢复出明文 $$m$$ 或密钥 $$k$$。如果密码分析者可以仅由密文推出明文或由密钥,或者可以由明文和密文推出密钥,那么就称该密码系统是可破译的。相反则称该密码系统是不可破译的。

4.密码系统的攻击

密码分析者破译或攻击密码的方法主要有琼剧攻击法、统计分析法和数学分析法。

穷举攻击法

穷举攻击法又称强力或蛮力(brute force)攻击。这种攻击方法是对截获到的密文尝试遍历所有可能的密钥,直到获得一种从密文到明文的可理解转换;或使用不变的密钥对所有可能的明文加密直到得到与截获到的密文一致为止。显然,对于任何已知密码算法的密码系统,只要攻击者有足够多的计算资源,该方法是可以成功的。穷举攻击是对密码的一种最基本的攻击方法。对抗琼举攻击法的主要方法有:增加密钥长度,在明文、密文中增加随机冗余信息等。

统计分析法

统计分析攻击就是指密码分析者根据明文、密文和密钥的统计规律来破译密码的方法。
例如,在经典的换位密码、置换密码体制中,可以通过分析单字母、双字母、三字母等的频率和其他统计参数而破译。对抗统计分析攻击的主要方法是设法使明文的统计特性不代入密文。这样,密文不带有明文的痕迹,而呈现出极大的随机性,从而挫败统计分析攻击。能够对抗统计分析攻击已成为近代密码的基本要求。

数学分析法

数学分析攻击是指密码分析者针对加解密算法的数学基础和某些密码学特性,通过数学求解的方法来破译密码。数学分析攻击是对基于数学难题的各种密码算法的主要威胁。为了对抗这种攻击,应当选用具有坚实数学基础和足够复杂的加密算法。
可以将针对加密系统的密码分析攻击类型分为以下四种:

  • 唯密文攻击(cciphtext-only attack)
  • 已知明文攻击(plaintext-known attack)
  • 选择明文攻击(chosen-plaintext attack)
  • 选择密文攻击(chosen-ciphenext attack)

5.密码系统的安全性(一)

评价密码系统安全性主要有三种方法:

无条件安全性

这种评价方法考虑的是假定攻击者拥有无限的计算资源,但仍然无法破译该密码系统。按照信息论的观点就是,攻击者观察密文前后明文的不确定性相等,即攻击者通过观察密文不会得到任何有助于破译密码系统的信息。这种密码系统理论上就是不可破译的,或者称该密码体制具有完善保密性(perfect secrecy)或无条件安全性

计算安全性

这种方法是指使用目前最好的方法攻破它所需要的计算远远超出攻击者的计算资源水平,则可以定义这个密码体制是安全的。
在理论上,只有一次一密的系统才能真正实现无条件安全性,除此之外的系统都至少可以使用一种只有密文的攻击方法来破译,这就是穷举攻击法。实际上,采用强力攻击方法虽然在理论上可行,但当密钥空间足够大时,由于受计算条件、资源的限制,若不能在希望的时间内或实际可能的条件下破译成功,称为计算上不可破译(computationally unbreakable), 这种密码系统就是实际上不可破译的,可以认为该密码系统是满足计算安全性的。目前多数实际使用的对称和非对称密码方案都属于这一类,因此计算安全性又称为实际安全性。

可证明安全性

这种方法是将密码系统的安全性归结为某个经过深入研究的数学难题( 如大整数素因子分解、计算离散对数等 ),数学难题被证明求解困难。这种评估方法存在的问题是它只说了这个密码方法的安全性与某个困难问题相关,没有完全证明问题本身的安全性,并给出它们的等价性证明。

6.密码系统的安全性(二)

在设计和评估密码系统时还应当遵循公开设计原则,这就是著名柯克霍夫斯(Kerckhoffs)原则。其核心内容是:即使密码系统中的算法为密码分析者所知,也难以从截获的密文推导出明文或密钥。也就是说,密码体制的安全性仅应依赖于对密钥的保密,而不依赖对算法的保密。只有在假设攻击者对密码算法有充分的研究,并且拥有足够的计算资源的情况下仍然安全的密码才是安全的密码系统。
不把密码系统的安全性建立在算法的保密上意味着密码算法可以公开,也可以被分析,即使攻击者知道密码算法也没有关系。对于商用密码系统而言,公开密码算法的优点包括以下几个方面:

  1. 有利于对密码算法的安全性进行公开测试评估;
  2. 防止密码算法设计者在算法中隐藏后门;
  3. 易于实现密码算法的标准化;
  4. 有利于使用密码算法产品的规模化生产,实现低成本和高性能。

但是必须要指出的是,密码设计的公开原则并不等于所有的密码算法在应用时都一定要公开密码算法。
一个提供机密性服务的密码系统是实际可用的,必须满足如下的基本要求:

  1. 系统的保密性不依赖于对加密体制或算法的保密,而仅依赖于密钥的安全性。“一切秘密寓于密钥之中”是密码系统设计的一个重要原则。
  2. 满足实际安全性,使破译者取得密文后在有效时间和成本范围内,确定密钥或相应明文在计算上是不可行的。
  3. 加密和解密算法应适用于明文空间、密钥空间中的所有元素。
  4. 加密和解密算法能有效地计算,密码系统易于实现和使用。

7.密码体制分类

根据密码算法所用的密钥数量

根据加密算法与解密算法所使用的密钥是否相同,或是否能简单地由加/ 解密密钥导出解/ 加密密钥,可以将密码体制分为对称密码体制(symmetric cipher), 也称为单钥密码体制、秘密密钥密码体制、对称密钥密码体制或常规密码体制 ) 和非对称密码体制(asymmetric cipher, 也称为双钥密码体制、公开密钥密码体制、非对称密钥密码体制)。

根据对明文信息的处理方式

根据密码算法对明文信息的处理方式,又可将对称密码体制再分为分组密码(block cipher)和序列密码(stream cipher, 也称为流密码)。
分组密码是将消息进行分组,一次处理一个数据块(分组)元素的输入,对每个输入块产生一个输出块。在用分组密码1加密时,一个明文分组被当作一个整体来产生一个等长的密码分组输出。分组密码通常使用的分组大小是 64 比特或 128 比特,分组算法有 DES、AES、IDEA、RC6 等。
序列密码则是连续地处理输入元素,并随着处理过程的进行,一次产生一个元素的输出,在用序列密码加密时,一次加密一个比特或一个字节。典型的序列密码有 RC4、A5、SEAL 等。

根据是否进行可逆的加密变换

根据密码算法是否能进行可逆的加密变换,又可分为单向函数密码体制和双向密码体制。
单向函数密码体制是一类特殊的密码体制,其性质是可以很容易地把明文转换成密文,但再把密文转换成正确的明文确实不可行的,有时甚至不可能的。单向函数仅适用于某种特殊的、不需要解密的应用场合,如用户口令的存储和信息的完整性保护与鉴别等。
双向变换密码体制是指能够进行可逆的加密、解密变换,绝大多数加密算法都属于这一类,它要求所使用的密码算法能够进行可逆的双向加解密变换,否则接受者就无法把密文还原成明文。典型的单向函数包括 MD4、MD5、SHA-1 等。

8.对称与非对称密码体制

对称密码体制

如果一个提供保密服务的密码系统,它的加密密钥和解密密钥相同,或者虽然不同,但由其中的任意一个可以很容易地导出另外一个,那么该系统所采用的就是对称密码体制。
DES、AES、IDEA、RC6 等都是典型的对称密码体制。显然,使用对称密码体制时,如果某个实体拥有加密(或解密)能力,也就必然拥有解密(或加密)能力。

非对称密码体制

如果一个提供保密服务的密码系统,其加密算法和解密算法分别用两个不同的密钥实现,并且由加密密钥不能推导出解密密钥,则该系统是所采用的就是非对称密码体制。采用非对称密钥密码体制的每个用户都有一对选定的密钥。其中一个是可以公开的,称为公开密钥(public key), 简称公钥;另一个由用户自己秘密保存,称为私有密钥(private key), 简称私钥。如 RSA、E1Gamal、椭圆曲线密码等都是非对称密钥密码体制的典型实例。
在安全性能方面,对称密钥密码体制是基于复杂的非线性变换与迭代运算实现算法安全性能的,而非对称密钥密码体制则一般是基于某个公认的数学难题而实现安全性的。由于后者的安全程度与现实的计算能力具有密切的关系,因此,通常认为非对称密钥密码体制的安全强度似乎没有对称密钥密码体制高。

点赞(196)

评论列表 共有 0 评论

暂无评论

微信服务号

微信客服

淘宝店铺

support@elephdev.com

发表
评论
Go
顶部