iOS-App安全相关

网络开发准则

  • 1.在网络开发中不允许传输用户明文隐私数据
  • 2.在本地不允许保存用户的明文隐私数据

1.HTTPS认证

单向认证

  • 非证书模式
//适配HTTPS-非证书模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
[securityPolicy setValidatesDomainName:NO];
securityPolicy.allowInvalidCertificates = YES; //还是必须设成YES
manager.securityPolicy = securityPolicy;
  • 证书模式
    材料:买来的服务器证书server.cer(客户端要用来验证服务端
  • Client向Server请求证书
  • 和自己的证书对比,不一致或者无效就断开连接
  • 通过后用户随机产生一个秘钥通过Server的公钥加密传给服务端
  • Server用自己的私钥解密,拿到对称秘钥key
  • Server和Client指定这个秘钥为加密秘钥,通讯数据由秘钥加密

双向认证

双向认证比单向认证多了一步,就是服务器要认证客户端
材料:

  • 买来的服务器证书server.cer(客户端要放一个,用来验证服务端)
  • CA的根证书(放到服务器中,用来验证客户端的证书)
  • p12证书(用来放到客户端,网络请求的时候会传给服务端)。
  • 用户在产生随机密钥的时候
  • 要用p12文件来对一段数据进行签名,然后把签名和p12证书,加密的对称密钥传给服务器,然后服务器接到以后,会用CA根证书(或自签的根证书)来对证书和签名数据进行验证,如果正确,通讯继续,否则,断开连接。

客户端适配

  • 添加证书模式:AFSSLPinningModeCertificate mode
客户端认证服务端
NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"证书名称" ofType:@"cer"];
NSData * cerData = [NSData dataWithContentsOfFile:cerPath];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:[[NSSet alloc] initWithObjects:cerData, nil]];
manager.securityPolicy.allowInvalidCertificates = YES;
[manager.securityPolicy setValidatesDomainName:YES];
  • info.plist配置白名单
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>cer文件中查看</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

2.防止别人获取App敏感信息的常用方式?(10分)

1.URL编码加密
对iOS app中出现的URL进行编码加密,防止URL被静态分析
2.本地数据加密
对NSUserDefaults,sqlite存储文件数据加密,保护iOS app的帐号和关键信息。
3.网络传输数据加密
对iOS app客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取
4.方法体,方法名高级混淆
对iOS app的方法名和方法体进行混淆,保证源码被逆向后无法解析代码
5.程序结构混排加密
对iOS app逻辑结构进行打乱混排,保证源码可读性降到最低
6.使用keychain来存储用户信息,也就是钥匙串,使用keychain需要导入Security框架
7.阻止动态调试

3.加密算法

  • 哈希(散列)函数
  • MD5(密码密文、搜索、版权、文件完整性校验)
  • SHA1(弱哈希算法使用漏洞)
  • SHA256/512 (安全)
  • Base64(一般用于图片、视频上传处理)
  • 对称加密算法(DES、AES)加密/解密使用相同的秘钥
  • 非对称加密算法(RSA)公钥加密,私钥解密
  • SSKeyChain(支持对存储在钥匙串中密码、账户进行访问,包括读取、删除和设置)

①对称加密-非对称加密

对称加密:解密加密都用同一个密钥来进行

  • 优点
    算法公开,计算量小,加密速度快,加密效率高
    双方使用相同的钥匙,安全性得不到保证
  • 缺点
    如果用户一旦多的话,管理密钥也是一种困难。不方便直接沟通的两个用户之间怎么确定密钥也需要考虑,这其中就会有密钥泄露的风险,以及存在更换密钥的需求。
    对称加密通常有 DES,IDEA,3DES 加密算法。

②非对称加密

==算法强度复杂,安全性依赖于算法与密钥==。 加密解密速度慢。
用公钥和私钥来加解密:。即A 的公钥加密过的东西只能通过 A 的私钥来解密;同理,A 的私钥加密过的东西只能通过 A 的公钥来解密。顾名思义,公钥是公开的,别人可以获取的到;私钥是私有的,只能自己拥有

  • 缺点
    加解密比对称加密耗时.
  • 优点
    比对称加密安全.

应用场景

非对称和对称加密各有优缺点,一般把两者结合
在实际应用中,通常采取 数据本身的加密和解密使用对称加密算法(AES)
用RSA算法加密并传输对称算法所需的密钥

③Base64加密原理

使用64个字符来对任意数据进行编码,同理有Base32、Base16编码

64字符为:大写A-Z,小写a-z,数字0-9,+和/
本质上是一种将二进制数据转成文本数据的方案
对于非二进制数据,是先将其转换成二进制形式,然后每连续6比特(2的6次方=64)计算其十进制值,根据该值在上面的索引表中找到对应的字符,最终得到一个文本字符串.

使用场景

  • 邮件
  • 如果纯文本数据包含不可见字符,就需要使用base64
  • 简单加密(所以看到字符串中包含大小写和等号,很可能就是base64编码)
  • URL编码

为什么

  • base64编码具有不可读性,即所编码的数据不会被人直接看出
  • 编码后比原字符多出1/3的空间
  • 我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大大降低
  • ASCII-美国信息交换标准代码
    使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容