加密原理

作者:杰夫·泰森
电子商务依赖于安全发送信息的能力——加密技术力求实现这一点。
唐·法拉尔/Getty Images

当我们使用互联网时,我们并非总是只是点击浏览并被动地获取信息,例如阅读新闻文章或博客帖子——我们大部分的在线时间都涉及向他人发送自己的信息。通过互联网订购商品,无论是书籍、CD光盘还是其他任何在线商家提供的商品,或者注册在线账户,都需要输入大量的敏感个人信息。一次典型的交易可能不仅包括我们的姓名、电子邮件地址、实际地址和电话号码,还包括密码和个人识别码(PIN)。

互联网的惊人增长,以其改变我们生活和工作方式的承诺,令企业和消费者都感到兴奋。坐在笔记本电脑前,在全球范围内买卖商品变得极其容易。但安全性是互联网上的一个主要问题,特别是当您使用它在各方之间发送敏感信息时。

广告

面对现实吧,有很多信息我们不希望被其他人看到,例如:

  • 信用卡信息
  • 社会安全号码
  • 私人通信
  • 个人详细信息
  • 敏感的公司信息
  • 银行账户信息 ­

计算机和互联网上的信息安全通过多种方法提供。一种简单但直接的安全方法是只将敏感信息存储在可移动存储介质上,例如便携式闪存驱动器或外置硬盘。但最流行的安全形式都依赖于加密,即将信息编码,只有拥有密钥的人(或计算机)才能解码的过程。

本文中,您将了解加密和认证。您还将了解公钥和对称密钥系统,以及哈希算法。­

安全加密系统

在华盛顿特区的联邦调查局办公室,一份加密文件被一系列商用加密产品所环绕。
斯科特·J·费雷尔/国会季刊/Getty Images

计算机加密基于密码学,自人类希望保守信息秘密以来,密码学就一直被使用。在数字时代之前,密码学最大的使用者是政府,特别是用于军事目的。

例如,希腊历史学家普鲁塔克曾记载,斯巴达将军们使用一种由薄木制成的圆柱体密码棒来发送和接收敏感信息。将军会将一块羊皮纸缠绕在密码棒上,并沿着其长度书写信息。当有人将纸从圆柱体上取下时,上面的文字就会显得杂乱无章。但如果接收羊皮纸的另一位将军有一个大小相似的密码棒,他就可以将纸缠绕在上面,轻松读取预期的信息。

广告

希腊人也是最早使用密码的人,这些特定代码涉及字母和数字的替换或移位。

只要两位将军都拥有正确的密码,他们就能解码对方发送的任何信息。为了让信息更难破译,他们可以以任何组合方式排列网格中的字母。

当今使用的大多数密码形式都依赖于计算机,原因很简单,基于人类的密码对计算机来说太容易破解。密码在今天也更常被称为算法,它们是加密的指导——它们提供了一种创建消息并给出一定范围可能组合的方式。另一方面,密钥则帮助个人或计算机在特定场合找出唯一的可能性。

计算机加密系统通常属于以下两类之一:

  • 对称密钥加密
  • 公钥加密

在接下来的章节中,您将了解这些系统。

对称密钥

就像两位斯巴达将军相互发送信息一样,使用对称密钥加密技术进行信息传输的计算机必须拥有相同的密钥。

对称密钥加密中,每台计算机都有一个秘密密钥(代码),它可以在信息数据包通过网络发送到另一台计算机之前对其进行加密。对称密钥加密要求您知道哪些计算机将相互通信,以便您可以将密钥安装在每台计算机上。对称密钥加密本质上与秘密代码相同,两台计算机都必须知道该代码才能解码信息。该代码提供了解码消息的密钥。

广告

可以这样理解:您创建了一条加密信息发送给朋友,其中每个字母都被替换为字母表中向下两个位置的字母。因此,“A”变为“C”,“B”变为“D”。您已经告诉一位值得信赖的朋友,代码是“向下移2位”。您的朋友收到信息并将其解码。而其他任何看到该信息的人都只会看到一堆乱码。

计算机也是如此,但当然,密钥通常要长得多。美国为计算机开发的第一项主要对称算法是数据加密标准(DES),于20世纪70年代获准使用。DES使用56位密钥。

由于自70年代以来计算机的速度不断提高,安全专家不再认为DES安全——尽管56位密钥提供超过70千万亿种可能的组合(70,000,000,000,000,000),但暴力破解(简单地尝试每种可能的组合以找到正确的密钥)可以在短时间内轻松解密加密数据。DES此后已被高级加密标准(AES)取代,后者使用128位、192位或256位密钥。大多数人认为AES在未来很长一段时间内都将是一个足够的加密标准:例如,一个128位密钥可以拥有超过300,000,000,000,000,000,000,000,000,000,000,000种密钥组合[来源:CES Communications]。

公钥加密

有人指出的对称密钥加密的弱点之一是,试图相互通信的两个用户需要一种安全的方式进行通信;否则,攻击者可以轻易地从数据流中截取必要的数据。1976年11月,在《IEEE信息理论学报》上发表的一篇题为《密码学新方向》的论文解决了这个问题,并提出了一种解决方案:公钥加密

公钥加密,也称为非对称密钥加密,同时使用两个不同的密钥——私钥和公钥的组合。私钥只有您的计算机知道,而公钥则由您的计算机提供给任何希望与它安全通信的计算机。要解码加密消息,计算机必须使用发起计算机提供的公钥及其自己的私钥。尽管从一台计算机发送到另一台计算机的消息不会是绝对安全的,因为用于加密的公钥是公开的并且任何人都可以获取,但任何截获它的人如果没有私钥就无法读取。密钥对基于长长度的素数(只有自身和1作为因数的数字,例如2、3、5、7、11等)。这使得系统极其安全,因为素数本质上是无限的,这意味着密钥有几乎无限的可能性。一个非常流行的公钥加密程序是良好隐私(PGP),它允许您加密几乎任何内容。

广告

发送方计算机使用对称密钥加密文档,然后使用接收方计算机的公钥加密对称密钥。接收方计算机使用其私钥解码对称密钥。然后,它使用对称密钥解码文档。

要大规模实施公钥加密,例如安全的Web服务器可能需要的,需要一种不同的方法。这就是数字证书的用武之地。数字证书基本上是一段唯一的代码或一个大数字,表明该Web服务器受到一个独立来源(称为证书颁发机构)的信任。证书颁发机构充当两台计算机都信任的中间人。它确认每台计算机确实是它所声称的身份,然后将每台计算机的公钥提供给对方。

SSL和TLS

每当您准备在网站表单中输入敏感信息(例如信用卡号)时,请注意地址中“http”后面的“s”。

公钥加密的一种流行实现是安全套接字层(SSL)。SSL最初由网景公司开发,是一种互联网安全协议,供互联网浏览器和Web服务器用于传输敏感信息。SSL已成为一个名为传输层安全(TLS)的整体安全协议的一部分。

在您的浏览器中,您可以通过几种不同的方式判断是否正在使用安全协议,例如TLS。您会注意到地址栏中的“http”被替换为“https”,并且在浏览器窗口底部的状态栏中会看到一个小挂锁图标。当您访问敏感信息时,例如在线银行账户或像PayPal谷歌支付这样的支付转账服务时,您很可能会看到这种格式变化,并知道您的信息很可能会安全传输。

广告

TLS及其前身SSL大量使用了证书颁发机构。一旦您的浏览器请求安全页面并在“http”后添加“s”,浏览器就会发送公钥和证书,检查三件事:1) 证书是否来自受信任的第三方;2) 证书目前是否有效;3) 证书是否与它所来自的网站相关联。

挂锁图标表示您正在使用加密。

然后,浏览器使用公钥加密一个随机选择的对称密钥。公钥加密需要大量的计算,因此大多数系统都结合使用公钥和对称密钥加密。当两台计算机发起安全会话时,一台计算机创建对称密钥,并使用公钥加密将其发送给另一台计算机。然后两台计算机可以使用对称密钥加密进行通信。会话结束后,每台计算机都会丢弃用于该会话的对称密钥。任何额外的会话都要求创建一个新的对称密钥,并重复此过程。

哈希算法

公钥加密中的密钥基于哈希值。哈希值是使用哈希算法从一个基本输入数字计算出来的值。本质上,哈希值是原始值的摘要。哈希值的重要之处在于,在不知道用于创建哈希值的数据的情况下,几乎不可能推导出原始输入数字。这里有一个简单的例子:

输入数字

10,667

广告

哈希算法

输入数字 x 143

哈希值

1,525,381

您可以看到,要确定1,525,381这个值是10,667和143相乘的结果是多么困难。但如果您知道乘数是143,那么计算出10,667这个值就会非常容易。公钥加密实际上比这个例子复杂得多,但这就是基本思想。

公钥通常使用复杂的算法和非常大的哈希值进行加密,包括40位甚至128位的数字。一个128位数字可能有2128,即3,402,823,669,209,384,634,633,746,074,300,000,000,000,000,000,000,000,000,000,000,000,000种不同的组合——这就像试图在撒哈拉沙漠中找到一粒特定的沙子。

认证

如前所述,加密是将一台计算机发送给另一台计算机的所有数据编码成只有另一台计算机才能解码的形式的过程。另一个过程,认证,用于验证信息是否来自可信来源。基本上,如果信息是“真实的”,您就知道是谁创建了它,并且知道自创建以来它没有被以任何方式更改过。加密和认证这两个过程携手合作,共同创建一个安全环境。

在计算机上认证个人或信息有几种方法:

广告

  • 密码——使用用户名和密码是最常见的认证形式。当计算机提示时,您输入您的姓名和密码。它会对照安全文件检查这对信息以进行确认。如果姓名或密码不匹配,则您将无法获得进一步的访问权限。
  • 通行卡——这些卡片范围广泛,从带有磁条的简单卡片(类似于信用卡),到嵌入了计算机芯片的复杂智能卡。
  • 数字签名——数字签名基本上是确保电子文档(电子邮件、电子表格、文本文件)真实性的一种方式。数字签名标准(DSS)基于一种使用数字签名算法(DSA)的公钥加密方法。DSS是美国政府认可的数字签名格式。DSA算法由仅文档发起人(签名者)知道的私钥和公钥组成。公钥有四个部分,您可以在此页面上了解更多信息。如果在数字签名附加到文档后,文档中有任何内容被更改,它就会改变数字签名所比较的值,从而使签名失效。

最近,更复杂的认证形式开始出现在家庭和办公计算机系统中。这些新系统大多使用某种形式的生物识别技术进行认证。生物识别技术利用生物信息来验证身份。生物识别认证方法包括:

校验和与CRC

另一个安全的计算需求是确保数据在传输或加密过程中没有损坏。有几种流行的方法可以做到这一点:

校验和——校验和可能是确保数据正确的最古老的方法之一,它也提供了一种认证形式,因为无效的校验和表明数据已以某种方式受到损害。校验和的确定方式有两种。假设一个数据包的校验和长度为1字节。一个字节由8位组成,每位可以是两种状态之一,总共有256(28)种可能的组合。由于第一种组合等于零,一个字节的最大值为255。

广告

  • 如果数据包中其他字节的总和为255或更少,则校验和包含该精确值。 
  • 如果其他字节的总和大于255,则校验和是总值除以256后的余数。

我们来看一个校验和的例子:

  • 总字节数 1,151
  • 1,151 / 256 = 4.496 (取整为 4)
  • 4 x 256 = 1,024
  • 1,151 - 1,024 = 127 校验和

循环冗余校验(CRC)——CRC在概念上与校验和相似,但它们使用多项式除法来确定CRC的值,通常长度为16或32位。CRC的优点是它非常精确。如果一位不正确,CRC值将不匹配。校验和和CRC都擅长防止传输中的随机错误,但对数据的故意攻击保护甚微。对称密钥和公钥加密技术要安全得多。

所有这些不同的过程结合在一起,为您提供了确保您在互联网上发送或接收的信息安全的工具。事实上,通过计算机网络发送信息通常比通过其他任何方式发送信息要安全得多。电话,尤其是无绳电话,容易被窃听,特别是被那些持有无线电扫描仪的不法分子。传统邮件和其他物理介质在到达目的地途中往往会经过许多人的手,增加了信息损坏的可能性。了解加密,并简单地确保您通过互联网发送的任何敏感信息都是安全的(记住“https”和挂锁符号),可以为您带来更大的安心。

有关加密及相关主题的更多信息,请查看下一页的链接。

更多信息

相关文章

更多精彩链接

  • CES Communications。“什么是加密?” 2004年5月8日。(2008年8月25日访问)­ http://www.cescomm.co.nz/about/encryption.html
  • 霍尔茨曼,杰拉德。“加密故事。” Inc.com。2007年12月。(2008年8月25日访问) http://www.inc.com/magazine/19971215/1446.html
  • 凯,拉塞尔。“快速研究:生物识别认证。” Computer World。2005年4月4日。(2008年8月25日访问) http://www.computerworld.com/securitytopics/security/story/0,10801,100772,00.html
  • LEDA用户手册。“对称密钥加密。” 2008年1月9日。(2008年8月25日访问) http://www.algorithmic-solutions.info/leda_manual/Symmetric_Key_Cryptography.html
  • 马丁,弗兰克。“SSL证书操作指南。” Linux文档项目。2002年10月20日。(2008年8月25日访问) https://tldp.cn/HOWTO/SSL-Certificates-HOWTO/index.html
  • 纽科默,约瑟夫。“校验和算法。” Flounder.com。2005年6月15日。(2008年8月25日访问) http://www.flounder.com/checksum.htm
  • SSH Communications Security。“加密协议和标准。”(2008年8月25日访问) http://www.ssh.com/support/cryptography/protocols/
  • SSH Communications Security。“公钥密码系统。”(2008年8月25日访问) http://www.ssh.com/support/cryptography/algorithms/asymmetric.html