2013-08-22 41 views
5

我想根據OWASP Web Service Security應用Web服務安全性。因此我絆了兩點:TLS是否確保RESTful Java企業中的數據傳輸的消息完整性和機密性

  1. Message Integrity
  2. Message Confidentiality

到目前爲止,僅僅是可以由客戶端直接訪問RESTful服務。對於客戶端需要由服務器進行身份驗證的每個請求。所有通信都通過TLS進行保護。我現在不確定Message Integrity因爲我不理解句子:

當使用公共密鑰加密,加密並保證保密性,但它並不能保證完整性,因爲 接收方的公鑰是公開的。出於同樣的原因,加密不確保發件人的身份。

難道還要求數據由客戶端,以便籤署的消息完整性保證? TLS只是點對點,代理服務器是什麼?

關於Message Confidentiality,我的理解如下。

  1. 使用TLS確保線路上的消息機密性。
  2. 使用對稱加密來加密傳輸的數據。
  3. 加密數據存儲在數據庫中。

我明白嗎?

回答

9

TLS specification

TLS協議的主要目的是兩個通信應用程序之間提供隱私和數據 完整性。 [...]

  • 連接是私密的。對稱密碼術用於數據加密(例如DES [DES],RC4 [SCH]等)。 [...]

  • 連接可靠。消息傳輸包括使用密鑰MAC的消息 完整性檢查。安全散列函數(例如, SHA,MD5等)用於MAC計算。記錄 協議可以在沒有MAC的情況下運行,但通常僅在 該模式下使用,而另一協議使用記錄協議作爲 傳輸來協商安全參數。

所以,是的,TLS將爲您提供完整性和消息的保密其在運輸過程中,只要它被正確使用。

特別是,客戶端需要驗證證書,以確保它與正確的服務器(驗證證書是真實和可信方發出的,併發給其旨在接觸的主機名)進行通信。

  • 使用TLS確保通過電線的消息機密性。
  • 使用對稱加密來加密傳輸的數據。

TLS將通過加密提供保密性。 (您需要使用適當的加密套件,特別是不匿名的密碼套件或密碼套件將空加密,但總是默認的情況下)。

  • 加密的數據獲取存儲在數據庫。

如果要加密數據庫中的數據,那是另一個問題。 TLS僅在運輸過程中爲您提供完整性和機密性。一旦它被您的Web應用程序處理,它就會被破譯。

TLS只是點對點,什麼是代理?

HTTP代理服務器只按原樣中繼TLS流量,而不查看或更改它。 (某些代理服務器可以攔截流量,但該證書驗證會失敗,除非你忘了檢查證書。)

5

是否TLS保證數據傳輸

是消息完整性和機密性。

以RESTful Java企業

無關

。答案仍然是。

當使用公鑰密碼術時,加密確保機密性,但由於接收方的公鑰是公開的,所以它不能保證完整性。出於同樣的原因,加密不能確保發件人的身份。

無關。 TLS不是公鑰密碼學。在這種情況下,我真的沒有看到這些言論的觀點,但他們不正確。任何形式的加密都不能保證完整性或身份:您需要額外的措施;而公開的關鍵也與此無關。

是否還要求數據由客戶端簽名才能保證消息的完整性?

第一個安全HMAC也將這樣做,和TLS使用其中的一個。 TLS在驗證階段使用數字簽名。

TLS只是點對點,什麼是代理?

代理是他們自己的可信任的TLS端點或者是透明的字節傳遞代理,因此保留了作爲端點的對等端之間的TLS屬性。

關於消息機密性,我理解如下。

使用TLS確保線路上的消息機密性。

正確。

使用對稱加密來加密傳輸的數據。

TLS做到了。

加密數據存儲在數據庫中。

不可以。加密的數據被對等體脫離加密線。對等體可以重新加密到數據庫,或者數據庫可以完成它,但這是一個單獨的問題。

+0

TLS中使用公鑰密碼術。 TLS具有初始公鑰密碼步驟,其中對等體安全地交換對稱會話密鑰。隨後的通信使用對稱密鑰密碼進行加密。 –

+0

@MihaiTomescu你錯了。 TLS對稱會話密鑰從不傳輸。它通過密鑰協議協議在兩端獨立進行安全協商。 *一些*密碼套件指定* pre-master secret *的公開加密,這根本不是一回事。 – EJP

+0

這是正確的,會話密鑰已建立(例如,通過Diffie Helman),但從未傳輸過。感謝您指出了這一點。 –

相關問題