加密解密算法与通讯安全(二)

hiKirin 2013-05-04

摘要算法

我们在平时的工作中经常听到MD5算法。比如在一些下载页面里会给出一个md5的作为文件验证串,在迅雷下载中作为文件的唯一标识。这类算法严格上来说也不是加密算法,是一种叫做摘要算法的算法,不过在平时的使用中,我们经常将摘要算法混合使用,所以在广义上来说也可以将他叫为加密算法。

摘要长度

摘要算法的特点是可以将任意长度的字符串,给转换为定长的字符串。可以意料的是,在这个转换过程中,一定是一共单向的过程。打个比方,我们将一个256长度的字符串转换为128长度的字符串,转换前有N^256种可能,转换后有N^128种可能,这一定不可能是1对1的对应关系。

所以我们只要保证摘要串(转换后的串)位数只够的长,使得“给定一个字符串A,经过摘要算法处理后的串B,很难找到一个字符串C,其摘要后的串和串B相同” 即可。所以目前主流的摘要算法MD/SHA的摘要串长度都在128位以上。

而正是出于这个原因,美国还对长摘要串的加密算法进行了出口的限制。

通讯模型

摘要算法在平时的使用中,经常以如下的形式进行:

假设客户端需要传输一段信息data给服务器端,为了data在网络中数据的完整性,或者说防止信息data被恶意的用户篡改,可以始终这种安全通信模型:

客户端与服务器端实现确定了加密密钥key,一段任意的字符串,客户端将key与数据data拼接在一起,进行摘要得到摘要串C,将data、C传给服务器端,服务器端得到data和C后,同样使用与客户端相同的方法,计算摘要串S,如果S等于C的话,就说明A在传输中,没有被人篡改。如下图:


加密解密算法与通讯安全(二)
 

对于我们在通信的面临的四种威胁,摘要算法是否能防范呢:

  • 截获:由于网络中传输的数据依然的明文的,对于攻击者来说暴露无遗,所以摘要算法对于这种威胁,没什么办法。
  • 中断:摘要算法,是对数据的验证,对整个网络的可用性方面的攻击,无法防范。
  • 篡改:客户端发出的数据,中途被攻击者进行了修改,由于攻击者并不知道密钥key,将无法生成正确的摘要串。所以,摘要算法可以防范篡改威胁。
  • 伪造:攻击者伪造成客户端,给服务器端发数据,但由于拿不到密钥key,伪造不出摘要串。所以,在这种情况下,摘要算法是有一定的防范作用的。但是,在伪造威胁中,还有一种是重放攻击,攻击者事先将客户端发给服务器端的包截下来,然后重复发送。例如:客户端发给服务器端密码时,被攻击者记录了下来,当下次,服务器端再向客户端询问密码时,攻击者只需将记录下来的包发给服务器端即可。所以摘要算法对于伪造威胁的防范是不彻底的,其只可以辨别伪造的内容,不能辨别伪造的发送方。

截获

中断

篡改

伪造

X

X

O

X

 

常见的摘要算法有MD5/MD4/SHA-1/SHA-2等,其摘要串长度也不尽相同。现在MD4/MD5/SHA-1等一些摘要串长度128比特的摘要算法已不再安全,山东大学的王小波教授已经证明MD4/MD5/SHA-1已经可以快速生成“碰撞”。所以在真正的对安全性要求极高的场所还是使用长摘要串的摘要算法来的靠谱一些。

摘要算法

摘要串长度

MD4

128

MD5

128

SHA-0

160

SHA-1

160

SHA-256/224

256/224

SHA-512/384

512/384

 

相关推荐