- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
SecOps 人员免责声明:我是这方面的业余爱好者。我可能误解了什么。如果是这样,请指教:)
我正在我的应用程序中使用 Keychain/KeychainItemWrapper 进行一些工作。我想以安全的方式存储用户的密码,钥匙串(keychain)似乎就是实现这一点的方法。
但是,我有点困惑。我认为基本的密码安全性(以 unix crypt()
为模型)是这样的:
但是,使用 KeychainItemWrapper(也许是整个 Keychain API?)似乎是为了将密码以纯文本形式返回给程序。然而,这不是没有安全感吗?未加密的密码只是保存在内存中,等待有人读取,对吗?
问题:考虑到我对安全性的上述担忧以及我的程序实际上不需要知道加密值的事实,在钥匙串(keychain)中存储密码的最佳模式是什么?或者我的担心是没有根据的,我应该停止担心并学会喜欢钥匙串(keychain)给我的(未加密的)密码?
最佳答案
您混淆了两个概念(散列与加密)。
当您需要验证某人是否知道密码时,您可以对其进行散列(带盐)并存储该散列。然后,当有人尝试以该用户身份进行身份验证时,您会要求他们提供密码,使用相同的盐对其进行哈希处理,然后与存储的值进行比较。这是理想的,因为散列是一种单向/不可逆的函数。因此,如果有人访问您的凭证存储,他们将一无所获,因为他们需要破解该哈希(并且像 crypt/bcrypt 这样的现代算法是专门为使暴力破解变得非常困难而设计的)。
但是,如果您需要能够实际恢复明文密码,则需要对密码进行加密而不是对其进行哈希处理。与加密散列不同,加密是可逆的,假设您知道 key 。
钥匙串(keychain)会加密您存储在其中的任何内容,并假设您需要在某个时候恢复实际数据(例如,如果我将我的 Facebook 密码放入钥匙串(keychain)中,它将能够解密并提供实际密码,当我需要使用它来访问 Facebook 时)。钥匙串(keychain)旨在加密存储这些 secret 值,以便当您需要实际恢复原始值时可以。
关于cocoa - 使用钥匙串(keychain)本质上是不安全的(取回元素时?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9473900/
我了解了 NodeJS 的非阻塞特性,以及 I/O 操作如何实现非阻塞。我创建了一个简单的测试来证明这一点 var request = require('request'); var http = r
我是一名优秀的程序员,十分优秀!