昨天一条「苹果 iCloud 生产流量割接至中国电信云存储服务」的微博引起了网友的注意,在转发评论中不少人都对中国电信的节操表示了担忧。但苹果的安全措施真的能让中国电信随意而为吗?

先来看这则新闻

      8月8日凌晨5时,前后历经15个月,经过多轮严苛的技术测试和评审,苹果公司开始将iCloud中国用户数据生产流量割接至中国电信云存储服务,标志着中国电信正式为苹果iCloud中国用户提供云存储服务,成为苹果公司在中国大陆地区唯一的云存储服务提供商。
      在此次合作中,苹果公司提出了非常严苛的、达到国际一流水平的技术要求。主要包括三个方面:第一,资源池网络的可用性达到99.99%/月,即每个月只能有4分19秒的中断,由于4分钟时间很难恢复网络故障,99.99%实际上意味着资源池网络几乎不能出故障。第二,云存储服务的可用性达到99.9%,每用户服务请求处理时间超过一定数值即视为服务不可用,远远超出了业界的通常要求。第三,数据的可用性达到99.99999999999%(13个9),这意味着“不能丢数据”。最终中国电信存储服务以“高并发和极低误码率”得到苹果公司的认可。 
      预计未来苹果公司iCloud中国用户数据的存储需求将达到数百PB,此次合作的成功落地不仅将为中国电信带来巨大的商业价值,更是证明了中国电信云存储服务有能力承接世界级客户和业务,为天翼云业务拓展提供了极佳的标杆。此外,通过技术指标倒逼,中国电信云存储服务质量有了实质性提升,坚定了自主研发的信心,产品的可控性大大增强。

笔者的观点是:苹果把在中国的 iCloud 数据生产流量割接至中国电信云存储服务,将会为国内用户带来更好的使用体验,访问速度更快。但这只是「借用」了中国电信的资源,对于通信、数据存储等过程,仍然是由苹果控制,安全方面大可放心。

苹果对于其云服务有很高的安全标准,笔者在这篇文章中会重点介绍 iCloud 使用的数据加密算法与算法安全性,让各位读者对 iCloud 的安全性有简单的认识。在本文中涉及到的密码学概念,笔者会以最简单的方式介绍,忽略复杂的定义、算法细节和数学原理。

1.  引言

苹果的众多服务中都有密码学的身影,例如可信引导链(也就是开机的过程)、系统升级授权、Touch ID 和 Secure Enclave(A7 处理器中存储指纹信息的可信计算模块)、应用安全、网络通信安全、互联网服务安全、设备控制等等,信息安全是每个服务的重中之重。虽然你在日常使用中可能感觉不到,但在顺畅、可靠服务的背后,信息安全尤其是密码学是这一切的后盾。

本文对 iCloud 云服务中使用的密码学算法进行简单介绍,希望通过本文,能让读者对 iCloud 的安全性有简单的认识,不要被一些言论所误导。

2. 什么是 iCloud?

iCloud 是苹果公司所提供的云端服务,用户能在 iCloud 中存储音乐、照片、应用数据、联系人、日历、备忘录、iCloud KeyChain、备份和恢复信息等等,并将这些数据无线推送到用户所有支持 iCloud 同步的设备上。iCloud 还可以备份 iOS 设备,帮助用户查找丢失的设备,并简化照片共享。

用户通过 Apple ID 和密码来对自己的 iCloud 进行设置,这一切数据都存储在云端,因此云端的数据安全至关重要。云端的数据安全包括文件元数据(Metadata,包括文件名、扩展名、权限等等)和文件内容的安全。

3.  iCloud 的文件安全

用户在 iCloud 存储的每个文件都被分成若干个块,每一块使用 128 位密钥的 AES 加密算法进行加密,每个 128 位的密钥根据文件块的内容生成。这些内容都与 Apple ID 有关,存储在第三方的存储服务上,例如 Amazon S3 和 Windows Azure。

AES(Advanced Encryption Standard) 是美国国家标准技术研究所(NIST)在 2001 年发布的高级加密标准,用来取代密钥短、安全性差的 DES(Data Encryption Standard,数据加密算法)。AES 是一种对称密码,在加密和解密时使用相同的密钥,与公钥密码相比,要求双方取得相同的密钥是对称密钥加密的主要缺点之一。由于对称加密的速度比公钥加密快很多,因此对于文件加密,对称密码是最佳选择。AES 在 GF(2^8) 有限域上进行计算,包括众多的数学概念和推导,故不展开详述。AES 具有很高的安全性,2003 年 6 月,美国政府宣布 AES 可以用于加密机密文件。AES 的密钥长度有 128 位、192 位、256 位,对于加密一般文件,128 位的 AES 足以保证其安全性。

▲ AES 加密算法简化流程

我们在认知上的一个误区是:密钥长度越长,安全性越高,所以应该密钥越长越好。从理论上来说没有问题,但过高安全性带来的一个问题便是计算资源的过度消耗和计算时间的增长。这便是密码学和系统设计实现中需要考虑的安全性和损耗的平衡问题。

由于 AES 的密钥被加密存储在用户的 iCloud 账户中,服务商无法得到,并且 AES 本身具有很高的安全性,笔者认为用户在 iCloud 的文件很安全,与服务商没有任何关系。 

4.  iCloud 备份

iCloud 备份包括设备的设置、应用数据、照片、铃声、iMessage 和短信等等,在发送至互联网进行传输前已经被 iOS 设备加密,iCloud 云端接收到数据后直接存储,因此存储的也是加密后的数据。iCloud 还使用安全令牌来验证用户的访问。

iCloud 备份加密使用公开密钥算法中的椭圆曲线算法中的 Curve25519 曲线生成密钥。Curve25519 曲线在Cryptocat、Open SSH、Tor(你懂得)、Apple Homekit 等服务中广泛使用,遵循 Diffie–Hellman 椭圆曲线密钥交换规则。

椭圆曲线密码学是基于椭圆曲线数学的一种公钥密码的方法,主要优势是在某些情况下它比其他的方法使用更小的密钥——比如 RSA 加密算法——提供相当的或更高等级的安全。不过椭圆曲线一个缺点是加密和解密操作的实现比其他机制花费的时间长。

密钥交换是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥,这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。具有如此优良性质(在不安全信道上建立起安全通信)的协议有极为广阔的应用。

▲ Diffie-Hellman 密钥交换协议流程

iCloud 备份存储在用户的 iCloud 账户中,并被一个随机的密钥加密后保护。用户的 iCloud 密码不被用于加密,因此服务商无法对加密后的数据做手脚。在备份到云端后,iCloud 还保存着一个与用户 Apple ID 关联的密钥,当用户在不同设备上登陆自己的 Apple ID 时,这些备份才可以被推送至已登录的设备上。苹果制定了这些算法,但无法根据用户的 Apple ID 来重复得到这些密钥。密钥都是每次新生成的,无法重放得到。

5.  iCloud Keychain

iCloud Keychain 允许用户在 iOS 和 Mac 设备间安全的同步这些密码,在同步过程中,密码不会暴露给苹果,都通过密码算法和密码协议传输并计算。在以下被攻击的情况下,仍能保证用户的密码不被泄露

  1. 用户的 iCloud 账户被攻破
  2. iCloud 被外部攻击者或内部员工攻击
  3. 第三方对用户账户的访问

iCloud Keychain 同步同样使用了公开密钥中的椭圆曲线算法(P256)、AES-256 等加密算法。椭圆曲线算法的公私钥对的生成和存储于用户的 iCloud 密码相关。虽然生成和存储与用户的 iCloud 密码相关,但不是直接读取用户的密码再进行生成。在经过加盐和迭代操作后,同步密钥被生成。在经过若干复杂的步骤,完成密钥的同步。在整个过程中,服务商或苹果都无法查看到用户的密码和同步密钥,有效保证了安全性。

此外,iCloud 还提供了安全设施,保证同步过程只能在被授权的设备上进行。根据苹果的安全白皮书,笔者发现 iCloud Keychain 同步是 iCloud 服务中最为复杂的过程,包括了 10 次以上的密钥生成、交换、销毁等过程,每一步都是用了最可靠的加密算法来保证安全性。此外,通信过程也是用标准的安全协议完成。这些都有效保证了 iCloud Keychain 服务的安全性。

小结

信息安全有三个核心目标:保密性、完整性、可用性。其中,保密性和完整性是密码学研究的重要问题之一,也是密码学的重要应用方向。密码学是研究如何隐密地传递信息的学科,也是信息安全等相关议题,如认证、访问控制的核心。密码学是要隐藏信息的含义,而不是隐藏信息的存在。密码学算法、安全协议、安全策略等等在各项云服务中被大范围使用,iCloud 也不例外。

iCloud 是目前安全性最高的云服务之一,普通用户不用担心其安全性,也无需知道什么样的密码学内容被使用来保证数据的安全性,放心使用即可。

笔者对密码学和 iCloud 安全认识有限,文中如有疏漏在所难免,请各位读者批评指正。