我想根据OWASP web服务安全性应用web服务安全。因此,我偶然发现了两点:
- 消息完整性
- 邮件机密性
到目前为止,只有一个RESTful服务可以由客户端直接访问。对于每个请求,客户端都需要由服务器进行身份验证。所有通信都通过TLS进行保护。我现在不确定Message Integrity
,因为我不理解以下句子:
当使用公钥加密时,加密确实可以保证机密性,但不能保证完整性,因为接收方的公钥是公共的。出于同样的原因,加密不能确保发件人的身份
是否还要求客户端对数据进行签名,以确保消息的完整性?TLS只是点对点,代理是什么?
关于Message Confidentiality
,我的理解如下。
- 使用TLS来确保通过有线传输的消息的机密性
- 使用对称加密对传输的数据进行加密
- 加密后的数据存储在数据库中
我理解得对吗?
来自TLS规范:
TLS协议的主要目标是提供隐私和数据两个通信应用程序之间的完整性。[…]
该连接是专用的。对称密码学用于数据加密(例如,DES[DES]、RC4[SCH]等)。[…]
连接可靠。消息传输包括消息使用密钥MAC进行完整性检查。安全散列函数(例如。,SHA、MD5等)用于MAC计算。记录协议可以在没有MAC的情况下运行,但通常仅用于当另一个协议使用记录协议作为用于协商安全参数的传输。
因此,是的,TLS将在消息传输过程中为您提供消息的完整性和机密性,前提是使用正确。
特别是,客户端需要验证证书,以确保它与正确的服务器通信(验证证书是真实的,由可信方颁发,并颁发给它打算联系的主机名)。
- 使用TLS来确保通过有线传输的消息的机密性
- 使用对称加密对传输的数据进行加密
TLS将通过加密提供机密性。(你需要使用合适的密码套件,尤其是匿名密码套件或密码套件将使加密无效,但默认情况下总是这样。)
- 加密后的数据存储在数据库中
如果你想加密数据库中的数据,那就另当别论了。TLS仅在传输过程中为您提供完整性和机密性。一旦你的网络应用程序处理了它,它就会被解密。
TLS只是点对点的,代理是什么?
HTTP代理只按原样中继TLS流量,而不查看或更改它。(有些代理服务器可以拦截流量,但证书验证会失败,除非您忘记检查证书。)
TLS是否确保数据传输的消息完整性和机密性
是的。
在RESTful Java企业中
无关。答案仍然是肯定的。
当使用公钥加密时,加密确实保证了机密性,但它不能保证完整性,因为接收方的公钥是公共的。出于同样的原因,加密不能确保发送者的身份。
无关。TLS不是公钥加密。在这种情况下,我真的看不出这些言论的意义,但它们是不正确的。任何形式的加密都不能单独保证完整性或身份:你需要额外的措施;而公开密钥也与此无关。
是否还要求客户端对数据进行签名,以确保消息的完整性?
没有。安全的HMAC也可以,TLS使用其中之一。TLS在身份验证阶段确实使用数字签名。
TLS只是点对点的,代理是什么?
代理要么是它们自己的可信TLS端点,要么是透明的字节传递代理,因此它们在作为端点的对等端之间保留TLS的属性。
关于信息保密,我的理解如下。
使用TLS来确保通过有线传输的消息的机密性。
正确。
使用对称加密对传输的数据进行加密。
TLS可以做到这一点。
加密后的数据存储在数据库中。
没有。加密后的数据会被对等方解密。对等方可以对数据库重新加密,也可以由数据库进行加密,但这是一个单独的问题。