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

标签: 移动 客户端 服务器端 | 发表时间:2013-04-25 22:27 | 作者:Sasoritattoo
出处:http://blog.csdn.net

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

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


性能消耗:

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


     对称加密主要有: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


作者:Sasoritattoo 发表于2013-4-25 22:27:59 原文链接
阅读:90 评论:0 查看评论

相关 [移动 客户端 服务器端] 推荐:

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

- - CSDN博客移动开发推荐文章
    手机移动端与服务器端安全通信一直是个问题,让人比较头疼,最近在网上查了一些资料,总结了一下得出了一个自我感觉还好的方案,分享一下,也希望得到大家的批评斧正.     CS,C客户端,S服务器端.     在客户端软件发布前,客户端保存一个公钥,服务器保存一个私钥.     C1:客户端随机生成一个对称密钥K,使用公钥加密内容(K+账户+密码).

JavaWeb实现服务器端到客户端的验证码(MD5)校验

- - ITeye博客
首先看看服务端产生验证码的代码. (很简单 A-Z, 然后是0-9). /** * 产生验证码类(MD5)加密 * @author Thunder * */ public class VerificationCode {. * @param codeLength 指定验证码的长度. * @return 随机生成的验证码.

java nio SocketChannel 服务器端与多客户端 信息交互(聊天功能)

- - BlogJava_首页
    //解码buffer  .     /*接受数据缓冲区*/  .     /*发送数据缓冲区*/  .     /*映射客户端channel */  .          *启动服务器端,配置为非阻塞,绑定端口,注册accept事件 .          *ACCEPT事件:当服务端收到客户端连接请求时,触发该事件 .

使用Pushlet将消息从服务器端推送到客户端

- - 企业架构 - ITeye博客
使用Pushlet来实现服务器端向客户端推送信息. 1.         通过配置文件来实现定时的从服务器端向客户端推送信息. 2.         通过API主动向另外一端推送信息. 在开始测试之前,有三点非常重要,需要实现讲明,否则程序将会无法正常运行:. 2.1.     JSP页面上的设定.

推送通知iOS客户端编写实现及推送服务器端编写

- - CSDN博客移动开发推荐文章
推送通知技术在Mac OS X和iOS系统上都可以运行,我们本章主要介绍iOS客户端编程,推送通知的编程比较简单,编程的关键是获得令牌,这是从APNS返回的,然后还有把提交给内容提供商. 下面我们看看开发之前的一些准备工作. 编写iOS推送应用需要在Xcode工程中进行一些配置,这些配置是主要是设置代码签名标识,代码签名标识的前提要有配置概要文件(Provisioning Profiles).

移动客户端UI设计指南

- - 博客 - 伯乐在线
最近整理电脑,发现有篇11年编写的内部培训的交互指南,整理了一下,去除涉及公司机密的部分,分享给同行. 因为是AI格式的,嘻嘻当时为了臭美,就用AI编写排版的,所以只能给大家分享PNG图片了. 综合了爱疯、安卓、疯7的交互原则,适用于移动设备,比如其中的按钮尺寸、视觉大小、触控大小,唯一遗憾的是,没把字体的设计原则列进去.

【365UCD】移动客户端产品——杂谈

- - 一个产品经理的博客...
365UCD的移动客户端项目部最近成立了,来分享一篇PD的感悟:. 2011年,是互联网产品大爆发的一年. 各种类型的互联网产品,营运而生. 各行各业都在赶,只要别人有的产品自己有条件的也要有,面对这样的一个环 境,产品变得华而不实,这类产品到底有怎么样的市场价值,是不是适合公司发展及产品的功能及定位有什么前景等等问题,变成了空白.

HTTP中的ETag在移动客户端的应用

- - SegmentFault 最新的文章
绝大多数移动客户端在设计网络模块时,都会选用HTTP作为客户端和服务端通信的网络协议. 随着业务的不断发展以及用户量的持续增长,整个客户端的稳定性和性能会逐渐成为关注的焦点,其中网络的性能优化更是重中之重,本文介绍的 ETag 缓存技术,可以在缓存数据的同时做到数据的实时更新,适用于对数据实效性要求较高的业务.

门户比拼移动新闻客户端 搜狐定位PC阅读差异化

- - TechWeb 今日焦点 RSS阅读
  【TechWeb报道】2月6日消息,面对移动互联网如火如荼的发展态势,门户网站正在加速布局移动新闻客户端.   春节期间,搜狐悄然发布了多个移动平台的新版新闻客户端,搜狐新闻客户端登上App Store新闻类客户端榜首,在App Store竞争激烈的背景下,这次排位窜升引起业界关注.   数据显示,搜狐这次同时推出的几个平台新版客户端均获得较大好评度,其中,安卓平台客户端获得开奇商店、安卓市场、机锋网等超过三十个安卓应用商店联手推荐,而iPhone平台还荣登App Store新闻类排名第一,总装机量超过1300万,日活跃用户突破240万.

横竖都要给力——浅谈移动客户端的横竖屏切换设计

- - 百度MUX
随着技术与用户体验的发展,移动客户端产品中越来越多的需要横竖屏切换的设计. 横竖屏旋转切换的设计在理想的情况下保持不变就能满足用户的需求. 但也有很多时候,横竖屏切换时用户操作行为和屏幕比例的改变决定了客户端产品在设计时必须做出适当的针对性变化,于是对于交互设计而言,变不变、怎么变就成了一个普遍存在的问题.