LibreOffice と OpenPGP (仕切り直し)
「Git Extensions と LibreOffice 6 と OpenPGP」で LibreOffice 文書に OpenPGP 署名できなくて「何がいけないんだろう。 誰かやり方を教えてください」と締めくくっていたが,原因が分かったので仕切り直しの記事を書くことにする。 情報を下さった方には感謝を捧げます。
OpenPGP 署名について
まず LibreOffice 6.0 のリリースノートはこちら。
Linux 版では LibreOffice 5.4 から OpenPGP 署名とその検証が可能だったようだが, 6.0 で Windows 版および macOS 版でも可能になった。 他のプラットフォーム(Android 版のビュアーとか)で対応しているかどうかは不明。
LibreOffice ドキュメントへのデジタル署名は X.509 鍵では以前から可能だった。 デジタル署名を付与することにより以下が担保される。
- 完全性(Integrity): 改竄の有無
- 認証(Authentication): なりすましの有無
- 否認防止(Non-repudiation): 文書作成の否認を防止(完全性と認証により達成可能)
デジタル署名可能な LibreOffice ドキュメントとして以下を確認している。
- Writer (文書ドキュメント)
- Calc (表計算ドキュメント)
- Impress (プレゼンテーション)
- Draw (図形描画)
- Math (数式)
また LibreOffice では PDF ドキュメントへのデジタル署名も可能だが, OpenPGP 署名には対応していないようだ(X.509 のみ)。 残念(まぁ,他の PDF ツールが対応してないと意味がないし)。
この記事では以下の環境を前提に話をすすめる。
- Windows 7 Professional SP1 64ビット版(Win10 でも大丈夫っぽい)
- LibreOffice 6.0.0 Windows 64ビット版(Portable 版でもいけるらしい)
- GnuPG 2.2.x
理由はすぐに分かる。
GnuPG のインストール
OpenPGP 署名を行うために GnuPG をインストールする。 インストールの手順については以下を参照のこと。
そしてインストール先だが,必ず既定の “C:\Program Files (x86)\gnupg
” フォルダにインストールすること。
どうやら LibreOffice は実行本体である gpg.exe
の場所を “C:\Program Files (x86)\gnupg\bin
” フォルダに決め打ちしているらしく,他のフォルダにインストールしても LibreOffice が認識しないのだ1。
ただ最近のインストーラはインストール先を指定する画面をすっ飛ばすみたい(?)なので,新規にインストールしている場合はあまり考えなくていいかもしれない。
なお LibreOffice が推奨している Gpg4win は不要で GnuPG の最小構成のみインストールできていれば問題ない。 フロント・エンドの Kleopatra も不要2。
LibreOffice ドキュメントへの OpenPGP 署名
まずメニューから「ファイル(F)」→「デジタル署名(Q)」→「デジタル署名(R)…」と辿っていく。
すると以下のウィンドウが表示される。
ここで「ドキュメントに署名(D)…」ボタンを押すと署名可能な鍵のリストが表示される。
OpenPGP 鍵であれば「支払期日」(何で?)の項目が “OpenPGP” と表記されている筈である(X.509 鍵なら “X.509” と表記される)。 鍵を選択して「署名」ボタンを押すとデジタル署名が付与される3。
デジタル署名は複数付与できる。 署名が完了したら「閉じる」ボタンを押して作業を終える。
正しいデジタル署名が付与されていれば,編集画面が以下のようになる筈である。
またこの状態で編集作業を行うと以下の表示になる。
ドキュメントの保存を実行するとデジタル署名が削除されるのでご注意を。
保存時に OpenPGP 暗号化オプションがあるんだけど…
文書を「名前を付けて保存」すると以下のオプションが表示される。
ここで「GPGキーで暗号化する」をチェックして保存すると暗号化可能な鍵のリストが表示されて暗号化できるっぽいんだけど,実際にやってみると
となって上手くいかない。 自分の鍵でもダメだったので,まだ機能が組み込まれてないとか?
OpenPGP 鍵でドキュメントが暗号化できると取り回しが凄く楽になるんだけどねぇ。 メールにパスワード書くとかマヌケなことをしなくて良くなるし(笑)
追記
真っさらな状態から OpenPGP 鍵を作って,その鍵を使って暗号化を行ったら上手くいった。 更にその状態で自分の公開鍵をインポートし,その公開鍵で暗号化を行ったところ,これも上手くいった。 どうも,私の鍵束もしくはその設定に問題があるっぽい。
というわけで,暗号化の方も使えるようだ。
- 暗号化は1つの公開鍵のみ受け入れる? (2つ以上同時に選ぶとエラーになる)
- 暗号化して保存した後にデジタル署名を行えば暗号化とデジタル署名を同時に行える