mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Linux - ファイル暗号化・復号化用の公開鍵生成(GnuPG)!

[ pc_tips ] [ GnuPG, Linux, 暗号 ]

こんばんは。

The GNU Privacy Guard を使用して公開鍵方式でファイルを暗号化するには、まず公開鍵を生成する必要があります。

以下、公開鍵生成方法についての記録です。

0. 前提条件

  • LMDE2(Linux Mint Debian Edition 2) での作業を想定。
  • 使用する GnuPG は 1.4.18 を想定。
  • ここでは、公開鍵(共通鍵)の詳細については説明しない。

1. 公開鍵暗号方式について

公開鍵暗号方式では、ファイルを暗号化する人は復号化する人によって公開されている「公開鍵」を使用してファイルを暗号化する。そして、復号する際には「秘密鍵」を使用する。

2. 公開鍵の生成

公開鍵の生成は、実際には複合する側が行う。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
$ gpg --gen-key
gpg (GnuPG) 1.4.18; Copyright (C) 2014 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 (署名のみ)
選択は? 1                                        # <= 1 で応答
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)                 # <= Enter 応答
要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で満了
      <n>w = 鍵は n 週間で満了
      <n>m = 鍵は n か月間で満了
      <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)                              # <= Enter 応答
Key does not expire at all
これで正しいですか? (y/N) y                      # <= y で応答

あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

本名: Hoge Fuga                                  # <= 本名入力
電子メール・アドレス: hoge_fuga@foo-bar.xxx      # <= メールアドレス入力
コメント: foo-bar                                # <= コメント入力
次のユーザーIDを選択しました:
    “Hoge Fuga (foo-bar) <hoge_fuga@foo-bar.com>”

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

パスフレーズを入力:                              # <= パスワード入力
パスフレーズを再入力:                            # <= パスワード確認入力

今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
.+++++
.......+++++                                     # <= マウスを動かすなどする
gpg: /home/hoge/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵AA260242を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/AA260242 2016-11-04
                 指紋 = 112D F348 D1CF A429 1F83  489C 5F33 C0E4 AA26 0242
uid                  Hoge Fuga (foo-bar) <hoge_fuga@foo-bar.com>
sub   2048R/AC922C7E 2016-11-04

3. 生成された鍵の確認

1
2
3
4
5
6
$ gpg --list-keys
/home/hoge/.gnupg/pubring.gpg
-------------------------------
pub   2048R/AA260242 2016-11-04
uid                  Hoge Fuga (foo-bar) <hoge_fuga@foo-bar.xxx>
sub   2048R/AC922C7E 2016-11-04

4. 公開鍵のエクスポート

生成された公開鍵は暗号化する人に渡さないといけないので、エクスポートする。

以下のように、作成した鍵のメールアドレスを指定し、さらに ASCII 形式に変換してエクスポートする。
(ASCII 形式に変換したのは、メール本文に貼り付けて送信できるようにするためであり、 -a オプションを使用せずにバイナリ形式でエクスポートすることも可能)

1
$ gpg -o hoge_fuga.pub -a --export hoge_fuga@foo-bar.com
  • -o は、出力ファイル名を指定するオプション
  • -a は、ASCII 形式で出力するオプション
  • --export xxxx@xxxx は、公開鍵 xxxx@xxxx をエクスポートするオプション

ASCII 形式でエクスポートした公開鍵を確認してみる。

1
2
3
4
5
6
7
8
9
10
11
12
$ cat hoge_fuga.pub
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQENBFgcHXkBCADfSx/lua9zdCjPMbEAmtrf02G8oD0FMZVgf1wQmR6yZulr39oq
HmwcC+vJyV4pHarqE5OmVehI4MGC7dHW+2i8Ug9COdn0MjwQNj1fXVtH2OmLQ/up

    ===< 中略 >===

vMkosNDA6nXXuHUdHIfbvgM0ZOhotUIcVD91U97vItJcbD3R/vpE5V5GvKw=
=FBoJ
-----END PGP PUBLIC KEY BLOCK-----

5. 参考サイト


これで、公開鍵方式でファイルを暗号化する準備が整いました。

次回は The GNU Privacy Guard を使用した公開鍵方式での暗号化・復号化について記録します。

以上。

Comments