【问题标题】:Encrypting Database Field加密数据库字段
【发布时间】:2012-02-15 14:52:58
【问题描述】:

我们正在设计一个系统,该系统将充当包含敏感信息的消息的存储和转发系统。我们的系统会定期收集需要发送给客户的数据。我们的客户将使用我们提供的软件来调用我们的网络服务并获取他们的消息——此时消息将从我们的系统中删除。

我们想要防止的是,在我们的服务器被入侵的情况下,入侵者无法读取我们系统上的消息。

我们考虑在将消息存储到我们的数据库之前使用公钥/私钥加密来加密消息,然后让我们的客户端软件在收到消息后解密消息。然而,这似乎有点倒退,因为公钥将在我们的服务器上,而私钥将与客户端软件一起分发。

使用这个,我们推测,入侵者必须入侵我们的服务器并获得客户端软件中的密钥才能读取消息 - 这种可能性要小得多。

这种方法有哪些漏洞?有什么替代方法吗?

非常感谢。

MB

【问题讨论】:

  • 您是真的要求对您的设计进行安全审核,还是有编程问题?
  • 不是重复的,因为只有公钥会存储在服务器上,因此除非您拥有私钥,否则访问服务器将不允许您解密信息。

标签: .net encryption


【解决方案1】:

当您将其视为客户端/服务器关系时,它只会倒退。而是考虑 Alice 和 Bob,其中 Alice 是服务器,Bob 是客户端。

Alice 收集了一些她想为 Bob 存储的信息。她使用 Bob 的公钥对信息进行加密,直到她可以将信息传递给 Bob。一旦 Bob 可用,Alice 会将加密信息发送给 Bob,然后 Bob 用他的私钥解密。

您唯一需要做的就是为每个客户端设置不同的密钥对。这可以在设置客户端时通过某种授权过程来处理。客户端存储其私钥,服务器存储客户端的公钥。如果服务器遭到破坏,那么数据仍然是安全的,因为它只能通过客户端的私钥解密。如果一个客户端受到威胁,那么只有该客户端受到影响,而不是其他所有客户端。

【讨论】:

    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2019-04-15
    • 2012-05-24
    • 2011-08-17
    相关资源
    最近更新 更多