ios系统是不是安全?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios系统是不是安全?相关的知识,希望对你有一定的参考价值。

微软称ios并不安全,和安卓一样容易中毒,这个大家怎么看?

黑客们对于智能手机安全性的理解远比普通手机用户要深刻的多。赛门铁克报告曾深入分析了安卓和iOS系统中存在的固有问题,并重点强调:

  “如今手机设备的操作系统大环境是杂乱的无安全性的,大部分手机在连接企业网络时并没有受到企业网络的安全控制,很多手机与缺乏监管的第三方云服务进行数据同步,有些人则将手机与安全性未知的公用电脑相连,然后又与企业网络相连。”

  不要看到企业这两个字就觉得跟自己没有关系,实际上手机安全问题是每个手机用户都在面对的问题。

  支柱

  首先引用Nachenberg 在报告中的一段话:

  “开发团队在这两款手机操作系统的最新版本设计时已经考虑到了安全问题,并试图将安全性融入操作系统,从而减少来自外部的安全攻击。”

  接下来 Nachenberg测试了安卓和iOS在以下几方面的安全防范情况:

  · 传统访问控制: 传统的访问控制技术包括密码以及屏幕保护锁。

  · 基于许可的访问控制: 基于许可的访问控制是为每个程序添加访问控制能力。

  · 程序起源: 每一个程序都会拥有一个邮戳,表示该程序的作者,通过数字签名方式来防止程序被非法修改。

  · 加密: 对便携设备上的数据进行加密隐藏。

  · 隔离: 隔离技术用于限制应用程序访问特定敏感数据或系统的能力。

  操作系统的表现

  TechRepublic 专栏作家 Francis首先会对安卓和iOS操作系统针对每个支柱的表现给出评论,然后作者根据Nachenberg的报告进行总结。

  支柱一:传统访问控制

  Francis: 在传统访问控制方面,根据我的经验,iPhone或安卓系统都有很好的表现。

  不过,如果触摸屏上的指纹印记太清晰,可能会有助于黑客破解手机密码。在我看来,大部分手机程序开发人员没有为程序添加通过操作系统加锁解锁屏幕实现程序锁定的功能。

  在安卓系统上,我使用过一款由Carrot App 开发的软件 App Protector Pro 。这个软件可以让我为每个程序添加额外的密码保护,如Gmail, Exchange, 以及Facebook。有了这个程序,如果我的手机丢失,并且对方破解了锁屏密码,那么我还能有额外的一些时间来修改这些程序所涉及的账号密码。

  根据我的记忆,好像在iPhone里没有类似的安全软件。我怀疑这是因为iOS有更具有约束力的沙箱模型。

  Kassner: Nachenberg认为iOS提供的访问控制功能可以在手机丢失后起到一定的安全防范作用。在这方面Nachenberg认为iOS与Windows桌面系统的安全性类似。

  报告中Nachenberg 对于安卓系统就没那么客气了。他认为虽然安卓系统也能干防止偶尔发生的攻击,但是安卓系统不支持对SD卡中的数据进行加密存放,因此如果手机被盗,通过物理方式直接读取SD卡中的数据,就使得安卓的密码防范功能毫无用处了。

  支柱二:基于许可的访问控制

  Francis: 根据我的经验,iOS上的许可机制很少,比安卓系统上的许可机制少很多。而唯一一个肯定存在的许可机制是当用户访问其它受保护的子系统时,iOS会提示用户需要相应的资源,并要求用户同意。

  相反,在安卓系统上这样的许可机制很多。我认为理论上这样做很成功,但是在现实世界中这样的许可系统起不到什么作用,因为这种许可理论上需要依赖于用户对于科技的了解。

  目前5个黑客里有4个都在使用安卓系统的手机,安卓手机也逐渐成为了主流智能手机,但是一般用户并不清楚针对某个程序,到底是应该允许其运行,还是不允许。

  实际上我觉得用户也不该承担这种判断责任。就好像我去牙科诊所补牙,我可不希望医生在进行必要的操作时,还征求我的意见该使用哪个仪器。毕竟我是付费享受服务的,我依赖于诊室的资源和牙医的经验技术。

  Kassner: 我曾经听过很多人说iOS平台中的许可系统问题。Nachenberg在报告中阐述了这个问题:

  “iOS系统中有四类系统资源是必须经过用户许可确认后,程序才可以访问这些资源的。而其它系统资源,要么是明确的允许用户使用软件访问,要么就是明确的禁止用户访问,这是iOS内置的隔离策略。而出现以下情况时,程序可能会向用户提出确认请求:

  · 手机的全球定位系统需要方位本地数据时

  · 接收到来自互联网的通知警告信息

  · 向外拨打电话时

  · 向外发送短信或电子邮件信息时

  如果有任何程序试图使用以上四类功能,那么用户首先会看到一个许可提示,当用户许可后,该程序才可以实施该功能。如果用户允许了GPS系统或通知警告系统的功能,程序会被永久允许使用该系统。而对于向外拨打电话或发送短信和电邮的功能,则需要用户每次点击确认。”

  而安卓平台使用的是完全不同的方案。它是基于“全部或没有”的概念,我引用Nachenberg在报告中的一段话来解释这个概念:

  “每个安卓程序内部都集成了一个许可列表,记载了能够让该程序正常工作所需的系统功能。这个列表会采用普通手机用户能够看的懂的方式,在软件安装过程中提示用户,而用户会根据这个软件的安全风险来决定是否要继续安装该软件。

  如果用户仍然选择安装软件,那么程序将获得访问相应系统资源的权限。而如果用户放弃安装软件,程序就完全被禁止运行了。安卓系统上没有所谓的中间地带。”

  支柱三:程序起源

  Francis: 在安卓和iSO系统中,身份起源和判断真实性的机制是明显不同的。人们对这两种机制的优劣一直都没有结论,但目前来看,针对安卓系统的恶意软件要多于iSO。

  我不认为Google的安卓系统在安全性上是失败的,但是一系列薄弱的安全点,使得安卓系统在面对安全威胁时显得更脆弱。对于黑客来说,在安卓系统上开发和散步恶意软件没有太大的阻碍,尤其是将软件归为免费或共享时,传播速度更快。

  Google对于之前提交的应用程序没有审查机制。不需要开发者证明自己就是拥有该程序开发和修改权限的人。也没有集中化的开发者授权。目前有多种渠道都可以发布和传播安卓系统上的软件,而且渠道数量还在不断增加。而整个过程中存在的最大漏洞就是,黑客可以毫不费力的获取软件店里的软件,通过逆向工程还原成源代码,经过修改加入恶意代码并打包后,再将其以正常软件的名义发布出来。

  虽然iPhone的应用软件也可以通过这一系列工作进行篡改,但是iPhone的编程语言并不公开,这种非公开的编程语言比Google平台的Java语言反汇编要难的多。

  Kassner: 在这方面, Nachenberg的观点和 Francis 是一致的。iOS在这部分做的比安卓系统强。

  支柱四:加密

  Francis: 我曾经参与过一个跨平台的手机软件项目,该项目有明确的隐私保护要求,并且在最后还会有一个独立的第三方工程师团队对源代码进行审核。

  在这个项目初期我就发现,iSO的用户设置数据默认状况下会被加密存储在某个位置,而安卓系统则是将用户设置数据直接放在相应的程序所在位置。

  这并不表示安卓系统上的敏感数据都没有被加密,或者安卓系统使用的加密技术不如iphone。这只是说明安卓系统会把更多的加密工作留给应用程序自己,而不是通过操作系统来实现。这么做有好处也有不足。

  如果你是安卓平台上的软件开发者,那么你的软件数据安全性可能不如iSO上的软件。但是如果你自己为自己的软件设定了特殊的加密方式,那么你的软件数据安全性可能会高于iSO系统,因为黑客不得不破解程序的加密算法。

  但是作为手机用户,你并不知道所下载的软件是否带有加密机制。而如果软件没有加密机制,那么由于大多数用户的应用程序都安装在SD卡上,而SD卡又是很容易被取出(比如插入电脑传输数据),因而其安全性无法得到保证。

  Kassner: 在加密方面Francis 的观点与Nachenberg一致。不过我还是要说一下我对这两个平台的看法。

  首先,iOS使用了加密机制,但是这是有局限的。很多程序在后台运行(就算用户没有登录)需要访问存储数据。为了正常运行, iOS需要在本地复制一份非加密的密钥。这意味着对于越狱的手机,黑客不需要用户密码就可以访问存储数据。

  正如Francis所说,所有版本的安卓,除了3.0版以外,都不支持加密数据。这意味着通过越狱技术或者任何取得管理级访问权限的用户都可以浏览手机中的任何数据。

  支柱五:隔离

  Francis: 我个人认为,不论是苹果还是Google的隔离沙箱模型都是安全可靠的。二者相比,安卓系统的隔离机制稍微有些复杂,但也更具有灵活性。与iOS系统相比,安卓能够真正应对多任务工作模式。

  作为手机程序开发人员,我能看到这种机制带来的优势。这使得我们在程序开发过程中就要考虑到安全问题,并且一直贯穿整个开发过程,而桌面系统软件的开发,可以在最后环节再考虑安全性问题。

  Kassner: Nachenberg和Francis 的观点又是一致的。隔离机制可以让不同的程序分开工作,不会由于某个程序被黑客利用而影响到其它正在运行的程序。

  两者的弱点

  对于 iOS和安卓平台的安全性能,我有深刻的印象。但是不得不说二者都还存在“弱点”。不论你是否相信,反正我是信了。

  Nachenberg 曾跟我提到, iOS 目前只发现了几个严重的漏洞,其中大部分都是与越狱技术有关。不过还没听说恶意软件入侵事件。

  安卓系统同样只有很少几个严重的漏洞。但是Nachenberg表示其中一个漏洞可以让第三方程序获得手机的控制权。而且这个漏洞已经被很多黑客知晓了,其中一个恶意软件名为android.Rootcager。

  Android.Rootcager是一个让Google难堪的恶意软件。Nachenberg解释说:

  “更有趣也更具争议的是,Google针对该恶意软件推出的修复工具也是利用相同的系统漏洞来绕过安卓的隔离系统,删除对设备造成威胁的恶意软件部分。”

  总结

  可以这样总结:两个重量级选手,两种不同的安全防护哲学,本文的任务就是阐述这两种安全防护机制的差异。

参考技术A

黑客们对于智能手机安全性的理解远比普通手机用户要深刻的多。赛门铁克报告曾深入分析了安卓和iOS系统中存在的固有问题,并重点强调:

  “如今手机设备的操作系统大环境是杂乱的无安全性的,大部分手机在连接企业网络时并没有受到企业网络的安全控制,很多手机与缺乏监管的第三方云服务进行数据同步,有些人则将手机与安全性未知的公用电脑相连,然后又与企业网络相连。”

  不要看到企业这两个字就觉得跟自己没有关系,实际上手机安全问题是每个手机用户都在面对的问题。

  支柱

  首先引用Nachenberg 在报告中的一段话:

  “开发团队在这两款手机操作系统的最新版本设计时已经考虑到了安全问题,并试图将安全性融入操作系统,从而减少来自外部的安全攻击。”

  接下来 Nachenberg测试了安卓和iOS在以下几方面的安全防范情况:

  · 传统访问控制: 传统的访问控制技术包括密码以及屏幕保护锁。

  · 基于许可的访问控制: 基于许可的访问控制是为每个程序添加访问控制能力。

  · 程序起源: 每一个程序都会拥有一个邮戳,表示该程序的作者,通过数字签名方式来防止程序被非法修改。

  · 加密: 对便携设备上的数据进行加密隐藏。

  · 隔离: 隔离技术用于限制应用程序访问特定敏感数据或系统的能力。

  操作系统的表现

  TechRepublic 专栏作家 Francis首先会对安卓和iOS操作系统针对每个支柱的表现给出评论,然后作者根据Nachenberg的报告进行总结。

  支柱一:传统访问控制

  Francis: 在传统访问控制方面,根据我的经验,iPhone或安卓系统都有很好的表现。

  不过,如果触摸屏上的指纹印记太清晰,可能会有助于黑客破解手机密码。在我看来,大部分手机程序开发人员没有为程序添加通过操作系统加锁解锁屏幕实现程序锁定的功能。

  在安卓系统上,我使用过一款由Carrot App 开发的软件 App Protector Pro 。这个软件可以让我为每个程序添加额外的密码保护,如Gmail, Exchange, 以及Facebook。有了这个程序,如果我的手机丢失,并且对方破解了锁屏密码,那么我还能有额外的一些时间来修改这些程序所涉及的账号密码。

  根据我的记忆,好像在iPhone里没有类似的安全软件。我怀疑这是因为iOS有更具有约束力的沙箱模型。

  Kassner: Nachenberg认为iOS提供的访问控制功能可以在手机丢失后起到一定的安全防范作用。在这方面Nachenberg认为iOS与Windows桌面系统的安全性类似。

  报告中Nachenberg 对于安卓系统就没那么客气了。他认为虽然安卓系统也能干防止偶尔发生的攻击,但是安卓系统不支持对SD卡中的数据进行加密存放,因此如果手机被盗,通过物理方式直接读取SD卡中的数据,就使得安卓的密码防范功能毫无用处了。

  支柱二:基于许可的访问控制

  Francis: 根据我的经验,iOS上的许可机制很少,比安卓系统上的许可机制少很多。而唯一一个肯定存在的许可机制是当用户访问其它受保护的子系统时,iOS会提示用户需要相应的资源,并要求用户同意。

  相反,在安卓系统上这样的许可机制很多。我认为理论上这样做很成功,但是在现实世界中这样的许可系统起不到什么作用,因为这种许可理论上需要依赖于用户对于科技的了解。

  目前5个黑客里有4个都在使用安卓系统的手机,安卓手机也逐渐成为了主流智能手机,但是一般用户并不清楚针对某个程序,到底是应该允许其运行,还是不允许。

  实际上我觉得用户也不该承担这种判断责任。就好像我去牙科诊所补牙,我可不希望医生在进行必要的操作时,还征求我的意见该使用哪个仪器。毕竟我是付费享受服务的,我依赖于诊室的资源和牙医的经验技术。

  Kassner: 我曾经听过很多人说iOS平台中的许可系统问题。Nachenberg在报告中阐述了这个问题:

  “iOS系统中有四类系统资源是必须经过用户许可确认后,程序才可以访问这些资源的。而其它系统资源,要么是明确的允许用户使用软件访问,要么就是明确的禁止用户访问,这是iOS内置的隔离策略。而出现以下情况时,程序可能会向用户提出确认请求:

  · 手机的全球定位系统需要方位本地数据时

  · 接收到来自互联网的通知警告信息

  · 向外拨打电话时

  · 向外发送短信或电子邮件信息时

  如果有任何程序试图使用以上四类功能,那么用户首先会看到一个许可提示,当用户许可后,该程序才可以实施该功能。如果用户允许了GPS系统或通知警告系统的功能,程序会被永久允许使用该系统。而对于向外拨打电话或发送短信和电邮的功能,则需要用户每次点击确认。”

  而安卓平台使用的是完全不同的方案。它是基于“全部或没有”的概念,我引用Nachenberg在报告中的一段话来解释这个概念:

  “每个安卓程序内部都集成了一个许可列表,记载了能够让该程序正常工作所需的系统功能。这个列表会采用普通手机用户能够看的懂的方式,在软件安装过程中提示用户,而用户会根据这个软件的安全风险来决定是否要继续安装该软件。

  如果用户仍然选择安装软件,那么程序将获得访问相应系统资源的权限。而如果用户放弃安装软件,程序就完全被禁止运行了。安卓系统上没有所谓的中间地带。”

  支柱三:程序起源

  Francis: 在安卓和iSO系统中,身份起源和判断真实性的机制是明显不同的。人们对这两种机制的优劣一直都没有结论,但目前来看,针对安卓系统的恶意软件要多于iSO。

  我不认为Google的安卓系统在安全性上是失败的,但是一系列薄弱的安全点,使得安卓系统在面对安全威胁时显得更脆弱。对于黑客来说,在安卓系统上开发和散步恶意软件没有太大的阻碍,尤其是将软件归为免费或共享时,传播速度更快。

  Google对于之前提交的应用程序没有审查机制。不需要开发者证明自己就是拥有该程序开发和修改权限的人。也没有集中化的开发者授权。目前有多种渠道都可以发布和传播安卓系统上的软件,而且渠道数量还在不断增加。而整个过程中存在的最大漏洞就是,黑客可以毫不费力的获取软件店里的软件,通过逆向工程还原成源代码,经过修改加入恶意代码并打包后,再将其以正常软件的名义发布出来。

  虽然iPhone的应用软件也可以通过这一系列工作进行篡改,但是iPhone的编程语言并不公开,这种非公开的编程语言比Google平台的Java语言反汇编要难的多。

  Kassner: 在这方面, Nachenberg的观点和 Francis 是一致的。iOS在这部分做的比安卓系统强。

  支柱四:加密

  Francis: 我曾经参与过一个跨平台的手机软件项目,该项目有明确的隐私保护要求,并且在最后还会有一个独立的第三方工程师团队对源代码进行审核。

  在这个项目初期我就发现,iSO的用户设置数据默认状况下会被加密存储在某个位置,而安卓系统则是将用户设置数据直接放在相应的程序所在位置。

  这并不表示安卓系统上的敏感数据都没有被加密,或者安卓系统使用的加密技术不如iphone。这只是说明安卓系统会把更多的加密工作留给应用程序自己,而不是通过操作系统来实现。这么做有好处也有不足。

  如果你是安卓平台上的软件开发者,那么你的软件数据安全性可能不如iSO上的软件。但是如果你自己为自己的软件设定了特殊的加密方式,那么你的软件数据安全性可能会高于iSO系统,因为黑客不得不破解程序的加密算法。

  但是作为手机用户,你并不知道所下载的软件是否带有加密机制。而如果软件没有加密机制,那么由于大多数用户的应用程序都安装在SD卡上,而SD卡又是很容易被取出(比如插入电脑传输数据),因而其安全性无法得到保证。

  Kassner: 在加密方面Francis 的观点与Nachenberg一致。不过我还是要说一下我对这两个平台的看法。

  首先,iOS使用了加密机制,但是这是有局限的。很多程序在后台运行(就算用户没有登录)需要访问存储数据。为了正常运行, iOS需要在本地复制一份非加密的密钥。这意味着对于越狱的手机,黑客不需要用户密码就可以访问存储数据。

  正如Francis所说,所有版本的安卓,除了3.0版以外,都不支持加密数据。这意味着通过越狱技术或者任何取得管理级访问权限的用户都可以浏览手机中的任何数据。

  支柱五:隔离

  Francis: 我个人认为,不论是苹果还是Google的隔离沙箱模型都是安全可靠的。二者相比,安卓系统的隔离机制稍微有些复杂,但也更具有灵活性。与iOS系统相比,安卓能够真正应对多任务工作模式。

  作为手机程序开发人员,我能看到这种机制带来的优势。这使得我们在程序开发过程中就要考虑到安全问题,并且一直贯穿整个开发过程,而桌面系统软件的开发,可以在最后环节再考虑安全性问题。

  Kassner: Nachenberg和Francis 的观点又是一致的。隔离机制可以让不同的程序分开工作,不会由于某个程序被黑客利用而影响到其它正在运行的程序。

  两者的弱点

  对于 iOS和安卓平台的安全性能,我有深刻的印象。但是不得不说二者都还存在“弱点”。不论你是否相信,反正我是信了。

  Nachenberg 曾跟我提到, iOS 目前只发现了几个严重的漏洞,其中大部分都是与越狱技术有关。不过还没听说恶意软件入侵事件。

  安卓系统同样只有很少几个严重的漏洞。但是Nachenberg表示其中一个漏洞可以让第三方程序获得手机的控制权。而且这个漏洞已经被很多黑客知晓了,其中一个恶意软件名为Android.Rootcager。

  Android.Rootcager是一个让Google难堪的恶意软件。Nachenberg解释说:

  “更有趣也更具争议的是,Google针对该恶意软件推出的修复工具也是利用相同的系统漏洞来绕过安卓的隔离系统,删除对设备造成威胁的恶意软件部分。”

  总结

  可以这样总结:两个重量级选手,两种不同的安全防护哲学,本文的任务就是阐述这两种安全防护机制的差异。

参考技术B

任何系统都会有木马病毒的产生,不存在绝对的安全,只有相对的.
有人用,有利益就会有,何况市场保有量那么高苹果最近出示一份文件,详细描述了iOS内部安全规格。从文件来看,更像是解释为何不让开发者接入:“从iOS设备的架构考虑,理解内建安全功能如何运作以提供一个安全的移动平台,这是有必要的。iPhone、iPad、iPod Touch建有多个安全层。低级的硬件和固件功能保护可以防止恶意软件和病毒,高级的OS功能可以确保个人信息、企业数据安全,防止未授权使用,协助阻止攻击。iOS安全模式在保护信息的同时,也支持移动使用、支持第三方程序、支持同步。系统大部分是基于产业标准安全设计原理开发的,许多时候,苹果还增加了设计,在不牺牲使用性的前提上强化安全。这份文件提供了安全技术的细节,也介绍了iOS平台内部功能的执行。”
  业界人士读完整个文档后,得出一个简单的而通俗的结论:苹果不需要iOS反病毒程序,因为它没有给病毒留下空间(包括木马、恶意软件等),这些病毒没法进入系统。
  如果用户如苹果预期一样使用iPhone,从App Store获得程序。而程序商店的程序是经过审查的,它没有包括恶意代码。因此,恶意代码没法在任何一款设备上出现,也就没有必要使用反病毒软件了。
  在Android平台上曾出现过病毒,它的下载安全也比苹果低些。不过,如果要说苹果100%安全也不见得。它还忽略一点:并非所有程序都是从程序商店下载的,还有越狱机。


iOS通过以下几种机制来保全整个系统的安全性:

一:系统结构

所有iOS设备中,系统与硬件都高度集成,从系统启动、系统更新、应用的安装、应用的运行时等多个方面来保全系统的安全,具体包括:

1:所有iOS设备在处理器内都集成有一段名为Boot Room的代码,此代码被烧制到处理其内的一块存储上,并且只读,可以认为是完全可信的。系统启动时,Boot Room通过苹果的Apple Root CA Public证书对Low-Level BootLoader进行验证,如果通过验证,Low-Level BootLoader将运行iBoot,较Low-Level Bootloader高层次的Bootloader,如果这一步也通过,那么iBoot将运行iOS的内核, XNU,系统开始运行。

以上这几个步骤任一步骤无法通过,都将导致系统无法启动,这样,处理期内烧制的Boot Room保证了iOS系统只能在Apple自家设备上运行,而这些设备也将无法运行iOS之外的系统。

2:iOS设备的系统升级之后是不允许降级的(官方没有提供接口)。这样做的好处是系统的安全等级只会越来越高,二不会出现由于系统降级,已修复安全风险又暴露出来的问题。

iOS系统在升级过程需要联网进行验证,系统升级之前,设备会将LLB、iBoot、内核、镜像,外加一个随机的不可重复的值发送到苹果的服务器进行验证,服务器端对所有这些进行验证,如果通过验证,将会返回一个通过的结果,结果加入了与设备唯一相关的ECID。这样做的好处是此值是无法重用的,只能对应与一台设备,且只能使用一次。同过这种机制,保证了系统升级过程都是符合苹果要求的。提高了较高的安全性。

3:所有运行在iOS上的代码都是需要签名的。苹果自带应用已经打上了苹果的签名,而第三方应用,则需要开发者账号进行签名,而开发者账号都是通过苹果官方实名审核的账号,从开发者源头上控制了程序的安全性,也就是说,系统内所有运行的程序都是可信的,且知道来源的。这个签名就是在Xcode code signing选项里选择的账户。

4:运行与iOS系统的第三方软件都是运行与sandbox之内,每个第三方程序都有自己的独占的路径,其只能访问独占路境内的内容,其他程序的文件一般情况下无法访问,如果要访问,只能通过苹果官方API,而不能自行操作文件。连个应用之间无法共享文件,如要互相通信,只能通过URL Schema或shared key chain。

另外,每个应用都有其运行权限,不同权限可进行的操作是不同的,将应用的权限限制在其需要的范围内,而不赋予额外的权限。

二:数据的加密与保护

1:加解密是耗时耗能源的操作。而iOS内所有用户数据都是强制加密的,加密功能不能关闭。所以,苹果的AES加解密引擎都是硬件级的,位于存储与系统之间的DMA内,所有进出存储的数据都啊要经过硬件的加密与揭秘,这样提供了较高的效率与性能。

加密揭秘使用的KEY主要来自unique ID(UID)以及Group ID(gid),UID与唯一设备相关,GID与某种特定型号的CPU相关,一台设备的UID及GID全部被烧制到芯片内部,除了AES加密引擎,没有其他方法直接读取,能看到的只有使用UID及GID加密后的数据。这样,不同设备的加密结果是不同的,同一套密文只能在加密的机器上进行解密。

除了GID及UID,其他加密使用的KEY全部来自系统自带的随机数生成器,具体使用的算法为Yarrow。

2: iOS提供了名为File Data Protection的数据保护方法。所有文件在加密时使用的key都是不同的,这些key被称作的prefile key,存储于metafile内。

prefile的访问需要进行解密的key,这些key包括:

    File System Key: 系统安装时生成的一个随即的key

    Class Key,另一个key,与UID相关,如果用户设置了锁屏密码,那么此Class Key将的来源将同时包括锁屏密码。

只有有了这两个key,一个文件的prefilekey才能被读取出来,此加密的文件才能被揭秘,也就是说,当锁屏之后,或存储位于不同的设备之上,数据是无法读取的。

File System Key还有一个重要作用,远程删除数据时,其实不用真正的删除磁盘上的数据,只要删除此key,那么所有文件的prefile key 将不能访问,也就是所有文件将无法读取。

3:锁屏密码为了防止暴力破解,增加了三个限制:

    将其与uid绑定,也就是只能在该密码生成的设备上进行尝试,

    两次尝试的间隔被强制设成80ms,机器暴力破解的时间将大大加长

    增加选项,如果连续输错次数超过10次,可以选择删除设备内数据

4:Keychain。应用的小量极敏感数据,例如密码,最好存储与KeyChain内,而不是应用自己管理。

三:网络安全

除了本地数据的保护,苹果还对数据的传输提供了多种多样的保护机制。苹果提供了 可靠的、可信以及加密的连接。因为iOS平台限制了同时监听的端口的数量,并将那些不必要的网络组建,例如telnet,shell以及web server等,所以不需要防火墙的保护。

    SSL, TLS,苹果提供了对SSL以及TLS的支持。CFNetwork则简化了这些协议的使用。

    VPN,iOS内置的VPN客户端,支持多种VPN服务器及认证方式。

    WIFI,提供了包括WPA2 Enterprise在内的多样标准WIFI协议。

    蓝牙,iOS蓝牙功能提供了多样化的安全选择

四:设备权限控制

针对企业用户,iOS系统提供了多样的安全策略,管理原可以根据需求对设备的安全特性进行多样化的设置,包括密码策略,数据保护策略,应用使用策略,远程数据删除等功能,给企业级用户提供了高安全性以及极大的灵活性。

参考技术C

iOS系统,由苹果公司打造,被很多大众接受并认可,然而从近段时间手机网络的性能来看,iOS系统并没有像民众想象的那样安全与坚不可催。


说到iOS系统的安全,民众心理可能更多的是源于从众心理,苹果手机、苹果电脑的大热与大卖,让很多人加深了对苹果系统的认可,然而这并不能代表苹果系统便是绝对安全的。不可否认的是,苹果系统确实以其独有的操作便捷,功能强大特点,然而随着各大智能手机科技的发展,苹果早已不是一枝独秀,华为,小米正以势不可挡的劲头闯入中国市场,国家对国有企业的保护和支持,更让中国制造和中国技术的手机减少后顾之忧。


下面,说说不久之前出现的Pegasus/Trident事件,以色列针对iOS开发的“Pegasus”间谍软件曝光,它使用三个被称为“Trident”的零日漏洞来攻击目标iOS设备,并且窃取其中信息。虽然苹果立即发布了更新补丁,并且建议用户立即安装升级,但是这并不能保证iOS系统已经高枕无忧,甚至于我们甚至无法保证苹果发布的信息是否有效。退一万步说,即使这次事件得以解决,谁也无法保证,有了第一次,不会有第二次。

微软企业和客户移动副总裁Brad Anderson亦认为这证明iOS与Android同样脆弱,苹果的操作系统也一样容易被攻击。

的确,在如今的大网络时代里,没有哪一个系统是绝对安全的。对于企业,只有不断技术创新才能立足于不败之地。对于政府,只有出台有效政策才能切实保障民众网络安全。

参考技术D

任何系统都会有木马病毒的产生,不存在绝对的安全,只有相对的.
有人用,有利益就会有,何况市场保有量那么高苹果最近出示一份文件,详细描述了iOS内部安全规格。从文件来看,更像是解释为何不让开发者接入:“从iOS设备的架构考虑,理解内建安全功能如何运作以提供一个安全的移动平台,这是有必要的。iPhone、iPad、iPod Touch建有多个安全层。低级的硬件和固件功能保护可以防止恶意软件和病毒,高级的OS功能可以确保个人信息、企业数据安全,防止未授权使用,协助阻止攻击。iOS安全模式在保护信息的同时,也支持移动使用、支持第三方程序、支持同步。系统大部分是基于产业标准安全设计原理开发的,许多时候,苹果还增加了设计,在不牺牲使用性的前提上强化安全。这份文件提供了安全技术的细节,也介绍了iOS平台内部功能的执行。”
  业界人士读完整个文档后,得出一个简单的而通俗的结论:苹果不需要iOS反病毒程序,因为它没有给病毒留下空间(包括木马、恶意软件等),这些病毒没法进入系统。
  如果用户如苹果预期一样使用iPhone,从App Store获得程序。而程序商店的程序是经过审查的,它没有包括恶意代码。因此,恶意代码没法在任何一款设备上出现,也就没有必要使用反病毒软件了。
  在Android平台上曾出现过病毒,它的下载安全也比苹果低些。不过,如果要说苹果100%安全也不见得。它还忽略一点:并非所有程序都是从程序商店下载的,还有越狱机。


iOS通过以下几种机制来保全整个系统的安全性:

一:系统结构

所有iOS设备中,系统与硬件都高度集成,从系统启动、系统更新、应用的安装、应用的运行时等多个方面来保全系统的安全,具体包括:

1:所有iOS设备在处理器内都集成有一段名为Boot Room的代码,此代码被烧制到处理其内的一块存储上,并且只读,可以认为是完全可信的。系统启动时,Boot Room通过苹果的Apple Root CA Public证书对Low-Level BootLoader进行验证,如果通过验证,Low-Level BootLoader将运行iBoot,较Low-Level Bootloader高层次的Bootloader,如果这一步也通过,那么iBoot将运行iOS的内核, XNU,系统开始运行。

以上这几个步骤任一步骤无法通过,都将导致系统无法启动,这样,处理期内烧制的Boot Room保证了iOS系统只能在Apple自家设备上运行,而这些设备也将无法运行iOS之外的系统。

2:iOS设备的系统升级之后是不允许降级的(官方没有提供接口)。这样做的好处是系统的安全等级只会越来越高,二不会出现由于系统降级,已修复安全风险又暴露出来的问题。

iOS系统在升级过程需要联网进行验证,系统升级之前,设备会将LLB、iBoot、内核、镜像,外加一个随机的不可重复的值发送到苹果的服务器进行验证,服务器端对所有这些进行验证,如果通过验证,将会返回一个通过的结果,结果加入了与设备唯一相关的ECID。这样做的好处是此值是无法重用的,只能对应与一台设备,且只能使用一次。同过这种机制,保证了系统升级过程都是符合苹果要求的。提高了较高的安全性。

3:所有运行在iOS上的代码都是需要签名的。苹果自带应用已经打上了苹果的签名,而第三方应用,则需要开发者账号进行签名,而开发者账号都是通过苹果官方实名审核的账号,从开发者源头上控制了程序的安全性,也就是说,系统内所有运行的程序都是可信的,且知道来源的。这个签名就是在Xcode code signing选项里选择的账户。

4:运行与iOS系统的第三方软件都是运行与sandbox之内,每个第三方程序都有自己的独占的路径,其只能访问独占路境内的内容,其他程序的文件一般情况下无法访问,如果要访问,只能通过苹果官方API,而不能自行操作文件。连个应用之间无法共享文件,如要互相通信,只能通过URL Schema或shared key chain。

另外,每个应用都有其运行权限,不同权限可进行的操作是不同的,将应用的权限限制在其需要的范围内,而不赋予额外的权限。

二:数据的加密与保护

1:加解密是耗时耗能源的操作。而iOS内所有用户数据都是强制加密的,加密功能不能关闭。所以,苹果的AES加解密引擎都是硬件级的,位于存储与系统之间的DMA内,所有进出存储的数据都啊要经过硬件的加密与揭秘,这样提供了较高的效率与性能。

加密揭秘使用的KEY主要来自unique ID(UID)以及Group ID(gid),UID与唯一设备相关,GID与某种特定型号的CPU相关,一台设备的UID及GID全部被烧制到芯片内部,除了AES加密引擎,没有其他方法直接读取,能看到的只有使用UID及GID加密后的数据。这样,不同设备的加密结果是不同的,同一套密文只能在加密的机器上进行解密。

除了GID及UID,其他加密使用的KEY全部来自系统自带的随机数生成器,具体使用的算法为Yarrow。

2: iOS提供了名为File Data Protection的数据保护方法。所有文件在加密时使用的key都是不同的,这些key被称作的prefile key,存储于metafile内。

prefile的访问需要进行解密的key,这些key包括:

    File System Key: 系统安装时生成的一个随即的key

    Class Key,另一个key,与UID相关,如果用户设置了锁屏密码,那么此Class Key将的来源将同时包括锁屏密码。

只有有了这两个key,一个文件的prefilekey才能被读取出来,此加密的文件才能被揭秘,也就是说,当锁屏之后,或存储位于不同的设备之上,数据是无法读取的。

File System Key还有一个重要作用,远程删除数据时,其实不用真正的删除磁盘上的数据,只要删除此key,那么所有文件的prefile key 将不能访问,也就是所有文件将无法读取。

3:锁屏密码为了防止暴力破解,增加了三个限制:

    将其与uid绑定,也就是只能在该密码生成的设备上进行尝试,

    两次尝试的间隔被强制设成80ms,机器暴力破解的时间将大大加长

    增加选项,如果连续输错次数超过10次,可以选择删除设备内数据

4:Keychain。应用的小量极敏感数据,例如密码,最好存储与KeyChain内,而不是应用自己管理。

三:网络安全

除了本地数据的保护,苹果还对数据的传输提供了多种多样的保护机制。苹果提供了 可靠的、可信以及加密的连接。因为iOS平台限制了同时监听的端口的数量,并将那些不必要的网络组建,例如telnet,shell以及web server等,所以不需要防火墙的保护。

    SSL, TLS,苹果提供了对SSL以及TLS的支持。CFNetwork则简化了这些协议的使用。

    VPN,iOS内置的VPN客户端,支持多种VPN服务器及认证方式。

    WIFI,提供了包括WPA2 Enterprise在内的多样标准WIFI协议。

    蓝牙,iOS蓝牙功能提供了多样化的安全选择

四:设备权限控制

针对企业用户,iOS系统提供了多样的安全策略,管理原可以根据需求对设备的安全特性进行多样化的设置,包括密码策略,数据保护策略,应用使用策略,远程数据删除等功能,给企业级用户提供了高安全性以及极大的灵活性。

NSUserDefaults 线程在 IOS 上的扩展之间共享数据是不是安全?

【中文标题】NSUserDefaults 线程在 IOS 上的扩展之间共享数据是不是安全?【英文标题】:Is NSUserDefaults thread safe for sharing data between extensions on IOS?NSUserDefaults 线程在 IOS 上的扩展之间共享数据是否安全? 【发布时间】:2014-10-12 08:59:49 【问题描述】:

“与包含的应用程序共享数据”下的应用程序扩展文档使用 NSUserDefaults 来执行此操作,并进一步写了一点

“为避免数据损坏,您必须同步数据访问。使用 Core Data、SQLite 或 >Posix 锁来帮助协调共享容器中的数据访问。”

但是当我查看 NSUserDefaults 的文档时说

“NSUserDefaults 类是线程安全的。”

那么在我的扩展程序和容器应用程序之间使用 NSUserDefaults 时是否需要使用某种锁?

【问题讨论】:

【参考方案1】:

线程安全是指从一个线程更改内存中数据结构的能力,而不会损害其他线程也查看或更改这些结构的能力。当您使用NSUserDefaults 在应用扩展及其包含的应用之间共享数据时,您不是在多个线程之间共享内存中的数据,而是在多个之间共享磁盘上数据>进程,因此线程安全的讨论不适用。

NSUserDefaultssynchronize 的文档并没有肯定地说,但几乎可以肯定的是,它使用原子文件写入——也就是说,一个进程读取由另一个过程。如果您担心应用写入默认值和扩展读取它们之间的竞争条件或其他时间问题(反之亦然),请务必在重要写入之后和重要读取之前立即发送synchronize

关于数据损坏的评论适用于普通文件读/写操作 - 在两个进程中天真地读取或写入文件可能会导致数据损坏,因为一个进程可能会读取部分写入的文件或部分覆盖文件内容。如果您直接进行自己的文件 I/O,则需要某种协调机制(例如 NSFileCoordinator,但请注意,只有在 iOS 应用程序/扩展程序之间才能正常工作 in iOS 8.2 and newer)。或者,您可以使用自行协调的更高级别的实用程序,例如 CFPreferences/NSUserDefaults、SQLite、Core Data 或 Posix 文件锁。

TLDR:是的,您可以安全地使用NSUserDefaults 在扩展程序及其包含的应用程序之间共享。只需遵循in Apple's app extensions guide 的建议即可。

【讨论】:

【参考方案2】:

文档并不太清楚,因为它使用NSUserDefaults 作为共享数据的一种方式的主要示例,但也涵盖了其他选项而没有太多停顿。您应该足够安全地使用NSUserDefaults 而无需先尝试获得锁,我一直在使用它构建一个 Today 扩展,并且我没有遇到数据损坏的问题。我在每次写入后都会调用synchronize,只是为了确保立即存储数据。

【讨论】:

以上是关于ios系统是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

iOS没你想的那么安全?

iOS 系统安全机制

IOS安全初见

ios就一定比Android安全吗

Linux/Unix系统下的线程安全IO

Linux/Unix系统下的线程安全IO