KEYCHAIN文件由Apple Keychain创建,Apple Keychain是一个与Mac OS X捆绑在一起的程序,用于存储身份验证信息。它包含加密的资源验证数据集合,例如密码,证书和私钥。
KEYCHAIN 文件由 Apple Keychain 创建,Apple Keychain 是一个与 Mac OS X 捆绑在一起的程序,用于存储身份验证信息。它包含加密的资源验证数据集合,例如密码,证书和私钥。
KEYCHAIN 文件用于在用户检查了记住身份验证信息的选项后自动对用户进行身份验证。它们用于网站,SSH 帐户,FTP 文件和无线网络。
login.keychain – 包含密码,网站登录,可信任身份,开发人员证书和其他密钥的全局用户密钥链。它位于〜/ Library / Keychains /目录中。
根据苹果的介绍,iOS 设备中的 Keychain 是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。苹果自己用 keychain 来保存 Wi-Fi 网络密码,VPN 凭证等等。它是一个 sqlite 数据库,位于/private/var/Keychains/keychain-2.db,其保存的所有数据都是加密过的。
开发者通常会希望能够利用操作系统提供的功能来保存凭证(credentials)而不是把它们(凭证)保存到 NSUserDefaults,plist 文件等地方。保存这些数据的原因是开发者不想用户每次都要登录,因此会把认证信息保存到设备上的某个地方并且在用户再次打开应用的时候用这些数据自动登录。Keychain 的信息是存在于每个应用(app)的沙盒之外的。
从 Keychain 中导出数据的最流行工具是 ptoomey3 的 Keychain dumper。其 github 地址位于此。现在到这个地址把它下载下来。然后解压 zip 文件。在解压的文件夹内,我们感兴趣的文件是 keychain_dumper 这个二进制文件。一个应用能够访问的 keychain 数据是通过其 entitlements 文件指定的。keychain_dumper 使用一个自签名文件,带有一个*通配符的 entitlments,因此它能够访问 keychain 中的所有条目。 当然,也有其他方法来使得所有 keychain 信息都被授权,比如用一个包含所有访问组(access group)的 entitlements 文件,或者使用一个特定的访问组(access group)使得能够访问所有的 keychain 数据。 例如,工具 Keychain-viewer 就使用如下的 entitlements.
虽然 keychain 也容易被破解,不过比 NSUserDefaults 和 plist 安全得多,只要我们注意不要在 keychain 中保存明文密码就会在很大程度上提升安全性。