计算机科学基础
加密
为了确保安全通信的进行,必须使用加密方法。网络上的安全通信在电子商务等领域尤为重要。加密被用于对消息进行编码,以确保只有预期的接收者才能了解消息的内容。
在互联网中,消息以数据包的形式传输。可以将数据包想象成明信片,而不是密封的信件,因为每个数据包的内容是明文的(对所有人可见),在传输时是暴露的。
保护这些数据包的最佳方法是在传输和接收后使用加密技术。加密是将信息(明文)转换为难以理解的文本(密文)的过程,以防止不相关方截取消息。接收者必须使用解密方法来理解密文。解密将密文还原为明文。
加密和解密这两个部分构成了所谓的密码学。密码学(即“秘密写作”)是研究和实践如何在第三方存在的情况下实现安全通信的技术。这一实践并不新鲜,可以追溯到公元前2000年。
凯撒密码
凯撒密码是替换密码的一种例子。这种密码通过逐字母的转换对消息进行加密。密码本质上是一种将消息转化为模糊形式并能够逆转该转换的方法(算法)。以下是这种密码的一个示例,每个字母通过下列方式加密:
原字母: | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
替换后: | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
在凯撒密码中,有25种可能的变化,每种代表一种字母表不同的位移方式。加密和解密规则的关键在于位移量。如果我们知道使用了凯撒密码,可以通过尝试所有可能的25种位移来解密消息。不过,已有工具可以用于加密和解密由凯撒密码生成的消息。
替换密码
替换密码是一种密码,通过统一规则将一个符号替换为另一个符号。例如,下图展示了一个替换表,定义了字母表重新排序的规则。根据该规则,可以生成多少种可能的重新排序方式?
这类密码看似牢不可破,但事实并非如此。频率分析可用于破解替换密码。这种技术通过分析某种语言中字母出现的频率来破译通用替换密码。下图展示了带有符号的原始消息,我们将使用频率分析来解码该密码。
在我们用E和T替换了最常用的字符之后,我们可以开始使用其他常见的符号和句子结构来填补空白。
最后,在用常用的字母替换符号之后,我们可以看到下面显示的整个消息。
Vigenere密码与Caesar密码类似,但它使用多个Caesar密码对消息进行编码。在很长一段时间里,维杰内尔密码被认为是牢不可破的,直到19世纪查尔斯·巴贝奇发现了一种方法。
上面使用的替换表可以加密和解密消息。我们用第二列“thomasbbryan”来唯一标识该表。此密钥用于指定使用了哪种密码。
维吉尼亚密码直到1863年才被发现破解方法。在被破解之前,这种密码曾是安全通信的一个重大改进,尽管如今它已不再安全。
弗纳姆密码
维吉尼亚密码的弱点在于重复使用相同的密钥。为了克服这一问题,弗纳姆密码应运而生。其密钥长度与明文相同,因此无需重复。例如,如果要加密长度为100的消息,我们可能会使用100个凯撒密码扩展到100行。这种方法被称为一次性密码本,用于加密消息。弗纳姆密码在第二次世界大战和冷战期间被广泛使用。
理论上,一次性密码本是密码学中最完美的方法。这种方式是数学上可证明的。弗纳姆密码的操作方式类似于凯撒密码,但凯撒密码使用单一密钥作为移位,而弗纳姆密码则为密钥中的每个字母使用唯一的移位。通过根据密钥中对应字母在字母表中的位置来确定移位值。例如,密钥中的字母‘A’表示移位1。
正确使用时,一次性密码本是无法破解的。但其难点在于如何在不被拦截的情况下传递一次性密码本。另一个挑战是这种密码本过于不便。如果可以安全传递密码本,人们可能就直接传递消息本身,因为密码本的长度和复杂性与消息相当。
现代加密
如今,我们使用更创新的方法来确保通信的安全。复杂的密码(程序)使用较短的密钥,而这些密钥是双方同意保密的位序列。这种方法通过计算机将ASCII编码的明文消息分成块,然后根据与密钥相关的特定方法对这些块中的位进行转换。
破解密钥加密的捷径目前尚不为人所知。即便是暴力破解也极其困难,因为需要尝试所有可能的密钥,而随着攻击的进行,时间成本会根据密钥的长度呈指数级增长。每增加一位密钥长度,破解所需工作量就会翻倍。通过使用更长的密钥,破解工作可能超过实际计算能力。因此,尽管理论上可以破解这些密码,但计算代价过于高昂,可能需要数百年或更久。
然而,使用密钥加密也有挑战。随着网络成员数量增加,所需密钥的数量也随之增加。每一对成员都需要一个新的共享密钥。随着需要的组合数量增多,生成唯一密钥变得更加复杂。另一个挑战是在没有安全渠道的情况下如何在双方之间安全建立共享密钥。
公钥加密
1976年,惠特菲尔德·迪菲(Whitfield Diffie)和马丁·赫尔曼(Martin Hellman)提出了公钥加密的概念。这种方法依赖于两种数学相关的密钥:公钥和私钥。这两个密钥配对,但从一个密钥推导出另一个密钥在计算上不可行。用私钥加密的消息只能用公钥解密,反之亦然。
当用户选择一个秘密密钥并使用接收者的公钥加密消息后,将密文发送给接收者。接收者再使用自己的私钥解密密文以获取秘密密钥。这些私钥始终保密,绝不会发送给其他用户。之后,双方就可以使用该秘密密钥(也称为会话密钥)进行通信。由于只有接收者能够解密发起者的消息,确保了通信的保密性。
为了确保消息来自发送方,可以使用数字签名方案。签名应易于用户生成,但难以被他人伪造。数字签名还可以与消息的内容绑定。由于密文只能用目标接收方的私钥解密,消息的真实性也得到了验证。