paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

GPGでファイルを単独で共通鍵暗号化する 復号化編

前回ツイートアプリのAPIキーを暗号化して保存しておこうということで実施しました。
お手軽に暗号化したかったのでパスワードのみの共通鍵暗号を行っています。

ツールが入っているPCが壊れてもすぐ使えるように別マシンで復号化したいと思います。

暗号化PC

ツールの入っているubuntuデスクトップです。

masashi@PC-ubuntu:~$ uname -a ; lsb_release -a
Linux PC-ubuntu 5.4.0-60-generic #67-Ubuntu SMP Tue Jan 5 18:31:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal
  • GPGのバージョン
masashi@PC-ubuntu:~$ gpg --version
gpg (GnuPG) 2.2.19
libgcrypt 1.8.5
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/masashi/.gnupg
サポートしているアルゴリズム:
公開鍵: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
      TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
ハッシュ: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮: 無圧縮, ZIP, ZLIB, BZIP2

復号化PC

WindowsのWSL ubuntuで実施します。
こっちは16.04LTSです。(アップデートしないとね)

masashi@DESKTOP-986MNSO:~$ uname -a ; lsb_release -a
Linux DESKTOP-986MNSO 4.4.0-18362-Microsoft #1049-Microsoft Thu Aug 14 12:01:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial
  • GPGのバージョン

こちらのバージョンの方が古いです。

masashi@DESKTOP-986MNSO:~$ gpg --version
gpg (GnuPG) 1.4.20
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

復号化実施

無事復号化できるんでしょうか。

  • 元ファイル

WSLにファイルを移動しました。
もちろん暗号化されています。
なんのこっちゃわかりませんね。

masashi@DESKTOP-986MNSO:~$ cat configure.py.gpg
???<?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??7P
  • 復号化

共通鍵暗号のみなのでgpgコマンドだけでOKです。
パスワード入力後の出力です。

masashi@DESKTOP-986MNSO:~$ gpg configure.py.gpg
gpg: AES256 encrypted data
gpg: gpg-agent is not available in this session
gpg: encrypted with 1 passphrase

これで復号化されたはず。
復号化ファイルを見てみます。
キーが入っているので変数名だけ出してみます。

masashi@DESKTOP-986MNSO:~$ cat configure.py | awk '{print $1}'
CK
CS
AT
AS

OKですね。
キーは公開するわけにはいきませんが、無事に復号できました。

むすび

GPGでお手軽ファイル暗号化でした。
証明書も作成しなくていいので、パスワード管理さえ出来ればこれで重要ファイルを管理してもよさそうですね。

また、公開鍵と秘密鍵の管理が出来れば仕事でお客さんとのファイルやり取りも安全にできそうですが、今の現場ではずっとパスワード付きzipのままなんだろうな。
人の入れ替えも結構あるので仕方ないのですが、適材適所ですかね。