KeePassの細かな設定

# 概要

KeePassはWindows用パスワード管理ソフト。フリーウェア。
パスワード情報はローカルのファイルに全てマスターキーで暗号化されて保存される。単体でクラウドサーバなどにアップロードされることはないので、セキュリティ的にもシンプルに安全を確保しやすい。

# マスターキーの変更

KeePassファイルを保護するためのマスターキーの変更。KeePassファイルを開く時に最初に入力するのがマスターキー。マスターキーは十分安全な文字列にするべき。

1. 「ファイル」→「マスターキーの変更」
2. 新しいマスターキーを入力して「OK」
3. 「保存」
    + 保存を押すことでKeePassファイルが書き出される
4. 緊急用シート作成について選択

# エントリの利用

### パスワードのコピー

* 操作
    + エントリの"パスワード"欄をダブルクリック
    + エントリを選択した状態で[Ctrl]+[C]
* 一定時間の間、パスワード文字列がクリップボードにコピーされる
* 一定時間経過後はクリップボードが自動的に消去される

### ユーザ名のコピー

* 操作
    + エントリの"ユーザ名"欄をダブルクリック
    + エントリを選択した状態で[Ctrl]+[B]
* 一定時間の間、ユーザ名文字列がクリップボードにコピーされる
* 一定時間経過後はクリップボードが自動的に消去される

### URLを開く

エントリのURL欄のURLを開く。
URL欄にファイルパスが書かれていればファイルの種類に対応したプログラムでファイルを開く。

* 操作
    + エントリの"URL"欄をダブルクリック
    + エントリを選択した状態で[Ctrl]+[U]
* エントリのURL欄のURLがデフォルトブラウザで開かれる
    + URL欄にファイルパスが書かれていればファイルの種類に対応したプログラムでファイルが開かれる
    + KeePassファイルのファイルパスがURL欄にあれば、当該KeePassファイルのマスターパスワード入力が促されてファイルが追加で開かれる。

### URLのコピー

* 操作
    + エントリの"URL"欄をダブルクリック
    + エントリを選択した状態で[Ctrl]+[Shift]+[U]
* 一定時間の間、URL文字列がクリップボードにコピーされる
* 一定時間経過後はクリップボードが自動的に消去される

# エントリの編集と履歴

サイトなどでパスワードを変更した場合や、URLの変更、メモの入力など、KeePassエントリを編集できる。

## エントリの編集

### エントリ更新

1. KeePassエントリのタイトルをダブルクリック
    + ウィンドウ「エントリの編集」が表示
2. 必要な変更を行って「OK」
3. メニューの「ファイル」→「保存」でKeePassファイルに保存

### エントリの履歴参照とロールバック

1. KeePassエントリのタイトルをダブルクリック
    + ウィンドウ「エントリの編集」が表示
2. タブ「履歴」→任意の過去の履歴を選択
3. 表示または復元を行う
    + 「表示」を選択すれば選択した過去の登録内容をウィンドウ「エントリの編集」で参照できる
    + 「復元」を選択すればKeePassエントリを選択した過去の履歴までロールバック
        - 実際には過去の状態にエントリが更新され、当該エントリの履歴が一つ増える
4. 「復元」を選択した場合には、メニューの「ファイル」→「保存」でKeePassファイルに保存することを忘れずに

### エントリの履歴削除

エントリを複製して流用した場合、複製元のエントリ履歴も複製されて複製先エントリに保持される。こうした履歴の削除は大抵必要だろう。

1. KeePassエントリのタイトルをダブルクリック
    + ウィンドウ「エントリの編集」が表示
2. タブ「履歴」→任意の過去の履歴を選択→「削除」→「OK」
3. メニューの「ファイル」→「保存」でKeePassファイルに保存する

## ファイルのパスワード

KeePassのエントリにファイルのパスワードを保存できる。
エントリのURL欄にファイルパスを指定すればよい。
以下の手順でショートカットキーを叩けば例えば他のKeePassファイルやパスワードZIPファイルなどをエントリに登録して楽に開ける。

1. [Ctrl]+[c]
    + ファイルのパスワードをクリップボードへコピーする
2. [Ctrl]+[u]
    + エントリのURL欄で指定したファイルを開く (例　C:\dir\file.zip)
    + ファイルを開くアプリが起動する
3. ファイルを開く操作などを行い、パスワード入力を求められる
4. [Ctrl]+[v]
    + パスワード文字列を貼り付ける

## エントリへのファイル添付

パスフレーズ付きの電子証明書を扱う際など、KeePassエントリにパスフレーズだけでなく電子証明書ファイルを添付しておくことができる。
KeePassに添付しておくことでKeePassのマスターパスワードでも保護されて安全性が高まると同時に、電子証明書ファイルの保存場所もKeePassに集約して管理が容易になる。

1. KeePassエントリのタイトルをダブルクリック
2. タブ「高度」に"添付ファイル"フィールドの「追加」→「ファイルの添付」→「OK」
3. メニューの「ファイル」→「保存」でKeePassファイルに保存 

# ランダムパスワード文字列の生成

ランダムなパスワード文字列を生成できる。
アカウント登録時やパスワード変更時に、使用するパスワードを自動生成するために役立つ。
使用可能な文字の指定や文字数などを指定でき、プロファイルとして保存しておき次回以降に同じ条件でのパスワード文字列生成に使用可能。

## ランダムパスワード文字列の生成手順

1. エントリを開く
1. "もう一度"欄の右側にある鍵ボタンを選択
1. プルダウンされるプロファイルから条件に合致するものを選択する
    + エントリの"パスワード"および"もう一度"欄に生成されたパスワードが入力される
1. 「OK」→「ファイル」→「保存」で更新されたエントリをファイルへ保存

## ランダムパスワード文字列生成のプロファイル作成

ランダムパスワードを生成する際の文字列条件をプロファイルとして保存しておく手順。
ランダムパスワード生成のプロファイルはKeePassのファイルにではなく、インストールされているKeePassプログラムの設定としてPCに保存される。

1. 任意のエントリを開く
1. "もう一度"欄の右側にある鍵ボタンを選択→「パスワード生成画面を開く」
1. 「設定」タブにて条件を指定してから"プロファイル"欄の右にある「💾」
    + 条件に変更を加えると「プロファイル」欄が"(カスタム)"に変化する
1. プロファイル名を入力(プロファイル新規登録)か、プルダウンで選択(既存プロファイル更新)して「OK」

# KeePassのショートカット

* [Ctrl]+[C]
    + 動作　/　選択したエントリのパスワードをクリップボードにコピー
* [Ctrl]+[B]
    + 動作　/　選択したエントリのユーザ名をクリップボードにコピー
* [Ctrl]+[U]
    + 動作　/　選択したエントリのURLを標準のブラウザで開く
* [Ctrl]+[Shift]+[U]
    + 動作　/　選択したエントリのURLをクリップボードへコピー
* [Ctrl]+[V]
    + 動作　/　次ウィンドウで選択したエントリのユーザ名、パスワードを入力する
        - 具体的には[Alt]+[TAB]、ユーザ名、[TAB]、パスワード、[Enter]の順にキー入力が行われる
    + KeePassでエントリを選択した状態で入力

# 複数名での利用と同時編集

KeePassファイルをファイルサーバに置けば、同時に複数名がKeePassファイルを開いて同時利用できる。またそれぞれが勝手に編集を行っても変更箇所をマージしてくれる。

具体的にはファイル保存の段階で他のユーザによる更新があったことを検知して、マージするか、自分の変更を破棄して保存しないか、自分の保持している内容で上書きするか問合せしてくれる。

これまで自分はこの利用方法でファイルが壊れたなどの不都合に遭遇したことはないが、バックアップは適宜とっておくべきと思う。同一エントリを別々に変更掛けた場合には後勝ちになるのではないかと思うが、それで困る場合もあるかもしれない。後勝ちの場合でも履歴としてマージされて残る、ということになるんじゃないか(未確認)

# Firefoxでの入力支援

Firefoxのプラグイン `Kee` と、KeePassのプラグイン `KeePassRPC` の二つを利用すると、Firefoxのパスワード入力時にユーザ名とパスワードの入力を簡略化できる。

## KeePassRPCとKeeのインストール

### KeePassRPCのインストール

1. https://github.com/kee-org/keepassrpc/releases から最新版の `KeePassRPC.plgx` をダウンロード
2. KeePassRPC.plgxを、KeePassのインストールディレクトリ内の `Plugins` ディレクトリへコピー
3. KeePassを起動
    + KeePassRPC.plgxインストール後の初回起動時に自動的にコンパイルが行われる
    + KeePassやKeePassRPCのバージョンアップ後の初回起動時に自動的にコンパイルが行われる

### Keeのインストール

Firefoxの `about:addons` にて `Kee` で検索してプラグインをインストールする。

### KeePassのエントリへのURL登録

KeePassRPCとKeeをインストールすると、FirefoxとKeePassが通信できるようになる。次にどのURLでどのエントリのユーザ名とパスワードを入力するべきかの紐づけが必要になる。
このためにKeePassのエントリにURL登録を行う。Qiitaのユーザ名とパスワードをKeePassに登録しているのであれば、QiitaのエントリのURL欄に `https://qiita.com/` と登録しておく。

## 使用イメージ

これでFirefoxで `https://qiita.com/` へアクセスしてパスワード入力フォームが表示されると、ユーザ名とパスワードが自動入力され、入力フォームにアイコンが表示されるようになる。

![Screenshot-2018-6-21 ログイン - Qiita.png](https://qiita-image-store.s3.amazonaws.com/0/43522/3eaba7c2-a169-3d9d-3872-72046dc6b6dd.png)

同一サイトに対して複数のKeePassエントリが登録されている場合などには入力フォーム右端のアイコンをクリックするとエントリを選択できる。

これでユーザ名もパスワードもキーボードから入力せずにログインできるようになる。便利。

## 自動入力の遅延時間設定

KeePassにてキーボードでエントリを選択して[Ctrl]+[V]で、ユーザ名とパスワードを入力できる。具体的には[Ctrl]+[V]を入力した瞬間から

```
[Alt]+[TAB]
(USERNAME)
[TAB]
(PASSWORD)
```

がキーボード入力される。
便利な機能なのだけれども、[Ctrl]+[V]を押した瞬間に入力が始まってしまうので、素早くキーから指を離さないと[Ctrl]が入力された状態でUSERNAMEが入力されてしまう。

これを防ぐために入力前にミリ秒単位で待機させる設定がある。

1. "エントリの編集"ウィンドウにてタブ「自動入力」
2. 「標準のシーケンスを上書き」
3. 以下入力`{DELAY 350}{USERNAME}{TAB}{PASSWORD}{ENTER}`

これで350ミリ秒待機してから入力開始され、誤ってUSERNAME入力時に[Ctrl]が入力されない。

一つ一つのエントリ個別に設定するのはタルいので、ルートのグループに対して設定してあげるとデフォルト設定として使用されるので幸せになれると思う。

# Androidとの連携

Android端末でもKeePassを利用できる。
KeePass2AndroidというAndroidアプリでKeePassファイル(.kdbx)を読んだり編集したりできる。(編集については私は行っていないので詳細未確認)

[KeePass2Android](https://play.google.com/store/apps/details?id=keepass2android.keepass2android)

## 使用手順概要

1. PC上のKeePassで作成したKeePassファイル(.kdbx)ファイルをAndroidへダウンロード
    + KeePassファイルのマスターパスワードがしっかりしていればファイル転送方法はあまり気にしなくてもよい
2. アプリやブラウザでパスワード情報の入力を求められたら、パスワード等の入力欄で日本語入力アプリを切り換えてKeePass2Androidを選択
4. KeePass2Androidでエントリを選択
    + .kdbxを開いていなければマスターパスワードを入力して開く必要がある
5. アプリを切り換えて入力欄にカーソルをおく
6. 日本語入力アプリとしてKeePassが画面に表示されるので、ボタン「ユーザー」や「パスワード」を選択すると入力欄にユーザ名やパスワード文字列が入力される