也不是什么专业的数据安全,简单记录下;
也是看了一些关于安全的文章,简单总结的;写的不对了,尽管喷啊!谢谢了;
没有绝对的数据安全,
- 对于本地数据:不管存在哪里,对于越狱的设备,都是浮云;
- 对于网络请求:需要对请求参数加密,明文传输过于随意了,尽管使用了https;
- 对于网络返回数据:一般对请求有校验的话,不怎么需要返回数据加密;
本地数据处理
- 虽然苹果提供了钥匙串,对于不越狱设备是最安全的方式了吧,但是越狱设备,依旧浮云;
- 安全第一,依旧需要对本地敏感信息进行加密处理;
- 修改顺序,一般倒序,分组排序等;
- 特定位置插入特定内容,速成“加盐”
- 使用某种密钥加密方式加密;
- 对于处理类,方法等使用混淆,防止逆向时,过于暴露(说好的编码规范,反而不好了);
- 对于核心类的代码,使用纯C编写;
网络请求
- 注册:本地存RSA 公钥,对userName,password 进行加密上传(也可以MD5之后RSA加密上传,服务器存MD5);
- 登录:本地RSA 公钥,加密上传,成功之后,返回 AES key,用于其他接口的加解密(AES key,可以后台更改,防止篡改之后的修复);
- 其他接口:使用登录返回的 AES key 加密上传,并且上传 AES key,用于校验;
- 返回数据:可以不使用AES 加密,因为校验不通过,不返回数据;
注:RSA 的加解密比较AES,耗性能,所以考虑使用 AES,作为动态 key,加解密;
注2:java 的AES 与 iOS的 AES,略有不同,暂确解决方案;sorry;
其他
加密方法太多了。。。
DES
Base64
RSA 密钥生成
// 打开 openssl
openssl
// 生成 1024 的RSA 密钥
genrsa -out rsa_private_key.pem 1024
// 显示:pkcs8 形式的,私钥
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt
// 对应的 公钥
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
1