在日常的接口交互中,数据的安全性是优先考虑的问题之一。那么一般我们在实际工作中如何去保证数据的安全呢?一般是通过数据加密的方式来处理。加密算法,如果按是否可以把密文还原成明文来划分的话,可以分为可逆加密和不可逆加密。
一、基础概念
1、密钥
密钥是一段二进制的字符串,其度量单位是位(bit)。对于密钥长度为256的话,就是指32个字节长度的密钥。
2、身份验证
在非对称加密模式下,使用私钥进行加密,对方用公钥进行解密,接收方如果能把信息成功解密出来,即可确定信息的来源方是私钥拥有者,达到身份验证的效果。
3、信息的完整性
信息完整性是指接收方收到的信息没有被篡改过。
二、可逆加密
在可逆加密分为对称加密和非对称加密两大类。对称加密是指加密和解密的密钥是同一个密钥,而非对称加密则需要使用两把不同的密钥进行。
**1、对称加密 **
如上图,用户A通过对称加密算法,对要传输的消息的明文(plain text)进行加密(encrypt)得到密文(cihger text)。用户B得到密文信息后,用同一把密钥对密文进行解密(encrypt)操作,当然也需要用同一种加密算法,最后得到消息的明文。
常见的对称加密算法主要有AES,其密钥长度128,192,256这几种是最常见的。
2、非对称加密
如图,非对称加密和解密是需要使用两个不同的密钥,其中公钥是可以提供给通信方,我们自己保管好私钥。
非对称加密方式,用公钥加密的话得用私钥来解密,反之亦然。在正式场景中,一般是有两套密钥,一套是接入方密钥,一套是平台方密钥。在进行对接的时候,双方会把自己的的公钥通过邮件等正式方式发给对方,并商议确定加密规则(包括使用的加密算法、公私钥的使用规则等,一般都是平台方制定)
常用的非对称加密算法是RSA。
3、混合加密
优点缺点对称加密运算速度快密钥被窃取后,消息会被破解非对称加密采用私钥自行保管、公钥任意分发的模式,黑客只要没有私钥就无法破解整个加密流程运算速度慢,满足不了时效要求高的业务场景
可见,对称和非对称加密各有优缺点,我们把它们混合使用来进行加密,则可以更好地发挥效果。
1、首先,使用非对称加密的方式把密钥传给对方
对称加密被破解的关键是黑客拿到拿到密钥,所以我们可以通过非对称加密方式把密钥加密,然后对方拿到后解密即可。
2、使用对称加密方式进行后续信息交互。
三、如何确保信息的完整性
实现信息完整性的手段一般是应用摘要算法,也叫散列函数或者哈希函数。它主要是通过任意长度的字符串通过hash函数,变成固定长度的字符串。这个固定长度的字符串也被称为数字指纹或者摘要。
1、摘要算法的四大特点:
1)不可逆
不需密钥,只需使用算法即可加密,但是密文不能被解密。可用于加密用户密码,在存储在数据库中。
2)难题友好性
破解手段,只能是暴力枚举,需要消耗大量的算力。
3)发散性
明文进行非常小的改动,得到的摘要就会发生剧烈的变化(抖动)。
4)抗碰撞性
摘要算法会把不同长度的字符串变成相同长度的摘要,如果这些发生重复,那么就成为发生了碰撞。好的算法要求尽可能避免碰撞。
在常见的摘要算法中,MD5、SHA1不具备很强的抗碰撞性,因此目前主流使用SHA2(包括SHA224、SHA256、SHA384)算法。
2、实际应用流程
虽然摘要具有不可逆性,但是应对黑客拦截请求、替换原文内容并生成新的摘要,这种情况接收方是无法感知的。那么解决这个问题,可以对摘要进行加密传送。
整个流程主要围绕对摘要进行加密成数字签名,然后附在原文后面一起传送给接收方。接收方收到请求后,把签名通过发送方的公钥进行解密得到摘要信息,并与按原文生成的摘要进行比对,如果一致则说明请求没被篡改过。
3、进阶:数字证书及https应用
数字签名,对机密性普通程度的信息来说已经基本够用了,但是对于安全性很高的信息传播来说,还是会有一定问题的。
比如,接收方得到的发送方的公钥有可能是给人恶意替换了的。比如拿到的公钥被黑客替换了成自己的公钥。那么黑客就可以根据上述数字签名的方式发送自己的请求来欺骗接收方的数据。那么这时候就可以用数字证书来解决。
数字证书,就是让权威的CA机构为证书所有者的公钥进行背书。其使用可以理解为在数字签名的基础上加一层CA的签名验证。正规的CA,其公钥都会保存到操作系统里面,方便使用。如果证书由不正规的CA发布,那么在验证的过程中,会得到警告。
3.1、数字证书(Digital Certificate)的申请
机构A向CA提交数字证书申请,要提交自己的公钥给CA。CA创建数字证书信息,并通过摘要算法把证书原文生成摘要,并利用自己的私钥对摘要进行加密得到数字签名。然后把签名放到数字证书里面,最后生成机构A的数字证书。数字证书的生成流程,类似数字签名,生成的证书就可以发送给机构A来使用了。
3.2、数字证书的使用
当机构A得到数字证书后,就可以把数字证书和原文一起放到请求数据里面,然后发送数据。
接收方接收到数据后,会进行以下几步操作:
1)验证CA的数字签名
首先,从数据中取出CA的数字签名,并用CA的公钥对其进行解密,得到摘要信息
然后,把请求原文数据按摘要算法生成摘要信息
最后,对比两个摘要的一致性,如果一致,则说明请求是可信任的,并从证书中拿出机构A的公钥
2)验证机构A的数字签名
首先,利用上一步里面得到的机构A的公钥对其进行解密,得到摘要信息
然后,把请求原文数据按摘要算法生成摘要信息
最后,对比两个摘要的一致性,如果一致,则说明请求是可信任的
3)读取原文信息并使用
3.3、数字证书的一个典型的应用场景-https协议
https协议就是数字证书的一个使用场景。是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。
其关键点在于浏览器向https网站发送加密请求并得到证书,然后通过验证后提取网站的公钥,接下来就可以与服务器交换加密信息了。
四、总结
在通讯过程中,保持数据的机密性和完整性是非常重要的。数据机密性可以靠可逆加密算法了完成,考虑到对效率和安全的平衡,一般建议使用对称加密和非对称加密进行混合使用。
在传说过程中,请求数据有可能给黑客进行拦截和篡改,破坏数据的完整性。常见的处理手段是使用数字签名和数字证书。
版权归原作者 光依旧 所有, 如有侵权,请联系我们删除。