从根本上来说,数字签名是一种确保电子文档(电子邮件、电子表格、文本文件等)真实可靠的方法。“真实可靠”的含义是:您知道文档是谁创建的,并且知道在作者创建该文档之后,没有人对其进行过任何形式的修改。
数字签名依靠某些类型的加密技术来验证身份。加密是指获得一台计算机要发送给另一台计算机的所有数据,然后将其编码为只有后者才能解码的形式的过程。身份验证是指验证相关信息是来自可信来源的过程。这两个过程共同实现数字签名的功能。
要对人员或计算机上的信息进行身份验证,有多种方法:
密码——用户名和密码的使用是最常见的身份验证方式。您在计算机提示下输入用户名和密码。计算机根据安全文件对二者进行核对并确认。如果用户名或密码中有一个不匹配,计算机就不允许您进行进一步访问。 校验和——校验和也许是确保数据正确的最古老的方法之一,它也提供了一种身份验证方式,因为无效的校验和表明数据受到了某种形式的损坏。有两种方法可以用来确定校验和。假设数据包的校验和为1个字节长,意味着校验和可以包含的最大值为255。如果该数据包中其他字节的和是255或更小,则校验和将包含那个具体的值。但如果其他字节的和大于255,则校验和为总值除以256后得到的余数。请看以下示例:字节 1字节 2字节 3字节 4字节 5字节 6字节 7字节 8总值校验和2122325413524415179801151127
4x256=1024
1151-1024=127
密钥基于散列值。这个值是使用散列算法,根据一个基本输入数字计算出来的。关于散列值的重要一点是,如果不知道用于创建散列值的数据,则几乎不可能推导出原始输入数字。下面是一个简单示例:
毫无疑问,要判断出值1525381是10667和143相乘的结果会是多么困难。但如果知道乘数是143,那么便可以很轻松地计算出值10667。公钥加密远比这个示例复杂得多,但基本概念是一样的。公钥通常使用复杂的算法和非常大的散列值来进行加密,例如使用40位甚至128位的数字。128位的数字可能有2128种不同组合,这个组合数相当于270万个奥运会标准泳池中水分子的数量。即便是您能够想像出的最小的水滴,其中也包含数十亿个水分子!
数字证书——要大规模(例如一个安全的Web服务器所需的规模)实施公钥加密,就需要另外的方法,而这正是数字证书的用途所在。从根本上说,数字证书是一小段信息,它声明Web服务器受到名为证书颁发机构的独立来源的信任。证书颁发机构扮演两台计算机都信任的中间人的角色。它确认每台计算机都确实具有所表明的身份,然后为每台计算机提供另一台计算机的公钥。数字签名标准(DSS)是基于一种使用数字签名算法(DSA)的公钥加密方法。DSS是经过美国政府批准的数字签名格式。DSA算法由一个私钥和一个公钥组成,该私钥只有文档的发送者(签名者)知道。公钥包括四个部分,您可在此页上了解其相关信息。