iOS 加密算法总结
2019-03-27 本文已影响0人
Phant
Why Security is Important - 为什么安全如此重要
在深入研究代码之前,您应该了解为什么应用程序中的安全性是必要的。 如果您要存储私人用户数据(如电子邮件,密码或银行帐户信息),则应用程序的安全性尤其重要。
为什么Apple如此重视安全性? 从您拍摄的照片到当天所取得的步数,您的iPhone会存储大量个人数据。 保持这些数据安全非常重要。
谁是iOS生态系统中的攻击者,他们想要什么? 攻击者可能是犯罪分子,商业竞争者,甚至是朋友或亲戚。 并非所有攻击者的目的都一样。 有些人可能想要造成损害或损坏信息,而其他人则可能希望看到他们的生日礼物。
确保应用程序保存的数据免受潜在威胁的侵害是您的职责。 幸运的是,Apple已经构建了许多可以简化此任务的强大API。
常见的加密算法
iOS Base64编码
哈希(散列)函数(消息摘要算法):MD5、SHA、HMAC
对称加密算法:DES、3DES、AES、RC4
非对称加密算法:RSA
苹果钥匙链Keychain
信息安全和对应技术对应的关系
一般业务场景,云端的视频可以通过算法生成md5来判断资源文件是否一致。
编码方案:Base64,一般我们不想让别人直接看到的信息,可以用Base64简单处理,比如某些网站的单词查询,就是讲单词的base64字符串拼到最后。
- Base64是一种数据编码方式,目的是让数据符合传输协议的要求。标准Base64编码解码无需额外信息即完全可逆,即使你自己自定义字符集设计一种类Base64的编码方式用于数据加密,在多数场景下也较容易破解。
- 对于数据加密应该使用专门的目前还没有有效方式快速破解的加密算法。比如:对称加密算法AES-128-CBC,对称加密需要密钥,只要密钥没有泄露,通常难以破解;也可以使用非对称加密算法,如RSA,利用极大整数因数分解的计算量极大这一特点,使得使用公钥加密的数据,只有使用私钥才能快速解密。
- 对于数据校验,也应该使用专门的消息认证码生成算法,如HMAC - 一种使用单向散列函数构造消息认证码的方法,其过程是不可逆的、唯一确定的,并且使用密钥来生成认证码,其目的是防止数据在传输过程中被篡改或伪造。将原始数据与认证码一起传输,数据接收端将原始数据使用相同密钥和相同算法再次生成认证码,与原有认证码进行比对,校验数据的合法性。