TCP发送数据, 什么时候需要对数据加密
最近在开发一款android app, 因为需求的需要, app使用tcp和服务器保持长连接, 然后用户在操作时通过tcp发送指令及数据(键值对)到服务器, 比如添加分组这一类的操作, 那么在对用户的操作有进行后台权限验证的情况下, 除了用户登录和注册时的账号密码以外, 我们是否有必要对发送的数据(即指令和数据)进行加密呢?一般什么样的数据需要加密呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
有必要加密的,WiFi网络链路完全不可信,不加密的话你的整个业务都暴露出去了,中间人劫持重放伪等造安全问题,很容易把你的系统搞坏。加密属于底层的东西,如果你现在不设计进去,以后发现不得不加密的时候再来加密就相当麻烦了。
我经历过这样的项目,做的专用Android PDA上的程序,甲方要求对TCP加密的并且长连接,最后用了SSL来完成的,客户端和服务器端用证书来通信就行了。
推荐你用SSL,好处是现成的,而且免费,问题不多,遇到问题了也容易搜找到解决方案。你不用去考虑怎么来加密,都是用的现成的东西,从SDK和key生成都直接用。前期测试开发的时候可以不加密,最后成型之后再把SSL加上去就行。
依我个人经历而言,你的最大问题其实不是加密,长连接的地方估计会花你更多精力,长连接如果能不用就去了吧。
加密是有必要的,特别是用户使用公开 WIFI 热点的情况下,通信内容很可能被第三方窃听。加密的方式,一般用 SSL 就可以(即服务器使用 HTTPS 来提供接口调用),当然你也可以用 Java 提供的其他加密方式。顺便说下长连接是手机 APP 大忌啊。
看你数据是否敏感,敏感则加密,使用AES(对称)加密性能高,使用RSA(非对称加密)加密系数高,性能差。
一般用户账户相关,积分相关(游戏)之类数据加密。
看你对数据传输安全性要求高不高了 有一些重要的数据、或者用户保密信息相关 则进行加密 还有就是服务器验证数据来源等 也要用到参数加密
不用加密,直接ssl连接就行了。根本不用自己造轮子的。
1) 如果你们的app是基于H5开发的,则有可能你们的页面经过运营商的时候,被运营商插入一些乱七八糟的广告,当然如果你们的app是基于SDK的,则没有这个问题。
2)数据如果没有加密,则只要经过路由器的时候,就有可能被人用抓包软件逆向看到你的用户名和密码。加密之后你的通信是基于SSL隧道的,所有的数据是端到端加密的,因此不存在这个问题。