13

我想根据OWASP Web Service Security应用 Web 服务安全性。因此,我偶然发现了两点:

  1. 消息完整性
  2. 消息保密

到目前为止,只有一个可以由客户端直接访问的 RESTful 服务。对于每个请求,客户端都需要通过服务器进行身份验证。所有通信都通过 TLS 保护。我现在不确定,Message Integrity因为我不明白这句话:

使用公钥加密时,加密确实可以保证机密性,但不能保证完整性,因为接收者的公钥是公开的。出于同样的原因,加密并不能确保发送者的身份。

是否还要求数据由客户端签名以确保消息完整性?TLS 只是点对点的,代理呢?

关于Message Confidentiality,我的理解如下。

  1. 使用 TLS 确保通过网络传输消息的机密性。
  2. 使用对称加密对传输的数据进行加密。
  3. 加密的数据存储在数据库中。

我理解对了吗?

4

2 回答 2

15

TLS 规范

TLS 协议的主要目标是在两个通信应用程序之间提供隐私和数据完整性。[...]

  • 连接是私有的。对称密码术用于数据加密(例如,DES [DES]、RC4 [SCH] 等)。[...]

  • 连接可靠。消息传输包括使用密钥 MAC 的消息完整性检查。安全散列函数(例如,SHA、MD5 等)用于 MAC 计算。记录协议可以在没有 MAC 的情况下运行,但通常仅在此模式下使用,而另一个协议正在使用记录协议作为协商安全参数的传输。

所以,是的,只要正确使用,TLS 将在传输过程中为您提供消息的完整性和机密性。

特别是,客户端需要验证证书以确保它与正确的服务器进行通信(验证证书是真实的并且由受信任方颁发,并且颁发给它打算联系的主机名)。

  • 使用 TLS 确保通过网络传输消息的机密性。
  • 使用对称加密对传输的数据进行加密。

TLS 将通过加密提供机密性。(您需要使用适当的密码套件,特别是匿名密码套件或密码套件不会加密,但默认情况下总是如此。)

  • 加密的数据存储在数据库中。

如果您想加密数据库中的数据,那就是另一个问题了。TLS 仅在传输过程中为您提供完整性和机密性。一旦它被您的 Web 应用程序处理,它就会被解密。

TLS 只是点对点的,代理呢?

HTTP 代理仅按原样中继 TLS 流量,而不对其进行调查或更改。(有些代理服务器可以拦截流量,但是证书验证会失败,除非你忘记检查证书。)

于 2013-08-23T00:45:39.127 回答
7

TLS 是否确保消息的完整性和数据传输的机密性

是的。

在 RESTful Java 企业中

无关紧要。答案仍然是肯定的。

使用公钥加密时,加密确实可以保证机密性,但不能保证完整性,因为接收者的公钥是公开的。出于同样的原因,加密并不能确保发送者的身份。

无关紧要。TLS 不是公钥加密。在这种情况下,我真的看不出这些言论的意义,但它们是不正确的。单独的加密形式无法保证完整性或身份:您需要额外的措施;公开的密钥也与此无关。

是否还要求数据由客户端签名以确保消息完整性?

不会。安全的 HMAC 也可以,TLS 使用其中之一。TLS 在身份验证阶段确实使用数字签名。

TLS 只是点对点的,代理呢?

代理要么是它们自己的受信任的 TLS 端点,要么是透明的字节传递代理,因此将它们的对等点之间的 TLS 属性保留为端点。

关于消息机密性,我的理解如下。

使用 TLS 确保通过网络传输消息的机密性。

正确的。

使用对称加密对传输的数据进行加密。

TLS 就是这样做的。

加密的数据存储在数据库中。

不会。加密的数据会被对等方离线解密。对等方可以重新加密到数据库,或者数据库可以这样做,但这是一个单独的问题。

于 2013-08-23T07:45:13.893 回答