打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
17.app后端如何保证通讯安全
分类: app后端 2015-03-10 18:09 2296人阅读 评论(5) 收藏 举报

目录(?)[+]

在上文《16.app后端如何保证通讯安全--url签名》提到,url签名有两个缺点,这两个缺点,如果使用对称加密方法的话,则完全可以避免这两个缺点。在本文中,会介绍对称加密的具体原理,和详细的方案,使app通讯更加安全。


1.对称加密的原理



  采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。


  其实很简单,假设有原始数据"1000", 把1000加5就得到密文"1005",得到密文"1005"后减5就得到原始数据"1000"。把原始数据加5就是加密算法,把密文减5就是解密算法,密钥就是5。


  本文所用的是AES这种通用的对称加密算法。


2. api请求中AES算法的应用



  (1)curl简介


  在下面的例子中,会使用curl工具,先简单介绍一下。


  curl是利用URL语法在命令行方式下工作的开源文件传输工具。


  用到的参数:


  -X: 指定什么命令,例如post,get等。


  -H: 指定http header。


  -d: 制定http body的内容


  (2)怎么保证token在初次返回时的安全


  用下面的api返回加密的token


  curl -X POST \


  -H "Token-Param:<时间戳>,<sdkversion>"\


  -d  ‘Base64Encode(AES(token, secretKey))’


  http://test.com/api/login


  secretKey就是密钥,使用http header中的Token-Param中的16位长度。


  服务端返回时加密token的方法是用AES加密,密钥是secretKey。


  客户端解密token的方法是用AES解密,密钥是secretKey。


  (3) api请求中的加密


  假设更新用户数据的api调用如下


  curl -X POST \


  -H "Token-Param:<时间戳>,<sdkversion>"\


  -H  ‘Token:Base64Encode(AES(token, secretKey))’


  -d  ‘Base64Encode(AES(date, token))’


  http://test.com/api/user/update


  secretKey使用http header中的Token-Param中的16位长度。


  在上面的例子中,data是实际要post的数据。


  在这个过程中,token和post的数据都得到了加密保护。


  客户端发送时加密的过程


  (1)取http header中的Token-Param中的16位长度作为密钥,用AES加密token。


  (2)用token作为密钥,用AES加密data。


  服务端接收到这个api请求的解密过程:


  (1)取http header中的Token-Param中的16位长度作为密钥,用AES解密, 得到token。


  (2)用token作为密钥,用AES解密http body的内容,得到原文。


3.对称加密方法的总结



  把token返回的时候,可以做个约定,在返回的时候截取某个字符串的一部分作为密钥,这个秘钥只用一次,就是用来解密token的,以后就只是用token来做秘钥了。


---------------------------------------------------------------------------------------------------------------------------

打开链接  app后端系列文章总目录 总目录 ,能查看本人发表过的所有原创“app后端”文章。

【作者】曾健生
【QQ】190678908
【app后端qq群】254659220 
【微信公众号】 appbackend
【新浪微博】 @newjueqi
【博客】http://blog.csdn.net/newjueqi 


主题推荐
安全 通讯 新浪微博 文件传输 数据
猜你在找
查看评论
2楼 Lijun0726 2015-05-07 09:57发表 [回复]
Token-Param这个头部是明文传输的,敌手可以截获明文的secretKey。AES密钥协商应该用公钥加密。
Re: newjueqi 2015-05-07 10:10发表 [回复]
回复Lijun0726:就算截获了明文的Token-Param,不知道加密算法的情况下,也没法生成secretKey
Re: Lijun0726 2015-05-07 13:45发表 [回复]
回复newjueqi:客户端任何人都可以拿到,会被反汇编
Re: newjueqi 2015-05-07 14:13发表 [回复]
回复Lijun0726:可以用防止反编译的工具,例如http://www.bangcle.com/。
1楼 zhangzhijie_2005 2015-05-06 14:56发表 [回复]
没看懂。。。
感觉这篇文章没有15、16写的好了
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Hessian加密传输
如何保证APP与API通信安全,TOKEN冒用带来的风险很大?
JAVA实现AES加密算法代码
对称加密+非对称加密,实现数据安全传输
在线AES加密源码
网络安全-对称加密
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服