使用硬件加密设备是否有正当理由(例如USB 加密狗/密钥库)优于使用软件库吗?
-
05-07-2019 - |
题
如果您的应用程序需要加密/解密数据(出于各种原因),您是否有任何理由使用硬件设备(例如USB 加密设备(例如 Marx CryptoBox)而不是使用软件加密库(例如 .net Cryptography 或编写您自己的)并将密钥保存在安全的密钥存储中?
我正在寻找对此事的一些客观看法。
为了缩小所提出的问题的范围: 如果使用 USB 加密狗的系统位于物理安全的服务器库中并且仅存在一个系统(即,它不是一个在许多桌面上分发和运行的软件产品)?简而言之,上述系统的目的是验证(解密和比较)传入的加密数据。
到目前为止,感谢您的精彩回答!
解决方案
这并不是什么更安全的问题,因为没有什么是 100% 防弹的。这是一个关于“如何让它尽可能困难”的问题
从这一点你就可以看出:如果您将密钥存储在计算机上,则它们 24/7 都在那里。如果我的一对密钥位于外部设备上,则只有在连接到设备时才能访问这些密钥。==> 您可以减少其他人复制您的密钥的时间。如果不需要物理访问,则访问某些内容会容易得多。
想想网上银行:许多银行添加了“外部”身份验证方式,例如 Tan / Tac /tanSMS/ tokengenerators 等。ETC。这些本身都不安全:我可以窃取你的登录密码,我可以窃取你的手机,我可以窃取你的 Tac/Tan 列表等等。但我一次窃取所有必要元素的可能性非常低 => 拼图的所有部分一起创建一个非常安全的解决方案。
还要考虑这些因素:
- 钱:您真的需要为 100 美元的应用程序提供 70 美元的基于代币的保护吗?
- 时间:我想说基于软件的系统更快
- 关联:为我的应用程序提供如此复杂的保护系统是否有意义
其他提示
硬件密钥允许用于将软件的使用限制在插入密钥的计算机上。
通过软件加密,可以更轻松地将软件复制到多台计算机并多次并行运行。
我认为这取决于您的应用程序的目的/用途。如果您正在开发满足高安全性需求的产品,例如银行或政府,那么为您的解决方案添加硬件可能是完全合适的。您必须考虑硬件解决方案将为项目添加的额外成本。不仅在初始开发中,而且在开发完成后需要的持续硬件维护成本。从我的角度来看,过去曾经从事银行业务,我们认为硬件解决方案非常非常少,因此需要额外的成本。