「プライバシーを保護してきたこの16年」追加
[gnupg-kouza-page.git] / src / howto.org
1 # -*- coding: utf-8-unix -*-
2 #+TITLE:     GnuPGの使い方
3 #+AUTHOR:    斉藤英樹
4 #+EMAIL:     hideki@hidekisaito.com
5 #+DESCRIPTION: Emacs Builds prepared by Hideki Saito
6 #+KEYWORDS: Emacs, software, OSS, compile, build, binaries
7
8 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style.css" />
9 #+HTML_HEAD: <script type="text/javascript">
10 #+HTML_HEAD:
11 #+HTML_HEAD:  var _gaq = _gaq || [];
12 #+HTML_HEAD:  _gaq.push(['_setAccount', 'UA-114515-7']);
13 #+HTML_HEAD:  _gaq.push(['_trackPageview']);
14 #+HTML_HEAD:
15 #+HTML_HEAD:  (function() {
16 #+HTML_HEAD:    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
17 #+HTML_HEAD:    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
18 #+HTML_HEAD:    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
19 #+HTML_HEAD:  })();
20 #+HTML_HEAD: </script>
21
22 #+LANGUAGE:  ja
23 #+OPTIONS:   H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
24 #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
25 #+OPTIONS: ^:{}
26 #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:h
27 #+EXPORT_SELECT_TAGS: export
28 #+EXPORT_EXCLUDE_TAGS: noexport
29 #+HTML_LINK_UP: index.html
30 #+HTML_LINK_HOME: index.html
31 #+XSLT:
32
33
34
35 * GNU Privacy Guardのダウンロード
36   :PROPERTIES:
37   :ID:       d5b364da-88f5-4908-afd1-0fcb929c4a64
38   :END:
39
40 まずGNU Privacy Guardをダウンロードする必要があります。ダウンロードはGNU Privacy Guard
41 Homepageよりダウンロードしてください。コンパイルする必要があるものとバイナリでダウンロードできるものもあります。これはプラットフォームによって違ってくるのでご使用のオペレーティングシステムにあったものをダウンロードしてください。
42
43 * キーの生成
44   :PROPERTIES:
45   :ID:       9fe261c8-6a71-44be-84e7-df0670a23903
46   :END:
47
48 ダウンロードの終了後、まずは自分の秘密鍵と公開鍵を生成する必要があります。コマンドラインでgpgと入力してみて何か反応があればパスが通っている証拠ですのでプログラムが実行されている場合はCtrl-Cを押して終了して下さい。この時に反応がないようであればインストールしたフォルダにパスが通るようにしてください。次にgpg–gen-keyと入力します。
49
50 * 鍵のタイプの指定
51   :PROPERTIES:
52   :ID:       9f2ab36a-6ff2-4f2f-9e76-638c54b37eaf
53   :END:
54
55 鍵の生成を開始して、まず入力を求められるのが鍵の種類です。この画面では1を選択します。2は署名のみのキーで、3はElGamal方式のみを使用するものですが基本的には1を選択してください。
56
57 * 鍵長の設定
58   :PROPERTIES:
59   :ID:       f10be8f0-14e5-4d97-a10e-1145d5dcc562
60   :END:
61
62 次に鍵の長さを設定します。鍵は長い物ほど強固なセキュリティを実現します。しかしあまりにも長すぎると計算に時間がかかりすぎるものとなります。1024が標準となっていますが将来性などを考えると2048程度が適当です。
63
64 * 有効期限の設定
65   :PROPERTIES:
66   :ID:       d73deef8-0297-4b3b-96c5-dcfbe082b614
67   :END:
68
69 鍵の有効期限はいつまでその鍵が有効かを指定します。通常の場合は永久的に有効な0を指定すると問題ないでしょう。特に期限が必要であればここで指定してください。
70 個人情報の設定 ここでは名前、電子メール、名前に付随するメモを入力します。これにより鍵に名前のついたヘッダを追加することができます。
71
72 * パスフレーズ
73   :PROPERTIES:
74   :ID:       c4244d8b-134b-452e-89a8-1cde2df71270
75   :END:
76
77 次にパスフレーズを設定します。パスフレーズはパスワードと違いスペースなどを含むものも可能で長さも事実上無制限です。これは大事なパスワードですので覚えやすく紙に書かなくてもよく、かつ分かりにくいものにするようにしてください。
78
79 * 乱数の生成(自動)
80   :PROPERTIES:
81   :ID:       f7d4655e-74a4-4182-baa8-bc1f0794e3c9
82   :END:
83
84 ここで乱数の生成が開始されます。乱数生成中はしばらくかかります。この時に他の作業をしていても問題ありません(作業をすることによりキーボードの入力やマウスの動きなども乱数発生に使用されます)
85
86 * 終了
87   :PROPERTIES:
88   :ID:       9369e781-01d8-4a1b-a1d0-d8bfae60517d
89   :END:
90
91 お疲れさまでした、これで鍵の生成は終了です。
92
93 * 破棄証明書の生成
94   :PROPERTIES:
95   :ID:       8abed0fd-ae64-4c18-bb33-70fd3edf83a6
96   :END:
97
98 鍵を生成した後、破棄証明書を作っておきます。これは鍵を無効化する時に使用します。これは次のように入力することで行えます。
99
100 #+BEGIN_SRC sh
101 gpg -o revcert.asc –gen-revoke userid
102 #+END_SRC
103
104 太字のところに適当なものを入れてください。revcert.ascのところには任意のファイル名、useridのところには名前かその一部に変えてください。これにより指定したファイル名のファイルに破棄証明書が作成されるのでこれはなくさないようにどこかにしまって置いてください。この時、HDには保存せず、フロッピーなどに保存して安全な場所にしまっておくといいです。この破棄証明書は不正に使用されると誰でも鍵を無効化してしまうことができるので取り扱いには注意してください。
105 鍵を破棄する場合は 万が一、パスワードの漏洩などで鍵を破棄する必要がある場合は次のように鍵を破棄します。 
106 #+BEGIN_SRC sh
107 gpg --import revcert.asc 
108 #+END_SRC
109
110 これは重要ですので覚えておいてください。この後、この破棄した公開鍵を公開鍵サーバに送るとその鍵は破棄されます。
111
112 * 鍵の登録
113   :PROPERTIES:
114   :ID:       aec94a61-d924-4164-9b55-ac1d14daf32d
115   :END:
116
117 鍵を生成したらこれを公開鍵サーバに登録しておくことにより他の人が公開鍵を入手することが可能です。これによりあなた宛のメールなどに暗号化したメッセージを送信したりすることができるようになります。ここではKeyserver.netを使用して説明していきます。まず次のように入力します。
118
119 #+BEGIN_SRC sh
120 gpg -o pubkey.asc -a –export userid
121 #+END_SRC
122
123 コンソールよりコピー・ペーストが可能な場合次のようにすることで公開鍵をコンソールに出力することができます。 
124 #+BEGIN_SRC sh
125 gpg -a --export userid
126 #+END_SRC 
127 上記のコマンドラインを使用した場合はテキストエディタなどで指定したファイルを開き、内容をコピーしてください。
128 次に「Keyserver.net」のリンクを辿ってください。次に「ADD A KEY」をクリックし、表示された「Paste your key
129 here:」のボックスに上記の公開鍵を貼り付けてください。「Submit this key to the
130 keyserver」を押すと登録が完了します。
131
132 * 他の人の公開鍵を入手する
133   :PROPERTIES:
134   :ID:       4d5762e3-6041-4ad9-82ee-8b424a559150
135   :END:
136
137 他の人に暗号化したメッセージを送るのには相手の公開鍵を入手する必要があります。これも公開鍵サーバですることができます。登録するときに使用したページの「公開鍵の検索」で名前を入力することにより検索できます。次にコマンドラインに次のように入力してください。
138 gpg –import pubkey.asc コンソールに貼り付けることができる場合は gpg –import
139 とすることによりコンソールに貼り付けることができます。この時エンターキーを押した後に貼り付けてください。この鍵を入手後、鍵の指紋をチェックする必要があります。これが異なる場合、鍵が改変されたか鍵を正しく入手できていません。大抵のホームページなどでは下図のような表示があります。
140 入手した鍵の指紋を表示するのには次のように入力します。 
141 #+BEGIN_SRC sh
142 gpg --fingerprint
143 #+END_SRC
144 すると次のように表示されますのでこの指紋が一致することを確認します。このキーを使う前に鍵署名をする必要があります。鍵署名にはExportableなものとLocalなものがあります。Exportableはその鍵を他の人に渡すとその署名も同時に渡すことになります。Localなものは他の人に渡してもその署名は渡されません。普通はLocalな署名を使うとよいでしょう。これをするには次のようにします。
145
146 #+BEGIN_SRC sh
147 gpg --lsign-key userid(Local署名)
148 #+END_SRC sh
149
150 #+BEGIN_SRC sh
151 gpg --sign-key userid(Exportable署名)
152 #+END_SRC
153
154 次に信用データーベースを更新する必要があります。信用データーベースというのは鍵に対する信用性を示すものです。まず次のように入力します。このデータベースは他と共有されることはなく、鍵の信用は使用者が思う信用であり、他人と共有される性質のものではありません。
155
156 ここで指定される信用は間接的にその鍵が署名する他の鍵の信用度の計算に使用されます。例えば保有している鍵が自分の鍵により署名された鍵のみで構成されたものである場合など、特に信用を設定する必要はありません。
157
158 #+BEGIN_SRC sh
159 gpg --edit-key userid
160 #+END_SRC
161
162 次にコマンドの入力を求められますのでそこでtrustと入力します。そうすると次のようなリストが表示されます。
163
164 #+BEGIN_EXAMPLE
165 1 = Don’t know 2 = I do NOT trust 3 = I trust
166 marginally 4 = I trust fully s = please show me more information m =
167 back to the main menu
168 #+END_EXAMPLE
169
170 この鍵を完全に信用しない場合は2、ある程度信用する場合は3、完全に信用(例えば実際に本人に会ったことがありその本人に確認がとれている場合など)する場合は4を選択します。
171
172
173 * 暗号化&署名
174   :PROPERTIES:
175   :ID:       c63bf3e7-93f6-474c-a60b-cc099de39943
176   :END:
177
178 次に暗号化をしてみます。ファイルを暗号化する方法とインタラクティブにコンソールから入力する方法がありますがどちらも基本的には同じようにします。ファイルを暗号化する場合は次のようにします。
179
180 #+BEGIN_SRC sh
181 gpg -ea filename (暗号化したファイルを画面に出力する場合)
182 #+END_SRC
183
184 #+BEGIN_SRC sh
185 gpg -o filename.asc -ea filename(暗号化したファイルをファイルに出力する場合)
186 #+END_SRC
187
188 どちらの場合も受取人を指定するように表示されるのでその時に名前、またはその一部を入力します。これをコマンドラインに含めることもできます。
189
190 #+BEGIN_SRC sh
191 gpg -r receipient -ea filename(暗号化したファイルを画面に出力する場合)
192 #+END_SRC
193 #+BEGIN_SRC sh
194 gpg -o filename.asc -r receipient -ea filename(暗号化したファイルをファイルに出力する場合)
195 #+END_SRC
196
197 コンソールから入力する場合は次のようにします。 
198 #+BEGIN_SRC sh
199 gpg -ea
200 #+END_SRC
201
202 次にメッセージを入力しCtrl-DもしくはCtrl-Z(プラットフォームによって違います)そしてファイルの場合と同じように受取人の名前を入力します。この場合も上記のケースと同じように-oや-rオプションを使用できます。
203 暗号化をする時に同時に署名もする場合は上記のそれぞれのオプションの-eaを-seaに変えることにより可能です。署名のみすることも可能です。その場合は-seaを-saとします。署名する時に–clearsignとすることによりGnuPGが無くても読める署名をすることができます。
204 復号化は次のようにします。
205
206 #+BEGIN_SRC sh
207 gpg -d filename.asc
208 #+END_SRC
209
210 #+BEGIN_HTML
211 <script type="text/javascript"><!--
212 google_ad_client = "ca-pub-6327257212970697";
213 /* GNU Privacy Guard講座Banner */
214 google_ad_slot = "2155169100";
215 google_ad_width = 970;
216 google_ad_height = 90;
217 //-->
218 </script>
219 <script type="text/javascript"
220 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
221 </script>
222 #+END_HTML