密码学中,加密(英语:Encryption)是将原始信息(称为明文)转换为另一种形式(称为密文),使之不可读的过程。在理想情况下,只有被授权者才能将密文解密回明文,并访问原始信息。加密本身并不能防止信息在传输中被窃取或干扰,但能防止窃取信息者获得可理解的内容。

因为种种技术原因,加密方法通常使用一个通过算法生成的伪随机密钥。虽然任何加密后的消息即使不知道密钥也可能被破解,但对于一个良好的加密算法而言,破解需要相当多的技术和算力。被授权读取信息的人可以轻松通过发信人所提供的密钥解密信息,但未经授权的人员则不行。

在历史上,密码学中有众多加密方法。早期的加密方法常用于军事通讯。从此开始,现代计算中也出现了众多加密技术,并且加密在现代计算中也变得越来越常见。[1] 现代的加密方式通常使用公钥对称密钥。现代加密技术依赖现代计算机在破解密钥上并不高效的事实来保证其安全性。

历史

古代

最早的加密形式之一是符号替换(代换式密码),被发现于公元前1900年埃及的赫努姆霍特普二世的墓葬中。符号替换加密是一种“非标准的”加密,这意味着符号需要密码算法(即替换规则)或密钥才能被理解。这种早期的加密方式在整个古希腊和罗马范围内被用于军事用途[2]。其中最为知名的军用加密算法之一是凯撒密码(Caesar Cipher):这一算法通过将明文中的字母在字母表中向后移动固定数量的位置来得到密文实现。使用这种方法加密的消息可以使用凯撒密码中的这一“固定数量”(即偏移量)来解密。

约公元800年时,阿拉伯数学家 Al-Kindi 开发了频率分析法——一种对凯撒密码进行系统性破解的尝试[2]。这一技术着眼于密文中字母出现的频率来确定合适的偏移量。然而,这一技术在1465年 Leon Battista Alberti 发明多字母密码算法后变得无效,因为该密码中包括多种不同的语言。为了使频率分析法发挥作用,破解者需要知道发送者所使用的语言[2]

19至20世纪

约1790年时,Thomas Jefferson 提出了一种用于编解码消息的加密算法,以提供一种更安全的军事通信方法。这一算法现在被称为轮式密码或杰斐逊盘。虽然从未实际制造,但从原理上来看,其是一个具有多个转轮的圆柱轴,可用于混淆长达36字符的英语消息。要解密这一消息,只需将其插入具有相同密码算法的接收器即可。

另一种类似杰斐逊盘的设备M-94由美国陆军少校 Joseph Mauborne 于1917年独立研制。直到1942年,美军一直将其用于通信。

第二次世界大战中,轴心国使用了一种更为先进的M-94设备,称为恩尼格玛密码机。与杰斐逊盘和M-94不同,一组密码字母组合每天都会被完全更换,而每天所使用的密码字母组合只有轴心国知道。因此,当时许多人认为破解密码的唯一方法是在24小时内尝试超过17000种密码字母组合[3]。而盟军利用算力严格限制了他们需要每天检查的组合数量,从而导致了恩尼格玛密码机的失效。

现代

如今,加密被用于商业与安全用途的互联网传输通信中[4]。而随着算力的不断增长,计算机加密也在持续进化,以防止窃听攻击。1999年时,首个现代密码算法之一DES(其使用56位密钥,具有72,057,594,037,927,936种密钥可能性)在22小时15分钟内被EFF的DES破解器通过暴力破解方式破解。而现代加密标准通常使用更为强壮的密钥长度,通常可达256位,如AES-256TwofishChaCha20Serpent等。一般认为使用128位或更高强度的密钥的加密算法无法被暴力破解,因为总共存在约3.4×10^38种密钥可能性,对于大多数现代计算机的算力无法在可接受的时间内得到密钥(并非绝对不可破解,只是暴力破解需要的成本过高)。对较长密钥的密码的破解的最可能选择是发现密码算法本身漏洞,如流密码RC4由于固有偏移量和缺陷被破解。

分类

对称密钥加密

对称密钥加密方案中,加密和解密密钥是相同的。通信方必须具有相同的密钥才能实现安全通信。对称密钥的一个典型例子:德国军方的恩尼格玛密码机。这种密码机每天都有密钥设置。当盟军弄清楚机器如何工作时,他们能够在发现给定日期传输的加密密钥后立即解密消息中编码的信息。

公钥加密

在公钥加密(即公开密钥加密)方案中,发布加密密钥供任何人使用和加密消息。但是,只有接收方才能访问能够读取消息的解密密钥。公钥加密最早是在1973年的一份秘密文件中描述的[5]; 之前所有加密方案都是对称密钥加密(也称为私钥)。

应用

加密可以用于保证安全性,但是其它一些技术在保障通信安全方面仍然是必须的,尤其是关于数据完整性和信息验证。例如,消息鉴别码(MAC)或者数字签名

相关软件

加密或软件编码隐匿(Code Obfuscation)同时也在软件著作权保护中,用于对付反向工程,未授权的程序分析,破解和软件盗版及数字内容数字版权管理DRM)等。

加密算法

加密算法就是加密的方法。

加密算法可以分为两类:对称加密非对称加密

密码学中,加密是将明文信息隐匿起来,使之在缺少特殊信息时不可读。

对称加密就是将信息使用一个密钥进行加密,解密时使用同样的密钥,同样的算法进行解密。

非对称加密,又称公开密钥加密,是加密和解密使用不同密钥的算法,广泛用于信息传输中。

参见

参考资料

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.