Android网络请求中的安全问题

以下是我在开发公司产品的时候遇到的问题,写下来备忘,有时间再整理格式;


加密和签名

 

我们的app和服务器有什么安全隐患?

1)窃听;如果你连接了不安全的免费wifi,然后登录我们的app

如果你的数据没有加密,你的密码是不是就可能被盗?

2)篡改;万一黑客截获了app给服务器发送的请求数据,然后

稍作修改,发送给服务器,实现修改服务器数据的目的;

3)重放;万一黑客截获了app给服务器发送的请求数据,(哪怕是

加密过的),然后冒充app向服务器发送重复的请求,服务器

会不会被堵死?

4)如果黑客反编译app,修改逻辑(比如放松一些前端的检查规则),

重新打包运行(运行在黑客自己的手机上,不需要重新签名),

由于没有动加密和签名机制,所以在server看来,请求完全来自

可信的app,咋办?

 

 

怎么解决?

针对问题1,我们的网络通信数据需要加密,这样黑客

就看不到真实数据了;

 

针对问题2,我们需要给数据加签名,如果黑客截获并

修改了数据,则服务器会发现解密后的数据和

原数据不匹配,知道这是一份被修改过的数据,拒绝处理;

 

针对问题3,据文献,https能防止重放攻击,但是我还没搞懂原理,TODO

 

针对问题4:所以说只在前端加限制是不够的,后端必须再做一次

检查,这样就没事了;

 

 

问题:我们现有的加密机制有什么问题?

答:我们现在用的是AES对称加密,黑客可以反编译代码,

看到算法和密钥,然后截获并破解密文;

 

问题:我们现有的签名机制有什么问题?

答:我们现在用的是MD5+密钥的算法,黑客可以反编译app获取算法

和密钥,然后冒充app发起请求;

 

问题:RSA密钥生成算法是怎样的?

答:

1)随机选取2个足够大的不同素数pq

(最好保证下文的n1024位二进制长度)

2)计算pq的乘积n;

3)计算n的欧拉函数r = (p-1)*(q-1);

4)随机取一个整数e,要求1 < e < r,且er互质;

5)计算e对于n的模反元素d

6)将(n,e)作为公钥,(n,d)作为私钥;(其实可以互换);

7)假设原数据是一个整数m,则加密结果为c=m^e%n;

8)解密过程是c^d%n,可以证明这个结果等于原数据m;

对于任意需要加密的字符串abc,我们可以将每个字母

分开,然后每个字母转成ASCII码

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值