gpgによるテキスト暗号化、署名と暗号化

■gpg鍵の生成
 ※鍵を2回生成しておくと、この後の手順を上から順に行える。

$ gpg --gen-key
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
選択は? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) ]
RSA keysizes must be in the range 1024-4096
What keysize do you want? (2048) 
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で満了
      <n>w = 鍵は n 週間で満了
      <n>m = 鍵は n か月間で満了
      <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)
Key does not expire at all
これで正しいですか? (y/N) y
あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

本名: labunix
電子メール・アドレス: labunix@lpic303.test.local
コメント: 
次のユーザーIDを選択しました:
    “labunix <labunix@lpic303.test.local>”

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? 
秘密鍵を保護するためにパスフレーズがいります。

今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。

十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと284バイトいります)
+++++                       
.+++++
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。

十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと77バイトいります)

.....+++++

十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと117バイトいります)
..+++++
gpg: 鍵D289663Bを絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   2  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 2u
pub   2048R/D289663B 2013-05-27
                 指紋 = 951E 9963 1F76 562A E1B4  A8D2 1A43 7D6D D289 663B
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

■生成した鍵の確認
 下記は2つ生成した例。

■秘密鍵のリスト

$ gpg --list-secret-key
/home/labunix/.gnupg/secring.gpg
--------------------------------
sec   2048R/CFF86B74 2013-05-26
uid                  labunix <labunix@lpic303.test.local>
ssb   2048R/6331583B 2013-05-26

sec   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
ssb   2048R/09C9EC01 2013-05-27

■公開鍵のリスト

$ gpg --list-keys
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/CFF86B74 2013-05-26
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/6331583B 2013-05-26

pub   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

■署名のリスト

$ gpg --list-sigs
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/CFF86B74 2013-05-26
uid                  labunix <labunix@lpic303.test.local>
sig 3        CFF86B74 2013-05-26  labunix <labunix@lpic303.test.local>
sub   2048R/6331583B 2013-05-26
sig          CFF86B74 2013-05-26  labunix <labunix@lpic303.test.local>

pub   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
sig 3        D289663B 2013-05-27  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27
sig          D289663B 2013-05-27  labunix <labunix@lpic303.test.local>

■フィンガープリントのリスト

$  gpg --fingerprint
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/CFF86B74 2013-05-26
                 指紋 = F8F2 3E3C 251E 378F 6B05  CB54 DC03 B869 CFF8 6B74
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/6331583B 2013-05-26

pub   2048R/D289663B 2013-05-27
                 指紋 = 951E 9963 1F76 562A E1B4  A8D2 1A43 7D6D D289 663B
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

■秘密鍵の書き出し

$ gpg -o sec_binary.key --export-secret-key
$ gpg -o sec_binary.key -a --export-secret-key

■公開鍵の書き出し

$ gpg --export -o pub_binary.key
$ gpg --exporat pub_ascii.key

■ASCIIで書き出すと、stringsで表示してもヘッダが確認出来る。
 バイナリだとすぐには分からない。

$ grep ^- pub_ascii.key 
-----BEGIN PGP PUBLIC KEY BLOCK-----
-----END PGP PUBLIC KEY BLOCK-----

$ strings pub_ascii.key | hexdump -C | head -1
00000000  2d 2d 2d 2d 2d 42 45 47  49 4e 20 50 47 50 20 50  |-----BEGIN PGP P|

$ strings pub_binary.key | hexdump -C | head -1
00000000  32 3c 74 4a 66 6d 0a 69  70 70 66 63 0a 70 32 2e  |2<tJfm.ippfc.p2.|

■ファイルの種類で識別しているようだ。

$ file test_binary.key 
test_binary.key: GPG key public ring
$ file test_ascii.key 
test_ascii.key: PGP public key block

■廃棄証明書の作成
 古い鍵である「2048R/CFF86B74」の廃棄証明書を作成する。

$ gpg -o revoke.asc --gen-revoke labunix@lpic303.test.local

sec  2048R/CFF86B74 2013-05-26 labunix <labunix@lpic303.test.local>

この鍵にたいする失効証明書を作成しますか? (y/N) y
失効の理由を選択してください:
  0 = 理由は指定されていません
  1 = 鍵がパクられました
  2 = 鍵がとりかわっています
  3 = 鍵はもう不用です
  Q = キャンセル
(ここではたぶん1を選びます)
あなたの決定は? 3
予備の説明を入力。空行で終了:
> 
失効理由: 鍵はもう不用です
(説明はありません)
よろしいですか? (y/N) y

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“labunix <labunix@lpic303.test.local>2048ビットRSA鍵, ID CFF86B74作成日付は2013-05-26

ASCII包装出力を強制します。  
失効証明書を作成しました。

見つからないような媒体に移動してください。もしワルがこの証明書への
アクセスを得ると、そいつはあなたの鍵を使えなくすることができます。
媒体が読出し不能になった場合に備えて、この証明書を印刷して保管するの
が賢明です。しかし、ご注意ください。あなたのマシンの印字システムは、
だれでも見える場所にデータをおくことがあります!

$ grep ^- revoke.asc 
-----BEGIN PGP PUBLIC KEY BLOCK-----
-----END PGP PUBLIC KEY BLOCK-----

■公開鍵のインポート(バイナリ形式/アスキー形式のどちらでもよい)
 廃棄証明書を取り込んでいるが、他の人の公開鍵ファイルでも同じ。

$ gpg --import revoke.asc 
gpg: 鍵CFF86B74:“labunix <labunix@lpic303.test.local>”失効証明書を読み込みました
gpg:     処理数の合計: 1
gpg:   新しい鍵の失効: 1
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   2  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 2u

■失効したことを確認。
 秘密鍵には失効のフラグがついていない点に注意。
 これは秘密鍵、公開鍵の順に削除する必要があるということ。

$ gpg --list-secret-keys CFF86B74
sec   2048R/CFF86B74 2013-05-26
uid                  labunix <labunix@lpic303.test.local>
ssb   2048R/6331583B 2013-05-26

$ gpg --list-key CFF86B74
pub   2048R/CFF86B74 2013-05-26 [失効: 2013-05-27]
uid                  labunix <labunix@lpic303.test.local>

$ gpg --list-public-keys CFF86B74
pub   2048R/CFF86B74 2013-05-26 [失効: 2013-05-27]
uid                  labunix <labunix@lpic303.test.local>

$ gpg --list-sig CFF86B74
pub   2048R/CFF86B74 2013-05-26 [失効: 2013-05-27]
rev          CFF86B74 2013-05-27  labunix <labunix@lpic303.test.local>
uid                  labunix <labunix@lpic303.test.local>
sig 3        CFF86B74 2013-05-26  labunix <labunix@lpic303.test.local>

$ gpg --fingerprint CFF86B74
pub   2048R/CFF86B74 2013-05-26 [失効: 2013-05-27]
                 指紋 = F8F2 3E3C 251E 378F 6B05  CB54 DC03 B869 CFF8 6B74
uid                  labunix <labunix@lpic303.test.local>

■廃棄証明書で失効フラグのついた鍵を削除
 公開鍵を先に削除使用とすると警告が出る。

$ gpg --delete-key labunix@lpic303.test.local
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: この公開鍵にたいする秘密鍵“labunix@lpic303.test.local”があります!
gpg: まず“--delete-secret-keys”オプションでこれを削除してください。

■秘密鍵の削除

$ gpg --delete-secret-key labunix@lpic303.test.local
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


sec  2048R/CFF86B74 2013-05-26 labunix <labunix@lpic303.test.local>

この鍵を鍵輪から削除しますか? (y/N) y
これは秘密鍵です! 本当に削除しますか? (y/N) y

■公開鍵の削除

$ gpg --delete-key labunix@lpic303.test.local
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


pub  2048R/CFF86B74 2013-05-26 labunix <labunix@lpic303.test.local>

この鍵を鍵輪から削除しますか? (y/N) y

■削除後の鍵のリストの確認
 ひとつになった。

$ gpg --list-secret-keys 
/home/labunix/.gnupg/secring.gpg
--------------------------------
sec   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
ssb   2048R/09C9EC01 2013-05-27

$ gpg --list-keys 
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

$ gpg --list-sig
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
sig 3        D289663B 2013-05-27  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27
sig          D289663B 2013-05-27  labunix <labunix@lpic303.test.local>

$ gpg --fingerprint 
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/D289663B 2013-05-27
                 指紋 = 951E 9963 1F76 562A E1B4  A8D2 1A43 7D6D D289 663B
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

■別のマシンで生成した公開鍵と秘密鍵の取り込み
 ここでは失効した鍵を再度取り込む

$ gpg --import pub_binary.key 
gpg: 鍵CFF86B74: 公開鍵“labunix <labunix@lpic303.test.local>”を読み込みました
gpg: 鍵D289663B:“labunix <labunix@lpic303.test.local>”変更なし
gpg:     処理数の合計: 2
gpg:           読込み: 1  (RSA: 1)
gpg:         変更なし: 1

$ gpg --import sec_ascii.key 
gpg: 鍵CFF86B74: 秘密鍵を読み込みました
gpg: 鍵D289663B:“labunix <labunix@lpic303.test.local>”変更なし
gpg:     処理数の合計: 2
gpg:         変更なし: 1
gpg:   秘密鍵の読出し: 1
gpg:   秘密鍵の読込み: 1


■今回はテストなので、再削除

$ gpg --delete-secret-keys CFF86B74
$ gpg --delete-keys CFF86B74

■再確認

$ gpg --list-secret-keys 
/home/labunix/.gnupg/secring.gpg
--------------------------------
sec   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
ssb   2048R/09C9EC01 2013-05-27

$ gpg --list-keys 
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

$ gpg --list-sig
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
sig 3        D289663B 2013-05-27  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27
sig          D289663B 2013-05-27  labunix <labunix@lpic303.test.local>

$ gpg --fingerprint 
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/D289663B 2013-05-27
                 指紋 = 951E 9963 1F76 562A E1B4  A8D2 1A43 7D6D D289 663B
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

■公開鍵のみ取り込む
 ※失効した「CFF86B74」に署名をする

$ gpg -u labunix@lpic303.test.local --import pub_binary.key CFF86B74
gpg: 鍵CFF86B74:“labunix <labunix@lpic303.test.local>”変更なし
gpg: 鍵D289663B:“labunix <labunix@lpic303.test.local>”変更なし
gpg: 「CFF86B74」が開けません: そのようなファイルやディレクトリはありません
gpg:     処理数の合計: 2
gpg:         変更なし: 2

■「labunix@lpic303.test.local」が「D289663B」で「CFF86B74」の鍵を署名する

$ gpg -u labunix@lpic303.test.local --edit-key CFF86B74
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


pub  2048R/CFF86B74  作成: 2013-05-26  満了: 無期限      利用法: SC  
                     信用: 未知の     有効性: 絶対的
sub  2048R/6331583B  作成: 2013-05-26  満了: 無期限      利用法: E   
[ultimate] (1). labunix <labunix@lpic303.test.local>

gpg> sign

pub  2048R/CFF86B74  作成: 2013-05-26  満了: 無期限      利用法: SC  
                     信用: 未知の     有効性: 絶対的
 主鍵の指紋: F8F2 3E3C 251E 378F 6B05  CB54 DC03 B869 CFF8 6B74

     labunix <labunix@lpic303.test.local>

本当にこの鍵にあなたの鍵“labunix <labunix@lpic303.test.local>”で署名してよいですか
(D289663B)

本当に署名しますか? (y/N) y

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“labunix <labunix@lpic303.test.local>2048ビットRSA鍵, ID D289663B作成日付は2013-05-27

パスフレーズを入力: 
gpg> q
変更を保存しますか? (y/N) y

$ gpg --list-key
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   1  信用: 0-, 0q, 0n, 0m, 0f, 1u
gpg: 深さ: 1  有効性:   1  署名:   0  信用: 1-, 0q, 0n, 0m, 0f, 0u
/home/labunix/.gnupg/pubring.gpg
--------------------------------
pub   2048R/D289663B 2013-05-27
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/09C9EC01 2013-05-27

pub   2048R/CFF86B74 2013-05-26
uid                  labunix <labunix@lpic303.test.local>
sub   2048R/6331583B 2013-05-26

■信用度の設定

$ gpg -u labunix@lpic303.test.local --edit-key CFF86B74
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.


pub  2048R/CFF86B74  作成: 2013-05-26  満了: 無期限      利用法: SC  
                     信用: 未知の     有効性: 完全
sub  2048R/6331583B  作成: 2013-05-26  満了: 無期限      利用法: E   
[  full  ] (1). labunix <labunix@lpic303.test.local>

gpg> trust
pub  2048R/CFF86B74  作成: 2013-05-26  満了: 無期限      利用法: SC  
                     信用: 未知の     有効性: 完全
sub  2048R/6331583B  作成: 2013-05-26  満了: 無期限      利用法: E   
[  full  ] (1). labunix <labunix@lpic303.test.local>

他のユーザーの鍵を正しく検証するために、このユーザーの信用度を決めてください
(パスポートを見せてもらったり、他から得た指紋を検査したり、などなど)

  1 = 知らない、または何とも言えない
  2 = 信用し ない
  3 = ある程度信用する
  4 = 完全に信用する
  5 = 絶対的に信用する
  m = メーン・メニューに戻る

あなたの決定は? 3

pub  2048R/CFF86B74  作成: 2013-05-26  満了: 無期限      利用法: SC  
                     信用: ある程度  有効性: 完全
sub  2048R/6331583B  作成: 2013-05-26  満了: 無期限      利用法: E   
[  full  ] (1). labunix <labunix@lpic303.test.local>
プログラムを再起動するまで、表示された鍵の有効性は正しくないかもしれない、
ということを念頭においてください。

gpg> q

■テキストに署名をする。

$ echo "Hello World" > sign_target.txt
$ gpg -u labunix@lpic303.test.local --clearsign sign_target.txt 

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“labunix <labunix@lpic303.test.local>2048ビットRSA鍵, ID D289663B作成日付は2013-05-27

パスフレーズを入力: 

■署名の確認

$ cat sign_target.txt.asc 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello World
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQEcBAEBAgAGBQJRoz4cAAoJEBpDfW3SiWY7q1UIAKGWt6obelfhChdsikdiQ0q1
CSPdEucj1tsl8EbhlXxweSG5cr6MlD7bSbegjHfktYT3KNOt9A7OIoyspHgGg7eo
yEtrDZfxIq/nOPHSwABC8L1kT2DZ3GCUsQ1TTfF1sWHJWsNSAlrBayHeuyk4f1sG
VugqHXnBfOwxD4lr/9vxOSvJGvQAVF4IVcy0b1yJlijHerV5/2D4u1M8sOIPXnlb
AVFj/x8pq3NCjPeiHYHfxYArXqG9cjPca8z0GOtP3SvxU5dP4BSntyk0H/RUdzD7
zbdAZAD1uh0AHpEoOYlzg8x8zYPTyqh9JTqQDM1sTfUGtbagjvm6h+2XbdFk5Do=
=1BIB
-----END PGP SIGNATURE-----

■公開鍵による署名の検証

$ gpg -d sign_target.txt.asc 
Hello World
gpg: 20130527200604秒 JSTにRSA鍵ID D289663Bで施された署名
gpg: “labunix <labunix@lpic303.test.local>”からの正しい署名

■改竄する。
 ※「不正な署名」となっていることが確認出来る。

$ sed -i s/"Hello World"/"こんにちは"/ sign_target.txt.asc
$ gpg -d sign_target.txt.asc 
こんにちは
gpg: 20130527200604秒 JSTにRSA鍵ID D289663Bで施された署名
gpg: “labunix <labunix@lpic303.test.local>”からの 不正な 署名

■改竄を元に戻して再チェック

$ sed -i s/"こんにちは"/"Hello World"/ sign_target.txt.asc
$ gpg -d sign_target.txt.asc 
Hello World
gpg: 20130527200604秒 JSTにRSA鍵ID D289663Bで施された署名
gpg: “labunix <labunix@lpic303.test.local>”からの正しい署名

■相手の公開鍵で署名

$ gpg -a -r CFF86B74 -e sign_target.txt
ファイル「sign_target.txt.asc」は既に存在します。上書きしますか? (y/N) y

$ cat sign_target.txt.asc 
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.12 (GNU/Linux)

hQEMAz0FegJjMVg7AQf8CLs9WALdd3PuXS791a2hoVzCER52XO3SqkHpzsHXXjvu
ZGQHANiqtvGLfOF3WGcwu448xMRsd1BvXx69S3wAtyim/qMrUa+1lRdazBDE/INH
2OBHvLjFKPZWc8WjR6bSIP+mPPJ4I4ZlvvJb+6OhI95x3gv3wCK9R18io9cYzY6q
HtSFgR5AHJc+dsNTZso8BSf5g/Q/F8i426GUIEOb+FuPaOHchAcxP4uS6rlXehnk
Xi9LYw123TGRhiF57aoTh7s+a7rUFYS6VCTY009RPhm9xKrGHYgaSUyMEN9ecZCT
F8FMHg5ifTejdVDRM4cL0sXAhes40XhjXLa2II92OdJbATgtJza+qgCV6YjO14Zs
8VVB/3XvdUlUoCKZ1z+2NOYRMDgG0WdhTQxfT5Oz0iZUOt7UHD27UEKKGVpw4nlg
Sakd0yJWLzWSSZ7R00Aqa1R2P6EULTQ6kCZ1Lg==
=CyU4
-----END PGP MESSAGE-----

■自分の秘密鍵を使った復号化

$ gpg -d sign_target.txt.asc 

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“labunix <labunix@lpic303.test.local>2048ビットRSA鍵, ID 6331583B作成日付は2013-05-27 (主鍵ID CFF86B74)

gpg: 2048-ビットRSA鍵, ID 6331583B, 日付2013-05-27に暗号化されました
      “labunix <labunix@lpic303.test.local>”
パスフレーズを入力: 

こんにちは

■復号化した内容をファイルに書き出し

$ gpg -d sign_target.txt.asc > decrypt_plain.txt

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“labunix <labunix@lpic303.test.local>2048ビットRSA鍵, ID 09C9EC01作成日付は2013-05-27 (主鍵ID D289663B)

gpg: 2048-ビットRSA鍵, ID 09C9EC01, 日付2013-05-27に暗号化されました
      “labunix <labunix@lpic303.test.local>”

$ cat decrypt_plain.txt 
こんにちは

■署名と暗号化
 「-u」は自身、「-r」は相手を指定するが、両方とも自分でも可能。

$ gpg -u labunix@lpic303.test.local -r D289663B -ase sign_target.txt

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“labunix <labunix@lpic303.test.local>2048ビットRSA鍵, ID D289663B作成日付は2013-05-27

ファイル「sign_target.txt.asc」は既に存在します。上書きしますか? (y/N) y

■さきほどのようにsedで簡単に改竄は行えない。

$ cat sign_target.txt.asc 
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.12 (GNU/Linux)

hQEMA1PjW9sJyewBAQgAh0JboHkJp2EpODYQ3G/3fS7lzcFZuUvIY5DKHwGN1vCc
YA2vmlHI6ys4ON4ifI9bUn9hpG+EyDIFBLkKeYoLW6reE9g2S1mZp/8d1k7tJ5cJ
HkJf7K0F6rCGoNOyNB3EBX9urg5CzsjU0BEqdptEIzmFHtxtYZ5CmbTprF+R2+5A
TNmf0cTEvOenESeb+8pOuUvdtKLpZ97LjgD2e/x6nLkt5lWGMDkiNL0zr3f11W05
LFVr/x+p84eXoGHPYRE3IuYy5UVsOuBnNSE2Jw/EIVHxNMtk0BDxEzZ4XM8NUPzm
33VlCNTPGwMxpF9OEKFLufI6CvPNmL9tVTWLnniJctLAywGQ+hwgCenVUDyl6NiW
KrVyy1Jr+kbqAdBr9/Tz9WVzaZl4hAganpkElId3nydP4KcAJwyl76OaP26Zlzxf
5No30dQYL7FrSgGkuGpjPej+GPxUzGCBmCQWypbdROOwYw1eqYNNmptmBJlbFIUO
c2UGBu4UrgVEoDMLRLaskYXq/mehSXQijLdplZWZd8/6v/k5leJehrUM7rU2p1Co
EXpHVcrI7Tlkk0DyGgm3v+MGIFJ9b0+yHFmTwRjsnlPbHz0ADpsmrl4wr07Jwphx
wamuKicqdnOAnfGk9FPwE+VPBXH7o3o9ScMmnxDfMh1o5nG06TxnNA6DFRA3y7F1
Se+U62WpQJQysr6niiz8g0xzVAQeXkjPIbdGS5dEmefeFaZHsbBfOhQc7Wx9zmEi
ke7Rok3UtgaYaUIYtqFThUcJDFWRgAkoCsxx24qPLcA7n2+qZexR7G0sYaode9JE
wZ5p2FRsOCsmUQ4Uu47rPSsMOQW3AULCLNgs2yfifZkt/EeUK9dECfM+Q3Pp
=NMJ7
-----END PGP MESSAGE-----

■復号化と署名の検証
 自身の秘密鍵で復号化し、相手の公開鍵で検証を行う。

$ gpg -d sign_target.txt.asc 

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“labunix <labunix@lpic303.test.local>2048ビットRSA鍵, ID 09C9EC01作成日付は2013-05-27 (主鍵ID D289663B)

gpg: 2048-ビットRSA鍵, ID 09C9EC01, 日付2013-05-27に暗号化されました
      “labunix <labunix@lpic303.test.local>”
こんにちは
gpg: 20130527202253秒 JSTにRSA鍵ID D289663Bで施された署名
gpg: “labunix <labunix@lpic303.test.local>”からの正しい署名

■テスト用の鍵を失効、秘密鍵、公開鍵の順にすべて削除する。