钥匙串

钥匙串（英文：Keychain）是苹果公司Mac OS中的密码管理系统。它在Mac OS 8.6中被导入，并且包括在了所有后续的Mac OS版本中，包括Mac OS X。一个钥匙串可以包含多种类型的数据：密码（包括网站，FTP服务器，SSH帐户，网络共享，无线网络，群组软件，加密磁盘映像等），私钥，电子证书和加密笔记等。

存储与访问
在Mac OS X中，钥匙串文件储存在~/Library/Keychains/，/Library/Keychains/以及/Network/Library/Keychains/中，钥匙串访问GUI程序则位于/Applications/Utilities/（“应用程序”下的“实用工具”）中。它是一个在APSL协议下发布的自由软件。

钥匙串文件存储了包括标题，URL，注释以及密码等多种信息。除了使用钥匙串访问建立的加密笔记外，只有密码被使用3DES加密 。加密笔记的内容也是加密的。

加锁与解锁
默认钥匙串文件是login钥匙串，通常在登陆时使用用户登陆密码解锁，但该钥匙串的密码可以不同于用户登陆密码，通过牺牲部分便利性来提供更强的安全性。钥匙串访问程序不允许为钥匙串设置空密码。

钥匙串可以被设为在计算机闲置一定时间后自动“加锁”，亦可通过钥匙串访问程序手动加锁。如果钥匙串已被加锁，则访问钥匙串需要再次输入密码以解锁之。以新文件覆盖~/Library/Keychains/中的文件（例如，恢复操作的一部分）也会导致钥匙串被锁住。

密码同步
若login钥匙串被登陆密码所保护（即二者密码相同），则当登陆密码在Mac OS X中被更改时该钥匙串密码也会被更改。然而，在共享的Mac或非Mac局域网中，若从非Mac系统中更改用户登陆密码，则存在两个密码不同步的可能。某些网络管理员通过在登出时删除钥匙串文件，以在用户下次登陆时创建新的钥匙串文件来解决这个问题。这代表钥匙串中存储的密码也会在登出时丢失，即使没有改变登陆密码。如果发生了这种事情，用户可以从备份中恢复~/Library/Keychains/中的钥匙串文件，但如前所述，该操作会导致钥匙串被锁住，并可能需要重新解锁。

钥匙串访问

钥匙串访问（Keychain Access）是一个Mac OS X应用程序，它允许用户访问和配置钥匙串的内容（包括网站，FTP服务器，SSH帐户，网络共享，无线网络，群组软件，加密磁盘映像等内容的密码等），加锁或解锁钥匙串，显示系统存储的密码，管理根证书，密钥和加密笔记。

它的图形用户界面显示了多种类型的钥匙串（通常至少包括两个，“登陆”和“系统”钥匙串），也包括可以修复钥匙串问题的钥匙串急救工具。有数种可能造成钥匙串错误的原因，有时唯一的解决方案即是删除旧的并建立一新的钥匙串，也删除了旧有钥匙串存储的所有密码。

通常可以在“应用程序”文件夹的“实用工具”中找到钥匙串访问。作为Mac OS X自带程序，它可以通过软件升级来升级，因此不应该从实用工具文件夹中移出。也有一个称为“security”的访问钥匙串的命令行工具。

历史
钥匙串最初为Apple的e-mail系统，PowerTalk，所开发。Powertalk的特性包括使用插件以允许从很多类型的邮件服务器和在线服务中收取邮件。从这里自然的产生了钥匙串的概念，并用于管理PowerTalk中用户用于登陆Powertalk支持的各类系统的各种登陆信息。钥匙串将这些密码置于一个加密文件中，并在文件被一个密码所“打开”后根据命令自动的返回密码。

由于这些密码被加密，因此并不容易被破解，而其接口的简易性允许用户可以选择用于不同系统的不同密码而不必担心忘记它们，因为只需要一个密码就可以打开钥匙串文件并取得所有的密码。当时这的确是一个创新性的概念，在其它平台上并没有类似的实现。钥匙串是Powertalk中几个很有用的原创特性之一，因此被建议成为Mac OS的一部分。但由于内部政策的原因，它被限制在了Powertalk系统内部，因此只有少数Mac用户可以利用它。

直到史蒂夫·乔布斯回归苹果，钥匙串才被从现在已经废弃的PowerTalk系统中解放出来。此时这个概念已经相对普遍了，但仍然难以见到一个没有被限制在某一特定应用程序（主要是网络浏览器）上的类似钥匙串的系统。钥匙串成为了Mac OS 9的一个标准部分，并被包括在Mac OS X的第一个商业版本中。

第三方程序对钥匙串的使用状况多少有些不均衡。虽然大多数苹果软件使用了这一特性（例如Safari和Apple Mail），而且只支持Mac的应用程序，如Transmit和Camino，一些跨平台程序，例如Firefox，并没有使用钥匙串，而是使用其它的跨平台解决方案作为替代，而Google Chrome则选择在Mac OS X平台下使用钥匙串。许多程序继续将它们的登陆信息存储在普通文本文件中，虽然新程序已经很少这么做了。Subversion命令行终端在最近的版本中选择在Mac OS X上使用钥匙串。

备注

参见

钥匙串访问

外部链接
钥匙串服务编程指南

Mac OS软件
MacOS軟體
密码管理器