支付安全那点事

在做聚合支付系统的时候,少不了和渠道对接,和渠道通信就涉及摘要、签名、加解密和各种加密算法,我刚开始被这些概念搞的云里雾里,现在就来逐个解读

消息摘要

消息摘要也称数字摘要,是将任意长度的消息变成固定长度的短消息

那为什么要对传输的数据做摘要:

  1. 保护数据
    摘要是不可逆的,即使传输过程中被人窃取了数据也无法还原为明文
  2. 确保传递真实的信息
    防止消息在传输过程中被篡改,一旦消息被改动过,摘要生成的hash值必然不同,所以对比摘要就可以知道传输的消息有没有被人篡改
散列函数

消息摘要一般采用散列算法(散列函数)把消息或数据压缩成摘要,散列(Hashing)的意思是——电脑科学中一种对数据的处理方法,通过某种特定的函数/算法(称为散列函数/算法)将要检索的项与用来检索的索引(称为散列,或者散列值)关联起来,生成一种便于搜索的数据结构(称为散列表)。可以简单理解为,散列就是把数据做成字典,把索引和内容关联起来,把原空间的数据集映射到一个更小的空间。

所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。但另一方面,散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为“散列碰撞"(collision)。因为既然是把原空间的数据集映射到一个更小的空间,那么必然会出现两个不同的输入散列成同一个hash值。不过好的散列函数在输入域中很少出现散列冲突(碰撞)。

常见的hash函数:

算法名称 输出大小(bits) 内部大小 区块大小 长度大小 字符尺寸 碰撞情形
HAVAL 256/224/192/160/128 256 1024 64 32
MD2 128 384 128 No 8 大多数
MD4 128 128 512 64 32
MD5 128 128 512 64 32
PANAMA 256 8736 256 32
RadioGatún Arbitrarily long 58 words 3 words 1-64
RIPEMD 128 128 512 64 32
RIPEMD-128/256 128/256 128/256 512 64 32
RIPEMD-160/320 160/320 160/320 512 64 32
SHA-0 160 160 512 64 32
SHA-1 160 160 512 64 32 有缺陷
SHA-256/224 256/224 256 512 64 32
SHA-512/384 512/384 512 1024 128 64
Tiger(2)-192/160/128 192/160/128 192 512 64 64
WHIRLPOOL 512 512 512 256 8

其中最为我们熟悉的是MD5和SHA256算法,关于MD5和SHA256的实现原理可以看这两篇文章——漫画:什么是MD5算法?、加密算法原理分析(MD5、SHA-256),图文并茂,讲的非常好

数字签名

数字签名是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。发送方和接收方每个人都有一对“钥匙”(数字身份),其中一个只有本人知道(私钥),另一个公开的(公钥)。签名的时候用私钥,验证签名的时候用公钥。我们可以直接对消息进行签名(即使用私钥加密,此时加密的目的是为了签名,而不是保密),验证者用公钥正确解密消息,如果和原消息一致,则验证签名成功。但通常我们会对消息的散列值签名,因为通常散列值的长度远小于消息原文,使得签名(非对称加密)的效率大大提高。注意,计算消息的散列值不是数字签名的必要步骤。

支付安全那点事_第1张图片
签名和验签过程

通常我们使用公钥加密,用私钥解密。而在数字签名中,我们使用私钥加密(相当于生成签名),公钥解密(相当于验证签名)。因为私钥只有发送方持有,能用公钥解密证明了消息是私钥持有者发送过来的。一言以蔽之,数字签名就是将公钥密码反过来使用。

签名用到的非对称加密算法一般是RSA,关于RSA的介绍和原理可以参考阮一峰老师写的——RSA算法原理(一)、RSA算法原理(二)

数字证书

鲍勃想给苏珊发消息,并附上数字签名证明是发送者是鲍勃,数字签名貌似万无一失,但假若黑客把接收方的公钥换成自己的公钥,然后黑客用自己的私钥签名冒充鲍勃的签名,这时接收方不知道公钥被换了,验签成功,但消息却不是鲍勃发过来的。

这个时候就需要第三方公证人——"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

支付安全那点事_第2张图片

鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

支付安全那点事_第3张图片

苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

支付安全那点事_第4张图片

参考文献:
数字签名是什么?

你可能感兴趣的:(支付安全那点事)