【发布时间】:2014-06-26 11:26:38
【问题描述】:
我需要解密文件,但不将文件的解密数据保存在计算机上。我会解释。 假设我的文件服务器上有一个加密文件(加密算法无关紧要) 现在,当文件由打开事件触发时,我调用以下代码:
public void FileOpenning()
{
// Only "Foo" can decrypt and see/change the content of the file
if (Environement.CurrentUser == "Foo")
{
// Display the encrypted file to the user
}
else
{
// Do nothing, the user can't open the file.
}
}
现在,我想向用户展示文件而不实际解密文件本身,如果我这样做,任何有权访问文件服务器的人都可以观看该文件,因为它已经被解密(并且如您所见,只有“Foo”可以解密并查看文件内容) 我想到的另一个选择是将解密的数据保存在一个临时文件中,但它仍然不安全,并且再次更改文件的内容并保存它会很复杂,因为我需要再次加密文件.. 关于如何处理它的任何建议?
【问题讨论】:
-
嗯,你写这个的方式,听起来服务器本身就有密钥。这意味着任何拥有足够访问权限的人都可以随时读取文件。您需要阐明您的威胁模型。
-
好吧,加密/解密如何工作并不重要,我更多地谈论的是只有特定用户才能看到加密内容的概念
-
您需要一个通用的解决方案,独立于加密算法。我明白那个。这并不意味着密钥管理无关紧要。您说“任何有权访问文件服务器的人都可以观看该文件,因为它已经被解密”。这意味着攻击者可以忽略文件权限。这样的攻击者还可以读取服务器用来解密文件的密钥。因此,无论您是在内存中还是在磁盘上解密文件都没有关系;无论哪种方式,您都仍然感到疲倦。看到了吗?
-
好的,现在我明白你的意思了。我将再次尝试解释。我们仍然没有计划整个架构,但我猜持有密钥的服务器将是另一台服务器。我猜我们将安装这台服务器以提供顶级保护。我说的是对文件共享的访问,例如 netapp,所以如果攻击者可以访问文件共享,并不意味着他可以访问密钥。我担心两个问题: 1. 一个人将获得一个文件的权限,但他没有打开它的钥匙。 2. 能够监控文件共享的攻击者。
标签: encryption