移动客户端与服务器端安全通信方案

转自:http://blog.csdn.net/sasoritattoo/article/details/8851996


手机移动端与服务器端安全通信一直是个问题,让人比较头疼,最近在网上查了一些资料,总结了一下得出了一个自我感觉还好的方案,分享一下,也希望得到大家的批评斧正。

    CSC客户端,S服务器端

    在客户端软件发布前,客户端保存一个公钥,服务器保存一个私钥

    C1:客户端随机生成一个对称密钥K,使用公钥加密内容(K+账户+密码)。发送给服务器

    S2:服务器收到后使用私钥解密,并验证用户和密码是否正确,正确的话保存此K在用户的信息中(如果原先已经有了K就替换掉旧的),返回数据:包括客户端登录成功的信息,返回一个Token(令牌,以后见牌如见人)和一个uid(用户的id)。

    C3:使用本地保存的K解密得到Token和自己的uid

    安全传输准备工作做完了。

    C4:每次传输数据对于加密的内容一律使用K进行加密,并附以明文参数uid,然后把此内容发送给服务器。

    S5:根据uid找到保存的K,然后进行解密(K仅仅用来解密,对于解密的内容无法验证),查看Token是否匹配,如果匹配的话那么此次请求就是有效的,否则无效。



补充:

网络上的东西总是真真假假无法确定,但是因为客户端软件安装的时候公钥就已经在里面了,因此这个公钥信息是真的,这个规则怎样开始也是确定下来的;

因为公钥私钥是安全的,所以传输的K是安全的,所以使用K对称加密的内容也是安全的,即使黑客破解了少数几个K,对其他的K还是没有影响,而且K具有随机性和时效性,用户注销了或者太久没登录了这个K就会自动失效。


优点:

安全性,除非入侵服务器拿到私钥,或者破解久经考验的非对称加解密算法,没有其他办法大规模攻破,相比其他单纯使用对称加密和非对称加密方法效果都要好。


缺点:

用户第一次握手验证时使用非对称加密的内容,服务器非对称解密消耗资源比较多,如果攻击者发送大量此类信息,容易导致服务器DDoS攻击。个人觉得暂时无法从根本上避免这个问题的发生,只能够加上一些措施增加其难度,从而过滤掉一部分攻击者,具体措施有很多种,比如自己软件写个加密算法,服务器会根据解密算法进行计算从而验证是否有效,再比如android的话把这些算法写在jni层,增加反编译破解的难度,还有其他方法欢迎补充。


性能消耗:

除了第一次登录的时候非对称解密稍微慢一些,其他应该影响不大(尚未做实机测试效果,请勿轻信)


     对称加密主要有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法

    非对称加密有:RSA

    欢迎批评斧正!

参考信息:

http://segmentfault.com/q/1010000000156701

http://baike.baidu.com/view/356572.htm

http://baike.baidu.com/view/1982056.htm#2

http://www.dewen.org/q/2005

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值