Posted at

PGPを利用してファイルを暗号化する

More than 3 years have passed since last update.


PGPを利用してファイルを暗号化する


PGPとは

Pretty Good Privacy(プリティ・グッド・プライバシー)の略で暗号ソフトウェアです。

公開暗号方式を採用している。


  1. 平文を暗号化する際に、当該平文を圧縮する

  2. セッション鍵を作成し、共通暗号方法で復元

  3. セッション鍵は受け手の公開鍵を暗号化し、暗号文とともに送信する

  4. 受け手は、自分の秘密鍵で復号化したセッション鍵を用意て暗号文を復元する

※ セッション鍵は使い捨ての秘密鍵


参考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