菜鸟笔记
提升您的技术认知

浅谈数字摘要-ag真人游戏

最近在开发gb/t-28181视频监控联网系统,其中要求对信令、数据做数据完整性保护,以保证信令安全,防止系统数据被恶意篡改。

数字摘要信令认证的交互流程如下:

业务需求加好奇心,让我们一起来揭开数字摘要的面纱,探一探究竟。

数字摘要其实就是一种单向加密算法,是一种用来保证信息完整性的技术。具体就是通过hash函数,将任意长度的消息(明文),“摘要”成固定长度(如128 bits)的短消息(即密文)。对于同一hash函数,不同的明文摘要成的密文其结果是不同的,而同样的明文摘要结果必定一致,并且即使得到了摘要也不能反推出明文。

说到hash函数,让我们来简单了解一下。hash函数,也称散列函数,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。hash函数可以实现一个伪随机数生成器(pseudo-random number generator,prng),那么不同hash函数的性能比较,就可以通过其在伪随机数生成方面的比较来衡量。一般来讲,一个完美的hash函数,就是在一个特定的数据集上产生的碰撞(即两个不同的输入产生了同样的散列值)最少的hash函数。

最早的prng算法由计算机之父冯.诺依曼提出,他的办法非常简单,就是将一个数的平方掐头去尾,只保留中间的几位数。例如,一个四位的二进制数1001(即十进制的9),平方为01010001,如果输出是4位的话,掐头去尾,得到中间的0100。当然这种方法得到的数字并不是很随机,很容易出现两个信息产生相同的散列值,比如0010,按照上面的方法也能得到0100。此外还有梅森旋转法等。

现在互联网上广泛使用的hash算法有md5或sha-1及其变种,它们可以将不定长的信息变成定长的128 bits或160 bits。

md5 - message digest 5,消息摘要第5版,是rivest在1991年对更早的消息摘要版本md4的改进版本。以512位分组输入,输出为4个32位字(128 bits)的级联。md5在抗分析和抗差分方面变现较好。

sha-1,secure hash algorithm,安全哈希算法, 主要用于数字签名算法(dsa),其作用是将长度小于2^64 bits的消息,映射产生一个160 bits的散列值(消息摘要)。sha-1抗穷举攻击(brute force)性更好。

另外,sha-1的变体还可以产生192 bits和256 bits的消息摘要。

hash算法是现代密码体系中的一个重要组成部分。在数字签名协议中,hash函数扮演了一个重要的角色。对数字摘要(即hash值)进行数字签名,在统计上认为与对文件本身进行数字签名是等效的,但是可以显著降低运算量,提高计算速度。

数字摘要与数字签名、加密等技术结合使用的过程如下:

1. 发送方s将原文信息进行hash运算,得到hash值,即数字摘要md;

2. 发送方s用自己的私钥pvs,采用非对称加密算法rsa,对数字摘要md进行加密,得到数字签名ds;

3. 发送方s用对称算法des的对称密钥sk对原文信息、数字签名ds及发送方证书的公钥pbs采用对称算法加密,得到加密信息e;

4. 发送方s用接收方r的公钥pbr,采用rsa算法对对称密钥sk进行加密,形成数字信封de。该过程就像将对称密钥sk,装进了一个用接收方的公钥加密的信封里。

5. 发送方s将加密信息e和数字信封de一起发送给接收方r;

6. 接收方r将收到的数字信封de用自己的私钥pvr解密,取出对称密钥sk;

7. 接收方r用对称密钥sk通过des算法对接收到的加密信息e进行解密,还原出原文信息、数字签名ds以及发送方证书的公钥pbs;

8. 接收方r用发送方s的公钥pbs解密数字签名,得到数字摘要md;

9. 接收方r将原文信息用同样的hash算法,求得一个新的数字摘要md1;

10. 比较两个数字摘要md和md1,若一致,则认为收到的就是未被篡改的原文,否则,认为原文被篡改,拒绝该签名。

网站地图