昔映画視聴メモ用のtwitter投稿ツールを作ったのですが、APIキーの保管をどうしようか悩んでいました。
ツールはGithubに上げているのでいつでも復元できますが、さすがにキーを上げるわけにはいきません。
とは言えPCが壊れたらまたキーを拾ってくるという作業が発生します。
別にtwitterの開発者サイトから拾えるのですが、自分で持ってた方が何かと楽ですよね。
というわけでファイルを暗号化すればどこにおいてもいいんじゃない?という考えのもと実行しようと思います。
Linuxでのファイル暗号化
よく仕事でパスワード付きzip圧縮を行いますが、今回単独ファイルなのでzipで固める必要はありません。
ファイルを開けない点ではいいのですが、どうせなら中身を暗号化したいところです。
Windowsだったらアタッシェケースとかのツールで暗号化できますが、ツールはubuntuで動かしているのでいいツールが欲しいところです。
opensslコマンドで暗号化してもいいんですが、鍵作成などの面倒なことはやりたくありません。
ここでGPGです
よくSoftware DesignでGPGで暗号化云々という記事を見ましたが、公開鍵暗号を使って暗号化、複合化ができるようです。
GnuPGの略でOpenPGPという暗号化ツールの派生らしいです。
(PGPがそれらの元々の暗号化ツールらしい)
しかし、結局鍵作る必要があるのかと思っていたところパスワードのみでも暗号化できるようです。
よかった、これでやってみよう。
ディレクトリ構成
ツールのディレクトリ構成です。
masashi@PC-ubuntu:~/movietweet$ ls -l 合計 32 -rwxrwxr-x 1 masashi masashi 1660 1月 14 2020 README.md drwxr-xr-x 2 masashi masashi 4096 10月 11 00:25 __pycache__ -rw-r--r-- 1 masashi masashi 202 9月 4 2019 configure.py # これを暗号化したい -rw-r--r-- 1 masashi masashi 413 7月 6 2020 gettw.py -rw-rw-r-- 1 masashi masashi 127 5月 16 2020 posttw.py -rw-rw-r-- 1 masashi masashi 180 1月 14 2020 requests.txt -rwxrwxr-x 1 masashi masashi 369 5月 16 2020 tweetapi.py -rw-r--r-- 1 masashi masashi 925 9月 27 12:00 twmovieinfo.sh
GPGのヘルプをみると-cオプションで出来るようです。
コマンド: -s, --sign 署名を作成 --clear-sign クリア・テクスト署名を作成 -b, --detach-sign 分遣署名を作成 -e, --encrypt データを暗号化 -c, --symmetric 暗号化には共通鍵暗号方式のみを使用 …
実施してみる
早速やってみます。
masashi@PC-ubuntu:~/movietweet$ gpg -c configure.py
これだけ。
デスクトップ環境で行いましたが、パスワード入力のウィザードが出てきました。
2回入力して完了。
gpgファイルが出来てます。
masashi@PC-ubuntu:~/movietweet$ ls -l 合計 36 -rwxrwxr-x 1 masashi masashi 1660 1月 14 2020 README.md drwxr-xr-x 2 masashi masashi 4096 10月 11 00:25 __pycache__ -rw-r--r-- 1 masashi masashi 202 9月 4 2019 configure.py -rw-rw-r-- 1 masashi masashi 272 1月 9 18:35 configure.py.gpg -rw-r--r-- 1 masashi masashi 413 7月 6 2020 gettw.py -rw-rw-r-- 1 masashi masashi 127 5月 16 2020 posttw.py -rw-rw-r-- 1 masashi masashi 180 1月 14 2020 requests.txt -rwxrwxr-x 1 masashi masashi 369 5月 16 2020 tweetapi.py -rw-r--r-- 1 masashi masashi 925 9月 27 12:00 twmovieinfo.sh
ファイルタイプ。
暗号化データになってます。
masashi@PC-ubuntu:~/movietweet$ file configure.py.gpg configure.py.gpg: GPG symmetrically encrypted data (AES256 cipher)
中身を見てみましょう。
masashi@PC-ubuntu:~/movietweet$ cat configure.py.gpg ? ??N?5????>????eN1u?l?L4?????q????Mx????v??MK?p?w3p?x??5h?~?,B?9???????;F???<?1????J:=???|F???w?,\rT(?????TC???;?Ok0?yD8lxv?p??8??~?P?/?????Q????R??Go??|4wq?c?KA?2u??./zYZ?'?"63W?C??&?*?6K+??i?i??84?? ??=?????M}??sJ??7Pmasashi@PC-ubuntu:~/movietweet$
ちゃんと暗号化されてますね。
これでは解読できそうもありません。
これなら別の媒体に保存しても大丈夫そうです。
別のマシンでも複合化できるかは別途確認しようと思います。