本文へスキップ

safeStorage

ローカルマシンへの保存のために、文字列の簡単な暗号化と復号化へのアクセスを許可します。

プロセス: メイン

このモジュールは、OSが提供する暗号化システムを使用して、ディスクに保存されているデータへの追加の保護を追加します。各プラットフォームの現在のセキュリティセマンティクスを以下に示します。

  • macOS: 暗号化キーは、ユーザーによるオーバーライドがない限り、他のアプリケーションがそれらをロードすることを防ぐ方法で、Keychain Access内のあなたのアプリ用に保存されます。したがって、コンテンツは、同じユーザー空間で実行されている他のユーザーや他のアプリから保護されます。
  • Windows: 暗号化キーは、DPAPIを介して生成されます。Windowsのドキュメントによると、「通常、データを暗号化したユーザーと同じログオン資格情報を持つユーザーのみが、データを復号化できます」。したがって、コンテンツは同じマシン上の他のユーザーから保護されますが、同じユーザー空間で実行されている他のアプリからは保護されません。
  • Linux: 暗号化キーは、ウィンドウマネージャーとシステムの設定によって異なる秘密のストアに生成および保存されます。現在サポートされているオプションはkwalletkwallet5kwallet6gnome-libsecretですが、将来のバージョンのElectronではさらに多くのオプションが利用できる可能性があります。そのため、safeStorage APIで保護されたコンテンツのセキュリティセマンティクスは、ウィンドウマネージャーと秘密のストアによって異なります。
    • すべてのLinux設定で秘密のストアが利用できるわけではないことに注意してください。秘密のストアが利用できない場合、safeStorage APIを使用して保存されたアイテムは、ハードコードされたプレーンテキストパスワードで暗号化されるため、保護されません。safeStorage.getSelectedStorageBackend()basic_textを返す場合、これが発生したことを検出できます。

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-CinnamonDeepinGNOMEPantheonXFCEUKUIunityの場合、または次のコマンドラインフラグが提供された場合--password-store="gnome-libsecret"
  • kwallet - デスクトップセッションがkde4の場合、または次のコマンドラインフラグが提供された場合--password-store="kwallet"
  • kwallet5 - デスクトップセッションがkde5の場合、または次のコマンドラインフラグが提供された場合--password-store="kwallet5"
  • kwallet6 - デスクトップセッションがkde6の場合。
  • unknown - アプリがreadyイベントを発行する前に関数が呼び出された場合。