Passwords IM如何安全地记住密码?

Passwords IM如何安全地记住密码?,passwords,security,Passwords,Security,msn messenger和其他人如何提供一种方法来记住磁盘上的密码,然后将其发送到服务器以便稍后进行身份验证? 我搜索了这个主题,找到了一些解决方案,比如BCrypt。但是,它存储哈希值,我无法将其发送到服务器进行身份验证。 其他人建议不要保存,但这不太实际,因为每次我的应用程序启动时,我都必须要求用户输入密码,这非常烦人他们要么未加密保存密码,要么使用对称加密保存密码,要么将密码散列保存并以相同的方式发送到服务器,而不管实际密码是什么 编辑:对这个答案的评论当然是正确的。存储和发送散列肯定不

msn messenger和其他人如何提供一种方法来记住磁盘上的密码,然后将其发送到服务器以便稍后进行身份验证? 我搜索了这个主题,找到了一些解决方案,比如BCrypt。但是,它存储哈希值,我无法将其发送到服务器进行身份验证。
其他人建议不要保存,但这不太实际,因为每次我的应用程序启动时,我都必须要求用户输入密码,这非常烦人

他们要么未加密保存密码,要么使用对称加密保存密码,要么将密码散列保存并以相同的方式发送到服务器,而不管实际密码是什么


编辑:对这个答案的评论当然是正确的。存储和发送散列肯定不是这样做的。感谢您的更正。

您使用应用程序中硬编码的“秘密”双向密钥加密密码


是的,您的程序可以进行反向工程(有各种难度,但决不是不可能)来发现内部密钥。这是没有办法的。

通常本地存储的密码都是加密的,这使得黑客更难破解。。。然而,由于解密的密钥在同一台机器(IM内部)中,因此这种加密永远不会是防弹的。

您并没有说您要问的是哪个系统。MacOSX提供了处理这种秘密存储的方法。谈论Windows的等价物。

你不能

准确地说,您不能编写一个程序,该程序直接将密码安全地写入磁盘,然后在不要求任何外部输入的情况下继续提取密码。如果你的程序能做到这一点,那么另一个程序也能做到。沿着这些思路,您所能期望的最好结果就是模糊处理

在限制性更强的情况下(智能卡?TPM?是否存在一个集中的“钥匙链”?),您可以做一些您可能无法假设的聪明事情


我的意见是:这没什么大不了的。绝对应该有一个不为公共机器保存密码的选项,但否则您也可以将它们存储在纯文本中。也许你会用一些琐碎的方式混淆它,这样攻击者至少需要知道他们在做什么,但做大量的工作是没有意义的。

只要在客户端应用程序中以与在服务器上相同的方式散列它,就可以消除以这种方式发送实际密码的需要

显然,发送时必须再次散列,否则散列将成为密码,但您可以在服务器上执行同样的操作。在身份验证消息中使用一些随机令牌

添加内容这并不像评论所说的那么难:

如果您将原始密码(明文)与MAC地址、电子邮件地址、用户名或任何可以在服务器上复制的内容连接在一起,那么您就是在添加密码并存储相对安全的哈希


在进行身份验证时,您不只是发送此哈希,因为这将完全违背哈希过程的目的,而是随机生成一个nonce,并在再次哈希之前将其与第一个哈希连接起来。然后在服务器上,您得到nonce和新的散列,您使用它来验证服务器端散列,从而验证最初输入的明文密码,而不存储或传输它。

简而言之,它没有。根据软件的不同,它可能会加密磁盘上的密码。我认为firefox使用保存的密码做了类似的事情。但是,这只会混淆密码。由于程序还必须将加密密钥存储在磁盘上,因此可以找到并使用它来解密密码

此问题有两种可能的解决方案:

  • 第一种方法是简单地要求用户输入密码。钥匙链类型的程序通常在释放存储的密码之前要求用户输入密码。因此,用户的密码可用于加密密码文件。此系统的好处是,可以使用单个密码来拒绝系统中的所有其他密码(而不是让用户记住每个密码)

  • 第二种是使用大多数现代商用计算机(尤其是笔记本电脑)中的TPM安全芯片。这是一种硬件设备,理论上允许您安全地存储加密密钥。这样,您就可以安全地存储加密密钥。然而,您必须依赖硬件设备以及整个软件基础设施来支持它(我不相信您不能只使用它)


您选择如何解决此问题取决于您试图做什么。如果您正在编写一个messenger客户端,那么使用某种简单的加密方式保存密码,并使用存储在别处的加密密钥,可能就可以了。根据您使用的平台,应该有用于此的库。如果您正在为HBI数据开发某种类型的数据保险库,您将希望找到使用TPM芯片的方法。如果您的平台有某种类型的keyring应用程序,如果可能的话,您可能会想使用它。

我不知道特定IM客户端使用的是什么,但如果是我,我会使用。这样,密码永远不会通过网络发送

msn messenger和其他人如何提供一种方法来记住磁盘上的密码,然后将其发送到服务器以便稍后进行身份验证

他们加密它,存储它,然后在加载时解密它。正确操作的程序将用于将密钥绑定到Windows用户的登录。(这是以前使用“受保护存储”完成的。)


这仍然是不“安全”的,就像你可以作为那个用户登录一样,没有什么可以阻止你解密它。但与普通的将“秘密”密钥单独内置到应用程序中的方法相比,它至少降低了风险。

我认为发送散列不起作用,否则它不是散列,只是一个辅助密码。p