iOS上的加密思路

作者: 呵呵x3 | 来源:发表于2016-01-04 09:47 被阅读525次

问题

这两天一直在想公司app的安全问题,因为发现很多app登录的时候其实是裸奔的,带着账号和密码,等塞进post 请求参数里,直接飞向了服务器。这本都是敏感信息,不应该这样轻易暴露在外边。以前所在公司,也吃过这种亏。之前也一直看过加密的问题,但是也没有深入的理解,那天趁着细明哥在,问了问他,所以稍微记录下使用的流程。以后真的用到这个过程时候,掉坑了再回头填。

过程

1、客户端将 username 和 pwd 做md5 处理,然后再加上客户端的AES key,将这部分内容通过RSA加密,传给服务器。

2、服务器会通过一个私匙,解开登录传过来的数据,获得 username、pwd,和 客户端的AES key。

3、登录成功后,服务器也回生成服务器端的AES key,然后将登录成功的状态 和服务器端生成的AES key,通过客户端的AES key进行加密,回传给客户端,完成这次登录的请求。

4、客户端收到登录回调的数据,通过客户端自己的AES key 将数据解开,获得登录的状态和服务器端的AES key。获取了服务器端的AES key 之后,自己本地生成的AES key丢弃,并保存服务器端的AES key。

5、以后需要加密的信息就直接通过服务器端的 AES key 加密,传给服务器。

6、服务器可以动态控制AES key,这样伪造请求被发现后,也可以更换服务器的AES key。

流程图

RSA、AES加密处理流程RSA、AES加密处理流程

一些Tips

1、RSA只在登录的时候使用。为什么只在登录时候使用,因为RSA加密有一些限制,首先他的密文长度只有117个字节,如果你需要加密的内容过长,那么可定会超过117,这样就超出了限制,无法完成进一步的处理。其次,RAS加密是需要时间的啊,骚年!普通内容,每次使用RAS加密,效率肯定不高啊。

2、在解编码过程中,涉及到了base64,记住base64 超过一定长度会自动换行,拿到的base64 编码,记得去掉换行符,不然是解不出来的。

3、用服务器的AES key原因就是可以动态的改变,如果一直使用客户端的AES key,一旦泄露之后,如果要修改密匙就只能APP升级了。

总结

只是了解了一些基本过程,其中还有很多坑,等哪天真的使用上了,在来填坑吧。如果有错误的地方,欢迎拍砖。

参考

1、wiki上的 AES 、RSA

2、RSA算法原理(阮一峰

相关文章

  • iOS上的加密思路

    问题 这两天一直在想公司app的安全问题,因为发现很多app登录的时候其实是裸奔的,带着账号和密码,等塞进post...

  • iOS 加密算法 CommonCrypto框架①【待补充】

    iOS 加密算法 iOS CommonCrypto框架① iOS 加密算法 iOS CommonCrypto框架②...

  • iOS几种加密方式

    iOS 几种加密方法2017-06-19 [iOS开发] iOS常见的几种加密方法 普通加密方法是讲密码进行加密后...

  • iOS代码加密常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • iOS常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • iOS端加密

    转载: 史上最全iOS端数据加密类 iOS加密实用总结

  • 面试题总结

    1. iOS开发中的加密方式 iOS加密相关算法框架:CommonCrypto。 对称加密: DES、3DES、A...

  • AES加密 - iOS与Java的同步实现

    AES加密 - iOS与Java的同步实现 AES加密 - iOS与Java的同步实现

  • iOS-15 加密

    1iOS 常用加密方式讲解 - 简书 2iOS加密方式(RSA签名、加密、AES) - 简书

  • 加密思路

网友评论

    本文标题:iOS上的加密思路

    本文链接:https://www.haomeiwen.com/subject/ghxahttx.html