用于存储和检索每用户的数据敏感的.Net设计图案(.Net Design pattern for s

2019-08-19 13:48发布

是否有诸如第三方证书与存储和检索每个用户的敏感信息.NET服务器应用程序的任何参考模式?

我的初步设计思路是沿着线:

  1. 生成自签名的X509证书与适当的坚固的私钥,
  2. 导出证书和密钥,并将它们存储在其上会被锁定在一个百宝箱,并通过守卫龙USB密钥,
  3. 设计我的服务器应用程序请求从窗户当前用户证书存储需求的私有密钥,
  4. 当安装新的服务器上的服务器应用程序获取USB密钥和导入证书,并和标记私钥为不可导出。

我的要求是:

  1. 降低风险,尽可能的用户的敏感信息,如果该存储介质被破坏越来越受到损害。 在我的情况下,存储介质可以是关系数据库或Amazon的SimpleDB,
  2. 降低用户的敏感信息的风险如果.NET服务器的主机操作系统,在这种情况下,窗口的数据中心版,受到损害越来越受到损害。

更新 3忘记提到能够重新键入定期是一个要求,使得同一prviate加密密钥不使用10年。

问题:

  1. 如果主机操作系统被攻破,攻击者可以安装恶意应用程序来执行相同的解密操作为我的.NET服务器。

更新关于OS妥协思考一些我意识到没有什么是可以的,如果一个熟练的攻击者能够访问来完成,但关键应避免不满者管理员,也就是说,它是不是打开一个文件或注册表项提取专用的问题更加键。

我敢肯定,这个问题已经解决了一千次了,不是高兴了链接的答案多,但搜索的“安全加密”型主题为低信号高噪声。

Answer 1:

我不知道对您的.NET服务器应用程序有关的信息安全的任何具体的设计模式 ,但是,最终,你只能做这么多,你从用户请求的任何信息的安全,具体而言, 商店

如果你是存储将用于为自己的应用程序将执行身份验证的用户密码,这个存储的最佳方法是用盐腌的单向散列函数。 通过这种方式,用户将每次与应用程序进行身份验证时手动提供密码,以纯文本格式,你会马上凑是明文密码和比较,与已存储的哈希密码。 任何攻击者,甚至是一个能够访问数据库的原料,就必须蛮力反向工程所有盐渍哈希。 并非不可能(给予足够的计算能力),但在所有的现实肯定不可能的。

如果你存储的用户名/密码,该用户被提供给你,这样你的应用程序就可以使用这些凭据自动“登录到” /代表用户的另一个应用程序或服务“进行身份验证”,好了,我会建议如果该数据的安全性是最重要的,你不这样做。

简单地说,即使你最终加密这些凭据(不管是对称或非对称加密),该数据在某处被使用,要做到这一点,需要对其进行解密。 这是“薄弱环节”安全链可以这么说。

降低用户的敏感信息的风险如果.NET服务器的主机操作系统,在这种情况下,窗口的数据中心版,受到损害越来越受到损害。

如果发生这种情况,全盘皆输。 具有存储加密形式的数据不再意味着什么,因为如果Windows可以解密数据,因此可以将攻击者一旦他进入机器/ OS。 他甚至不需要尝试“出口”私人从Windows证书存储密钥,因为他可以进一步注入了恶意代码下来解密链,简单地拦截解密的数据,因为它出来的解密过程。

当然,保护用户的敏感数据的最好的方式是永远不会保存它。 每一次请求时,它从用户,使用它不管出于什么目的,你需要它,然后立即处置。 在英国, PCI(支付卡行业)数据标准采取这项政策相对于CVV码的信用卡。 商家可以存储信用卡号码,但从未在自己的数据库中的CVV码。

如果必须存储数据,然后通过各种手段对其进行加密,但是要注意,加密并不一定是“安全”的数据,它只是增加了什么有效的是攻击者谁能够有可能损害你的物理机混淆另一层或操作系统。

如果要存储数据,你必须有强劲的周边安全 (即网络安全 ),你都不可能得到的,正是为了防止潜在的攻击者获得对服务器的操作系统。

导出证书和密钥,并将它们存储在其上会被锁定在一个百宝箱,并通过守卫龙USB密钥,

除了作为一个坚固的防火墙,也许IDS系统,你可能希望得到那些小龙之一来保护您的服务器,太! :)



Answer 2:

我不知道最好的解决办法是什么,但是这是我有一些视频游戏的蒸汽尤其是游戏见过。 本场比赛将首先进行身份验证使用通常的私有密钥技术。 然后,游戏将下载的本地运行的脚本。 该脚本将后来不知怎的,检查哪个托管它的可执行文件。 该脚本可以检查可执行文件是相同的游戏或修改。 在比赛开始前的脚本会打电话回家。 如果脚本不给家里打电话,游戏服务器踢出来的游戏。

恶意软件编写者已经以某种方式欺骗脚本,以为其游戏。 每当一个恶意软件被发现,要做到这一点,脚本由开发商改变。 这确保了游戏公司在野生停用恶意软件的能力。

你可以适应类似的技术到应用程序。



Answer 3:

除了建议你自己做一些其他的海报,你可能会考虑分离数据库检索和修改安全性。 如果一个账户被泄露,另一个是安全的。



文章来源: .Net Design pattern for storing and retrieving sensitive per user data