个人身份验证

时间:2011-08-12 23:12:08

标签: security public-key-encryption

我正在尝试实施双因素身份验证(您持有的令牌,您知道的密码)。

http://en.wikipedia.org/wiki/Security_token列出了许多昂贵的解决方案。我需要:

  • 强加密。
  • 能够以编程方式重置令牌上的私钥(多次,如果令牌很贵)并读取新私钥。
  • 加密短字符串(20个字符或更少)的能力。我相信这意味着计算能力可能非常低。
  • 便宜的东西。如果可能的话,我想将这些代币发送给普通消费者(想想VISA)。

我不需要:

  • 防止对令牌的物理攻击(我认为这超出了普通攻击者的技能)。
  • 远程终止令牌。
  • 除了私钥外,还要存储令牌上的任何数据。
  • 与时间相关的令牌(因为担心它们会失去同步)。

我打算做以下事情:

  • 用户将令牌插入PC。
  • 用户在键盘上输入密码。
  • 令牌使用私钥加密密码。
  • 应用程序通过网络发送结果。
  • 服务器使用令牌的公钥解密密码。如果密码匹配,我让用户进入。

我需要让普通程序员/黑客很难从令牌中读取私钥。我有什么选择?如果你认为我设置的标准太低,你有什么建议?

2 个答案:

答案 0 :(得分:0)

“服务器使用令牌的公钥解密密码”

这没有意义。公钥的重点在于可以公开而不会损害系统的安全性。也许您的意思是令牌包含公钥,服务器存储与该令牌对应的私钥?

安全令牌通常不会以您描述的方式使用。它们通常用作单点登录(SSO)设备。令牌生成与时间相关的伪随机数。在大多数情况下,生成的数量每30秒左右就会发生变化。服务器配置了令牌的随机种子,因此它可以生成相同的数字进行验证。

编辑:根据您的评论,这是我的新建议:

  • 令牌或客户端应用程序上的公钥

  • 服务器上的相应私钥

  • 如果读取公钥并不重要,因为公钥的知识无助于猜测私钥

  • 如有必要,请按计划的时间间隔更改密钥

答案 1 :(得分:0)

如果观众是消费者,那么他们使用的电脑很可能会以某种方式被感染 - 病毒/键盘记录器......

如果有可能,那么整个方案因使用PC键盘而变得有风险......

抛开这些顾虑:
您可以运行自己的“CA”并生成客户端证书 - 这些可以放在任何地方(USB棒......),应用程序可以使用它们来验证用户 - 只需使用密码作为密码等 - 美丽的这是:例如,您可以撤销证书等。

另一点:
根据应用程序与服务器通信的方式,您可以使用此方案进行SSL连接... SSL标准不仅包含通过客户端证书验证服务器而且还包含客户端的选项......

修改

任何便宜的东西都可以阅读 - 智能卡会更好但是它们不是很便宜而且PC需要额外的硬件来处理它们......

安全但不便宜的选择:
如果你想要一些安全的东西,那么你需要一个带键盘的外置智能卡读卡器,以便通过PC键盘输入任何敏感信息 - 但这并不便宜......

另一种选择(更便宜但仍然安全):
使用移动设备作为第二个频道,他们登录到您的应用程序 - 该应用程序与服务器联系,服务器生成一些独特且有时间限制的代码,并通过短信发送到他们的移动设备,他们需要输入该代码才能完成登录过程。 。