使用特定用户打开加密文件

时间:2014-06-26 11:26:39

标签: encryption

我需要解密文件而不保存计算机上文件的解密数据。我会解释。 假设我的文件服务器上有加密文件(加密算法无关紧要) 现在当文件被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”可以解密并查看文件的内容) 我想到的另一个选项是将解密数据保存在临时文件中,但它仍然不安全,再次更改文件内容并保存它会很复杂,因为我需要再次加密文件。 有关如何处理它的任何建议?

1 个答案:

答案 0 :(得分:0)

听起来你的意思是加密文件(EF)在某个地方 云服务器(CS),你有一个安全的专用服务器(SS),而不是 拥有钥匙的云。所以:

  1. 用户foo与SS建立SSL / TLS连接并进行身份验证 他们自己用密码或其他什么。

  2. 用户foo请求该文件。

  3. SS确保用户foo有权访问该文件。

  4. SS从CS检索EF并在本地解密。 (这没关系 SS是否在内存中解密EF或将明文存储在SS上 因为我们必须假设SS是安全的。)

  5. SS将明文发送给用户foo。 SSL / TLS连接 确保没人能听。

  6. 当然,明文最终会出现在用户foo正在使用的机器上。 这是不可避免的。可能有方法只将它保存在RAM中,而不是保持在RAM中 磁盘,取决于它的大小以及它是如何被查看的。

    这是你的意思吗?