Saturday, July 7, 2012

WWDC 2012的学习笔记(2)

上一周(6月25至30日)的时间我已经看完了WWDC 2012视频的第700系列:Core OS,既苹果OS核心的新内容。该系列公开的有14个视频讲座,每个视频大约一个小时,iTunues中的视频分为两种格式HD和SD,我发现SD格式虽然不及HD清晰,但是单个视频仅占硬盘60MB到140MB的空间,仅为HD的十分之一,因此我下载的是SD视频。此外,每部讲座都有PDF的讲座大纲讲稿。我这里写的笔记是我看完之后,以PDF讲稿最为提要,将我认为留下最深印象的内容作一概要总结。

我期待新的OS或iOS中文听写功能,那时我也许将开始以说的方式写我的博文。这将是一个完全不同的写作方式,需要一个适应过程。但是我想经过摸索之后,也许将会大大提高我写博文的速度,并能够像即时翻译那样能够抓住当时的要点和灵感。新的写作方式也许将会使我能够在更短的时间写出更多、更有用的内容。


700 The OS X App Sandbox


本讲座介绍电脑OS X上软件的安全平台:App Sandbox,既每个软件都有自己局限的自由空间。

电脑技术可以说是近三十年来发展最为迅速,影响范围最为广泛的科学技术。我们现代的工作和生活都离不开电脑。电脑中最为基础的核心是通过软件让电脑实现各种功能,电脑的操作系统实际上就是一种最基本的系统管理软件,它提供与电脑资源的通讯交流,如硬盘、屏幕、键盘、鼠标、声音、摄像、打印、网络等,并为其它各种应用软件提供工作环境。

讲座一开始就以汽车的发展作为比喻,现代小车的安全性已经得到迅速地发展,并且已经建立起一系列的冲击试验系统,这些系统是政府规定的标准。在汽车设计方面,采用了牵引力控制、死点警告、换道提示等标准,这些都是从防止出现事故方面起了非常好的作用。但是无论采用如何先进的技术,事故还是会发生。因此,在事故发生后,在如何控制并减少最小伤害的方面,出现了座位安全带和空气缓冲保护袋的技术和标准。这些标准已经成为小车安全性的基本要求,也成为安全驾车的基本法规要求。

那么随着电脑技术的迅速发展,网络交流成为一种必不可少的功能,桌面系统的安全又是如何呢?虽然这方面的发展有了很大的发展,但是都是一些传统的安全方式:

  • 防御性:使用者必须时时刻刻保护所有的东西,而攻击只需在某一时破击保护的一点防线;
  • 安全性的重点是放在防护破坏方面,如采用各种内存地址随即变化技术、阻止执行、防病毒软件等,这些被动防御性技术却没有遏制能力;
  • 一点突破,游戏结束;
  • 在出现防御被击破事故时,电脑没有像小车那样的安全带和空气保护带措施。



目前的电脑几乎都有这样一些非常不幸的假设或现实:

  • 在登陆的用户名下,所有的软件都有同样的执行权利
  • 大多数消费者电脑都是单一用户的系统
  • 所有软件都可以接触用户最隐私的数据和整个系统资源

这种不幸的假设,是一种防御性战略思想,而对软件的放任无控制,因此根本无法抵抗或者取得胜利,因此在现代的防止恶意或病毒软件的战争中,不幸的事件或失败不断发生。

讲座没有点名,用安全提示窗口的方式给用户显示各种所谓安全的警告作为一典型的例子,这种将一些安全的一些技术问题提交给用户来接受或拒绝,结果是造成用户的极大抱怨,无法防止攻击软件的得逞。这实际上是微软的Vista窗口设计上的失败。

电脑界的现实是软件不断增加,软件日益复杂,软件开发者众多并日益扩大,大多数电脑都连入网络,其结果是攻击者更容易发现新的和有漏洞的电脑。另一方面,即时不是病毒或攻击软,软件的缺陷、漏洞或崩溃会造成一天工作白费,甚至造成数天、数月、数年的工作或数据的丢失或破坏(数据出现矛盾或乱码)。随着电脑这种地平线的视野不断扩大、变化和复杂性,迫使我们必须要采取不同的战争战略。

我个人认为,苹果已经预计期苹果电脑和移动设备将会日益普及,市场的涵盖范围将会迅速扩展。苹果已经看到微软面临的现实,电脑的开放和软件开发者日益增加,安全性是苹果必须面临的一个现实问题。苹果已经很早从更高的视野,开始不断从整个结构方面重新考虑和设计苹果的软件操作系统。这次WWDC所展示的只是苹果在安全方面的重大改变的更深的内容,我认为,这只是苹果已经实行技术中其中一很小部分,冰山一角。

软件的局部沙场:App Sandbox


  • 苹果早在的OS X Lion就开始在软件中推出和试验这种技术
  • 更好地安全控制应用软件
  • 根据软件的功能设置安全规则
  • 更好地控制崩溃或破坏而不影响到其它软件和操作系统
  • 更好地控制和减少恶意软件进行偷窃和损害用户数据的可能性

从根本上来说,这是一种从安全和保护用户角度出发的一种技术,苹果开始从操作系统方面全面对软件的实施控制和提出要求。

我们知道,苹果是一种纵向的科技公司,苹果控制从硬件到操作系统的整个过程,自苹果手机推出之后,苹果推出App store,让广大的软件开发者开发制作软件,但是苹果在一开始就采用sandbox技术,软件有自己的一块空间,不能直接接触系统资源,也无法直接接触其它软件。苹果自上次OS X更新就推出了苹果电脑的App store,并开始非正式地试验和推广iOS的sandbox技术,新的操作系统将正式采用sandbox,因此对软件开发者提出一系列软件开发的平台和新的要求,其核心是加强和保持苹果生态系统的安全性和用户的隐私权。

App Sandbox的基本内容为下面几个方面,讲座对各个方面有简要和部分详细解释。

  1. 软件开发者必须申请功能要求,即Entitlements,并且必须通过苹果的批准。这种批准十分简单,如果软件的功能对系统资源的要求合理,一般都可以得到通过。但是如果没有申请,软件将无法得到系统的资源和相应的通讯功能。
  2. 每个软件都有自己的空间,在自己的空间内可以像过去的软件一样做任何事情,但是无法知道外面的情况。这就相当于公司中每个工作人员都有自己的工作空间,但是无法知道、偷窥或进入之外的公司空间或其他人员的工作空间。
  3. 为软件的各种系统资源要求和工作空间扩展,苹果提供各种容易使用的工具既Powerbox,使用的工具都有安全方面的防范,软件开发者无法任意滥用。
  4. 新的XPC service,采用这种技术,软件可以与XPC服务通过新的API进行数据交流。这种技术的最大好处是各种XPC service可以有不同的entitilements,而且如果单个模块发生崩溃,不会影响到整个软件。这样用户会有更好的使用体验。

作为演示,讲座以Adium,即一开放码(Open source based)的社交软件,进行了demo。

讲座介绍了自操作系统Lion OS X以来的一些其它新安全技术
  • 安全的书签簿:每个软件可以有自己的安全书签薄,其它软件无法接触。这可以在软件设计时设定。
  • 软件组:这是为同一软件开发者提供便利,可以让一组软件相互直接交流,这是通过软件开发者的证书在软件中设定。这样同一证书下的软件可以交流文件和数据。估计这是根据许多软件开发者的合理要求下特殊设定的标准。
  • 自动化:苹果操作系统很早就有非常丰富的Script支持和自动化功能。这一部分将在另外的讲座中有详细介绍。

讲座的结束语这样说,iOS的Sandbox技术有30亿个软件,在安全方面取得了非常大的成功,苹果对此建立了充分的信心。苹果希望新的操作系统用户将会同样有一个安全的电脑系统,用形象的比喻这将是OS X上无咖啡因的app,用户将会同样十分兴奋和高兴。



701 iOS Accessories


本讲座介绍有关如何开发和使用iOS即iPod, iPhone, iPad的附件。

  • 如何让你写的软件充分利用iOS附件的功能

    • 利用外部的附件平台
    • 提供数据
    • 处理遥控信息

  • 如何开发自己的iOS附件

    • 为iPod/iPhone/iPad(MFi)设计的附件
    • Bluetooth
    • AirPlay

现在市场上已经有许多专门为苹果移动设备开发的各种附件,这些附件都有清晰标志性图案说明用于那些设备。

702 Gatekeep and Developer ID


本讲座的讲演者上苹果OS 安全设计师,介绍Gatekeep平台和相关的软件开发证书Developer ID。这是苹果在安全方面最新的技术推出,Gatekeep 和软件开发者ID是苹果新操作系统上的安全第一道防线,这套技术与App Sandbox是相辅相成的配套技术。用通俗的话来说,这是苹果电脑的保安大门,通过这道大门必须持有实名制的软件开发者的身份证。

这套技术是采用编码签字技术,code identification已经是多年来采用的一种安全技术,但是在整个操作系统中这样广泛地使用,苹果将是第一开创者。

一般来说,用高级语言编写的软件需要经过编译之后才能成为在操作系统下可以直接执行的机器码,即运行软件,app。在软件码上加上特殊防伪的developer ID签字,这样可以确保用户得到软件是原软件开发者开发的软件。

苹果新操作系统利用这一技术,可以带来许多安全方面的好处。第一,操作系统可以拒绝任何没有签字的软件,第二,可以防止在从软件开发者到用户手中的过程中的任何被篡改,这样可以有效防止其他人在软件中搭载恶意或病毒软件,或者防止对软件的任何修改。软件的真伪和功能完全可以通过签字得到有效的保证。

讲座介绍了如何在Xcode中给软件签字。所有在苹果注册软件开发者都可以免费申请得到苹果的ID,采用其它公认机构颁布的ID也可以作为签字。这种签字是软件开发者的身份证,所有软件的开发、更新必须持有加密的ID,如果丢失,将会影响软件今后的更新。这种ID是十分安全保密的,苹果也无法再次复制。因此讲演者一再强调,软件开发者一定要妥善保管和备份,并保证存放在安全处,这是开发者的秘密,开发者要保证其安全隐私。一旦丢失,一定要向苹果申报。其重要性如同一国家发布的身份证书或护照。

苹果的Mac Developer Program目前的主要功能为:

  • 开发Macintosh上软件之用
  • 年费:美元$99
  • 可得到开发者和销售证书
  • 可以在Mac App Store销售开发的软件

Deeveloper ID是Mac Developer Program中的一部分,没有费用,该证书可以用于Mac App Store之外的销售软件使用。

Xcode 4.3+支持Developer ID,讲座中有使用的示范。

Gatekeeper的基础就是建立在软件的Developer ID基础之上的安全技术。

Developer ID还可以用于Installer即安装软件,对于文件也可以通过XIP加密技术签字。

703 Core Bluetooth 101


本讲座介绍了蓝牙低能即Bluetooth 4.0 Low Energy(BT LE)技术,以及苹果所提供的支持API。

首先介绍了BT LE基本概念和基本术语。这种技术实际上手机制造商联合研发的一种通讯技术,现在已经成为一种可以用于广范领域的技术。这一技术是利用无线广播频率传递数据的技术标准。它的特点是低能,一个小小的纽扣电池的BT LE硬件可以工作长达一年时间。由于是采用低能广播技术,因此是短距离的无线技术。

这种技术的最大特点是新的开放式标准,所传输的数据完全由开发者确定。苹果在iPhone和所有的电脑都采用这种技术,为软件开发者提供使用的API。不仅如此,软件开发者还可以写软件使苹果的设备成为BT LE设备,这样苹果设备之间可以短距离进行无线通讯。

讲演者极力推荐软件开发者利用这一技术开发出各种应用软件,讲演者列举了几个应用范围:医疗、运动、保安、家庭自动化、娱乐、玩具、商业用金钱支付、时间服务、近距离通讯等。

这种技术是建立在Client与Server结构基础之上。Server通过不断发出广告Ad的方式让对方Client发现,然后Client根据自己感兴趣的Server建立联系connection,联系建立好之后,双方可以根据需要进行数据交流。Server的数通过Service和相关的Characteristics的树结构提供数据。

iOS 6提供新的API接口:


  • Server和Client的model:CBCentralManager, CBPeripheral和CBPeripheralManager, CBCentral;
  • Data: CBService, CBCharacteristic和CBMutableService, CBMutalbleCharacteristic
  • Helpers: CBUUID, CBATTRequest

iOS的Backgrounding modes有新的相关服务。

704 The Security Framework


本讲座的内容是介绍如何在app中利用苹果的安全平台api对一些敏感内容加密。苹果安全平台提供各种内容丰富的api,讲座只是介绍了安全考量的基本原理和其中主要的几种方法。

首先介绍如何对文字加密,有意思的是苹果对一段文字的加密是将文字分块然后再加密,这样加密的方式更为难破。

对图像加密的方式建议采用SecTransform,但目前这只是在OS X上有支持。

Keychain是苹果使用多年的加密工具,非常安全,如果采用Keychain加密之后,连苹果也无法解密。从软件开发角度,苹果提供许多支持api,如SecItem, UIAlertViewStyleSecureTextInput, SecItemAdd等。用Keychain是储存用户私人数据最好的方式。可以想象,在app开发过程中,有时需要存储一些敏感私人的数据,用普通文字文件或数据库都不是很安全的方式,一旦软件或系统被黑客攻击,这些都很容易被偷走。采用操作系统提供的Keychain是非常安全的方式。

在网络传递数据方面,苹果建议采用TLS/SSL方式,苹果的CFNetwork和NSURL都提供支持。这种支持是采用certificates加密的方式,苹果通过鉴定电子证书签字的方式来建立网络数据交流的相互信任。

讲座介绍了iOS上的数据保护:

  • 在设备在遭到攻击时仍对数据进行保护
  • 加密的文件和keychain项目都有特殊的keys
  • keys用设备上的passcode加密
  • 不同保护方式:

    • 有些keys是系统可以得到的,如背景图像如果加密,操作系统可以得到这些加密的keys
    • 有些keys是当设备一次锁死时,系统仍然可以得到,如在背后运行的下载软件,仍然在系统锁死时可以得到keys
    • 有些keys只是在设备锁死的前十秒内可以得到,之后系统从内存中清除干净。

不支持安全的情况有:

  • DRM,这是娱乐界的数据保护机制
  • 越狱的设备

参考


No comments:

Post a Comment