测试那些事儿(十三)- 签名和验签、公钥和私钥、加密和解密
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试那些事儿(十三)- 签名和验签、公钥和私钥、加密和解密相关的知识,希望对你有一定的参考价值。
参考技术A在做接口测试时,大家一定都遇到过需要提供签名的场景。这时,我们就会被各种名词比如 签名和验签、公钥和私钥、加密和解密 冲击。所以,了解一下它们很有必要,可以帮助我们知道为什么要这么做,而不是简单的去当一个验证执行者。甚至,在你了解了它们之后,你也可以在接口的安全性测试上更进一步。
数字签名其实就是一个别人无法仿造,能够证明申请者真实性的一段字符串。 我们在真实生活中,最常用的签名应该就是手签我们的姓名了。
所以,在接口请求时,很多接口也不是你来一个请求我就给你返回你要的数据,而是要验证你的签名,进而证明你的身份后才能做出后续动作。在此过程中,接口调用者需要进行的工作就叫做 签名 ,而被调用者需要进行的工作就叫做 验签 。
公钥 :由接口被调用方提供,RSA 密钥体系中对外公开的部分,通常用于数据加密、验证数字签名。
私钥 :由接口被调用方提供,RSA 密钥体系中非公开的部分,需由接口调用方严密保存,通常用于数据解密、数据签名。
这个就很好理解了,传递数据时为了保证数据的安全性,不进行明文传递,而是通过某种算法对敏感数据进行 加密 ,传递后再由接收方使用对应算法进行 解密 来获取明文信息。
将上面的定义总结为图,会更加的清晰:
之所以用发送方的私钥加签,是因为,即便信息被黑客拦截,黑客修改了信息,但是加签需要用发送方的私钥,黑客没有发送方的私钥,所以也无法生成正确的签名,接收方验签就不用通过。
反之如果用接收方的公钥加签,如果信息被黑客拦截,黑客修改了信息,因为接收方的公钥是公开的,黑客就可以重新生成新的签名,替换原有的签名,发送出去,接收方接收到信息,拿自己的公钥校验是通过的,所以接收方无法辨别信息是真正的发送方还是黑客发送过来的,这样的加签不能辨别信息是否被篡改过。
之所以用接收方的公钥加密,是因为,如果信息被黑客拦截,需要用接收方的私钥来解密,黑客无法获取接收方的私钥,即便拦截了信息(情报),黑客也无法看到明文,只能看天书?了。
反之,如果用发送方的私钥加密,如果信息被黑客拦截,因为发送方的公钥是公开的,黑客就可以用发送方的公钥解密密文获得明文,这样的加密所有的人都可以看到明文,不能保证信息的隐私。
了解了以上这些知识,在测试过程中就可以更加深入的了解签名的目的,进而可以更深入的了解签名的实现等。签名的实现有很多种,这个要根据每个团队选择哪种具体分析,但作为测试,基本上我们都是可以按照约定的规则来生成的,这也帮助我们扩展了接口测试覆盖的广度(如接口用例覆盖度、过期时间等隐藏功能),是非常有意义的。
https://blog.csdn.net/liyanlei5858/article/details/84664308
以上是关于测试那些事儿(十三)- 签名和验签、公钥和私钥、加密和解密的主要内容,如果未能解决你的问题,请参考以下文章
用Java实现RSA加解密及签名和验签——.pfx文件格式秘钥