跳轉到內容

Goldbug

75% developed
來自華夏公益教科書

Goldbug - 安全電子郵件客戶端和即時訊息使用者手冊

圖 1:GOLDBUG-Logo


安全電子郵件客戶端和即時訊息 http://goldbug.sf.net

(狀態通知:2016 年 10 月 21 日。本文及其圖片為公共領域(即開源),任何人都可以隨意使用、修改或釋出。)

什麼是 Goldbug?

GoldBug 是一款安全電子郵件程式,可以執行多項有用的操作。除了安全電子郵件之外,還有安全的即時網際網路聊天。這意味著傳送和接收的每個資料包都會被小心地加密。此外,GoldBug 僅使用未破解的密碼和加密方案,這是使用任何型別密碼的唯一合理方法。GoldBug 還包括避免使用標準網際網路地址解析機制(例如,DNS,它在幾十年前設計草率,並且已被敵對方多次干擾)的方法,因此即使在攻擊導致網際網路的大部分時間內無法使用時,您仍然可以繼續使用電子郵件和聊天。

使用 GoldBug 進行電子郵件或聊天時,您可以確保任何第三方(例如,可能想要竊取銀行資訊的罪犯)都無法竊聽您的對話。使用者之間的通訊保持私密,並保留在“受保護”的空間內。為了代表您完成此操作,GoldBug 使用高質量的多重加密,也稱為混合加密,使其使用更加實用(金鑰更容易記憶,更容易根據需要更改)和更高效(例如,更快的加密和解密)。它使用經過充分驗證(尚未破解)的加密技術,這些技術來自完善的加密庫,例如 libgcrypt(Internet 標準 GnuPG 包的一部分)和 OpenSSL。GoldBug 根據需要生成所需的公鑰/私鑰對(用於多種非對稱加密演算法)以及對稱金鑰加密演算法所需的金鑰,並安全地將其與通訊者交換,以便您擺脫至少一些安全使用加密進行通訊的複雜性。

GoldBug 使用RSA加密演算法,或者可以選擇使用ElGamalNTRU 或者McEliece。在當今積極攻擊者幷包含量子計算的加密環境中,最後兩種演算法被認為更安全。在撰寫本文時,GoldBug 是唯一一個使用 NTRU 和 McEliece 的加密系統的開源實現。

GoldBug 提供去中心化和加密的電子郵件以及去中心化的公開 IRC 樣式群組聊天,但也提供安全的文件傳輸,從而保護的不僅僅是目前人與人之間的通訊。另一個功能允許 p2p 搜尋(即點對點,沒有像 Google 或 Bing 這樣的具有中央伺服器的網際網路範圍系統)。

此外,“Rosetta CryptoPad”和“檔案加密器”使 GoldBug 能夠進行本地檔案加密,即使儲存檔案的計算機(也許是您的?)被某種方式入侵(即,用通俗的話說,駭客入侵),或者甚至被物理盜竊(筆記型電腦、平板電腦和智慧手機當然特別容易受到攻擊)。

GoldBug 的設計分為兩個相互協作的部分:多執行緒核心和使用者介面。這兩個元件是用 C++ 語言編寫的,需要 Qt 框架以及多個程式碼庫(例如,libgcrypt)。所需的庫用於 Internet 標準協議,並非專有。Qt 的 4.8.x 和 5.x 版本都受支援。GoldBug 可用於 FreeBSDLinuxOS XOS/2Windows。此外,它已針對 ARM 架構 CPU 以及專門針對 RaspberryPI 信用卡大小的計算機(使用 ARM CPU 實現)進行了編譯。

GoldBug 專案提供了一個簡單的使用者介面,即使是初學者也很適合使用,它依賴於來自現有 Spot-On 專案的程式碼 (http://spot-on.sf.net)。Spot-on 在矽谷開發,在撰寫本文時,它將自己定義為一個探索性研究專案,調查各種通訊和加密演算法。儘管如此,它已經足夠成熟,可以用於普通用途,特別是在 GoldBug 中。


為什麼加密通訊很重要?

您傳送到網際網路上的每條訊息都必須通過幾箇中間節點(其他人的計算機)和伺服器(其他人的計算機,或者更常見的是公司設定的計算機,用於提供網際網路服務);這樣做實際上是網際網路本身的本質。因此,很明顯,構成任何和所有網際網路傳輸的每個資料包(即,一個幾乎總是更大的傳輸的小塊)在傳輸過程中都可供未知數量的第三方訪問。許多實體(實際識別或僅僅知道存在,從資源豐富的政府到資源匱乏的個人)已被確定為有興趣閱讀這些飛行的資料包,也許包括您的資料包。此外,在您的計算機或其他地方執行的惡意軟體(可能包括您的計算機)可能會將您的流量副本傳送到您沒有預期的其他地方,從而使擷取您的資料包在網際網路線上快速傳輸變得不必要。因此,為了擁有隱私,透過保護資訊和通訊免遭惡意行為,每個人都應該在訊息甚至被髮送到網際網路上之前對訊息進行加密;如果操作正確,這將使每個竊聽者都感到沮喪,因為他們只能思考無法閱讀的亂碼,幾乎沒有希望理解其含義。當然,這正是任何想要閱讀我們通訊的人應該發現自己的情況。

有時有人聲稱,任何沒有秘密的人都不需要費心這樣做。這是不正確的,因為稍加思考就會明白,幾乎每個人都開始透過網際網路進行金融交易,而罪犯對此非常感興趣。即使您一生都沒有對任何人造成任何冒犯,惡意人士也會對此感興趣。總的來說,存在一個問題,即一個人是否甚至可以控制自己的通訊,從私人的親密關係到商業計劃,再到投票(一些司法管轄區出於便利,允許透過網際網路投票,儘管這樣做存在公民風險),以及幾乎所有其他事情。此外,任何能夠訪問或控制您通訊的人都可以利用它製造很多麻煩,從在您不知情的情況下使用您的計算機傳播兒童色情製品到向總統或教皇傳送威脅資訊。

也許更重要的是,最終的問題是隱私的喪失是否會被用來進行審查(例如,政府或壓力集團)或不公正的起訴(例如,在廣泛竊聽通訊的情況下,無罪推定是否能夠生存)?在通訊受到虛假資訊的推斷、欺騙和利用的情況下,可以毫不誇張地說,自由思想本身也處於危險之中。更廣泛地說,負責任的政府和民主本身需要對公共政策選擇進行思考和討論,在大多數情況下,首先是私下進行,然後當然是公開進行。

高質量的密碼學,如果正確實施和使用,可以為聯合國和許多國家權利憲章中規定的保護個人隱私權提供相當大的保障。學習如何使用它值得花費時間和精力。GoldBug 使高質量的密碼學可供所有人使用,並使其能夠用於保護許多普通活動。

GoldBug Messenger 旨在成為一個安全且易於使用的電子郵件客戶端和即時通訊工具,此外還支援其他加密用途。汽車使用類比是很有啟發性的。最初的汽車沒有安全帶或防抱死制動系統等安全措施。結果發現這種情況令人不滿意——許多人死傷,而本可以避免。如今,除了許多底盤設計規定之外,我們還使用安全帶、安全氣囊和防抱死制動系統。在這個類比中,未加密的電子郵件或即時通訊就像沒有安全裝置的汽車。請在將訊息傳送到網際網路之前對訊息進行加密。您與之交談的人也應該這樣做,原因相同。

但是,汽車的比喻在一點上失敗了。GoldBug——以及所有對訊息的密碼保護——依賴於通訊鏈路的兩個端點同步執行。這意味著兩個使用者都必須安裝相容的密碼學;在大多數情況下,就像 GoldBug 的情況一樣,這意味著相同的軟體(在一定範圍內,因為早期版本在某些情況下可能會與後期版本互動)。好的密碼軟體會檢查這類事情,GoldBug 也是如此。但事實仍然是,除非另一個使用者也擁有並使用 GoldBug,否則 GoldBug 將無法保護您的隱私。您應該告訴您的朋友使用 GoldBug!大多數作業系統、最重要的 CPU 型別和大多數計算機制造商都有相應的版本。保持最新版本的 GoldBug 很容易,因為 GoldBug 是免費提供的(**免費**,既指免費啤酒(無成本),也指您可以隨意使用,因為它沒有限制性的許可證),並且可以在網際網路上輕鬆獲得。

為什麼要使用“GoldBug”這個名字呢?

《金甲蟲》是埃德加·愛倫·坡創作的短篇小說。

威廉·勒格蘭德發現了一個金色的聖甲蟲,他的僕人朱庇特在聖甲蟲附近發現了一張羊皮紙。勒格蘭德注意到上面有字跡,他的行為(包括對財富的夢)讓朱庇特擔憂,他向一個熟人(未命名的敘述者)尋求幫助。他同意了。

在找回文字並解密後,三人組成團隊開始了冒險之旅……

《金甲蟲》故事——在所有文學作品中,這是為數不多的幾個——將加密作為故事的一個元素。坡是第一個將密碼學納入流行小說的作家之一,他在 1843 年出版了《金甲蟲》。這部作品立即獲得成功,並廣受歡迎——這是坡生前最著名的作品。

這個軟體專案就是從坡的著名故事中獲得名稱的。170 多年後,密碼學比坡的時代更加重要,甚至至關重要。加密應該是我們在不安全的網際網路上通訊的常規方式。

加密:GoldBug 提供了 RSA 的替代方案

GoldBug Messenger 包含幾種替代密碼。原因是一種密碼學的常識。如果任何一種密碼從根本上變得不安全(由於數學分析的進步或可能是硬體進步(例如量子計算)),另一種密碼可能會保持安全。

除了 RSA,GoldBug 還實現了 ElGamal 加密演算法,以及 NTRU 和 McEliece。NTRU 的最新版本,以及 McEliece(也是最新版本),目前被認為比其他演算法更不容易受到計算機硬體效能進步(特別是量子計算)的影響。事實上,有一些顯著的結果證明,在某些條件下,情況確實如此。在撰寫本文時,還沒有實用的量子計算機,但一些研究表明,工作量子計算機將具有幾個優勢,包括使一些針對當前安全加密演算法的理論攻擊變得實用。目前正在進行大量研究工作,旨在使這些計算機可用。據目前所知,還沒有可用的計算機,但提前做好準備是明智之舉。

例如,在 2016 年 2 月,NIST(美國政府負責監督該領域公開研究和標準的機構)釋出了一份報告,該報告指出 RSA“不再安全”;這預示著可能出現突破。[1]

GoldBug 還提供了幾種可選的數字簽名方法,這是加密網際網路通訊的重要方面。同樣,這些選項應該在針對一種或另一種方法的密碼分析進展的情況下,允許持續的安全。它們包括:DSA、ECDSA、EdDSA、ElGamal 和 RSA 簽名演算法。

當然,GoldBug 允許每個使用者選擇金鑰長度(更長的金鑰比更短的金鑰更不容易破解)、在特定情況下要使用的加密密碼、要使用的雜湊型別,以及在某些情況下要使用的“迭代次數”和鹽長度。GoldBug 使用者的優勢在於,每個使用者都可以單獨定義這些事項,儘管預設值在大多數情況下都是合理的。

它可以被稱為手動設定和單獨選擇的“密碼 DNA”,這在端到端加密應定義時至關重要。***?????***

圖 2:RSA 的替代方案

圖 2:GoldBug 提供了 RSA 的替代方案


RSA、ElGamal、NTRU 和 McEliece 的比較

目前,GoldBug 支援 McEliece、NTRU、ElGamal 和 RSA 加密演算法。

McEliece 密碼系統是一種非對稱加密演算法,由 Robert McEliece 在 1978 年開發。它是第一個在加密過程中使用隨機化的方案。它是在量子計算機時代安全使用的候選方案,因為它對使用 Shor 演算法的攻擊具有免疫力,並且更普遍地對使用傅立葉取樣的測量成本狀態具有免疫力。該演算法基於對一般線性碼求逆的難度(這是已知為 NP 困難的問題)。McEliece 在使用特定型別(即 Goppa 碼)時,已抵禦了所有密碼分析,直到本文撰寫時。與 RSA 等演算法相比,McEliece 密碼系統具有一些優勢,因為加密和解密都更快,但它也有一些缺點——金鑰非常非常非常大。(參見 https#en:wikipedia.org:wiki/McEliece_cryptosystem)

NTRU 是一種非對稱加密方法,由數學家 Jeffrey Hoffstein、Jill Pipher 和 Joseph Silverman 在 1996 年開發。它基於格問題,格問題被廣泛認為是不可逆的(即,它們非常困難,而且還沒有找到解決方法,目前也不懷疑有解決方案)。NTRU 的最新版本據信不會受到基於量子計算機攻擊的影響。然而,在本文撰寫時,NTRUEncrypt 還沒有像更古老(更常見)的方法(例如 RSA)那樣經過充分研究。NTRUEncrypt 被 IEEE 標準化為 P1363.1(參見 https://en.wikipedia.org/wiki/NTRU)。

ElGamal 加密演算法,或 ElGamal 密碼系統,由密碼學家 Taher ElGamal 在 1985 年開發。它是一種公開金鑰加密方案,其基礎是 Diffie 和 Hellman 在其開創性的金鑰交換方案中首次描述的想法。ElGamal 加密方案基於在有限階迴圈群內的操作,就像 Diffie-Hellman 金鑰協議一樣。ElGamal 加密方法在假設決策 Diffie-Hellman 問題在底層群上不是平凡的情況下,被證明是 IND-CPA 安全的。ElGamal 簽名方案與加密方法有關,但並不完全相同。(ElGamal 簽名方法未在 GoldBug 中實現 ***矛盾。什麼是正確的???***)。ElGamal 不受專利許可限制(參見 https://en.wikipedia.org/wiki/ElGamal_encryption)。

RSA(以其發明者 Rivest、Shamir 和 Adleman 的名字命名)是一種非對稱加密演算法,可用於加密和數字簽名。它使用一對金鑰,包括用於解密或簽名資料的私鑰和公鑰。兩把金鑰都是由 GoldBug 在使用者的指示下生成的,這需要相當長的時間和精力。與其他非對稱加密演算法一樣,公鑰(一對公鑰/私鑰)在開始加密通訊之前會傳輸給通訊方。它可能會被任何有安全漏洞的人知道。據信,從另一把金鑰計算出任何一把金鑰在計算上是不可行的,因為在 RSA 的情況下,它取決於整數分解問題的難度(參見 https://en.wikipedia.org/wiki/RSA_(cryptosystem))。由於最近關於 RSA 安全性的結果,應該只使用非常長的 RSA 金鑰。

混合加密系統

GoldBug 實現了用於訊息身份驗證和訊息機密性的混合系統。這樣做的原因是,一種通用的密碼類別(即非對稱金鑰加密密碼,也被稱為公鑰/私鑰密碼)速度慢得多,但在某些方面比另一種通用類別(即對稱金鑰加密密碼)更安全。GoldBug 使用兩者來利用它們的各自優點。GoldBug 還生成每訊息身份驗證和加密金鑰。這兩個金鑰用於對資料進行身份驗證和封裝,通常執行速度更快。然後使用非對稱演算法的公鑰對這兩個金鑰進行封裝,併發送給另一個使用者。

非 NTRU 私鑰透過 gcry_pk_testkey() 函式進行正確性評估。公鑰還必須滿足一些基本標準,例如公鑰識別符號。***???***

GoldBug 使用 libgcrypt 和 libntru 庫來生成私鑰和公鑰對。目前,它在初始化過程中可選地生成 12 個金鑰對。這些金鑰對可以被唯一地使用(最多可用於 12 個通訊方),因此無需經常重複金鑰生成。另一方面,尚未使用的金鑰可能會被複制,如果您的計算機被惡意軟體入侵,因此在首次使用時可能不安全。妥善保管它們非常重要。目前,GoldBug 不支援公鑰基礎設施 (PKI),因此不依賴任何第三方來提供金鑰身份驗證。今天使用的多數密碼系統都是這樣設計的,因為當使用具有中央金鑰身份驗證機制的 PKI 時,商業控制密碼的使用更容易。GoldBug 中的金鑰必須以其他方式交換(並驗證為正確);GoldBug 提供了幾種方式。GoldBug 還提供了一種機制,用於安全地分發一次性使用的資料封裝會話金鑰。同樣,這些金鑰使用公鑰系統進行保護。額外的機制允許透過先前建立的私鑰分發會話金鑰。還可以可選地對傳輸的資料應用數字簽名,從而確保接收方收到的是預期的內容,並且沒有被篡改。

如果節點共享相同的 libgcrypt 和 libntru 庫,則可以選擇不同金鑰型別的 GoldBug 節點之間的通訊是可能的。

例如,請考慮以下訊息方案:EPublic Key(Encryption Key

  1. NIST / Chen, Lily / Jordan, Stephen / Liu, Yi-Kai / Moody, Dustin / Peralta, Rene / Perlner, Ray / Smith-Tone, Daniel: NISTIR 8105,草案,關於後量子密碼學的報告,URL:http://csrc.nist.gov/publications/drafts/nistir-8105/nistir_8105_draft.pdf,美國國家標準與技術研究院。2016 年 2 月
華夏公益教科書