【问题标题】:Open an encrypted file with specific user使用特定用户打开加密文件
【发布时间】: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


【解决方案1】:

听起来您的意思是加密文件 (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 连接 确保没有人可以收听。

当然,明文最终会出现在用户 foo 使用的机器上。 这是不可避免的。可能有办法只将它保存在 RAM 中,而不是 磁盘,具体取决于它的大小和查看方式。

你是这个意思吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多