使消息保密的技术和科学叫做密码编码学(cryptography)。密码编码学是密码体制的设计学,即怎样编码,采用什么样的密码体制以保证信息被安全地加密。从事此行业的人员叫做密码编码者(cryptographer)。
与之相对应,密码分析学(cryptanalysis)就是破译密文的科学和技术。密码分析学是在未知密钥的情况下从密文推演出明文或密钥的技术。密码分析者(cryptanalyst)是从事密码分析的专业人员。


在密码学中,有一个五元组:{明文、密文、密钥、加密算法、解密算法},对应的加密方案称为密码体制(或密码)。
明文:是作为加密输入的原始信息,即消息的原始形式,通常用m或p表示。所有可能明文的有限集称为明文空间,通常用M或P来表示。
密文:是明文经加密变换后的结果,即消息被加密处理后的形式,通常用c表示。所有可能密文的有限集称为密文空间,通常用C来表示。
密钥:是参与密码变换的参数,通常用k表示。一切可能的密钥构成的有限集称为密钥空间,通常用K表示。
加密算法:是将明文变换为密文的变换函数,相应的变换过程称为加密,即编码的过程(通常用E表示,即c=Ek(p))。
解密算法:是将密文恢复为明文的变换函数,相应的变换过程称为解密,即解码的过程(通常用D表示,即p=Dk(c))。
对于有实用意义的密码体制而言,总是要求它满足:p=Dk (Ek(p)),即用加密算法得到的密文总是能用一定的解密算法恢复出原始的明文来。而密文消息的获取同时依赖于初始明文和密钥的值,


根据密码分析者对明文、密文等信息掌握的多少,可将密码分析分为以下五种情形。
一、惟密文***(Ciphertext only)

密码分析者仅知道密文


对于这种形式的密码分析,破译者已知的东西只有两样:加密算法、待破译的密文。


二、已知明文***(Known plaintext)

密码分析者仅知道一些明文和相应的密文


在已知明文***中,破译者已知的东西包括:加密算法和经密钥加密形成的一个或多个明文-密文对,即知道一定数量的密文和对应的明文。


三、选择明文***(Chosen plaintext)

密码分析者可以选择一些明文,并相应得到密文


选择明文***的破译者除了知道加密算法外,他还可以选定明文消息,并可以知道对应的加密得到的密文,即知道选择的明文和对应的密文。例如,公钥密码体制中,***者可以利用公钥加密他任意选定的明文,这种***就是选择明文***。


四、选择密文***(Chosen ciphertext)

密码分析者可以得到一些密文,并得到相应的明文


与选择性明文***相对应,破译者除了知道加密算法外,还包括他自己选定的密文和对应的、已解密的原文,即知道选择的密文和对应的明文。

 

    五、自适应选择明文***(adaptive-chosen-plaintext attack)

这是选择明文***的一种特殊情况,指的是密码分析者不仅能够选择要加密的明文,还能够根据加密的结果对以前的选择进行修改;

 

    六、选择密钥***(chosen-key attack)

这种***情况在实际应用中比较少见,进表示密码分析者知道不同密钥之间的关系,并不表示并不表示密码分析者能够选择密钥。

 

  

选择文本***(Chosen text)
选择文本***是选择明文***与选择密文***的结合。破译者已知的东西包括:加密算法、由密码破译者选择的明文消息和它对应的密文,以及由密码破译者选择的猜测性密文和它对应的已破译的明文。

 

————————————————————————————————————

曾与王小云共同攻破完整 MD5 算法的中科院的冯登国与长沙国防科大的谢涛最近在 IACR 上发布了一篇题为《仅用一个消息块实现 MD5 碰撞》的文章。出于安全因素的考虑,文章中并未公开具体实现方法,但他们向全球密码学爱好者发出挑战:第一个在 2013 年 1 月 1 日之前找出新的单块碰撞的人将获得一万美元的奖励。
他们公布的产生碰撞的消息块为:

0x6165300e,0x87a79a55,0xf7c60bd0,0x34febd0b,0x6503cf04,0x854f709e,
0xfb0fc034,0x874c9c65,0x2f94cc40,0x15a12deb,0x5c15f4a3,0x490786bb,
0x6d658673,0xa4341f7d,0x8fd75920,0xefd18d5a

0x6165300e,0x87a79a55,0xf7c60bd0,0x34febd0b,0x6503cf04,0x854f749e,
0xfb0fc034,0x874c9c65,0x2f94cc40,0x15a12deb,0xdc15f4a3,0x490786bb,
0x6d658673,0xa4341f7d,0x8fd75920,0xefd18d5a

这两个消息块有两处不同,但 MD5 均为 0xf999c8c9 0xf7939ab6 0x84f3c481 0x1457cb23