什么技术可以保护完全信任的用户的秘密?

Cra*_*rze 6 c# security

我正在使用C#编程系统.我的程序生成一个我想要存储在硬盘上的小消息(文件的哈希摘要) - 但我不希望用户能够读取它.我打算加密这条消息,但有人建议这是一个不好的想法.

所以我正在寻找替代方案 - 您如何保护完全信任的用户的一些秘密信息?

Eri*_*ert 29

退后一步; 你有一个解决方案,从根本上不适用于你所遇到的问题.而不是试图锤击它直到它工作,停止,退后一步,并解决真正的问题.

涉及真钱的安全问题是一些最难解决的问题; 坏人有一个真正的金融动机来攻击你的系统.对于这些类型的事情,多管齐下的方法通常是最好的.

首先,编写威胁模型:

  • 识别需要保护的所有资源(您的资源和您的良性客户资源,例如他们的私人财务数据)
  • 估计它对你的价值
  • 估计它对攻击者的价值
  • 想一想哪些漏洞会让资源受到攻击
  • 表征威胁 - 谁是攻击者,他们的动机是什么?

一旦了解了资源,威胁和漏洞,就会开始考虑缓解这些威胁.为每个缓解措施分配成本和有效性.

例如:

  • 资源:我的电视机
  • 对我有价值:400美元
  • 对攻击者的价值:40美元
  • 漏洞:未锁定的浴室窗户
  • 威胁:小偷或破坏者使用该窗口访问电视

好了,既然我知道攻击是什么,我就可以开始考虑缓解:

  • 锁上窗户
  • 得到一个报警系统
  • 小狗
  • 卫士

这些都在增加费用的顺序.最终,缓解的成本大于资源的损失,花钱是没有意义的.

还有一些方法可以将缓解成本外部化:

  • 以起诉威胁袭击者 - 纳税人为此付出代价
  • 确保电视免遭盗窃,降低成功攻击我的成本.
  • 等等.

加密包含用户计算机上的用户数据的文件并不能减轻任何攻击.找出攻击的内容以及实际缓解攻击的内容,包括攻击者对攻击者的攻击,然后实施一个实际缓解漏洞并消除威胁的系统.

你提出的缓解措施是:给窃贼钥匙,并要求小偷在他试图窃取电视之前锁上窗户.这不是缓解漏洞.没有涉及将密钥交给窃贼的提议是缓解解锁窗口漏洞,因此请停止尝试查找漏洞.

有关威胁建模的更多"软件"重点示例,请参阅:

http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineNovember2006en-us.chm

http://www.owasp.org/index.php/Threat_Risk_Modeling

http://msdn.microsoft.com/en-us/library/aa302419.aspx

等等; 你可以在网上找到很多关于我们如何在微软进行威胁建模的东西.

最后:

让安全专业人士参与其中.

说真的,你正在咬掉软件实施中最困难的工作之一,其中小错误的后果会产生重大的财务影响.将您的实施预算花在具有该领域专业知识的顶尖专家顾问身上,可以帮助您找到制定安全解决方案所需的现成和定制部件.滚动自己的安全系统可能听起来既有趣又便宜; 它既不是.把这种事情留给那些在职业生涯中学习这个空间的人.

  • +1.你我最喜欢的人.您的帖子应该是评估安全问题的任何人的常规帖子. (7认同)

Ano*_*on. 7

我的程序生成一个我想要存储在硬盘上的小消息(文件的哈希摘要) - 但我不希望用户能够读取它.

用户可以完全控制他们的机器.如果您的软件可以读取它,那么用户也可以通过一点点努力来阅读它.

而不是与客户打一场失败的战斗,最好接受"这是用户机器,而不是我的机器",并且不要为任何过多的事情烦恼 - 只需Base64对其进行编码即可.

为什么你需要阻止用户阅读哈希摘要呢?

  • 这次尝试已经失败了.你可能会把它篡改_evident_,但你不会让它防篡改. (4认同)

Rex*_*x M 6

这是DRM问题,无法完成.通过提出新的和新颖的方法来混淆数据,你可以使它变得非常不方便和令人沮丧,但是当加密和解密的机器都在一个系统中作为"敌人"托管时,认为可以保护数据是一个根本上有缺陷的想法. "完全控制.

  • @CraigS意味着"数字版权管理".它在DVD和蓝光中最为明显 - 试图让最终用户只能以"授权"的方式解密数据(例如观看它),但防止复制.它从来没有工作过,它永远不会奏效. (3认同)