safeStorage
ローカルマシンへの保存のために、文字列の簡単な暗号化と復号化へのアクセスを許可します。
プロセス: メイン
このモジュールは、OSが提供する暗号化システムを使用して、ディスクに保存されているデータへの追加の保護を追加します。各プラットフォームの現在のセキュリティセマンティクスを以下に示します。
- macOS: 暗号化キーは、ユーザーによるオーバーライドがない限り、他のアプリケーションがそれらをロードすることを防ぐ方法で、Keychain Access内のあなたのアプリ用に保存されます。したがって、コンテンツは、同じユーザー空間で実行されている他のユーザーや他のアプリから保護されます。
- Windows: 暗号化キーは、DPAPIを介して生成されます。Windowsのドキュメントによると、「通常、データを暗号化したユーザーと同じログオン資格情報を持つユーザーのみが、データを復号化できます」。したがって、コンテンツは同じマシン上の他のユーザーから保護されますが、同じユーザー空間で実行されている他のアプリからは保護されません。
- Linux: 暗号化キーは、ウィンドウマネージャーとシステムの設定によって異なる秘密のストアに生成および保存されます。現在サポートされているオプションは
kwallet
、kwallet5
、kwallet6
、gnome-libsecret
ですが、将来のバージョンのElectronではさらに多くのオプションが利用できる可能性があります。そのため、safeStorage
APIで保護されたコンテンツのセキュリティセマンティクスは、ウィンドウマネージャーと秘密のストアによって異なります。- すべてのLinux設定で秘密のストアが利用できるわけではないことに注意してください。秘密のストアが利用できない場合、
safeStorage
APIを使用して保存されたアイテムは、ハードコードされたプレーンテキストパスワードで暗号化されるため、保護されません。safeStorage.getSelectedStorageBackend()
がbasic_text
を返す場合、これが発生したことを検出できます。
- すべてのLinux設定で秘密のストアが利用できるわけではないことに注意してください。秘密のストアが利用できない場合、
Macでは、システムKeychainへのアクセスが必要であり、これらの呼び出しはユーザー入力の収集のために現在のスレッドをブロックする可能性があります。パスワード管理ツールが利用可能な場合、Linuxでも同様です。
メソッド
safeStorage
モジュールには、次のメソッドがあります。
safeStorage.isEncryptionAvailable()
boolean
を返します - 暗号化が利用可能かどうか。
Linuxでは、アプリがready
イベントを発行し、秘密鍵が利用可能な場合にtrueを返します。macOSでは、Keychainが利用可能な場合にtrueを返します。Windowsでは、アプリがready
イベントを発行するとtrueを返します。
safeStorage.encryptString(plainText)
plainText
文字列
Buffer
を返します - 暗号化された文字列を表すバイト配列。
この関数は、暗号化に失敗した場合にエラーをスローします。
safeStorage.decryptString(encrypted)
encrypted
Buffer
string
を返します - 復号化された文字列。safeStorage.encryptString
で取得した暗号化されたバッファーを文字列に復号化します。
この関数は、復号化に失敗した場合にエラーをスローします。
safeStorage.setUsePlainTextEncryption(usePlainText)
usePlainText
ブール値
Linux上のこの関数は、有効なOSパスワードマネージャーを現在のアクティブなデスクトップ環境で判断できない場合、暗号化/復号化関数で使用される対称キーの作成にメモリ内パスワードを使用することを強制します。この関数は、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
イベントを発行する前に関数が呼び出された場合。