【发布时间】:2010-01-24 16:27:48
【问题描述】:
我正在为 Web 应用程序开发 API。桌面客户端将使用简单的 HTTP 帖子 (REST) 与 API 交互。我将使用 SSL,这是毫无疑问的。我的问题是:我是否也应该在通过 SSL 发送数据之前对其进行加密?发送的信息可能包含机密信息。 SSL 够用还是我应该做更多?我对添加额外安全层的唯一担忧是,它会使人们与 API 交互变得更加困难。对此的任何想法将不胜感激。
【问题讨论】:
我正在为 Web 应用程序开发 API。桌面客户端将使用简单的 HTTP 帖子 (REST) 与 API 交互。我将使用 SSL,这是毫无疑问的。我的问题是:我是否也应该在通过 SSL 发送数据之前对其进行加密?发送的信息可能包含机密信息。 SSL 够用还是我应该做更多?我对添加额外安全层的唯一担忧是,它会使人们与 API 交互变得更加困难。对此的任何想法将不胜感激。
【问题讨论】:
不,SSL 提供了强大的加密功能。只要确保您强制客户端使用 HTTPS,如果您真的很偏执,请检查密码是否足够强大。
您想要第二次加密的唯一原因是您的 Web 应用程序将数据直接传递到其他系统。在这种情况下,您可以让 Web 应用程序不了解实际数据,并在客户端和最终目的地之间提供端到端加密。
【讨论】:
如果您信任您的证书颁发机构,您的客户也信任,并且您的密钥足够安全(RSA 2048 暂时不会被破解),那么 SSL 完全没有问题。您无需在 SSL 之前加密您的数据,因为 SSL 本身提供加密。
如果要在 Internet 上使用此 API,证书颁发机构列表here 将有助于您选择一个。
您还可以使用 SSL 客户端证书让您的客户端通过 SSL 进行身份验证。
【讨论】:
恕我直言,我不会在现有加密之上添加另一层加密。正如您所说,它将增加 API 的开销和复杂性。 SSL 的存在是为了在两个节点之间发送安全数据,那么为什么要重新发明轮子呢?
【讨论】:
正如 Shtéf 已经指出的那样,如果您需要端到端加密而不是点对点,那么您需要加密。这可能与您的客户端应用程序通过集成服务和服务总线与服务器通信的其他情况有关。在这种情况下,当消息在中间节点中时,不强制执行 SSL 加密,并且该节点可以对未加密的机密数据做任何事情。
此外,如果您的客户端使用这些集成服务,那么他们可能不会在客户端和集成服务之间强制实施 SSL 连接。
由于这个原因,在处理高度机密的信息时,我倾向于使用端到端安全性而不是 SSL 加密通信渠道。
【讨论】:
是的。 SSL 可以帮助解决中间人攻击和窃听,但还有其他攻击 SSL 无济于事,例如重放攻击。
【讨论】: