V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
justaname
V2EX  ›  iCloud

关于 iCloud 钥匙串

  •  
  •   justaname · 2021-11-23 16:11:01 +08:00 · 2356 次点击
    这是一个创建于 857 天前的主题,其中的信息可能已经有所发展或是发生改变。
    钥匙串是加密存在 iCloud 上的,但重点是 用来加密钥匙串的密钥是存在可信任设备上的,不是在 iCloud 上的!

    解锁 iCloud 钥匙串需要任意可信任设备+可信任设备上的 passcode (对手机来说就是锁屏密码)。这意味着你如果把手机 A 抹去了当然是不可能通过手机 A 原来的 passcode 解锁的(因为手机 A 和 iCloud 相关联的密码学信息包括锁屏密码已经被完全抹去了),这时候只能通过其他已信任设备进行解锁。

    这样一来也解释了另外一个问题,就是当你把所有可信任设备移除之后 iCloud 钥匙串会自动删除,因为跟 iCloud 钥匙串相关联的所有解密密钥全部被删除了,继续保留 iCloud 钥匙串也没有任何意义。

    结论:Apple 的逻辑是 iCloud 钥匙串本质是用来同步的,并不是拿来备份的,当你失去所有访问本地钥匙串的手段(即设备+解锁密码)时,iCloud 钥匙串没有任何方式访问(不管 iCloud 钥匙串有没有实际被删除)。

    但这里有一点问题在于,如果本地恢复钥匙串时并不需要另一台已信任设备在线并提供验证,而只需要提供 passcode ,所以设备捆绑的私钥多半服务器是有备份的,这也意味着 Apple 原则上是有能力直接从 iCloud 中恢复钥匙串信息的
    15 条回复    2021-11-23 18:38:37 +08:00
    YuiTH
        1
    YuiTH  
       2021-11-23 16:30:16 +08:00
    为什么不能是 passcode 作为密钥加密服务器上备份的私钥呢。
    justaname
        2
    justaname  
    OP
       2021-11-23 16:34:41 +08:00
    @YuiTH 因为 passcode 搜索空间太小了呀,主流也就 6 位吧,穷居一下瞬间就解锁了吧
    Leonard
        3
    Leonard  
       2021-11-23 16:41:15 +08:00
    理论上无论私钥有没有服务器备份,Apple 从技术上来说都有能力获取你保存的任何信息,毕竟 Apple 不开源,你不知道他在操作系统里做了什么。如果没有实锤,质疑第一方厂商本质上没有任何意义。
    justaname
        4
    justaname  
    OP
       2021-11-23 17:00:01 +08:00
    @Leonard 如果可以仅通过 passcode 来 recover 数据的话必然意味着 iCloud 可以直接恢复数据,我写这个并不是质疑什么,也并不是很在意 apple 究竟“原则上”能不能看到。只是希望给一部分不理解 iCloud 钥匙串机制的人解答一下,因为很多人对 iCloud 钥匙串为什么会消失以及为什么要求提供以前以前设备的 passcode 感到迷惑
    gps949
        5
    gps949  
       2021-11-23 17:05:33 +08:00
    这背后机制苹果有公开吗?可能可行的密钥管理模式有很多种,随便举其中一种例子如下:
    最初:对每个 icloud 账户生成一个密钥对作为主密钥,并将私钥用账户口令运算加密。
    钥匙串存储:每次本地钥匙串上云时都在本地用主密钥公钥加密上传一份。
    钥匙串使用:主密钥私钥的密文会在登录时根据 icloud 账户名申请取回,并采用二次认证 PIN (那个弹出框或短信验证码等)做随机化防重放保护,再在本地使用二次认证 PIN 和口令才能解密(在安全芯片内)。同时在安全芯片内生成设备密钥对,使用设备公钥加密主密钥私钥(产生设备版主密钥私钥密文),设备私钥在安全芯片内被设备 PIN (即你说的 passcode )或生物识别保护。在使用钥匙串时,用设备 PIN 或生物特征解锁安全芯片使用设备私钥解锁设备版主密钥密文,并用解出的主密钥私钥解锁钥匙串密文。

    当然以上只是随便瞎想的一个例子,不一定是真实情况也肯定有纰漏,但我想苹果工程师整个还算安全的版本应该问题不大。
    Leonard
        6
    Leonard  
       2021-11-23 17:36:52 +08:00
    看到一篇讲这个的,说实话没太明白,不知道对不对:
    http://zixun.cmen.cc/zixun/202102/6848.html
    justaname
        7
    justaname  
    OP
       2021-11-23 17:37:15 +08:00
    @gps949 苹果声称使用的加密方案是 end-to-end 的,并且在 iCloud 上是无法解锁的。从实际的行为来看需要本地设备密钥+passcode 联合才能访问到 iCloud 中的钥匙串,我觉得安全性应该是有保障的。

    不过这跟很多密码软件云上保存的密码库通过默认安全且无法破解的主密码进行访问在设计上差异很大。苹果更多的依赖所谓的本地可信任设备+passcode 来保证秘密信息的安全性,并没有一个很强的主密码来保护密码库。这也意味着不能把 iCloud 钥匙串当作备份或者中心服务器来使用,其作用仅限于同步,本地失效则云失效。如果按照 Lastpass/1Password 的思路进行管理就很容易掉坑里
    justaname
        9
    justaname  
    OP
       2021-11-23 17:39:59 +08:00
    @Leonard 这文章是机翻的吧,感觉和我说的差不多一个意思,本质上来说 iCloud 并不“存储”密码,只用来同步端到端数据
    Borden
        11
    Borden  
       2021-11-23 17:50:02 +08:00 via iPhone
    我并不在意 passcode 存在 iCloud 上,我只在意是否存在云上贵州,而我觉得这是肯定的,如果是国内账号的话。
    dingwen07
        12
    dingwen07  
       2021-11-23 17:54:14 +08:00 via iPhone
    根据这两篇文章,我想到了一个更有趣的东西:只要开启了 iCloud 钥匙串,苹果是不是可以知道你的 iPhone 设备密码?通过不断地尝试密码来解密云端存储的 iCloud钥匙串。
    justaname
        13
    justaname  
    OP
       2021-11-23 17:56:23 +08:00
    @dingwen07 谢谢,这篇文章解释了 Apple 使用 passcode 取回加密信息的安全验证机制
    justaname
        14
    justaname  
    OP
       2021-11-23 17:58:28 +08:00
    @dingwen07 按照这篇文章的说法,Apple 自己的验证设备会在第十次验证失败之后根据硬件逻辑抹除存档从而规避暴力破解,但我想如果有强力机关依法要求 Apple 或者云上贵州解密这种情况下应该也是可以解密的,不过作为个人用户并不是太在意这一点,绝密信息也不应该上 iCloud
    dingwen07
        15
    dingwen07  
       2021-11-23 18:38:37 +08:00 via iPhone
    @justaname #14 关键是 Apple 似乎可以直接获取到你的设备密码,然后就可以解锁你的手机了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2834 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 14:53 · PVG 22:53 · LAX 07:53 · JFK 10:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.