@scomper

macOS 和 iOS 上的密码管理

2017.11.26

两台设备之间的环境同步里,密码管理是不可分割的部分。例如,软件序列号、网站登录密码、宽带登录密码、代理服务的密码、路由器管理密码、备份的加密密码、虚拟机的登录密码、应用的登录密码、WiFi 密码、两步验证的 OTP 密钥等等,很多密码平时使用中只需要输入一次应用或者系统就能记住,但是如果更换设备这些你可能淡忘的密码就是个麻烦事。

有了密码管理软件,密码的保存策略还要考量,下面的「死循环」可能有人就遇到过:Dropbox 登录密码存储在 1Password,1Password 选择的是 Dropbox 同步,重新安装后 1Password 需要同步才能加载密码库,然后就死循环了。而且国内访问 Dropbox 的前提是科学上网,首先要安装 Surge,如果 Surge 的代理配置恰好也保存在 Dropbox 那就更神奇了,即便走找回密码的流程都不通。

早期密码管理都是集中到 1Password,Apple 推出 iCloud Keychian 之后,系统集成的天然优势使得网页、WiFi 密码的部分都自然从 1Password 中剥离出来,毕竟从使用交互上来说,Safari 内置的密码自动填充和生成方便太多了,结合 iCloud 的同步,MacBook、iOS 设备之间都能无缝的完成登录。苹果发布 iOS11 后,App 密码自动填充的新 API 使得很多 App 的登录也变得和网页一样简单,这种系统层级的优势是第三方应用很难超越的。

密码安全的基本要求是复杂和不重复,然而实际使用中让人头疼的问题不是如何设计复杂密码,或者不同应用使用不同的密码,最重要的需求是密码生成的自动化和填写自动化,这也是密码管理软件最大的作用,初次登录时帮我们生成复杂的密码,以后登录同一个网站是自动填写密码。

iCloud 钥匙串

启用 macOS 和 iOS 系统自带的「钥匙串」,钥匙串是 Apple 原生用来管理密码的应用,iCloud 钥匙串会为你记住 Safari 访问过的网站的用户名和密码、信用卡信息和 Wi-Fi 网络信息。第一次注册某个网站并输入密码时,钥匙串会为你自动生成不同安全等级的密码,下次登录时系统根据账户名自动填充。

通常我们不需要实际关心密码存在哪里,使用 Safari 登录网站的时候,点击密码输入框的时候会自动提示已经存储过的密码,但是遇到某些换了域名或者 App 中嵌入的登录页面时,需要单独查询密码。Mac 上在 Safari 的「偏好设置 - 密码」中查询,iOS 系统在「设置 - 账户和密码 - 应用与网站密码」中查询。

Safari 中记录的网络登录密码其实也是系统「钥匙串」中的一部分,启用 iCloud 钥匙串同步后,在新的电脑中使用同一个 Apple ID 登录,同样启用同步后就能跨设备保持密码的一致,网站登录密码、WiFi 密码都会自行同步。

钥匙串的备份

iCloud 钥匙串的自动同步有利有弊,一方面等于密码数据都存储在云端,所有的设备之间都能共享和使用,另一方面,如果某一个设备上删除密码,所有其他设备上这个密码也会同步消失,比如在 Mac 上忽略或删除一个 WiFi,此时连接这个 WiFi 的 iPhone 会同时掉线。

特别提醒:iOS 设备上「还原所有设置」时务必先从 iCloud 注销,否则密码都会丢失。正确的「还原所有设置」操作应该是先关闭设备的 iCloud,然后再进行还原操作。

如果不小心删除了密码或者 WiFi 密码该怎么办呢?
钥匙串的所有内容会随着系统的 Time Machine 自动备份(没启用 Time Machine 备份就没救了),所以可以使用 Finder 访问钥匙串文件储存的位置 ~/Library/Keychains/手动备份其中的文件。

  1. 首先,确认没有打开「钥匙串」应用,如果打开了先退出;
  2. 打开 Finder,前往 ~/资源库/Keychains 文件夹;点击顶栏的 Time Machine 图标,点击「进入 Time Machine」展开当前文件夹的时光隧道。

向后翻页定位到还原设置之前的时间点,选中钥匙串文件夹中的所有文件,点击「恢复」。恢复过程会提示输入管理员密码,以便向系统文件夹恢复写入文件。

  1. 恢复完成后,到「实用工具」找到并打开「钥匙串」,就能看到已经恢复的所有密码。MacBook 上恢复完成后 iCloud 会自动同步到其他设备。

为了保证密码的安全,强烈建议启用 Time Machine 来自动备份「钥匙串」的数据,或者定期手动定位到钥匙串文件夹手动备份,钥匙串的数据也可以单独使用「钥匙串」应用导入。

1Password 管理密码

iCloud 钥匙串的使用体验很好,但是也有它的局限性,比如浏览器只支持 Safari,不支持第三方的浏览器 Chrome、Firefox,而且网站登录密码、WiFi 密码以外还有很多需要管理和同步的密码,这些密码的管理我们需要 1Password。

1Password 不止能记录网页登录信息,也能记录软件注册码、银行帐户等等几乎所有的你需要保密存储的重要信息,很多以往依靠文本记录的安全信息,也能基于 1Password 丰富的字段定义,清晰完整的进行记录,例如,宽带密码、代理服务的配置、路由器管理密码、DMG 磁盘镜像的加密密码、身份证号等等。

除了记录类型和字段的丰富性,1Password 还具有出色的跨平台性,支持 Mac、iOS 、Windows 和 Andriod 系统,这些都是 iCloud 钥匙串无法覆盖的地方。

1Password 为密码管理提供了不少分类和方便填写的字段,主要分为 4 类:

  • 可以自动填写的登录密码,浏览器里输入的登录信息,这一部分和「钥匙串」有交集;
  • 备注信息类的安全记录,例如:银行卡、电子邮箱账户、文本、身份许可等;
  • 密码,OTP(One-Time Password)密码,一次性密码又称动态密码,如 Dropbox、Google、Msn、IFTTT 等启用两步验证后的验证手段;
  • 软件许可,软件的序列号或者授权文件。

iCloud 钥匙串的密码管理架构中只要记住系统登录密码就可以,如果在「用户与群组」管理中还勾选了「启用允许用户使用 Apple ID 重设密码」,等于多了一重保障。1Password 的密码集中管理模式使用「主密码」作为入口,这个主密码需要牢记,一旦丢失将无法再打开 1Password 的密码库。

作为一款跨平台的密码管理软件,1Password 的使用逻辑其实很简单,它是个小型的数据库,通过丰富的字段和细致的分类帮我们记录各种密码和需要安全存储的信息,我们既可以登录 1Password 后按照传统的方式填写增加记录,也能借助 1Password 的辅助工具 1Password mini 和浏览器的 1Password 扩展实现了记录采集和填写的自动化。


为了让 1Password 更方便使用,偏好设置中有几个地方需要调整一下:

  • 启用 1Password mini,1Password 的很多功能需要借助常驻后台的 mini 来实现,例如,通过快捷键(⌥⌘\)激活查询窗口,或者 ⌘\ 在网页中自动填写;
  • 安全设置中,勾选上睡眠时锁定,去掉自动锁定的勾选。这样离开电脑前合盖或者利用屏幕角快速休眠(系统偏好设置-Mission Control -设定触发角)保证安全,而使用电脑的时候又不至于隔段时间就要输入密码来解锁 1Password;
  • 同步保存库文件到 iCloud 而不是 Dropbox,前者不需要科学上网就能访问;
  • 给 Safari、Chrome 等常用的浏览器都安装上扩展,同时 1Password 中启用「检测新用户建议保存」。

管理登录信息

网站登录密码是 1Password 和钥匙串功能重叠的部分,不同的是 1Password 需要安装浏览器扩展或 mini 来实现登录信息的自动化。

1Password 和钥匙串两者都起作用是否必要?又该如何协调它们之间的关系呢?
平时的使用依旧还是以钥匙串为主,安装 1Password 只是为了多一个登录信息的备份渠道,而且 1Password 扩展也不会影响实际的使用。无论是登录新的网站生成新的密码,还是登录保存过的网站都是以系统的密码管理为主,1Password 此时的角色像个旁观者。

  • 首先,由软件生成的复杂密码只能依靠软件来记录和输入,有个备份方案来保存这些信息是很有必要的;
  • 其次,iCloud 钥匙串的同步和 1Password 的密码库的同步工作模式不一样,很多时候 1Password 的数据同步更实时,对于多台设备间的穿插使用这一点尤为重要;
  • 最后,如果经常需要在 Safari、Chrome 多个浏览器之间切换,不依靠 1Password 来同步登录的密码数据使用中会很别扭,遇到新的网站时每一次都需要先到 Safari 的密码里查询密码,然后复制到 Chrome。

如果安装了 Safari 的 1Password 扩展,密码在钥匙串和 1Password之间统一就简单很多,虽说 1Password 网站也提供了导入钥匙串的命令行工具,但是那绝对不是一般人能顺利使用的,步骤繁琐而且还涉及到脚本使用。

理论上,我们不需要钥匙串中的登录信息完全和 1Password 同步,因为使用的时机、安装软件的先后、使用浏览器的偏好等等因素都会形成一个必然两者会不同的事实,同时也不需要刻意的批量导出数据进行同步,活跃的登录数据和会形成交集的并不多。只需要登录的时候遇到存在差异互相备份就可以了,不断积累的密码库里面大部分的记录会随着时间沉寂的。

登录一个钥匙串中已经记录而 1Password 没有记录的网站时,只需要点开 1Password 扩展的图标 ,等出现 1Password 的快捷输入界面后 ⌘N 就能保存登录信息。更新已有的登录信息采用的方式一样。(点开 1Password 界面后才能 ⌘N 新建,否则激活的是 Safari 的新建页面)

反之,如果 1Password 中已经保存了登录信息而钥匙串中还没有时,使用 1Password 的快捷键 ⌘\ 快速输入后直接登录即可,Safari 会提示是否将密码存储到 iCloud 钥匙串,选择「存储密码」就记录到系统之中。

用这种即需即同步的方式,逐步统一活跃数据比倒腾两个不同体系的数据库更实用和简单,毕竟存在差异并且需要在 Safari、Chrome 两边都登录的网站并不多。

备注类文本记录

备忘录形式的密码记录管理是对 1Password 形成依赖的另一个原因,而且很多时候这些信息主要的目的就是备查用的。例如,银行卡信息,银行卡查询取款密码、宽带帐号密码、家人的身份证信息、路由器管理密码等等。

1Password 不同类别的记录页面只是预置字段上的差别,记录方式都是一样的,字段名称可以自定义,点击字段右侧的 ... 选择字段属性(文本、URL、邮件、日期 ……)。

附件记录是 1Password 里很实用的一种方式,不仅可以附加授权证书文件,还可以放图片,例如记录身份证信息时就可以只添加身份证正反面的照片,点击照片会调用预览快速查看。

OTP 密码

1Password 中还有一个被很多人忽视的功能,OTP 也就是一次性密码管理,Google、Dropbox、IFTTT 这些服务启用两步验证后都需要用到一次性密码。登录时输入 OTP 软件中动态显示的验证数字才能完成安全登录。

以 Google 为例,首先需要在 Google 的帐号页面设置「身份验证器」①,选择你安装 OTP 软件的平台②(Mac 和 iPhone 都可以选 iPhone),然后获取身份验证器的密钥 ③。我们需要在 OTP 软件中输入密钥才能为对应的软件添加好一次性密码。

第二步之后默认会显示一个供扫描的二维码,如果是 iPhone 上的 1Password,直接打开添加密码类记录,字段中选择 OTP 属性和直接扫描就可以,Mac 版的 1Password 无法二维码输入,所以我们选择「无法扫描条形码」,采用复制数值的方式也一样。

打开 iPhone 或 Mac 上的 1Password,新建密码类的记录,改变字段属性为「一次性密码」④,将第三步获得的密钥粘贴在这里保存。保存后就会看到 OTP 动态生成的密码 ⑥。回到 Google 的页面输入 6 位的验证码 ⑦,整个添加过程就完成了。以后在新的设备上登录 Google 帐号时,如果提示需要输入验证码,打开你的 1Password 输入 Google 的 OTP 6位数字就好。

1Password 支持 Apple Watch,在 iOS 的 1Password 的设置里启用 Apple Watch,随后在「整理 - Apple Watch」中添加需要在 Apple Watch 的 1Password 中显示的密码项就可以。我把 OTP 的几项都加到了 Apple Watch 里,这样需要输入一次性密码的时候抬手腕就行。

--「壹页单章」会员计划 --

Comments
Write a Comment