Linux中國

最新 OpenPGP.js 版本的 3 個新功能

OpenPGP.js 是一個實現了 OpenPGP 標準 的密碼學庫,最常用於電子郵件加密。ProtonMail、Mailvelope 和 FlowCrypt 都使用 OpenPGP.js,這還僅僅是其中一些。也就是說 OpenPGP.js 庫對數百萬用戶的信息進行了加密。

OpenPGP 標準首次發佈於 20 世紀 90 年代,像幾乎任何東西一樣,需要維護和更新,以保證安全和可用性。該標準的「加密刷新」 正在進行中,它增加了現代的加密演算法並廢除了過時的演算法。為了提高可用性,各種電子郵件應用程序現在允許用戶無縫加密他們的通信,用戶無需管理他們的密鑰或他們的聯繫人的密鑰。

OpenPGP.js 於 2014 年首次發布,開始基於一個名為 GPG4Browsers 的早期原型,該原型基於 Herbert Hanewinkel(以及其他貢獻者)的幾個腳本。OpenPGP.js 的第二個版本於 2016 年發布,完全重新設計,使用 Uint8Arrays 而不是字元串(這大大增加了其性能),並在內部使用現代 ES6 模塊而不是 CommonJS 模塊。第 3 和第 4 版都是在 2018 年發布的,分別增加了對橢圓曲線加密法(ECC)和流的支持。

我和我的團隊繼續在 OpenPGP.js 上工作,以確保其發展為一個易於使用的強加密庫。

1、默認的橢圓曲線加密

在 OpenPGP.js 第 4 版中,生成新密鑰時默認使用 RSA。雖然 ECC 更快、更安全,但 Curve25519 還沒有在 OpenPGP 規範中得到標準化。加密刷新草案包括了 Curve25519,並且預計它將「按原樣」包含在下一版本的 OpenPGP 規範中,因此 OpenPGP.js 第 5 版現在默認使用 ECC 生成密鑰。

2、只導入你需要的模塊

同樣,雖然 OpenPGP.js 內部使用 ES6 模塊多年,但第 4 版仍然沒有發布一個合適的 ES6 模塊。相反,它只發布了一個 通用模塊定義 Univeral Module Definition (UMD)模塊,可以在瀏覽器和 Node.js 上運行。在第 5 版中,這種情況有所改變,為瀏覽器和 Node.js 發布了單獨的模塊(包括 ES6 和非 ES6),使庫用戶更容易在所有平台上導入 OpenPGP.js ,且(當使用 ES6 模塊時)只導入他們需要的部分。這在很大程度上是通過將構建系統切換到 rollup 來實現的。

3、拒絕弱加密技術

還有許多其他的安全改進。例如,1024 位 RSA 密鑰、ElGamal 和 DSA 密鑰被認為是不安全的,並被默認拒絕。此外,第 4 版已經默認使用 AES 加密,第 5 版現在完全默認拒絕使用較弱的演算法進行加密,即使公鑰聲稱只支持較弱的演算法。相反,它假定所有的 OpenPGP 實現都支持 AES(這種情況已經存在很長時間了)。

OpenPGP.js 的下一步是什麼?

展望未來,有一些安全方面的改進要做。用於識別公鑰的密鑰指紋仍然使用 SHA-1,儘管在加密技術更新中計劃對此進行修復。同時,建議使用不同的方法來確定用於加密的任何公鑰的真實性,例如使用提議的 網路密鑰目錄 Web Key Directory (WKD)標準直接從收件人的域中獲取整個密鑰,這已經由各種 電子郵件提供商 實現。WKD 支持內置於 OpenPGP.js 第 4 版,但在第 5 版中是一個單獨的模塊,以保持主庫的精簡。

同樣,當用密碼而不是公鑰加密信息或文件時(例如:在使用 OpenPGP 進行電子郵件加密時不常見,但在用於加密備份時更常見),密碼會使用相對較弱的 密鑰衍生函數 Key Derivation Function (KDF)轉換為對稱密鑰。因此,建議應用在將用戶的密碼傳遞給 OpenPGP.js 之前,先通過一個強大的 KDF,如 Argon2scrypt。希望加密刷新草案會包括這些演算法中的一種,以便在未來的 OpenPGP.js 版本中實現。

如何使用 OpenPGP.js 第 5 版

不過現在,OpenPGP.js 第 5 版已經 發布 到 npm 倉庫。如果你喜歡,可以隨時試用!歡迎在 GitHub 的 討論版 中進行反饋。然而,請注意,雖然 OpenPGP.js 是一個通用的加密庫,但它的主要使用情況是在需要與 OpenPGP 規範兼容的情況下(例如,在發送或接收 PGP 加密的電子郵件時)。對於其他的使用情況,不同的庫可能是一個更合適或性能更好的選擇。當然,總的來說,在嘗試使用任何加密技術時都要小心。

感謝閱讀,這裡是保護電子郵件的未來!

via: https://opensource.com/article/21/10/openpgpjs

作者:Daniel Huigens 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...