密码破译的主要因素
第一是算法的强度,加密方法分为:RSA算法、四方密码、替换加密法、换位加密法、回转轮加密法、多码加密法、换位加密法、夹带法、Kasiski法、三分密码、仿射密码、波雷费密码、RC5、ADFGVX密码、希尔密码、维热纳尔方阵、栅栏加密法、埃特巴什码、针孔加密法。例如:哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的。消息身份验证代码 (MAC) 哈希函数通常与数字签名一起用于对数据进行签名,而消息检测代码 (MDC) 哈希函数则用于数据完整性。其中具体算法内容属于数学专业,如有兴趣可以去网上查找及相关书籍查找。
第二个是密钥。数据的保密程度直接与密钥的保密程度相关,注意区分密钥和算法,算法不需要保密,被加密的数据是先与密钥共同使用,然后再通过加密算法。密匙是核心,算法是游戏规则,密钥的长度以“位”为单位,根据加密和解密的应用程序,在密钥的长度上加上一位则相当于把可能的密钥的总数乘以二倍,简单的说构成一个任意给定长度的密钥的位的可能组合的个数可以被表示为2的n次方,这儿的n是一个密钥长度,因此,一个40位密钥长度的配方将是2的40次方或万亿种可能的不同的钥,与之形成鲜明对比的是现代计算机的速度。
破译密文最简单的方法,就是尝试所有可能的钥匙组合。假设破译者有识别正确解密结果的能力,经过多次密钥尝试,最终会有一个钥匙让破译者得到原文,这个过程就称为密钥的穷尽搜索。也是最原始的方法,现在通过计算机来进行穷举破译,破译时间取决计算机的运算速度。
在不知其钥匙的情况下,利用数学方法破译密文或找到钥匙的方法,称为密码分析(Cryptanalysis)。密码分析有两个基本的目标:利用密文发现明文;利用密文发现钥匙。根据密码分析者破译(或攻击)时已具备的前提条件,通常将密码分析攻击法分为4种类型。
(1)惟密文破解(Ciphertext-only attack)。在这种方法中,密码分析员已知加密算法,掌握了一段或几段要解密的密文,通过对这些截获的密文进行分析得出明文或密钥。惟密文破解是最容易防范的,因为攻击者拥有的信息量最少。但是在很多情况下,分析者可以得到更多的信息。如捕获到一段或更多的明文信息及相应的密文,也是可能知道某段明文信息的格式。
(2)已知明文的破译(Known-plaintext attack)。在这种方法中,密码分析员已知加密算法,掌握了一段明文和对应的密文。目的是发现加密的钥匙。在实际使用中,获得与某些密文所对应的明文是可能的。
(3)选定明文的破译(Chosen-plaintext attack)。在这种方法中,密码分析员已知加密算法,设法让对手加密一段分析员选定的明文,并获得加密后的密文。目的是确定加密的钥匙。差别比较分析法也是选定明文破译法的一种,密码分析员设法让对手加密一组相似却差别细微的明文,然后比较他们加密后的结果,从而获得加密的钥匙。
(4)选择密文攻击(Chosen-ciphertext attack)。密码分析者可得到所需要的任何密文所对应的明文(这些明文可能是不明了的),解密这些密文所使用的密钥与解密待解的密文的密钥是一样的。它在密码分析技术中很少用到。
上述四种攻击类型的强度按序递增,如果一个密码系统能抵抗选择明文攻击,那么它当然能够抵抗惟密文攻击和已知明文攻击。