PGPを利用してファイルを暗号化する
PGPとは
Pretty Good Privacy(プリティ・グッド・プライバシー)の略で暗号ソフトウェアです。
公開暗号方式を採用している。
- 平文を暗号化する際に、当該平文を圧縮する
- セッション鍵を作成し、共通暗号方法で復元
- セッション鍵は受け手の公開鍵を暗号化し、暗号文とともに送信する
- 受け手は、自分の秘密鍵で復号化したセッション鍵を用意て暗号文を復元する
※ セッション鍵は使い捨ての秘密鍵
参考URL
gpgコマンドを利用してファイルを暗号化する
gpgコマンドを利用し公開暗号方式で暗号化し、ファイルのやりとりをする。
gpgで秘密鍵を作成する
gpg --gen-key
上記のコマンドを入力すると下記様な質問を幾つかされるが基本デフォルトで大丈夫です。
- ご希望の鍵の種類を選択してください
- RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
- 鍵の有効期限を指定してください。
次にに本名、メールアドレス、コメントの入力を求められますが本名、メールアドレスは適当なものを入力する。
最後に乱数生成のために待機に入るのだがSSHでログインしてる場合キー入力を受け付けないのでハングしてしまったかのような振る舞いになるが、別セッションでdd if=/dev/urandom of=/tmp/mass bs=1M count=16384
などのコマンドで大きめのファイルを生成する事で時間を短縮できる。だいたい10分くらいで生成できる。
鍵の確認
gpg --list-keys メールアドレス
公開鍵を作成する
foo.keyという公開鍵を作成する
gpg --export -a メールアドレス > foo.key
公開鍵を鍵束に取り込む
foo.keyというファイル名の公開鍵を貰ったと想定
gpg --import foo.key
鍵束にある公開鍵の
gpg --fingerprint メールアドレス
暗号化
gpg -e -a -r メールアドレス ファイル名.txt
復元
gpg ファイル名.txt.asc
参考
gpg-agentでパスの入力を省略する
復元するときにパスの入力が必要なのを立ち上げておくことでかわりにしてくれる。
gpg-agentを常駐させる
gpg-agent --daemon -v --use-standard-socket
バッチなどでパスフレーズを聞かれずに使用する方法
簡単で、以下の通りのコマンドでOK
echo 【復号化パスフレーズ】| gpg --passphrase-fd 0 --decrypt --batch --no-secmem-warning 【復号化したいgpgファイル】
「--passphrase-fd 0」と「--batch」オプションを用いて、標準出力でパスフレーズを渡す方法でとっても簡単です。
なお、「--no-secmem-warning」は「gpg: Warning: using insecure memory!」のエラーが出ないようにするおまじないです。
圧縮ファイルを暗号化
tarで圧縮後gpgで暗号化
tar -c [failename].* > [filename].tar | gpg -e -a -r [メールアドレス] [filename].tar
圧縮ファイルの展開
tar xvf filename.tar