C# 企业数据
我们正在开发一个庞大的财务、预算和费用管理解决方案,其中一项要求是,存储在sql server中的应用程序收集的用户数据和帖子必须使用用户提供的密钥进行加密 我们使用的是SQL server 2012、EF 6和.NET 4.5 我们尝试过的: 我们用c#中的两个函数创建了类库,用于加密和解密。程序集遵循sql程序集,使用单个加密密钥可以正常工作 挑战: 数据库包含来自提供不同密钥的不同用户的数据 我们如何存储用户提供的密钥以使其安全…例如,如果用户丢失/忘记了用于加密其数据的密钥..应用程序可以恢复。。而支持此数据库的DBA不应访问密钥C# 企业数据,c#,tsql,security,encryption,C#,Tsql,Security,Encryption,我们正在开发一个庞大的财务、预算和费用管理解决方案,其中一项要求是,存储在sql server中的应用程序收集的用户数据和帖子必须使用用户提供的密钥进行加密 我们使用的是SQL server 2012、EF 6和.NET 4.5 我们尝试过的: 我们用c#中的两个函数创建了类库,用于加密和解密。程序集遵循sql程序集,使用单个加密密钥可以正常工作 挑战: 数据库包含来自提供不同密钥的不同用户的数据 我们如何存储用户提供的密钥以使其安全…例如,如果用户丢失/忘记了用于加密其数据的密钥..应用程序可
如果我们有100万用户..这意味着一百万个密钥..这些表有关系引用,因此很难对每一个用户的每一行进行不同的加密..在这个场景中的行业标准是什么..?首先,我想在回答这个问题之前声明,我并不假装知道这个场景中的行业标准--我不知道。尽管如此,我还是会这么做 在密码学中,有一种算法叫做。总之,它将允许您将密钥拆分为多个部分:
- 服务器不存储恢复选项的答案。这意味着如果没有用户的帮助,它将无法解密文件(除非您也将原始拆分发送到服务器,但这是一个潜在的安全风险)。本质上,你可以帮助用户找回他们的钥匙,但如果他们记不起任何恢复选项(例如健忘症、老年痴呆症、过早死亡),那么所有赌注都将被取消
- 如果用户要更改其密钥,则需要使用新密钥对每个文件进行解密和重新加密。这可能是一项潜在的昂贵任务
- 重新生成密钥所需的恢复选项之和一定不容易让攻击者猜到。例如,如果我有4个恢复选项,其中我必须提供2个,并且我的选择是电话号码、最好朋友的名字和其他一些,那么这将是不安全的。没有太多可能的选择,这将使该示例组合非常容易使用暴力