繁体   English   中英

如何使用RFID徽章和PIN码保护访问

[英]How to secure access with RFID Badge and PIN Number

我有一个类似于门锁的场景,需要双因素身份验证才能获得访问权限:

  • 带GUID的RFID徽章
  • 通过键盘输入的4位PIN密码。

我需要在SQL Server 2008中安全地存储它们。我认为可以正常存储GUID,但是应该采取什么方法来保护数据库和整个系统中的PIN?

一个典型的哈希/盐方法是否足以支持4位数PIN?

保护这类系统的正确方法是什么?

编辑

更多信息......最终,这个系统最需要比标准的“门锁”更安全。 用户将使用RFID令牌和PIN码进行身份验证。 在获得对系统的访问权限之后,用户将有机会通过链接到其帐户的信用卡浏览和购买项目(使用第三方网关/保险库服务进行存储)。 这对系统有什么影响?

编辑2

此外,案例是这不是一个基于Web的应用程序。 用户只能从专用工作站访问系统。 然后,工作站将利用Web服务与后端系统/ DB进行通信。 如何将其纳入混合?

我可以使用@Remus建议的系统,其中认证/解密都是RFID卡的功能吗? 然后,工作站将使用经过身份验证的用户ID与后端进行通信。 有没有办法实现这样的系统?

通过在数据库中存储PIN,徽章+ PIN不起作用。 PINS实际上是用于访问徽章加密模块本身的加密密钥。 徽章存储私钥,使用从PIN派生的密钥加密。 身份验证者拥有公钥并使用随机数来挑战徽章。 徽章加密模块本身使用私钥(使用PIN在内部解密)对挑战随机数进行签名,并使用随机数签名进行响应。 然后,验证者使用公钥验证签名,从而验证用户(徽章持有者)。 关键点是:

  • 密码认证是使用公钥/私钥对,强RSA密码术建立的
  • 通过拥有私钥来证明身份,私钥永远不会离开徽章加密模块
  • PIN仅用于解密徽章的私钥。 PIN完全没用,没有徽章的实际拥有权

坦率地说,你建议的方案,存储在数据库中的GUID和PIN是一个笑话。

我认为不是。 如果有人偷了你的数据库,它存储了PIN的盐和哈希值,那么他计算实际的PIN是微不足道的,因为只有10000种组合。

您只能在数据库中存储HMAC(PIN,GUID)列表。 PIN是秘密,GUID是数据。 单独使用HMAC不应允许任何有权访问数据库的人获取GUID或PIN。

如果攻击者窃取了您的一个徽章和整个数据库的GUID,那么使用4位数PIN的所有可能组合计算该GUID的HMAC将很容易,并找到匹配的行。 这个4位数的PIN永远是一个弱点。 在每一行中添加盐会有所帮助,但不是很多。 它只会增加行数所需的计算次数,这仍然会为您提供离线攻击的微不足道的数字。

据我所知,这个系统中最大的弱点是任何攻击者都知道PIN 保证 恰好是 4位数,因此预先计算出的哈希值得。

我想说你可以采取的最佳步骤是:

  • 在计算哈希时肯定使用salt,但不要将salt存储在与哈希相同的位置。
  • 确保对数据库的访问(虚拟和物理)尽可能采用resticted方式
  • 实施某种形式的“PIN策略”以确保定期更改 - 这样,任何成功的违规行为只会在短时间内生效。

编辑:然后,这个系统的弱点可能是你的门的铰链,或JCBs的可访问性......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM