我需要解密文件而不保存计算机上文件的解密数据。我会解释。 假设我的文件服务器上有加密文件(加密算法无关紧要) 现在当文件被open事件触发时,我调用以下代码:
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”可以解密并查看文件的内容) 我想到的另一个选项是将解密数据保存在临时文件中,但它仍然不安全,再次更改文件内容并保存它会很复杂,因为我需要再次加密文件。 有关如何处理它的任何建议?
答案 0 :(得分:0)
听起来你的意思是加密文件(EF)在某个地方 云服务器(CS),你有一个安全的专用服务器(SS),而不是 拥有钥匙的云。所以:
用户foo与SS建立SSL / TLS连接并进行身份验证 他们自己用密码或其他什么。
用户foo请求该文件。
SS确保用户foo有权访问该文件。
SS从CS检索EF并在本地解密。 (这没关系 SS是否在内存中解密EF或将明文存储在SS上 因为我们必须假设SS是安全的。)
SS将明文发送给用户foo。 SSL / TLS连接 确保没人能听。
当然,明文最终会出现在用户foo正在使用的机器上。 这是不可避免的。可能有方法只将它保存在RAM中,而不是保持在RAM中 磁盘,取决于它的大小以及它是如何被查看的。
这是你的意思吗?