safeStorage
允許存取簡單的字串加密和解密,以便儲存在本機上。
程序:主程序
此模組透過使用作業系統提供的加密系統,為儲存在磁碟上的資料增加額外的保護。每個平台的目前安全語義概述如下。
- macOS:加密金鑰會儲存在 鑰匙圈存取 中您的應用程式,方式是防止其他應用程式在沒有使用者覆寫的情況下載入它們。因此,內容會受到保護,不會受到其他使用者和在相同使用者空間中執行的其他應用程式的影響。
- Windows:加密金鑰透過 DPAPI 產生。根據 Windows 文件:「通常,只有具有與加密資料的使用者相同的登入認證的使用者才能解密資料」。因此,內容會受到保護,不會受到同一部電腦上的其他使用者的影響,但不會受到在相同使用者空間中執行的其他應用程式的影響。
- Linux:加密金鑰會產生並儲存在一個秘密儲存區中,該儲存區會因您的視窗管理員和系統設定而異。目前支援的選項有
kwallet
、kwallet5
、kwallet6
和gnome-libsecret
,但未來版本的 Electron 中可能會提供更多選項。因此,透過safeStorage
API 保護的內容的安全性語義在視窗管理員和秘密儲存區之間會有所不同。- 請注意,並非所有 Linux 設定都有可用的秘密儲存區。如果沒有可用的秘密儲存區,使用
safeStorage
API 儲存的項目將不受保護,因為它們是透過硬編碼的純文字密碼進行加密。當safeStorage.getSelectedStorageBackend()
傳回basic_text
時,您可以偵測到這種情況。
- 請注意,並非所有 Linux 設定都有可用的秘密儲存區。如果沒有可用的秘密儲存區,使用
請注意,在 Mac 上,需要存取系統鑰匙圈,而且這些呼叫可能會封鎖目前執行緒以收集使用者輸入。如果密碼管理工具可用,Linux 也是如此。
方法
safeStorage
模組具有下列方法
safeStorage.isEncryptionAvailable()
傳回 boolean
- 是否提供加密功能。
在 Linux 上,如果應用程式已發出 ready
事件且秘密金鑰可用,則傳回 true。在 MacOS 上,如果鑰匙圈可用,則傳回 true。在 Windows 上,一旦應用程式發出 ready
事件,則傳回 true。
safeStorage.encryptString(plainText)
plainText
字串
傳回 Buffer
- 代表加密字串的位元組陣列。
如果加密失敗,此函式會擲回錯誤。
safeStorage.decryptString(encrypted)
encrypted
Buffer
傳回 string
- 解密的字串。將使用 safeStorage.encryptString
取得的加密緩衝區解密回字串。
如果解密失敗,此函式會擲回錯誤。
safeStorage.setUsePlainTextEncryption(usePlainText)
usePlainText
布林值
當無法為目前作用中的桌面環境判斷有效的作業系統密碼管理員時,此函式在 Linux 上會強制模組使用記憶體中的密碼來建立對稱金鑰,用於加密/解密函式。此函式在 Windows 和 MacOS 上為無運算。
safeStorage.getSelectedStorageBackend()
Linux
傳回 string
- Linux 上選取的密碼管理員的使用者友善名稱。
此函式會傳回下列其中一個值
basic_text
- 當未識別桌面環境,或提供下列命令列旗標--password-store="basic"
時。gnome_libsecret
- 當桌面環境為X-Cinnamon
、Deepin
、GNOME
、Pantheon
、XFCE
、UKUI
、unity
時,或提供下列命令列旗標--password-store="gnome-libsecret"
時。kwallet
- 當桌面工作階段為kde4
時,或提供下列命令列旗標--password-store="kwallet"
時。kwallet5
- 當桌面工作階段為kde5
時,或提供下列命令列旗標--password-store="kwallet5"
時。kwallet6
- 當桌面工作階段為kde6
時。unknown
- 當函式在應用程式發出ready
事件之前呼叫時。