消息摘要主要用于保持数据的完整性,我们经常听到的校验和就是消息摘要的一个特例。它的算法是一个单项函数。也就是直接将输入的数据进行消息摘要提取,但绝不能从消息摘要生成原数据。消息摘要的算法分为如下几类(最常用的是MD5和SHA-1):
u MD2:是一个速度很慢但相当安全的算法,它产生128位的摘要值。
u MD4:速度很快,但安全性下降。同样产生128位的摘要值。
u MD5:是MD4的一个更安全的版本,同时速度更快。也产生128位的摘要值。
u SHA:安全哈希算法,产生一个160位的摘要值。
u SHA-1:在克服SHA的一些缺陷基础上形成的哈希算法。
u SHA-256、SHA-383 和 SHA-512 提供更长的指纹,大小分别是 256 位、383 位和 512 位。
u MAC:消息认证码,使用秘密密钥和消息摘要算法来创建消息摘要。我们可能经常会疑问,我们有了消息摘要为什么还要认证码呢?听我给你举个例子,前面的提到的消息摘要,只要有明文和算法,谁都可以生成同样的消息摘要,但有时为了特殊的目的我们需要只有特定的人才能生成这个摘要。好了,那怎么办?通过在生成消息摘要的过程中加入相应的密钥,从而使生成的消息摘要在没有密钥的情况下难以生成。
2、对称密钥(私钥加密)
对称密钥应该是相当强壮的信息加密算法。这和我们生活中的钥匙极为相像。例如你家的门锁可以有好几把钥匙,并且这些钥匙都相同。在现实生活中,你可以将做好的钥匙收递手交给你的亲人,但在网络中就变了,你要通过网络来传递这把钥匙。所以对钥匙的保护又需要相应的加密技术。好了,通过这个通俗的例子,你应该知道对称密钥干什么?它的弱点在哪里?等问题的答案了吧。下面是一些最普通的对称密钥算法:
u DES:DES(数据加密标准)是由 IBM 于上世纪 70 年代发明的,美国政府将其采纳为标准,使用56位的密钥。
u 3-DES(TripleDES):该算法被用来解决使用 DES 技术的 56 位时密钥日益减弱的强度,其方法是:使用两个密钥对明文运行 DES 算法三次,从而得到 112 位有效密钥强度。TripleDES 有时称为 DESede(表示加密、解密和加密这三个阶段)。
u RC2和RC4:可以使用2048位的密钥并且提供了一个十分安全的算法。他们都来自于领先的加密安全性公司 RSA Security。
u RC5:使用了一种可配置的密钥大小。也来自领先的加密安全性公司 RSA Security。
u AES:AES(高级加密标准)取代 DES 成为美国标准。它是由 Joan Daemen 和 Vincent Rijmen 发明的,也被称为 Rinjdael 算法。它是 128 位分组密码,密钥长度为 128 位、192 位或 256 位。
u Blowfish:这种算法是由 Bruce Schneier 开发的,它是一种具有从 32 位到 448 位(都是 8 的整数倍)可变密钥长度的分组密码,被设计用于在软件中有效实现微处理器。
u PBE。PBE(基于密码的加密)可以与多种消息摘要和私钥算法结合使用。
3、非对称密钥(公共密钥)
我们在介绍对称密钥的时候举了一个例子,提到了密钥传输的安全问题。并且在网络中的传输双方并不是我们现实中的“亲人”关系。那么公钥正好解决了这个问题。我这里举个通俗的例子,例如你有个信箱(物理信箱),开着一个缝隙(公钥),大家都能往里塞东西,但是一旦赛进取,那可不是大家都能取到的,只有拥有信箱钥匙(私钥)才能得到。哈哈!就这样。公钥就这样,不要担心它多难理解。当然当我们反过来理解的时候就有些和信箱不同的地方。也就是用私钥加密的东西只有对应的公钥才能进行解密,这种算法经常被应用在数字签名上。其实在现实中你可以将公钥技术和私钥技术结合起来完成信息保密,因为公钥的计算速度相当慢,比私钥慢大约100-1000倍。下面是一些非对称密钥算法列表:
u RSA:这个算法是最流行的公钥密码算法,使用长度可以变化的密钥。
u Diffie-Hellman:技术上将这种算法称为密钥协定算法。它不能用于加密,但可以用来允许双方通过在公用通道上共享信息来派生出秘钥。然后这个密钥可以用于私钥加密。
需要注意的是私钥和密钥是成对的,并且不能用一个生成另外一个,特别是不能用公钥生成私钥,否则就麻烦了。
认证和不可抵赖
我们经常在论坛中中见到管理员、斑竹等身份标识,并且我们更明白拥有不同的身份它们的权限也同样有差别。但我们很想拥有管理员的权限,我们的突破口应该在哪里呢?当然是获得一个管理员的账号,这样就可以被系统的认证系统识别。通俗的说就是要让系统的认证识别器确认你是管理员身份就可以了。呵呵,没那么容易,因为各个系统都具有严密的认证体系,不象一些小朋友做的认证逻辑处在sql语句逻辑上那么简单。
认证的实现方法多种多样,真的,我以前做网站的时候总是想当然地进行用户认证。但其基础技术有如下列表:
u 基于口令的身份认证
u 基于令牌的物理标识和认证
u 基于生物测定学的认证
u 基于证书的认证
下面就分别将这些认证做一介绍: