为何标题老是要带上“API安全”关键字呢?由于我想我乐意。segmentfault
实际上这一篇和上一篇都可以看做是《关于PHP加解密的懒汉入门篇(API安全增强篇一)》》")的后续,只不过侧重点在于安全上。安全
若是说,你没有看上篇,你必定回去看,否则必定会断篇儿!服务器
为了不文章陷入过于抽象复杂的理论讲解,因此此次还得借助元首和东线的将领们以及“反派角色”朱可夫同志。微信
上篇咱们知道元首和古德里安翻脸了,而后两我的经过非对称加密技术diss彼此,朱可夫没有私钥只能在路边儿打酱油。性能
根据事实,咱们知道古德里安又重返了东线战场。当初把人撸了下来,如今又得让人去东线救火,反正这脸我是拉不下来,但元首拉的下来。加密
回到上篇结果提到的问题,就是:对称加密的安全性要人命,非对称加密的性能很是要人命。用我党地话来讲就是“不能多快好省”,不符合“可持续发展”,不知足“社会主义主流价值观”。spa
这篇主要就是说“多快好省”的绿色方案。blog
让古德里安回东线确定得是秘密下令的,加密是确定。可是这个地方必定要值得注意:那就是元首必定得是用古德里安同志的给他公钥进行加密,而后再发送出去,此时这个密文虽然在东线用飞机撒的满地都是,可是只有古德里安同志本身能用藏在本身裤裆里的私钥进行解密后才能获得明文,也就是说这事儿也只有古德里安和元首两我的知道了。图片
除此以外,还有两种状况,可能爱思考的青年已经考虑到了:支付宝
综上,这种状况下,最正确的方式就是元首利用古德里安的公钥对密文进行加密,然而再撒的满天飞,这会儿只有古德里安能用本身的私钥进行解密。此时,不管是本身家的曼施坦因、冯*博克,仍是“反派”的朱可夫,都只能默默当路人甲。
在上述案例中(注意,客户端不要理解为狭义角度的手机客户端!)
咱们回归到现实中,也就是真正搬砖撸代码的现实中。这个时候,若是要对服务器和客户端传输的数据进行非对称加密,那么就得有以下条件:
那么问题来了,服务器只有少数一台,客户端成千上万。这会儿摆在搬砖侠们面前的只有两个选择:
那么,好了,下面让各位搬砖侠们吃口屎保持一下冷静,咱们看看支付宝是怎么作的。当你的系统接入支付宝的时候,支付宝会要求你生成一对你的公私钥,而后私钥你本身藏好了,公钥上传到支付宝(这个过程至关于支付宝有了你的公钥),而后再你上传完你的公钥后,支付宝会返回给你支付宝的公钥。其中当你使用RSA普通版本的时候,全部商户获得的支付宝公钥都是同一个,当你使用RSA2的时候,每一个商户收到的支付宝公钥都是不尽相同的。
因此说,怎么作都行,一切都看你选择。
提及支付宝,大家接入的时候都必定看到有个叫作签名验证的功能,我认为这个很重要,是必须值得一提的一件事情。回到元首这里来,咱们说元首给古德里安发消息“滚到东线,去库尔斯克棱角部”,正确的作法应该是用古德里安的公钥进行加密,此时该消息只能被古德里安的私钥解密,其余人都只能干瞪眼。若是元首抽风了,用本身的私钥加密了密文,这会儿会是什么状况咧?那就是持有元首公钥的人均可以看到“滚到东线,去库尔斯克棱角部”这条机密消息了,不少人都会发朋友圈或者私聊相似于“据说古德里安要回来了”。其实,用本身私钥解密,而后利用本身公钥解密是一个二逼的行为,可是,这个过程能够用来验签是没有任何问题的。什么是验签?
假若有一天,希姆莱想提早篡位,冒充元首给古德里安发号施令了。此时,古德里安只须要用元首的公钥验证一下命令的签名,一验返回了false,那就说明这坨命令不是来自于元首,这种数据就应该直接扔掉便可!
因此,上面叨逼叨叨逼叨这么久,为的就是得出一个结论,大家理(bei)解(song)一下:
而后咱们再往前追溯一下,咱们的为何要用非对称加密?是为了防止对称加密措施密钥的泄漏,而非对称加密不存在密钥泄漏的状况。
可是,非对称加解密的性能以及部署使用方式,非土豪所能及也!那么,有没有办法既能获得鱼,又能获得熊掌咧?