加密原理
引言
互联网的惊人发展使企业和消费者都感到非常兴奋,它正改变着我们的生活和工作方式。但是,互联网的安全程度如何——尤其是在通过它发送机密信息时的安全性——已经成为人们关心的主要问题。
我们确实有许多信息不希望让他人看到,例如:
电子商务依赖于安全发送信息的能力。 |
人们通过多种方法在计算机和互联网上实现信息安全性。一种简单而又直接的方法是仅将机密信息保存在可移动存储介质上,如软盘上。但是,最流行的安全性实现形式都依赖于加密,这是一种对信息进行编码而使得仅拥有密钥的人(或计算机)才能将其解码的程序。
在本文中,您将了解到有关加密和验证的知识,以及什么是公钥和对称密钥系统以及散列算法。
加密系统
计算机加密建立在人类历史中一直使用的密码术的基础上。在数字时代之前,使用密码术最多的是政府,尤其是用于军事目的。据考证,远在罗马帝国时代就存在经过编码的消息。但是,现今人们使用的大多数密码术形式均依赖于计算机,原因在于仅凭借人脑编写的代码非常容易被计算机破解。
大多数计算机加密系统都属于以下两种类型之一:
- 对称密钥加密
- 公钥加密
在下面几节,您将了解所有这些系统。
对称密钥加密
在对称密钥加密中,每台计算机都有一个密钥(代码),用于对通过网络发送到另一台计算机的信息包进行加密。对称密钥要求您知道将要与哪些计算机通信,以便您能够在每台计算机上安装密钥。对称密钥加密实际上与密码相同,两台计算机都必须知道密码才能对信息进行解码。该代码提供了用于对信息进行解码的钥匙。下面是一个简单的例子:您创建一条消息并进行编码,将原消息中的每个字母都替换为其在字母表中后两位的字母,然后发送给朋友。这样“A”变成了“C”,“B”变成了“D”。您告诉自己信任的朋友,代码是“后移两位”。这样您的朋友收到消息时就可以进行解码,从而得知消息的内容。任何其他看到该消息的人看到的只是无意义的内容。
公钥加密
公钥加密方法结合使用了私钥和公钥。私钥只有您的计算机知道,而公钥则由您的计算机提供给任何希望与其安全通信的其他计算机。若要解码被加密的消息,计算机必须使用发出消息的计算机提供的公钥,以及它自己的私钥。Pretty Good Privacy(PGP)是一种非常流行的公钥加密实用工具,它几乎可用于对任何数据加密。
发出消息的计算机使用对称密钥对文档进行加密,然后又使用接收消息的计算机的公钥对对称密钥进行加密。后者使用其私钥来解码对称密钥,然后使用对称密钥来解码文档。
大规模实施公钥加密(例如,安全Web服务器可能需要这种加密)要求采取另一种方式。这时数字证书能派上用途。从根本上讲,数字证书是一段信息,声明Web服务器受称为证书颁发机构的独立源的信任。证书颁发机构充当两台计算机均信任的“中间人”。它确认每台计算机的身份与其声明的身份相符,然后将每台计算机的公钥提供给对方。
公钥加密:SSL(安全套接字层)
安全套接字层(SSL)是一种广泛实施的公钥加密。SSL最初由网景公司(Netscape)开发,是互联网浏览器和Web服务器用于传输机密信息的互联网安全协议。SSL现在已经成为总体安全协议传输层安全(TLS)的一部分。
您一旦向某个网站上的表单输入机密信息 (如信用卡号码),地址中的“http”后就会出现“s”。 |
在您的浏览器中,您可以通过多种不同方式知道自己什么时候在使用安全协议(例如TLS)。您将注意到,地址行中的“http”中被替换为“https”,在浏览器窗口底部的状态栏中还会看到一个小的挂锁符号。
挂锁符号表明您正在使用加密。 |
公钥加密占用大量计算资源,所以大多数系统结合使用公钥和对称密钥。当两台计算机发起安全会话时,一台计算机创建一个对称密钥,并将其发送给使用公钥加密的另一台计算机。然后这两台计算机使用对称密钥加密进行通信。一旦完成会话,每台计算机都会丢弃该会话使用的对称密钥。进行新的会话要求创建新的对称密钥,然后重复上述过程。
公匙加密的散列算法
公钥加密中的密钥以散列值为基础。这个值是使用散列算法、根据输入的一个基础数字计算出来的。从本质上讲,散列值是原始值的概要。关于散列值的重要一点是,如果不知道用于创建散列值的数据,就几乎不可能推导出原始输入数字。下面是一个简单示例:
输入数字 | 散列算法 | 散列值 |
10,667 | 输入数字乘以143 | 1,525,381 |
您可以看到,要确定值1,525,381原来是10,667和143相乘的结果是多么困难。但是,如果您知道乘数是143,就很容易计算出值10,667。公钥加密实际上比该示例复杂得多,但基本原理相同。
公钥通常使用复杂算法和非常大的散列值来进行加密,其中包括40位甚至128位数字。128位可以有2128个不同组合!这就像是要在撒哈拉沙漠中找出某颗沙砾一样。
计算机身份验证
如前所述,加密是将一台计算机发送至另一台计算机的所有数据编码为只有后者才能解码的形式的过程。验证是另一种过程,用于检验来自信任源的信息。从基本上讲,如果信息是“可信的”,表明您知道谁创建了该信息,而且您知道自此人创建该信息以来它没有受到任何形式的改动。加密和验证这两个过程可共同创造出安全的环境。
要对计算机的用户或信息进行身份验证,有多种方法:
- 密码:使用用户名和密码是最常见的验证形式。您在计算机提示时输入用户名和密码。计算机根据安全文件核对二者以确认。如果名称或密码不匹配,则不允许您进一步访问。
- 通行卡:这些卡有很多种,从类似于信用卡的带磁条的一般卡到具有嵌入式计算机芯片的复杂智能卡,不一而足。
- 数字签名:从基本上讲,数字签名是确保电子文档(电子邮件、电子表格和文本文件)可信的一种方式。数字签名标准(DSS)基于一种使用数字签名算法(DSA)的公钥加密方式。DSS是一种已经获得美国政府认可的数字签名格式。DSA算法包括一个私钥(仅文档创建人或签署人知道)和一个公钥。公钥包括四个部分。如果在文档上附加数字签名之后更改文档中的任何内容,则数字签名所对照的值即被更改,使签名变得无效。
最近,在家庭和办公室计算机系统上开始出现更复杂的验证形式。这些新系统大多使用某种形式的生物测定技术进行验证。它使用生物信息来验证身份。具体验证方法包括:
- 指纹扫描
- 视网膜扫描
- 面部扫描
- 语音识别
检查数据损坏情况
对于安全信息处理的另一种需要是确保数据在传输或加密期间没有被损坏。有多种流行的方法可以做到这一点:
- 校验和:校验和也许是最古老的确保数据正确的方法之一。由于无效的校验和同时表明数据已在某种程度上受到损坏,因此校验和也提供了一种验证方式。它通过两种方法来确定。假定某个数据包的校验和为1个字节长。一个字节包含8个位,而每个位可能处于两种状态之一,从而共有256(28 )种可能的组合。由于第一种组合等于零,一个字节的最大值为255。
- 如果数据包中其他字节的和为255或更低,则校验和就是此值。
- 如果数据包中其他字节的和超出255,则校验和是总值除以256后的余数。
- 如果数据包中其他字节的和为255或更低,则校验和就是此值。
让我们看一个校验和示例:
字节 1 | 字节 2 | 字节 3 | 字节 4 | 字节 5 | 字节 6 | 字节 7 | 字节 8 | 总值 | 校验和 |
212 | 232 | 54 | 135 | 244 | 15 | 179 | 80 | 1,151 | 127 |
- 1,151/256=4.496(四舍五入为4)
- 4x256=1,024
- 1,151-1,024=127
- 循环冗余校验(CRC)——CRC在概念上类似于校验和,但它们使用多项式除法来确定CRC的值,其长度通常为16或32位。CRC的优势在于它非常精确。如果有一个位不正确,CRC值就不匹配。校验和与CRC都可以很好地防止传输中的随机误差,但对于避免您的数据受到有意攻击而提供的保护很少。对称和公钥加密技术则要安全得多。
所有这些过程结合在一起,为您提供所需的各种工具以确保通过互联网发送和接收的信息的安全性。事实上,通过计算机网络发送信息通常比任何其他发送方法都安全得多。电话(尤其是无绳电话)极易被窃听,特别是被不道德的人使用无线电扫描仪窃听。传统邮件和其他物理介质在到达目的地之前通常会由许多人经手,从而增加了被损坏的可能性。了解加密,并确保您通过互联网发送的任何机密信息的安全(切记“https”和挂锁符号),会让您更放心。
[责任编辑:小敏]
评论
查看更多