safeStorage
文字列をローカルマシンに保管するにあたって簡単な暗号化と復号へのアクセスを可能にします。
プロセス: Main
このモジュールは、OS 提供の暗号システムを使用して、ディスクの保存データにさらなる保護を追加します。 各プラットフォームの現在のセキュリティセマンティクスの概要を以下に示します。
- 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 では、app で ready
イベントが発生し、かつ秘密鍵が利用可能である場合は true を返します。 MacOS では、キーチェーンが利用可能な場合は true を返します。 Windows では、アプリで ready
イベントが発生した以降は true を返します。
safeStorage.encryptString(plainText)
plainText
string
戻り値 Buffer
- 暗号化した文字列を表すバイトの配列。
この関数は、暗号化に失敗するとエラーを送出します。
safeStorage.decryptString(encrypted)
encrypted
Buffer
戻り値 string
- 復号した文字列。 safeStorage.encryptString
で得た暗号化されたバッファを、文字列に復号します。
この関数は、復号に失敗するとエラーを送出します。
safeStorage.setUsePlainTextEncryption(usePlainText)
usePlainText
boolean
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
イベントを発行する前に関数が呼び出されたとき。