【iOS开发】iOS中的安全和ATS

这是唐巧(博客)圣诞节在趣直播上分享的笔记。

(一)、前面提问

1、H5是否会替代原生应用开发。
主要观点:短时期难以替代,类比PC端的发展,到现在PC端还有大量功能还是用原生的来写的,这样才可以最大化的利用硬件的性能,做到更好的体验。

(二)、iOS安全的三个层面

一、平台安全
1、芯片级的安全逻辑
主要是讲每部苹果手机的在芯片里面都有一个不可修改的publicKey,每次运行都会通过这个publickKey经过层层验证,这也是只有苹果手机才能用iOS系统的原因。
<2> 第次软件升级都会独立认证???这个没有听明白

2、数据层面
<1> 苹果的数据加密是通过 密码+硬件信息 作为加密密钥。所以,苹果手机的破解只能在本机上进行。另一个就是超过10次失败就会完全锁死。
<2> 两种破解方法
(1) 用一个设备连接到手机的电池模块,每次尝试密码失败时,就把电断开。就是在设备要写入尝试次数前把电断开,避免受到失败10次限制。
ps:这个方法防止也很简单,在尝试打开手机前就把尝试次数写入。现在估计已经不行了
(2) 另一种方法,是每次尝试前把手机保存一份镜像,如果失败就还用原来的镜像换个密码继续尝试。
3、sandbox
4、code signing
5、touch ID
指纹信息的传输和认证都是通过硬件来完成,不经过系统,所以不会被别人盗取。
二、软件升级安全
三、开发者安全
1、应用可以使用touch ID 支付宝
2、ATS 网络安全 TLS1.2 以上安全协议 (这个地方不是很清楚,有待研究)
ps:SSL/TLS 加密协议
https早期使用的协议是SSL,现在使用的是TLS。指的是https采用的数据加密协议,里面包含了各种允许数据加密算法。
Secure Sockets Layer
Transport Layer Security
3、ATS在各个版本的情况。喵神的博客里面有介绍:ATS问题

(三)、证书问题

一、证书透明性
没听明白

(四)、ATS解决问题的方法和工具

一、打印请求的详细信息
把 CFNETWORK_DIAGNOSTICS 1 加到环境变量里面
在请求时,console里面会打印出来这个log文件的位置,还有log的内容。


【iOS开发】iOS中的安全和ATS_第1张图片
添加环境变量.jpg

二、nscurl
这个是mac自带的工具
nscurl --ats-diagnostics --verbose https://www.eoojia.com

【iOS开发】iOS中的安全和ATS_第2张图片
nscurl 测试结果

这个命令会用各种配置来对一个服务器进行请求,如使用ATS,不使用ATS,使用TLS1.1,TLS1.2,看其是否能通过,帮助判断问题是服务器的问题还是前端开发的问题。

三、TSLTool
同样是定位请求问题的一个工具,这个工具是需要自己编译的,但是不能使用XCode8。
有点类似telnet 命令
./TLSTool s_client -connect www.baidu.com:443 连接到服务器
GET https://www.baidu.com HTTP/1.1
(这里不是很确定,因为没工具,没自己试过)

(五)、问答

1、https用charls调试
2、如何快速提升
<1> 时间、精力的投入
<2> WWDC 视频
<3> objec IO
<4> 系统学习,碎片化学习效率低(这个深有体会。。)
<5> swift advanced 喵神
<6> iOS pushing limited
3、代码是否需要混淆(类似安卓加壳)
开源库:iOS-guard 可能不会通过审核
4、请求是否需要双向验证
即服务器和客户端收到数据时都要验证证书
一般不需要。

你可能感兴趣的:(【iOS开发】iOS中的安全和ATS)