[英]How to secure access with RFID Badge and PIN Number
我有一个类似于门锁的场景,需要双因素身份验证才能获得访问权限:
我需要在SQL Server 2008中安全地存储它们。我认为可以正常存储GUID,但是应该采取什么方法来保护数据库和整个系统中的PIN?
一个典型的哈希/盐方法是否足以支持4位数PIN?
保护这类系统的正确方法是什么?
编辑
更多信息......最终,这个系统最需要比标准的“门锁”更安全。 用户将使用RFID令牌和PIN码进行身份验证。 在获得对系统的访问权限之后,用户将有机会通过链接到其帐户的信用卡浏览和购买项目(使用第三方网关/保险库服务进行存储)。 这对系统有什么影响?
编辑2
此外,案例是这不是一个基于Web的应用程序。 用户只能从专用工作站访问系统。 然后,工作站将利用Web服务与后端系统/ DB进行通信。 如何将其纳入混合?
我可以使用@Remus建议的系统,其中认证/解密都是RFID卡的功能吗? 然后,工作站将使用经过身份验证的用户ID与后端进行通信。 有没有办法实现这样的系统?
通过在数据库中存储PIN,徽章+ PIN不起作用。 PINS实际上是用于访问徽章加密模块本身的加密密钥。 徽章存储私钥,使用从PIN派生的密钥加密。 身份验证者拥有公钥并使用随机数来挑战徽章。 徽章加密模块本身使用私钥(使用PIN在内部解密)对挑战随机数进行签名,并使用随机数签名进行响应。 然后,验证者使用公钥验证签名,从而验证用户(徽章持有者)。 关键点是:
坦率地说,你建议的方案,存储在数据库中的GUID和PIN是一个笑话。
我认为不是。 如果有人偷了你的数据库,它存储了PIN的盐和哈希值,那么他计算实际的PIN是微不足道的,因为只有10000种组合。
您只能在数据库中存储HMAC(PIN,GUID)列表。 PIN是秘密,GUID是数据。 单独使用HMAC不应允许任何有权访问数据库的人获取GUID或PIN。
如果攻击者窃取了您的一个徽章和整个数据库的GUID,那么使用4位数PIN的所有可能组合计算该GUID的HMAC将很容易,并找到匹配的行。 这个4位数的PIN永远是一个弱点。 在每一行中添加盐会有所帮助,但不是很多。 它只会增加行数所需的计算次数,这仍然会为您提供离线攻击的微不足道的数字。
据我所知,这个系统中最大的弱点是任何攻击者都知道PIN 保证 恰好是 4位数,因此预先计算出的哈希值得。
我想说你可以采取的最佳步骤是:
编辑:然后,这个系统的弱点可能是你的门的铰链,或JCBs的可访问性......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.