标题：密码系统
概述
密码技术的一个基本功能是实现保密通信，经典的保密通信模型
  注意：仅用一个保密通信模型来完整描述密码系统，可能是并不全面和准确的，因为现在的密码系统不单单只提供信息的机密性服务。 
保密通信是密码技术的一个基本功能。
明文（Plaintext）
待伪装或加密的消息（Message）。在通信系统中它可能是比特流，如文本、位图、数字化的语音流或数字化的视频图像等 。一般可以简单的认为明文是有意义的字符或比特集，或通过某种公开的编码标准就能获得的消息。明文常用m或p表示。
密文(Ciphertext)
对明文施加某种伪装或变换后的输出，也可认为是不可直接理解的字符或比特集，密文常用c表示。
加密（Encrypt ）
把原始的信息（明文）转换为密文的信息变换过程。
解密（Decrypt）
把己加密的信息（密文）恢复成原始信息明文的过程，也称为脱密。
密码算法(Cryptography Algorithm)
也简称密码（Cipher），通常是指加、解密过程所使用的信息变换规则，是用于信息加密和解密的数学函数。 
对明文进行加密时所采用的规则称作加密算法，而对密文进行解密时所采用的规则称作解密算法。加密算法和解密算法的操作通常都是在一组密钥的控制下进行的。
密钥（Secret Key ）
密码算法中的一个可变参数，通常是一组满足一定条件的随机序列。 
用于加密算法的叫做加密密钥，用于解密算法的叫做解密密钥，加密密钥和解密密钥可能相同，也可能不相同。 
密钥常用k表示。在密钥k的作用下，加密变换通常记为Ek(·)，解密变换记为Dk(·)或Ek－1(·)。
密码系统
1、系统组成可以有如下几个部分： 
–消息空间M（又称明文空间）：所有可能明文m的集合； 
–密文空间C：所有可能密文c的集合； 
–密钥空间K：所有可能密钥k的集合，其中每一密钥k由加密密钥ke和解密密钥kd组成，即k＝（ke，kd）； 
–加密算法E：一簇由加密密钥控制的、从M到C的加密变换； 
–解密算法D: 一簇由解密密钥控制的、从C到M的解密变换。2、五元组{ M，C，K，E，D }对于明文空间M中的每一个明文m，加密算法E在加密密钥ke的控制下将明文m加密成密文c；而解密算法D则在密钥kd的控制下将密文c解密成同一明文m，即： 
对m∈M，(ke，kd)∈K，有： Dkd(Eke(m))=m

解码方法
密码分析者破译或攻击密码的方法主要有穷举攻击法、统计分析法和数学分析攻击法。（1）穷举攻击法穷举攻击法又称为强力或蛮力（Brute force）攻击。这种攻击方法是对截获到的密文尝试遍历所有可能的密钥，直到获得了一种从密文到明文的可理解的转换；或使用不变的密钥对所有可能的明文加密直到得到与截获到的密文一致为止。（2）统计分析法统计分析攻击就是指密码分析者根据明文、密文和密钥的统计规律来破译密码的方法。（3）数学分析法数学分析攻击是指密码分析者针对加解密算法的数学基础和某些密码学特性，通过数学求解的方法来破译密码。数学分析攻击是对基于数学难题的各种密码算法的主要威胁。
攻击类型
在假设密码分析者已知所用加密算法全部知识的情况下，根据密码分析者对明文、密文等数据资源的掌握程度，可以将针对加密系统的密码分析攻击类型分为以下四种：① 惟密文攻击（Ciphtext-only attack） 
在惟密文攻击中，密码分析者知道密码算法，但仅能根据截获的密文进行分析，以得出明文或密钥。由于密码分析者所能利用的数据资源仅为密文，这是对密码分析者最不利的情况。②已知明文攻击（Plaintext-known attack） 
已知明文攻击是指密码分析者除了有截获的密文外，还有一些已知的“明文—密文对”来破译密码。密码分析者的任务目标是推出用来加密的密钥或某种算法，这种算法可以对用该密钥加密的任何新的消息进行解密。③ 选择明文攻击（Chosen-plaintext attack） 
选择明文攻击是指密码分析者不仅可得到一些“明文—密文对”，还可以选择被加密的明文，并获得相应的密文。这时密码分析者能够选择特定的明文数据块去加密，并比较明文和对应的密文，已分析和发现更多的与密钥相关的信息。 
密码分析者的任务目标也是推出用来加密的密钥或某种算法，该算法可以对用该密钥加密的任何新的消息进行解密。④ 选择密文攻击(Chosen—ciphenext attack) 
选择密文攻击是指密码分析者可以选择一些密文，并得到相应的明文。密码分析者的任务目标是推出密钥。这种密码分析多用于攻击公钥密码体制。
攻击评估
衡量密码系统攻击的复杂性主要考虑三个方面的因素： 
1. 数据复杂性（Data Complexity） 
用做密码攻击所需要输入的数据量；2.处理复杂性（Processing Complexity） 
完成攻击所需要花费的时间；3.存储需求（Storage Requirement） 
进行攻击所需要的数据存储空间大小。 
攻击的复杂性取决于以上三个因素的最小复杂度，在实际实施攻击时往往要考虑这三种复杂性的折衷，如存储需求越大，攻击可能越快。
安全性
1、安全因素一个密码系统的安全性主要与两个方面的因素有关。 
（1）一个是所使用密码算法本身的保密强度。密码算法的保密强度取决于密码设计水平、破译技术等。可以说一个密码系统所使用密码算法的保密强度是该系统安全性的技术保证。 
（2）另外一个方面就是密码算法之外的不安全因素。 
因此，密码算法的保密强度并不等价于密码系统整体的安全性。—个密码系统必须同时完善技术与管理要求，才能保证整个密码系统的安全。本教材仅讨论影响一个密码系统安全性的技术因素，即密码算法本身。2、评估方法评估密码系统安全性主要有三种方法： 
（1）无条件安全性 
这种评价方法考虑的是假定攻击者拥有无限的计算资源，但仍然无法破译该密码系统。 
（2）计算安全性 
这种方法是指使用目前最好的方法攻破它所需要的计算远远超出攻击者的计算资源水平，则可以定义这个密码体制是安全的。 
（3）可证明安全性 
这种方法是将密码系统的安全性归结为某个经过深入研究的数学难题（如大整数素因子分解、计算离散对数等），数学难题被证明求解困难。这种评估方法存在的问题是它只说明了这个密码方法的安全性与某个困难问题相关，没有完全证明问题本身的安全性，并给出它们的等价性证明。
对于实际应用中的密码系统而言，由于至少存在一种破译方法，即强力攻击法，因此都不能满足无条件安全性，只提供计算安全性。密码系统要达到实际安全性，就要满足以下准则： 
（1）破译该密码系统的实际计算量（包括计算时间或费用）十分巨大，以致于在实际上是无法实现的。 
（2）破译该密码系统所需要的计算时间超过被加密信息有用的生命周期。例如，战争中发起战斗攻击的作战命令只需要在战斗打响前需要保密；重要新闻消息在公开报道前需要保密的时间往往也只有几个小时。 
（3）破译该密码系统的费用超过被加密信息本身的价值。 
如果一个密码系统能够满足以上准则之一，就可以认为是满足实际安全性的。
延伸阅读
柯克霍夫斯（Kerckhoffs）原则
即使密码系统中的算法为密码分析者所知，也难以从截获的密文推导出明文或密钥。 
也就是说，密码体制的安全性仅应依赖于对密钥的保密，而不应依赖于对算法的保密。 
只有在假设攻击者对密码算法有充分的研究，并且拥有足够的计算资源的情况下仍然安全的密码才是安全的密码系统。 
一句话： “一切秘密寓于密钥之中” 
对于商用密码系统而言，公开密码算法的优点包括： 
①有利于对密码算法的安全性进行公开测试评估； 
②防止密码算法设计者在算法中隐藏后门； 
③易于实现密码算法的标准化； 
④有利于使用密码算法产品的规模化生产，实现低成本和高性能。 
但是必须要指出的是，密码设计的公开原则并不等于所有的密码在应用时都一定要公开密码算法。例如世界各国的军政核心密码就都不公开其加密算法。 
综上，一个提供机密性服务的密码系统是实际可用的，必须满足的基本要求： 
①系统的保密性不依赖于对加密体制或算法的保密，而仅依赖于密钥的安全性。 “一切秘密寓于密钥之中”是密码系统设计的一个重要原则。 
②满足实际安全性，使破译者取得密文后在有效时间和成本范围内，确定密钥或相应明文在计算上是不可行的。 
③加密和解密算法应适用于明文空间、密钥空间中的所有元素。 
④加密和解密算法能有效地计算，密码系统易于实现和使用。
[1]