洋蔥路由用了多種不同的金鑰,它們是為了要滿足幾個要求而設計的: 1. 用於確保洋蔥路由網路中資料保密的加密用金鑰。 2. 用於讓客戶端程式能夠確認與之連線通訊的目標中繼節點身份用的認證金鑰。 3. 用於確保所有客戶端程式取得的中繼節點清單的簽章金鑰。
加密:首先,在洋蔥路由裡所有的連線都會使用TLS加密機制,因此任何監聽者都無法藉由檢視網路資料封包來得知其所屬的迴路是哪條。
此外,洋蔥路由客戶端程式會跟迴路中的每個中繼節點建立專屬的暫時性加密金鑰,這層額外的加密可以確保只有出口節點能夠看到資料封包的實際內容。
且雙方都會在迴路關閉時,將迴路金鑰刪除,因此即使惡意人士在側錄到網路連線資料後,又成功入侵中繼節點伺服器,也無法取得金鑰來將錄得的資料解密。
認證:每一個洋蔥路由中繼節點都擁有一把稱為「洋蔥金鑰」的公開解密金鑰。
每個中繼節點固定每隔四週,就更換自己的洋蔥金鑰。
當洋蔥路由客戶端程式在建立迴路時,其中每個步驟都會要求洋蔥路由的中繼節點證明擁有它所屬的洋蔥金鑰。
如此一來,迴路上的首個中繼節點就無法惡意操控整條迴路上的連線。
由於迴路是由洋蔥路由客戶端程式選擇決定的,因此可以確保洋蔥路由的「分散氏信任」特性:亦即迴路中沒有任何一個中繼節點,能夠同時得知連線的客戶端以及目的端的相關資訊。
協調:客戶端程式如何得知有哪些中繼節點,以及如何確定它們擁有正確的金鑰?
每個中繼節點都擁有一把「身份金鑰」,這是永久性的公開簽章金鑰。
除此之外,每個目錄主管機構也還會有一把「目錄簽署金鑰」。
目錄管理機構為所有已知中繼提供已簽名的列表,列出了每個中繼的一組證書(由它們的身份密鑰自簽名),指定了它們的密鑰、位置、退出策略等。
所以,除非對手可以控制大多數目錄管理機構(截至 2022 年共有 8 個),否則無法欺騙 Tor 客戶端使用其他 Tor 中繼。
客戶端程式如何得知有哪些目錄主管機構?
洋蔥路由軟體內建了一張清單,裡面包含了每個目錄主管機構主機的相關資訊,包括它們的地理位置與公開金鑰。
因此,想要誘騙使用者透過假的洋蔥路由網路來連線的唯一方式,就是誘使他們去執行被特殊篡改過的軟體版本。
使用者如何確認有取得正確的軟體?
當我們發佈軟體套件或原始程式碼的時候,我們都會用GNU Privacy Guard對它做數位簽章。
請參閱如何驗證洋蔥路由瀏覽器的數位簽章。
為了要能夠真的確定該簽章是由我們所簽署的,您就必須要與我們實際見面,並且直接複製我們的GPG金鑰指紋,或是透過已經擁有該指紋的人取得。
如果您真的會需要顧慮到這種層級的安全風險,我們建議您參與資訊安全社群的互動並建立人脈。