プライバシーとセキュリティ

jrnlはプライバシーとセキュリティを念頭に置いて設計されていますが、他のプログラムと同様に、 注意すべきいくつかの制限があります。

パスワードの強度

jrnlはパスワードの強度要件を強制しません。短いまたは一般的に使用されるパスワードは、 基本的なセキュリティスキルを持つ人が暗号化されたjrnlファイルにアクセスするのを 簡単に回避できてしまいます。

合理的否認

ジャーナルの内容を暗号化の層の背後に隠すことはできますが、誰かがあなたの設定ファイルに アクセスできる場合、ジャーナルの存在、そのジャーナルファイルの場所、最後に編集した 時期を知ることができます。十分な力の不均衡がある場合、誰かが非技術的な手段を通じて あなたに暗号化を解除させることができるかもしれません。

スパイ行為

jrnlは開かれていない間のジャーナルエントリーへの不正アクセスから保護できますが、 安全でないコンピューター/場所からは保護できません。例えば:

  • 誰かがキーロガーをインストールし、ジャーナルに入力する内容を追跡する。
  • 誰かがエントリーを書いている間にあなたの画面を見ている。
  • 誰かがjrnlにバックドアをインストールしたり、ジャーナルを毒して エントリーを明らかにするよう仕向けたりする。

保存されたパスワード

暗号化されたジャーナルを作成する際、「パスワードをキーチェーンに保存するか」と 尋ねられます。このキーチェーンはPython keyringライブラリを 使用してアクセスされ、オペレーティングシステムによって動作が異なります。

Windowsでは、キーチェーンはWindows Credential Manager(WCM)で、ロックできず、 あなたのユーザー名で実行されている他のアプリケーションからアクセスできます。 これが心配な場合は、パスワードを保存しないほうがよいかもしれません。

シェル履歴

コマンドラインからエントリーを入力できるため、コマンドライン操作をログに記録する ツールは潜在的なセキュリティリスクとなります。以下に、様々なシェルでこの問題に 対処する方法を示します。

bash

~/.bashrcファイルに以下の行を追加することで、jrnlの履歴ログを無効にできます:

HISTIGNORE="$HISTIGNORE:jrnl *"

bash履歴から既存のjrnlコマンドを削除するには、bashの履歴ファイルから 単純に削除します。このファイルのデフォルトの場所は~/.bash_historyですが、 必要に応じてecho "$HISTFILE"を実行して見つけることができます。また、 history -cを実行して履歴からすべてのコマンドを削除することもできます。

zsh

~/.zshrcファイルに以下を追加することで、jrnlの履歴ログを無効にできます:

setopt HIST_IGNORE_SPACE
alias jrnl=" jrnl"

zsh履歴から既存のjrnlコマンドを削除するには、zshの履歴ファイルから 単純に削除します。このファイルのデフォルトの場所は~/.zsh_historyですが、 必要に応じてecho "$HISTFILE"を実行して見つけることができます。また、 history -cを実行して履歴からすべてのコマンドを削除することもできます。

fish

デフォルトでは、fishはスペースで始まるコマンドをログに記録しません。 常にjrnlの前にスペースを付けて実行したい場合は、~/.config/fish/config.fish ファイルに以下を追加できます:

abbr --add jrnl " jrnl"

fish履歴から既存のjrnlコマンドを削除するには、history delete --prefix 'jrnl 'を実行します。

Windowsコマンドプロンプト

Windowsは履歴をディスクにログ記録しませんが、コマンドプロンプトセッションには 保持されます。ジャーナリング後、コマンドプロンプトを閉じるかAlt+F7を 押して履歴をクリアしてください。

エディターからjrnlへの転送中のファイル

エントリーの作成や編集時、jrnlはエディターがジャーナルにアクセスできるよう ディスク上に暗号化されていない一時ファイルを使用します。エディターを閉じた後、 jrnlはこの一時ファイルを削除します。

つまり、ジャーナルエントリーを保存したがまだエディターを閉じていない場合、 暗号化されていない一時ファイルがディスク上に残ります。この間にコンピューターが シャットダウンしたり、jrnlプロセスが予期せず終了したりすると、暗号化されて いない一時ファイルがディスク上に残ります。この問題を軽減するには、エディターを 閉じる直前にのみ保存するようにしてください。また、一時フォルダからこれらの ファイルを手動で削除することもできます。デフォルトでは、これらはjrnl*.jrnl という名前ですが、テンプレートを使用して いる場合は、テンプレートと同じ拡張子になります。

エディター履歴

一部のエディターは、将来の使用のためにディスク上に使用履歴を保存します。 これは、最近の検索パターンやエディターコマンドを通じて機密情報が漏洩する 可能性があるという意味でセキュリティリスクとなる可能性があります。

Visual Studio Code

Visual Studio Codeは、後でコンテンツを復元またはレビューできるように、 保存されたファイルの内容を保存します。すべてのファイルに対してこの機能を 無効にするには、設定エディターworkbench.localHistory.enabled設定のチェックを外します。

または、workbench.localHistory.exclude設定でパターンを 設定することで、特定のファイルに対してこの機能を無効にできます。jrnlによって 生成される暗号化されていない一時ファイルを除外するには、設定エディターworkbench.localHistory.exclude設定に**/jrnl*.jrnlパターンを設定できます (テンプレートを使用していない場合)。

Note

Windowsでは、履歴の場所は通常%APPDATA%\Code\User\Historyにあります。

Visual Studio Codeは、開いているすべての未保存ファイルのコピーも作成します。 これらのコピーはバックアップ場所に保存され、ファイルを保存すると自動的に クリーンアップされます。ただし、ファイルを保存する前にコンピューターが シャットダウンしたり、Visual Studio Codeプロセスが予期せず停止したりすると、 暗号化されていない一時ファイルがディスク上に残る可能性があります。これらの ファイルはバックアップ場所から手動で削除できます。

Note

Windowsでは、バックアップ場所は通常%APPDATA%\Code\Backupsにあります。

Vim

Vimは~/.viminfoにある所謂Viminfoファイルに進捗データを保存します。 これにはコマンドライン履歴、検索文字列履歴、検索/置換パターン、レジスタの 内容など、あらゆる種類のユーザーデータが含まれています。また、予期せぬ アプリケーションの終了後に開いていたファイルを復元できるよう、Vimはスワップ ファイルを使用します。

これらのオプションや他の情報漏洩の可能性のある機能は、Jrnl設定のeditorキーを 以下のように設定することで無効にできます:

editor: "vim -c 'set viminfo= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure'"

すべてのプラグインとカスタム設定を無効にし、デフォルト設定でVimを起動するには、 コマンドラインで-u NONEを渡すこともできます。これにより、悪意のあるプラグインや その他の検出が困難な情報漏洩が確実に排除されます。ただし、これによりエディター の使用感が大幅に低下します。

代わりに、Jrnlファイルが編集されているときに自動的に検出するようVimに設定するには、 autocommandを使用できます。これを~/.vimrcに配置します:

autocmd BufNewFile,BufReadPre *.jrnl setlocal viminfo= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure

Note

テンプレートを使用している場合は、 .jrnlの代わりにテンプレートのファイル拡張子を使用する必要があります。

言及したオプションの詳細については、Vimで:h <option>を参照してください。

Neovim

Neovimは主にVimと互換性があるよう努めており、そのためVimと同様の機能を 持っています。Neovimの1つの違いは、Viminfoファイルの代わりにShaDa ("shared data")ファイルと呼ばれるものが~/.local/state/nvim (Neovim v0.8.0以前は~/.local/share/nvim)にあることです。ShaDaファイルは Vimと同じ方法で無効にできます。

editor: "nvim -c 'set shada= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure'"

ここでも-u NONEを渡して、デフォルト設定でセッションを開始できます。

上記のVimと同様に、Vimscriptでautocommandを作成できます:

autocmd BufNewFile,BufReadPre *.jrnl setlocal shada= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure

または、同じことをLuaで:

vim.api.nvim_create_autocmd( {"BufNewFile","BufReadPre" }, {
  group = vim.api.nvim_create_augroup("PrivateJrnl", {}),
  pattern = "*.jrnl",
  callback = function()
    vim.o.shada = ""
    vim.o.swapfile = false
    vim.o.undofile = false
    vim.o.backup = false
    vim.o.writebackup = false
    vim.o.shelltemp = false
    vim.o.history = 0
    vim.o.modeline = false
    vim.o.secure = true
  end,
})

Note

テンプレートを使用している場合は、 .jrnlの代わりにテンプレートのファイル拡張子を使用する必要があります。

言及したオプションの詳細については、Neovimで:h <option>を参照してください。

他のリスクに気づいた場合

GitHubで問題を提出して、メンテナーに知らせてください。