iOS7 包含 iCloud 钥匙串,可跨设备同步您存储的密码。不仅如此,它还同步信用卡号码。
我能找到的关于加密的唯一信息是它们使用 AES-256 加密,即对称密钥加密。鉴于这些事实,它似乎实际上会将信用卡号码提供给 iOS 设备,该设备将使用密码解密,然后填写 Web 表单。
所以我的问题是,这是否意味着现在获取用户 iOS 密码意味着您可以以明文形式收回他们的所有信用卡详细信息以及他们所有的网站密码,或者 Apple 是否有额外的安全措施来防止这种情况发生?
iOS7 包含 iCloud 钥匙串,可跨设备同步您存储的密码。不仅如此,它还同步信用卡号码。
我能找到的关于加密的唯一信息是它们使用 AES-256 加密,即对称密钥加密。鉴于这些事实,它似乎实际上会将信用卡号码提供给 iOS 设备,该设备将使用密码解密,然后填写 Web 表单。
所以我的问题是,这是否意味着现在获取用户 iOS 密码意味着您可以以明文形式收回他们的所有信用卡详细信息以及他们所有的网站密码,或者 Apple 是否有额外的安全措施来防止这种情况发生?
我将把它分解成几个部分,因为钥匙串有四种不同的存储机制,为任何黑客提供了四种攻击选项。
他们会选择最弱的一个,因此您需要根据您的钥匙串内容的敏感程度将所有四个都做好。
iOS使用aes存储keychain数据,问题是key是怎么生成的?
我的理解是 aes 密钥是通过运行用户的密码或密码或通过自定义 pbkdf2 硬件芯片组派生的,它使用每个设备独有的 ROM 来加盐密码,只有 pbkdf2 芯片组可以读取它。
这确保了无法访问 aes 密钥,除非向持有钥匙串的实际 iOS 设备提供密码。
pbkdf2 芯片组在尝试增加四位数密码的强度方面也故意放慢了速度,但这仍然不够好,如果您真的想要安全,我建议使用密码而不是密码。
当屏幕关闭时(并且在您在设置中设置的任何延迟之后),钥匙串(和其他东西)的 aes 密钥应该从 RAM 中删除,从而强制再次使用 pbkdf2 芯片组来访问密钥。蓝牙低功耗和推送通知等功能让我对它的强大程度感到有点紧张,因为显然在手机锁定时可以做很多事情。我没有正确调查它,但我有点担心即使手机被锁定,也可能会访问 aes 键。如果您担心有人可能对您的手机有物理访问权限,也许可以完全关闭(如果他们比我更了解此部分,也许有人可以编辑此部分?)。
我不确定 touch id 是如何工作的,我怀疑您的密码/密码是使用存储在 A7 的“安全飞地”中的密钥加密的,这只是 ARM 相当于英特尔可信平台模块的营销术语,尽管 arm 的实现是更新很多(A7 是第一个实现它的芯片 AFAIK)并且看起来比英特尔的技术更强大。
在 OS X 上,钥匙串只是在用户的登录密码上运行一个密钥派生函数(可能是 pbkdf2,具有适当的轮数)。您也可以手动将其更改为不同/更强的密码。
就我个人而言,我有两个钥匙串,我的登录钥匙串使用登录密码(这是平均强度),我有第二个钥匙串,它的密码更强/更难输入更敏感的数据。第二个钥匙串也不是通过 iCloud 同步的,我手动复制文件。
iCloud 也使用 aes,但是对于密钥的存储方式有几个选项。
这些选项的描述并不完全符合它看起来实际所做的,他们已经将其简化到误导的程度。
通过所有三个选项,您的加密钥匙串数据将存储在苹果的服务器上。
但是,仅当您提供 4 位密码或密码来“锁定”您的 iCloud 钥匙串时,数据的 aes 密钥才会存储在服务器上。他们不能做任何花哨的硬件密钥派生,所以我认为 4 位密码绝对是个坏主意。使用密码,而不是 4 位密码。
我认为没有任何官方声明密钥是如何派生的。大概他们使用 pbkdf2——这就是他们在其他地方使用的。
您还可以选择不提供密码或密码。他们说这意味着您的数据不会上传到云端,但真正的意思是 AES 密钥永远不会上传到云端。使用此选项,每当您设置新设备时,它都需要能够通过 Internet 与您的其他现有设备之一建立对等连接,并且它们将以这种方式共享 AES 密钥。在共享密钥之前,设备会发出警报,请求许可。就个人而言,这是我使用的选项,因为我的钥匙串数据备份在其他地方,所以我不介意我是否失去对 iCloud 钥匙串的访问权限。
您还必须登录 iCloud 才能访问存储在那里的任何钥匙串,因此还需要 iCloud 密码。然而,这只是一个业务策略,不涉及加密。事实证明,Apple 支持人员的社会工程可以有效地访问某人的 iCloud 帐户,美国法律要求 Apple 也向执法人员提供访问权限。所以基本上我会忽略在访问钥匙串时登录 iCloud 的要求,因为它几乎是一种无用的安全措施。
请注意您的备份过程。如果有人可以访问您的备份,他们就可以访问您的钥匙串,特别是如果您在 iOS 上使用 4 位密码,因为它不能使用硬件密钥派生(您需要能够在没有设备上唯一 ROM 密钥的情况下对其进行解密)。
您是否使用 carbonite/backblaze/Dropbox/iCloud 来备份您的钥匙串?我不会相信任何敏感的东西。如果您使用硬盘驱动器,它会被盗吗?
信用卡实际上并不需要强加密。在使用 ATM 或商店收银机时,任何人都可能偷走您的钱包或为您的卡拍照或浏览磁条,或侵入您的 Sony/adobe/etc 帐户。只要您在发现信用卡被盗后立即报告并密切关注您的交易历史以报告欺诈性交易,那么所有信用卡盗窃都包含在保险范围内并且可以逆转。
就我个人而言,我不经常进行在线支付,所以我不会将我的信用卡存储在钥匙串中。但我认为这是一个非常安全的地方来存放它。不过,我不会将我的网上银行登录信息放在钥匙串中,因为它没有与信用卡相同的保护。