題:
為什麼有人會“雙重加密”?
Lighty
2016-03-15 13:57:39 UTC
view on stackexchange narkive permalink

如果我有一個網站或移動應用程序,它通過安全的SSL / TLS連接(即HTTPS)與服務器對話,並在已經安全的連接之上對用戶和服務器之間發送和接收的消息進行加密,我會做不必要的舉動嗎?還是雙重加密是常見的方法?如果是這樣,為什麼?

原因之一是要利用高效的雙重“ ROT13”加密算法。
您可能需要不同級別的加密-您希望對用戶的文本消息進行加密,以便只有收件人才能閱讀它,並且還希望對攜帶該文本消息的協議消息進行加密,以便只有您的服務器才能閱讀它。
與TLS相比,某些舊版應用程序可能已經在與TLS不同的通道上使用了自己的加密。當開發人員將其轉換為TLS時,他們可能不想通過刪除舊的加密層來引入新的錯誤可能性。
@Keavon終極的中間相遇攻擊!
@DmitryGrigoryev如何在沒有密鑰的情況下進行中間相遇攻擊?
對於從用戶到服務器的所有消息的加密,可能存在預定義的安全性要求。該要求可能更高,或者以某種方式與HTTPS不完全匹配。為了獲得更多的控制權,並能夠指向“完全”滿足規範X款中對審閱文件的要求的一段代碼,這對於開發人員而言可能是最簡單的選擇。
@immibis如何兩次應用ROT13並假裝文本已加密?
@DmitryGrigoryev-正是出於您要問的原因,這是關於無效的安全性的一個老笑話-聽起來不錯,但完全沒有用。
為什麼要看問題。如果問題是傳輸中的攔截,那麼可以說HTTPS就足夠了。如果問題是在終止HTTPS的任一端點上攔截,則HTTPS不提供保護。如果移動應用程序存儲了敏感信息並且遭到了洩露,那麼存儲在應用程序中的數據也會被洩露。如果該數據被加密,則即使該應用程序遭到破壞,它也會為數據添加一層保護。我對密鑰管理不屑一顧,這裡涉及到的問題是因為雙重加密似乎不是主題。
-1
請求參數可能最終出現在服務器訪問日誌中,這可能是不可取的,因此對它們進行加密可能會有所幫助。
我在某處讀到,雙重加密DES實際上“降低”了加密的安全性,這就是為什麼Triple-DES成為標準的原因。
@Keavon Pshaw,我做10,001發ROT13發,因此攻擊者必須花更多時間才能找回純文本。 IFNKOVHGROGHPRM!
TLS僅從您到服務器加密。服務器獲取純文本。如果您存儲的是加密的數據,則服務器將無法解密數據。他們只能為您存儲。因此,在TLS內部進行加密不是“雙重加密”,因為從保護您免受服務器管理員的角度來看,TLS根本沒有對它進行加密。
除了這些註釋以及在某些答案中提到的以外,SSL / TLS只是指向安全性而不是指向安全性。儘管存在細微差別,但惡意實體可以MitM進程(例如Bluecoat),解碼SSL流,然後重新啟動與服務器的連接。
通過不信任空間(也稱為Internet)進行的某些通信必須通過另一個IPSEC內的IPSEC隧道進行雙重包裝,使用帶有不同密鑰的IPSEC的兩種不同實現,這樣,對外部包裝實現的成功攻擊只會揭示出進一步的加密層。使用同一漏洞無法攻擊。
可以確定...
從歷史上看,二戰時德國人使用的Enigma機中的薄弱環節之一是他們決定對所有事物進行雙重加密時。第二次加密引入了人腦可見的模式,使加密更容易破解。
考慮發送HTTPS流量時使用VPN隧道,同時發送帶有小型truecrypt卷附件的PGP加密電子郵件,該附件包含服務器的加密備份,該備份保存用戶數據庫(敏感值經過加密,而不是以明文形式自由顯示)通過全盤加密存儲在HDD上。這裡有許多合法的“雙重加密”示例,儘管公認的現實生活很少像包含至少六層加密的示例那樣令人費解。
@SplashHit [triple-des](https://zh.wikipedia.org/wiki/Triple_DES)旨在提供與常規DES的向前和向後兼容性,而不是因為“兩個還不夠”。
@pojo-guy得到了一個鏈接?
-1
-1
也許您正在考慮在更改消息正文之前如何兩次列出會話密鑰?那是使它被破解的關鍵缺陷!它不是雙重編碼的。它在同一流中重複進行。像rot13一樣,加密和解密實際上是“相同”過程。所以,是的,我想如果使用相同的插件設置但使用不同的轉輪設置來進行雙重編碼,就會產生大量的輪胎信息。我不記得我讀過的歷史。
也許他們擔心該頻道可能會被降級,因此希望獲得額外的安全性
十五 答案:
Matthew
2016-03-15 14:18:08 UTC
view on stackexchange narkive permalink

這並不少見,但可能不是必需的。許多開發人員似乎忘記了HTTPS流量已被加密-僅查看有關在此網站上實施客戶端加密的問題數量-或由於之類的廣為宣傳的問題而感到無法信任它。 > Lenovo SSL MitM混亂

但是,大多數人並沒有受到此影響,並且目前還沒有針對TLSv1.2的特別可行的攻擊,因此它沒有。

另一方面,在某些情況下,有合理的理由在傳輸之前先對數據進行加密。例如,如果您正在開發存儲應用程序,則可能需要使用客戶端上只有用戶才知道的密鑰的應用程序進行加密-這意味著服務器將完全無法解密數據,但它仍然可以存儲它。通過HTTPS發送將意味著攻擊者也不應該能夠獲取客戶端加密的數據,但是即使他們這樣做了也沒關係。這種模式通常由基於雲的密碼管理器使用。

本質上,它取決於您要防禦的內容-但是,如果您不信任SSL / TLS,則可能不信任加密您正在發送的代碼(在Web應用程序中)!

想到這一點,就有理由不拋棄所有涉及JavaScript客戶端Web瀏覽器加密的stackoverflow問題。它們使超級魚和朋友變得毫無用處,包裝好的公司攔截器容易被擊敗(問題轉化為軍備競賽)。
如果HTTPS層受到MITM攻擊的威脅,則肯定會使得客戶端JavaScript加密...安全性降低。
@Joshua許多人沒有意識到,SuperFish不是SSL / TLS / HTTPS攻擊。這是對基礎架構的密鑰共享部分的攻擊。因此,實際上,計算機上幾乎所有“安全”的公共密鑰代碼實現都將受到損害。
-1
如果您具有對客戶端設備/端點的物理訪問權限,則可以使用基於VPN的MiTM攻擊來監聽HTTPS數據包(至少在Android上,儘管我認為其他平台也同樣容易受到攻擊)。從理論上講,只要用戶不能以給他們內部加密密鑰的方式利用他們的物理客戶端訪問權限,就可以將自己的加密添加到混合中。
如果您在一家大公司工作,則您的IT部門可能有意對您的SSL連接進行MITM-幾家公司出售[“ SSL Inspection”代理](https://insights.sei.cmu.edu/cert/2015/03 /the-risks-of-ssl-inspection.html)-這通常涉及在公司設備上安裝“受損的”根證書。但是,這些“檢查”工具將無法採取任何措施來破壞自定義的按應用程序加密。
如果您在一家大公司工作並且規避過濾器或流量檢查,則IT部門可能會緊隨您之後。
基於@FrankFarmer的惡意瀏覽器插件現在也可以通過在本機瀏覽器版本之上替換自己的XMLHttpRequest或Fetch Prototypes來執行MITM,以取代本地瀏覽器版本並捕獲所有輸入,然後再發送到瀏覽器HTTPS處理程序或之後HTTPS處理程序已解密數據。
Mike Goodwin
2016-03-15 14:21:02 UTC
view on stackexchange narkive permalink

HTTPS僅在消息通過網絡/ Internet傳輸時提供加密。

如果消息是在客戶端與客戶端之間某個位置由中介(例如消息隊列)存儲或處理的,最終處理它的服務器,那麼它在中介服務器中時就不會保持加密。

此外,如果TLS / SSL在服務邊界(例如在負載均衡器上)終止,則可能不會在內部網絡上加密。在要求較高安全性的情況下(例如在某些受管制的環境中),這可能是一個問題。最終接收者。

正如@honze所說,這稱為深度防禦,它旨在確保即使系統受到部分破壞(例如,他們設法進行中間人攻擊)破壞SSL / TLS或利用消息隊列中的漏洞獲取靜態數據)攻擊者無法獲取受保護的數據。

對於您為什麼要加密SSL發送的內容,這似乎是一個更清晰的答案。
需要注意的是:這還允許客戶端控制允許誰解密最終程序包。例如,使用發送到雲的備份。您無需與雲提供者共享解密密鑰,這意味著即使雲提供者被“黑客入侵”或法律強制洩露其數據,客戶端仍是唯一擁有密鑰的人。
Olivier Grégoire
2016-03-16 16:03:15 UTC
view on stackexchange narkive permalink

我想分享我在標題問題上的經驗。它與完整的問題本身並沒有真正的關係,但這回答了“為什麼有人會雙重加密?”的問題。

過去,我曾在一個處理護理提供者(醫生,醫院)之間通信的組織中工作。等)和保險組織(共同體)。我們有點像路由器。

該架構大致如下:

 護理提供者1 \ /確保組織1護理提供者2 ----路由器(美國) ----保險機構2護理提供者3 / \保險機構3  

我們獲得了以下保護:

  1. 端到端加密::護理提供者1需要將患者信息發送給保險公司1。此信息對隱私敏感,因此需要進行加密。在我們這一級,我們無權知道要向保險公司發送哪些數據。
  2. 護理提供者-路由器加密:護理提供者將信息作為元數據發送給我們,以能夠處理它。此信息需要加密。合同規定,即使在我們的網絡內部,仍必須對消息進行加密,以便我們的服務器中只有一台知道發送信息的元數據。由於我們有多個管道(負載均衡器,防火牆等),因此在此級別也需要加密。
  3. HTTPS以避免MITM攻擊:
  4. ol>

    我希望這可以為為什麼需要幾層加密提供一些啟發。

honze
2016-03-15 14:09:45 UTC
view on stackexchange narkive permalink

您是對的。這是一個稱為深度防禦的多層安全性概念。這是一個有用的模式。

它的確回答了這個問題,但對於我在答案中尋找的內容來說卻有點薄...仍然是+1。
pjc50
2016-03-16 17:26:04 UTC
view on stackexchange narkive permalink

HTTPS在傳輸過程中被加密,並在最後解密。因此,您可能希望進行雙重加密的明顯情況是,您希望其中一個(或可能兩個!)的末端都看到明文。

某些情況我可以想到:

  • 通過網絡郵件提供商加密的電子郵件。如果我通過通過HTTPS連接訪問的Gmail發送GPG加密郵件,則該郵件會被加密兩次。因為我不想gmail讀取內容。

  • 加密的備份服務。我想使用HTTPS阻止我的登錄憑據被盜,但我不希望備份服務看到備份的“內部”。

  • 支付網關。您可以想像一個在安全支付硬件令牌和銀行之間通過用戶不安全的設備和商人站點 發送加密消息的情況。中間的鏈接應該是HTTPS,但這還不夠:需要在不安全的PC和不太安全的商人的網站上對其進行加密。

請注意,S / MIME提供“三重包裹”(簽名/加密/簽名): https://tools.ietf.org/html/rfc2634,因此,如果您考慮簽名和加密,那麼更多的可能性可能就有意義

user1361991
2016-03-16 10:36:58 UTC
view on stackexchange narkive permalink

我想給出一個附加的理由:標準化。

我有一個應用程序,出於安全原因,所有流入和流出其中的數據都必須加密。因為已經被加密一次,所以數據可以通過http(舊版)和https(當前)連接傳輸。加密兩次比創建一個版本的應用程序要有意義得多,該版本的應用程序可以不通過https運行,而可以通過HTTP運行。

可以為不支持http協議而爭論不休,但是,對於我們的環境,維護ssl證書和當前的ssl軟件非常棘手,並且可靠性低於http。
我理解您的觀點,但是如果有人提出將安全性放在重要方面的應用程序,則會強制HTTPS並禁用HTTP,或者在使用Web應用程序的情況下,HTTP pub將為空,僅支持HTTPS。
@Lighty相信我,現實世界並不是按照這樣的明智原則運作的。現實導致情況更加嚴峻。
LJones
2016-03-16 22:29:08 UTC
view on stackexchange narkive permalink

當處理高度敏感的信息(例如財務,醫療,軍事或心理數據)時,這是最佳做法。多重加密的基本思想是防止任何未經授權的用戶檢索數據。假設加密方法的初始可能組合為10億個。通過在其之上應用另一種加密方法,我們可以將可能性增加到1b ^3。這將需要未經授權的用戶花費更長的時間來解密數據。雖然加密仍不完美,但效果更好。

在我工作的組織之一中,我們使用了多種加密。這是先前流程的簡化:

  • 審核客戶端和服務器設備以及組件以檢查是否通過軟件
  • 加密存儲中的數據
  • 壓縮數據
  • 使用專有軟件加密數據
  • 開始與服務器連接
  • 審核客戶端和服務器設備以及組件以清除連接
  • 壓縮傳輸
  • 通過加密連接發送數據;如果連接斷開,請重新啟動整個過程。
  • 成功完成文件後,請審核數據是否一致

如果您不處理網絡密集的環境

此方法背後的策略可確保對設備,組件(MAC)和IP進行身份驗證。加密數據是標準過程,因此通過HTTPS發送也是如此。一些組織超越了基本安全性,還需要利用Freenet,I2P,IPsec / VPN或Tor進行類似暗網的網絡連接。無論加密如何,數據壓縮都會減少所需的存儲和網絡資源;但是,這會將您的性能抵消到RAM或處理上。最後,我們在斷開連接後重新啟動連接的原因是,我們發現了一種通過中間人劫持數據流的方法。

最終,沒有完美的方法可以永遠加密數據,但是要集中精力進行加密,直到數據或信息變得無關緊要,或者您產生了一種更好的加密數據的方法。

或者,您可以只使用兩倍大的密鑰。
Micheal Johnson
2016-03-17 18:55:50 UTC
view on stackexchange narkive permalink

通過加密連接發送加密數據的原因有很多:

  • 即使連接的加密被破壞(例如MitM,可能會用HTTPS挑戰,但導致截取所有傳輸的數據),數據仍處於加密狀態。
  • HTTPS服務器可能不受信任,並且負責將數據中繼到另一台服務器
  • 類似,HTTPS服務器可能通過未加密的連接將數據中繼到另一台服務器,並且讓客戶端在​​傳輸之前對數據進行加密可以減輕HTTPS服務器的負擔,否則HTTPS服務器將不得不對來自所有客​​戶端的數據進行加密,而不是直接將其傳遞給
Falco
2016-03-17 15:01:03 UTC
view on stackexchange narkive permalink

API混淆

即使所有通信都是通過HTTPS加密的,客戶端仍然可以選擇在使用各種調試工具加密之前查看其流量。尤其是如果您使用瀏覽器環境或基礎系統提供的具有https的應用程序。

在這種情況下,您可以使用靜態密鑰對數據進行加密,因此客戶端無法輕鬆讀取和操縱流量。當然,這只是混淆,因為密鑰需要存儲在客戶端計算機上的某個位置(至少在RAM中),但是對於軟件源代碼,它始終只是混淆。用戶將不得不花費大量的精力來恢復您的密鑰並解密您的訪問量以讀取對他的請求的操縱。

示例可能是基於網絡的遊戲,該遊戲為玩家帶來了高分。

>

或弄清楚如何訪問遊戲的管理員/超級用戶方法。
保護API的更好方法是身份驗證。如果必須先使用強大的身份驗證系統(例如公鑰)對用戶進行身份驗證,然後才能使用管理功能,則無需混淆API。同樣,分數提交之類的功能可以使用臨時的“簽名”(YouTube使用類似的簽名),該簽名必須至少生成一次並隨每個請求一起傳遞-儘管始終可以對其進行逆向工程,但會使它非常複雜(甚至可能基於請求的內容,因此每個請求的請求都不同)。
@MichealJohnson根本沒有幫助,如果您發送`authId = 746788553 score = 200`,則用戶只需通過中間的人來更改分數值(在自己的設備上很容易),如果您混淆了,他將很難時間
您還發送“ signature = 21a87c7b0a6005df838b17b9aafd0dc1”,其中“ signature”是由authId,“ score”和當前時間通過一種模糊算法生成的(最好每隔幾週更改一次)。您不必通過第二層加密來混淆簽名的傳輸,因為即使用戶知道它是一個簽名並且知道它的價值,但是如果用戶更改了分數,則該簽名將不再有效(因為分數用於計算),到他們對混淆進行逆向工程時,該算法有望被更改。
@MichealJohnson這確實是一個好點,並且將獲得相同的好處。 -但是您以前的聲明不符合這個“必須至少生成一次並隨每個請求一起傳遞”的聽起來更像是每個會話的靜態值,第二條註釋要好得多
我說“至少一次”,因此意思是“可能需要重新生成,可能針對每個請求”。我還在為評論的字符數限製而鬥爭。
Alexander
2016-03-20 16:53:03 UTC
view on stackexchange narkive permalink

如果我理解正確,那麼Tor網絡就是這樣工作的:

愛麗絲給戴夫寫了一封信,並對其加密了三次:首先用戴夫的密鑰,然後添加戴夫的地址,用克雷格的密鑰加密包裹,然後添加Craig的地址並用Bob的密鑰對包裹進行加密。

她然後將信件發送給Bob,然後解密,找到Craig的地址,然後將其轉發給他。

Craig解密,找到戴夫的地址,並將其轉發給他。戴夫解密後發現這封信是給他的。

在一個完美的世界中,除了愛麗絲和戴夫之外,沒有人能說出戴夫確實是那封信的收件人,因為它很可能是他找到的艾米莉(Emily)在信封內的地址並將其轉發。

第二個應用是使用私鑰和收件人的公鑰對郵件進行加密。收件人使用您的公共密鑰和他的私鑰解密郵件,從而可以獲取該郵件來自您以及他的信息。但通常,使用HMAC來確保郵件確實來自某個發件人,並且未被篡改。

Lie Ryan
2016-03-21 04:23:00 UTC
view on stackexchange narkive permalink

進行多級加密的主要原因是關注點分離。

通常一組數據可能由多個服務器處理,可能由多個組織控制,並非所有服務器都完全受整個機構信任數據。在大多數情況下,這些中間服務器中的大多數只需要對數據的一部分進行操作,因此,如果它們不需要查看數據的某些部分,則可以對該部分進行加密。您將獲得他們需要的數據的中間訪問權限,以查看他們擁有的密鑰中已加密的數據以及可以傳遞給其他服務器進行進一步處理的已加密Blob。

最簡單的示例是電子郵件使用GPG和TLS加密。郵件傳輸代理(電子郵件中繼)的主要工作是將電子郵件從一跳傳輸到下一跳。他們需要查看郵件路由信息才能完成工作,但是他們不需要查看郵件本身。因此,您將使用郵件傳輸代理可以理解的一個密鑰和僅收件人可以理解的另一個密鑰對郵件連接進行雙重加密。

另一個示例是日曆/通知調度服務。您將事件放入日曆中,以便日曆應用程序通知在特定時間發生了某些事情。日曆無需知道事件是什麼,事件中涉及的人,也不知道事件在哪裡。

多重加密的第二個原因是,如果加密層之一是破碎。 IMO,這是一個較弱的原因,因為您需要考慮每個不必要的附加層都會增加實現的複雜性,而復雜性是安全性的敵人。

Chloe
2016-03-21 07:27:09 UTC
view on stackexchange narkive permalink

我在這裡沒有看到此內容,但我認為它比評論要重要得多。他們可能這樣做是為了完美的前向保密性。攻擊者可能不知道您的HTTPS連接的密鑰,但他們可能會記錄每個字節並將其存儲多年。然後,他們可能會黑客入侵您,發現漏洞或稍後迫使您透露服務器的私鑰,然後返回曆史記錄並解密您的消息。通過在HTTPS連接下使用臨時臨時密鑰對消息進行加密,攻擊者仍將無法讀取消息,或者至少會明顯延遲。

但是,這並不是真正的雙重加密。(主要是)有關如何派生,同意或共享會話密鑰的。基本上,如果以某種方式派生會話密鑰,使得擁有密鑰交換期間來回傳輸的所有數據的純文本的完整記錄的人以後不能再重新創建會話密鑰,那麼您就擁有了PFS。如果擁有此類記錄的人可以重新創建會話密鑰,那麼您就不能。PFS非常好,但它(潛在地)解決了一個非常不同的問題,如不受信任的中介*端點*的示例所示。
Alex KeySmith
2016-03-17 20:32:48 UTC
view on stackexchange narkive permalink

為避免PCI合規性問題,開發人員希望使用支付網關並將合規性放在第三方。

表單發布中的字段可以在客戶端進行加密,因此開發人員沒有任何未加密的卡詳細信息通過他們的系統(因此要比不存儲它們更進一步)。

值得注意的是,這是在HTTPS之上。因此,該網站甚至看不到未加密的數據,只有用戶和付款網關。

Brain Tree付款網關的示例: https://www.braintreepayments.com/blog/客戶端加密/

為什麼是-1?我添加了一個示例文檔來備份我的案例。
表單數據仍可以視為“消息”。
我當然不建議僅使用客戶端加密!這是在HTTPS之上!
實際上,這是一個相當合理的應用示例。
謝謝@Xander是的,我猜我的答案起初可能是人們誤解為客戶端加密(這顯然是一件很不好的事情!)
Shelvacu
2016-03-18 09:15:11 UTC
view on stackexchange narkive permalink

算法和實現中的缺陷可能現在都存在,但尚未發現。理想情況下,這些缺陷將不存在,但它們確實存在。如果第一層被破壞,則攻擊者只能獲取密文。如果第二層被破壞,則攻擊者將無法通過第一層。在一個籃子裡。

您假設雙重加密不會以某種方式交互,這意味著組合比單獨使用任何一種算法都更容易破解。你有證明嗎?
@MartinBonner [不,我不](http://crypto.stackexchange.com/questions/33797/can-double-encrypting-act-in-a-way-that-means-the-combination-is-easier-打破)
對我來說,這似乎是一個合理的假設-但有可能開發出自己的加密算法(即使它來自受人尊敬的構件)。
是的,事實證明,正確組合兩個密碼至少要與兩者中的更好者一樣強。如果通道是分開的(未組合),則可以使用中間條件通道來防止來自外部密碼的“已知明文”包元數據。
@JDługosz您對密碼的定義是什麼? ROT13算在內嗎?
尤其是如[本書](http://www.amazon.com/Cryptography-Engineering-Principles-Practical-Applications/dp/0470474246)中所定義,該書詳細解釋了該原理。是的,在最籠統的定義中,rot13可以稱為“流密碼”。如果您使用的[定義](https://en.wikipedia.org/wiki/Stream_cipher)需要長時間的偽隨機密鑰流,則重複密鑰和瑣碎密鑰將被取消資格。 ...
...但是,請查看[Caesar Salad ^ h ^ h ^ h ^ h ^ hCypher](https://en.wikipedia.org/wiki/Caesar_cipher),以了解它通常適用於[anything](https:// /en.wikipedia.org/wiki/Substitution_cipher)
Jakuje
2016-03-20 14:03:15 UTC
view on stackexchange narkive permalink

並非完全是HTTPS問題,但在Tor中經常使用另一種雙重加密的有效用例,以防“我不相信送貨人員,並希望通過更多步驟保持匿名”。

每個“送貨員”僅解密信封以找出另一個送貨員。在這種情況下,通信被封裝並加密在SOCKS代理中。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...