首页 > 代码库 > 浅谈IM软件业务知识——非对称加密,银行U盾的原理
浅谈IM软件业务知识——非对称加密,银行U盾的原理
概述
首先了解一下相关概念:RSA算法:1977年由Ron Rivest、Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字。算法基于一个数论:将两个大素数相乘非常容易,但要对这个乘积的结果进行 因式分解却非常困难,因此可以把乘积公开作为公钥,该算法能够抵抗目前已知的所有密码攻击。RSA算法是一种非对称算法,算法需要一对密钥,使用其中一个 加密,需要使用另外一个才能解密。我们在进行RSA加密通讯时,就把公钥放在客户端,私钥留在服务器。
RSA非对称加密算法,可以验证客户端和服务器双方的合法性,安全级别非常高!
iOS平台RSA介绍
我们常见的证书可以看做是公钥,证书中包含了公钥和一些其他信息。IOS客户端的加解密,首先我们需要导入Security.framework,在iOS中,我们主要关注四个函数。
SecKeyEncrypt:使用公钥对数据进行加密。
SecKeyDecrypt:使用私钥对数据进行解密。
SecKeyRawVerify:使用公钥对数字签名和数据进行验证,以确认该数据的来源合法性。
SecKeyRawSign:使用私钥对数据进行摘要并生成数字签名。
从这几个函数中,我们可以看到,公钥能做的事情就有两个:加密数据,以及对服务器端发来的数据进行签名认证,但是如果你想跟我之前想的一 样,要使用公钥来对数据进行解密,那就没有自带API了。如果想在服务器端使用私钥加密数据,然后再在客户端使用公钥进行解密,以图这样来对交互数据进行加密,看来是行不通的。其实也应该是这样,公钥是公开的。同时,RSA因为都是做大数的运算,算法性能上比较差,如果做大数据量的加解密,对IOS来讲,肯定也是不合适的。
案例
银行U盾
U盾的工作过程:当网银响应用户操作,将所有的指令信息打包,并通过USB口送入U盾,U盾在其内部由MPU使用证书(私钥)进行签名,然后送出。再由IE通过SSL传送到服务器。服务器收到指令包后由用户留存在密钥分发服务器上的公钥进行签名认证,若认证无误则执行指令。
隐患一
隐患二
总结
破解RSA被认为是所有计算机科学中最难的课题之一。因此,如果你发明了一种能够快速地将一个极大的数字分解为质数的方法,就不仅仅能够入侵瑞士银行的账户系统,而且还可以获得图灵奖了!