首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >企业数据

企业数据
EN

Stack Overflow用户
提问于 2014-03-22 21:11:59
回答 1查看 103关注 0票数 0

我们正在开发一个庞大的财务、预算和费用管理解决方案,其中之一是我们的应用程序收集到的用户数据和帖子必须通过用户提供的密钥进行加密。

我们使用的是server 2012、EF 6和.NET 4.5。

我们尝试过的:我们创建了类库,它在c#中具有两个函数,用于加密和decryption.The程序集,并且使用单个加密密钥可以很好地工作。

的挑战:数据库包含来自不同用户的数据,这些用户提供了不同的key.the,问题是我们如何存储用户提供的密钥,使其安全.例如,如果用户丢失/忘记了用于加密其data..the应用程序的密钥,则可以恢复密钥。虽然支持此数据库的DBA不应该访问密钥..?

如果我们有100万users..that,就意味着keys..the表中有关系引用,所以要对每个用户的每一行进行不同的加密变得很棘手.这个场景中的行业标准是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-03-22 22:07:15

首先,我想在这个答案的序言中说,在这个场景中,我不假装知道行业标准--我不知道。话虽如此,但我会这么做。

在密码学中,有一种叫做沙米尔的秘密分享的算法。总之,它将使您将密钥分成多个部分:

  1. 用户选择私钥,并将其分成4部分(n = 4),其中任意2部分(k = 2)的子集都足以重构它们的秘密。您可以根据需要更改n和k,其中n是提供的恢复选项数,k是必须正确的数字。
  2. 然后,用户使用他们的恢复选项加密私钥的每个部分,并将加密的部分发送到服务器存储。
  3. 当用户请求文件时,服务器将加密文件发送给客户端,然后客户端可以用他们的密钥解密该文件。
  4. 如果用户忘记了他们的密钥,他们可以从服务器请求加密的密钥部分,提供恢复答案,试图解密其中的至少k个,并且(希望)返回他们的数据。

备注:

  • 服务器不存储恢复选项的答案。这意味着它无法在没有用户帮助的情况下解密文件(除非您也将原始的拆分发送到服务器,但这是潜在的安全风险)。本质上,您可以帮助用户返回他们的密钥,但是如果他们不记得他们的任何恢复选项(例如健忘症、老年痴呆症、过早死亡),那么所有的赌注都会被取消。
  • 如果用户要更改其密钥,则需要使用新密钥对每个文件进行解密和重新加密。这可能是一项潜在的昂贵任务。
  • 对于攻击者来说,重造密钥所需的恢复选项之和不一定容易猜测。例如,如果我有4个恢复选项,其中我必须提供2个,我的选择是电话号码,最好的朋友的名字,以及其他一些,那么这将是不安全的。没有太多的可能的选择,这将使这个例子的组合非常容易蛮力。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22583655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档