首页
社区
课程
招聘
[原创]移动客户端与服务器端安全通信方案探讨
发表于: 2013-4-27 23:14 2138

[原创]移动客户端与服务器端安全通信方案探讨

2013-4-27 23:14
2138
最近项目中需要解决移动客户端与服务器安全通信的问题,但是不想用第三方安全证书,因为感觉太麻烦,而且需要交钱,而传统的加密又太弱了,所以研究了一下,得出了一个自己的方案,不知道怎么样?安全通信领域咱们看雪论坛久负盛名,大名鼎鼎,高手如云,小弟初入此行,才疏学浅,希望能跟懂行的人多多交流,帮忙斧正一下,小弟不胜感激。如有不妥尽管批评,就事论事追求真理,只是不要牵涉人身攻击就好,感情亲疏也不要影响对事物的认知。小弟主要是做项目开发工作,对于安全方面以前并没有相关经验,因此希望各路大牛们多从项目角度考虑一下,不只是技术,这个方案到底行不行?有什么问题?有没有可以改进的地方?另外不知道业界对于安全传输方面都是什么个水平?据我了解貌似有些公司安全方面意识很弱,相当不专业。
小弟在此先谢过了。以下是作者的思考:

    CS,C客户端,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层,增加反编译破解的难度,还有其他方法欢迎补充。

性能消耗:

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

    欢迎各路英雄批评斧正!

参考信息:

http://segmentfault.com/q/1010000000156701
http://www.dewen.org/q/2005

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
希望各路大牛不吝赐教~~
2013-4-27 23:15
0
雪    币: 1585
活跃值: (182)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
手机终端与Pc端还是不同的,Lz是什么应用啊
2013-4-27 23:43
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哦,前期的定位是首先成为工具类的应用,目前比较类似的是某些打车应用,分有普通版,司机版,有上传数据,登录功能
2013-4-28 09:26
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
图片显示不出来了,使用的图片的连载在oschina,因为在那里先发的帖子,但是还是感觉没有看雪更专业,遂在这里发了一帖。
这是原帖的链接地址http://www.oschina.net/question/1040876_108169,想看图的话可以点击看
2013-4-28 09:39
0
雪    币: 54
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
存在的问题是:缺乏防御伪造请求、重放攻击的措施,应该在传输数据时增加token、时间戳、有效期等标志。

可以参见淘宝开放平台的相关文档:http://open.taobao.com/doc/detail.htm?spm=0.0.0.0.ZQUzHv&id=111#s6
2013-4-28 10:10
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
多谢,一指点很多问题就暴露出来了,呵呵。
请问这种方案性能怎么样?因为项目刚开始做,我们的服务器目前硬件配置很一般
2013-4-28 12:18
0
雪    币: 1585
活跃值: (182)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
呵呵,这么说你就需要考虑很多安全方面了(对于普通的应用,建议数据安全、通信安全考虑下,其他的安全自己取舍,特别是会影响性能的),硬件配置当然高配好了~~
2013-4-28 14:07
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
嗯,我是怕如果项目后期发展前景好的话,对安全要求提高了,这时再改动方案会比较麻烦,我认为安全的东西最好要融入架构,起码有个安全的框架也好
2013-4-28 15:02
0
雪    币: 54
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
我不是开发,无法告诉你对性能的影响。只是提出我认为存在的安全问题。

不好意思
2013-4-28 15:55
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
多谢。   
呵呵
2013-4-28 18:04
0
游客
登录 | 注册 方可回帖
返回
//