【发布时间】:2011-10-06 15:52:10
【问题描述】:
我有一个类似于门锁的场景,需要双重身份验证才能获得访问权限:
- 带有 GUID 的 RFID 徽章
- 通过键盘输入的 4 位 PIN 密码。
我需要将这些安全地存储在 SQL Server 2008 中。我认为可以正常存储 GUID,但是应该采取什么方法来保护数据库和整个系统中的 PIN?
对于 4 位 PIN,典型的哈希/盐方法是否足够?
保护此类系统的正确方法是什么?
编辑
更多信息...最终,这个系统很可能需要比标准的“门锁”更安全。用户将使用 RFID 令牌和 PIN 码进行身份验证。在获得对系统的访问权后,用户将有机会通过链接到其帐户的信用卡(使用 3rd 方网关/保险库服务进行存储)浏览和购买物品。这会对系统产生什么影响?
编辑 2
此外,情况是这不会是一个基于网络的应用程序。用户只能从专用工作站访问系统。然后,工作站将利用 Web 服务与后端系统/数据库进行通信。我怎样才能把这个因素考虑进去?
我可以使用下面@Remus 建议的系统,其中身份验证/解密都是 RFID 卡的功能吗?然后,工作站将使用经过身份验证的用户 ID 与后端通信。有没有办法实现这样的系统?
【问题讨论】:
-
您认为 GUID 应该“以明文形式”存储的理由是什么?
-
@EricLippert 不能代表 OP,但我的理由是,如果它可以被 RFID 阅读器读取,那么让它在数据库上“更安全”就是通过默默无闻来确保安全。跨度>
-
@Widor:我明白你的意思。这是我的担忧。深度防御是关于保护系统免受许多不同的攻击。我担心的攻击是数据库——而不是其他东西——被破坏了,现在攻击者有一个有效 GUID 的完整列表。然后,攻击者可以为自己构建任意数量的克隆有效卡,然后尝试破坏与 任何张卡关联的 PIN。
标签: c# .net sql-server security sql-server-2008