Top > Zaurus > Apps > GnuPG

GnuPG

 ポータブルな環境で気軽に暗号を取り扱う

基本情報

導入メモ

  1. 事前に OpenSSLとlibldapを(プログラムエリアに)導入しておく
  2. 入手元サイトから以下のファイルを入手する (2007/02/12現在)
    • gnupg_1.4.8-1_arm.ipk (2007/12/20 21:11, 976,391 バイト)
  3. 入手したファイルを SD カードの Documents/Install_Files/Utilities/Files/Crypt/GnuPG/v1.x/ に配置する。
  4. 「ファイル」タブで配置したディレクトリに移動、ipk ファイルを選択し「OK」キー押下。
  5. ソフトウェア インストーラー 起動。
    • インストール先は「プログラムエリア」にする。
  6. 端末ウィンドウを起動し、gpg --version コマンドでバージョン表示されることを確認する
    % gpg --version
    gpg (GnuPG) 1.4.8
    Copyright (C) 2007 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: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, 
            CAMELLIA256
    Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
    Compression: Uncompressed, ZIP, ZLIB, BZIP2
    % _

共通鍵(単一のパスフレーズのみ)で暗号化テスト

 適当なテキストファイルにて動作テスト。 例えば、~/Documents/hello.txt という内容で中身は以下のように。

Hello world!

そんなテキストファイルに対し、暗号化を試みます。

% gpg -ca ~/Documents/hello.txt 
Enter passphrase: (ここでパスフレーズを入力)
Repeat passphrase: (もう一度パスフレーズを入力)

パスフレーズは安直に 「password」としておきましょうか。その作業を終えると、hello.txt.asc というファイルができてます。中身は以下のように cat や lv といったコマンドで読めるテキスト形式になっています(gpg -ca ではなく gpg -c とするとバイナリファイルの hello.txt.gpg というファイルになります、つまりは -c オプションが暗号化で -a がテキスト出力を意味しているわけですね)。

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.8 (GNU/Linux)

jA0EAwMCguUBT90BHS5gySpeti0nPzr8gR/MQn4X3gwIhuCj0xgdXjy8TVSOx899
CyA5m2EA9JxaJx4=
=5/53
-----END PGP MESSAGE-----

暗号化したファイルについては、パスワードで元に戻せます。ということで、オリジナルのファイルを削除し...

% rm -i ~/Documents/hello.txt

元に戻すコマンドは以下のとおりです。

% gpg -d ~/Documents/hello.txt.asc > hello.txt
gpg: CAST5 encrypted data
Enter passphrase: (ここでパスフレーズを入力)
% cat hello.txt
Hello world!
%

 -d というオプションを使わなくても元に戻すことはできるようです。

% gpg ~/Documents/hello.txt.asc
gpg: CAST5 encrypted data
Enter passphrase: (ここでパスフレーズを入力)
% cat hello.txt
Hello world!
%

WARNING (警告) に関して

 暗号化や元に戻す際に以下の警告が出ます。

gpg: WARNING: using insecure memory!

 「安全ではないメモリでの利用」と言われてもピンときませんが、対策は可能です。

% su
# chmod 4755 /home/QtPalmtop/bin/gpg

 以上のコマンドで安全ではないメモリの警告は抑制できます。  もう一つの警告(暗号を元に戻すときに表示される「もはや内容は堅く保護されていない」=原文 gpg: WARNING: message was not integrity protected )については、 -c 系の暗号化のときに必ず出るようなので気にしないのがいいのかも。

公開鍵と秘密鍵を生成する

 共通鍵の方式だと、パスワードを破られたら終わりです。それに、人に秘密のテキストを渡す前にパスワードの事前取り決めが必要になってしまい、パスワード管理が大変です。ということで、秘密鍵・公開鍵というものを生成することにします。ここは暗号入門サイトではないので秘密鍵や公開鍵が何かということについては割愛します。

 とりあえず、サンプルとして asaasa_mix@sample.gpgkeys.co.jp という(架空の)メールアドレスの山田太郎さん(Taro Yamada)という(架空の)人がパスフレーズ password のキーを生成するという手順を。

 下記コマンドによって鍵の生成モードになります。

% gpg --gen-key

 英語の指示が出ますので、順番に以下のように入力していきます。

  1. Please select what kind of key you want: (どんな鍵方式をお望み?)
    • 1 を入力し、Enter ((1) DSA and Elgamal (default) を選択です)
  2. DSA keypair will have 1024 bits...(以下略、鍵の長さは1024bit~4096bitで選んでね)
    • 1024 と入力し、Enter (1024bitsを意味します。)
      • Zaurus 上では最小の数値指定が無難ですね...できれば4096を指定したいところですが、PDA 上で鍵生成は時間がかかりすぎます。よって、4096bits の鍵がほしければ PC で生成して Zaurus に秘密鍵を移植した方がよいでしょうね)
  3. Please specify how long the key shoudl be valid. (鍵の期限はどうする?)
    • 0 を入力し、Enter (期限を設けない=無効にしないことを意味します。)
      • 数字を入れると、その数日間だけ有効になります。2w のようにすると2週間に、3m や 5y で3ヶ月や5年となりますが、英語が簡単なのですぐわかるはず。
  4. Is this correct? (y?N) (これで正しいの?)
    • y を入力して Enter。
  5. Real name: (本名は?)
    • Taro Yamada と入力してEnter (サンプルなので。実用に使う場合は本当の自分の名前を入れます)
  6. Email address: (E-Mail のアドレスは?)
  • Comment: (コメントは?)
    • 特に何も入力する必要はありません。Enter。
  1. Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit
    • o (小文字のオー) を入力し、Enter
  2. Enter passphrase: (パスフレーズをどうぞ)
    • password と入力し、Enter。実用で使う場合はこんな安直なパスワードは避けましょう (^^;
  3. Repeat passphrase: (もう一度パスフレーズをどうぞ)
    • もう一度 password (さっき入力したもの)を入力し、Enter。
  4. 鍵の生成が始まります。
    • 途中で Not enough random bytes available. ... (もっとランダムさが必要だよ) と注意されるので、でたらめなキー入力を行います。
  5. 鍵の生成が完了しました。

公開鍵を配布する

  • gpg -a --export asaasa_mix@sample.gpgkeys.co.jp > mypub.asc
    • このように生成した鍵のメールアドレスを指定することで、公開鍵をファイルにできます(mypub.asc の部分は任意のファイル名)。
    • ファイルそのもの、あるいはファイルの内容を直接 Web ページに貼り付けすることで公開完了です。例えば以下のように (これはサンプルですからいいですが、誰でも書き換え可能な WIKI 上に貼り付けるべきではありません。blog や Web ページなど、書き換えできる人が限られる場所にしましょうね)
      -----BEGIN PGP PUBLIC KEY BLOCK-----
      Version: GnuPG v1.4.8 (GNU/Linux)
      
      mQGiBEXQYEkRBACq6TglsQ28/oXBhbxjz+f4oA2GhSlkZnSQOoQ3eaHeaBMFzreZ
      yf9k6mLIud/mk9NEL2TB3XcN3+TY3sFKCL6C6bLSC5yqE9Tokopk4KQHuRlMQFYa
      uUVRq88nrkzPSY4VFP5hYYo/cIYBy+RLxBvJGufCXV/FSR0yP6mUVuR2UwCglUOl
      QIrz0S7SBna+zsPCzqURuuED/inxmGC3Axtl+v4rpJXmTpM7VFdp0C/fhQ90dmYA
      tg5LRkziGCegGsie8vj85+sSHevvciwkJ06SEzkaDl0OpSzp60nVol5Dr284tnUa
      usKB4amQoaWbHtYlaAnA/EVZw5QAVeuuCj585VEwnmyu2FKFsDIsemc8q1zjHcLA
      wDkOA/9XbFR5eTnuL5JGfdy8HU2FtPTs27WpjDeOBp2EbkZ5rSZnqc8CGjHuN0u4
      /8Wkp9WSM47uesKE/gOyI9DF0R0sd6Q6FWfE3Fm7CzObNWsIw6wGqDIPE9j/76H5
      3yY9sEixKBJE37sem96LdSY8bLPI0aBsa9YXvSOmQcrAJ4KhSLQtVGFybyBZYW1h
      ZGEgPGFzYWFzYV9taXhAc2FtcGxlLmdwZ2tleXMuY28uanA+iGAEExECACAFAkXQ
      YEkCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBfrjO1SiNLr+UqAJ9o02Mk
      ZNhgtslKVBCLX88Hv3J1sACfYwZZTyvd9Xm18I+RDC1cLQEybHK5AQ0ERdBgcBAE
      AMO2YQW9kg99ugLzntF7BEPBv50Ax5T0CJz0jr0rYSo2h+Ty2r1DSj4yHlU4jY+L
      6HjpFxw1eL6Xv8F3vz3HOrHoNIY8TeaJeubOJaEiuxJxpiIvDAm3tsDuxInpBkdJ
      fyK/MqQRchO7YaOVBaSTfSZFRyDVRwJDmet8aa2ojCFHAAMFA/9tB8Yi8zbNjHPO
      uuQJeikpv/cDRxplj7YyssfGm3a9M2b8ZOYROtt8JXBeFe/3dM8j1OqvKq4Y2O2c
      XDRqq8k5DDPtC96KIOSM4p+g9M1tvpL7BdhUHRF5pKWiOVh2bBWZrtr/Z1nWoVwC
      rWFukZoaN/V+vJN/tI9ld+7FIQ9hSohJBBgRAgAJBQJF0GBwAhsMAAoJEF+uM7VK
      I0uvayMAnjOtmxDNdReZLJs/cCOXEaA0kovWAJ47FfEQcyB77/Q9R4fO9fPP41cU
      tQ==
      =l42O
      -----END PGP PUBLIC KEY BLOCK-----

公開鍵を取り込む

  1. gpg --import mypub.asc
    • このように公開鍵が入っているファイルを --import オプション付きで指定すれば取り込めます。

公開鍵を使って暗号化する / 元に戻す

 まずは暗号化。

  1. gpg -aes hello.txt
    • これでテキスト形式の署名付きの暗号ファイル作成モードになります。
    • オプションは -a はテキスト形式出力、-e は公開鍵による暗号化、-s は署名を意味します。よって、署名不要なら -ae、署名だけでよければ -as でも OK。
  2. Enter passphrase: (パスフレーズは?)
    • password と入力。
  3. Enter the user ID. End with an empty line: (ユーザーIDを入れて。終わりなら空行に)
    • 公開鍵のメールアドレス (asaasa_mix@sample.gpgkeys.co.jp) を入れます。
      • ここの入力を別のメールアドレスにすれば、公開鍵さえあればその人向けの暗号ファイルになります。
  4. Enter the user ID. End with an empty line: (ユーザーIDを入れて。終わりなら空行に)
    • 何も入力せず Enter。
  5. hello.txt.asc が生成されます。

 次に元に戻す作業です。

  1. gpg hello.txt.asc
  2. Enter passphrase:
    • ここでpassword (鍵生成の時につかったパスフレーズ)を入力。
    • 解読には秘密鍵が必要といった表示が英語でされています。
  3. Signature made *****(日付の英語表記) using DSA key ID nnnnnnnn と表示され、次の行に Good signature from (メールアドレス) と出てれば署名の検証が完了です。また、hello.txt ができてます。

秘密鍵の抽出と取り込み

 秘密鍵については、以下のコマンドでバックアップがとれます。ただし、秘密鍵は作った本人だけが使うものですので誤って公開しないようにしましょう。(ここでは説明のために意図的にサンプルの秘密鍵を出しています)

  1. gpg --export-secret-keys asaasa_mix@sample.gpgkeys.co.jp
    -----BEGIN PGP PRIVATE KEY BLOCK-----
    Version: GnuPG v1.4.8 (GNU/Linux)
    
    lQHhBEXQYEkRBACq6TglsQ28/oXBhbxjz+f4oA2GhSlkZnSQOoQ3eaHeaBMFzreZ
    yf9k6mLIud/mk9NEL2TB3XcN3+TY3sFKCL6C6bLSC5yqE9Tokopk4KQHuRlMQFYa
    uUVRq88nrkzPSY4VFP5hYYo/cIYBy+RLxBvJGufCXV/FSR0yP6mUVuR2UwCglUOl
    QIrz0S7SBna+zsPCzqURuuED/inxmGC3Axtl+v4rpJXmTpM7VFdp0C/fhQ90dmYA
    tg5LRkziGCegGsie8vj85+sSHevvciwkJ06SEzkaDl0OpSzp60nVol5Dr284tnUa
    usKB4amQoaWbHtYlaAnA/EVZw5QAVeuuCj585VEwnmyu2FKFsDIsemc8q1zjHcLA
    wDkOA/9XbFR5eTnuL5JGfdy8HU2FtPTs27WpjDeOBp2EbkZ5rSZnqc8CGjHuN0u4
    /8Wkp9WSM47uesKE/gOyI9DF0R0sd6Q6FWfE3Fm7CzObNWsIw6wGqDIPE9j/76H5
    3yY9sEixKBJE37sem96LdSY8bLPI0aBsa9YXvSOmQcrAJ4KhSP4DAwJ4C6ttcYm8
    2GAn3x54ZRt933t9xTJjijhE5XYyi6aU+JChNuHuh2X3G4Q4mgVSUuy4DS0CMyfc
    V5he8bQtVGFybyBZYW1hZGEgPGFzYWFzYV9taXhAc2FtcGxlLmdwZ2tleXMuY28u
    anA+iGAEExECACAFAkXQYEkCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBf
    rjO1SiNLr+UqAJ9o02MkZNhgtslKVBCLX88Hv3J1sACfYwZZTyvd9Xm18I+RDC1c
    LQEybHKdAVgERdBgcBAEAMO2YQW9kg99ugLzntF7BEPBv50Ax5T0CJz0jr0rYSo2
    h+Ty2r1DSj4yHlU4jY+L6HjpFxw1eL6Xv8F3vz3HOrHoNIY8TeaJeubOJaEiuxJx
    piIvDAm3tsDuxInpBkdJfyK/MqQRchO7YaOVBaSTfSZFRyDVRwJDmet8aa2ojCFH
    AAMFA/9tB8Yi8zbNjHPOuuQJeikpv/cDRxplj7YyssfGm3a9M2b8ZOYROtt8JXBe
    Fe/3dM8j1OqvKq4Y2O2cXDRqq8k5DDPtC96KIOSM4p+g9M1tvpL7BdhUHRF5pKWi
    OVh2bBWZrtr/Z1nWoVwCrWFukZoaN/V+vJN/tI9ld+7FIQ9hSv4DAwJ4C6ttcYm8
    2GCLMfxEIJknsnYuVx3mvl19J287aVWVrLsJIS8Vyvswkj2aLlV2kp2eWFJj/W8x
    y2rMnyXdzRZwVKsGP9BY2YhJBBgRAgAJBQJF0GBwAhsMAAoJEF+uM7VKI0uvayMA
    mgNmBR70Ih4ZEh8gx37JVqGh0vs1AKCKduq/h8KfKb03Xr9ABITfwWJ4Gg==
    =JdK5
    -----END PGP PRIVATE KEY BLOCK-----

秘密鍵の取り込みは公開鍵と同じく、gpg --import filename でいけます。

その他のコマンドのリファレンス


リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 22 Jul 2011 21:58:04 JST (1525d)