现在转账大多数人都是在app上转账。
你在X银行App上转账,超过5W需要数字证书,安装数字证书之前需要验证你的身份,所以利用到人脸识别技术,如果通过,就证明了你就是你。
然后客户端就会生成一对公私钥,而人脸识别的时候服务器会下发一个字符串,人脸认证通过后,客户端会用私钥去把这个字符串签名,然后把{你签名后的字符串,你的公钥}
发送给服务器。
私钥保存在客户端的内存,如果卸载App,下次转账超过5W要重新安装数字证书。既然保存在应用的内存中,那么只要不root的手机就没有权限获取这个应用内存里面的内容,如果是root的手机,能访问你应用内存的内容,你的私钥会被泄露,所以直接就会安装数字证书的时候被禁止。
服务器用你的公钥去验证这个签名的字符串x和最初下发给你的字符串对比,如果一致,则保存你的公钥,说明这个确实是你的公钥没被篡改。当服务器返回确认信息后,认可了你的公钥,你的数字证书{你签名后的字符串,你的公钥}
就安装成功。
如果银行app卸载后重新安装,转账超过5W需要重新安装数字证书,你会重新生成一对公私钥,然后重复上面的操作。
(这就是数字证书的知识)
当你想转账,发起转账请求,服务器就会生成随机对称密钥,然后将这个密钥用你的公钥加密后传送给你。
你拿到加密后的数据用自己的私钥解密,就拿到了对称密钥。
然后用对称密钥加密你的转账信息,然后用私钥进行签名,发送给服务端。
服务端用你的公钥去验证,验证通过,后台进行转账相关操作。 (这就是数字签名、对称密钥配送的知识)