Merge remote-tracking branch 'origin/master'
[gnupg-kouza-page.git] / src / pgpzip.org
1 # -*- coding: utf-8-unix -*-
2 #+TITLE:     PGP Zipの取り扱い方法
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 PGPにはPGP Zipと呼ばれるアーカイブの作成をすることができるようになっています。
36
37 * ファイル構造
38   :PROPERTIES:
39   :ID:       3a161657-fcf8-4e1d-9ff1-6d17dbb8f200
40   :END:
41
42 PGP Zipはファイル構成的には複数のファイルをtarにより単一化したものを暗号化するという構成をとっています。PGP Zipそのものがサポートされていない環境においてもこの処理を手動で行うことにより、PGP Zipとして扱えるファイルを作成することができます。
43
44 ** コマンドラインの例
45    :PROPERTIES:
46    :ID:       9bf1149f-b0af-4316-81fc-747eb1bf2ef9
47    :END:
48
49 *** gpg-zipスクリプトがGnuPGに同梱されている環境の場合
50     :PROPERTIES:
51     :ID:       ad5d003a-dcbc-4024-964f-ff503ca410c8
52     :END:
53
54 gpg-zipスクリプトがGnuPGとともに配布されている環境(シェルスクリプトが使用できる環境)である場合はgpg-zipスクリプトを使用することにより互換性のあるファイルが作成できます。
55
56 #+BEGIN_SRC sh
57 gpg-zip -e [ファイル名1] [ファイル名2] …
58 #+END_SRC
59
60 *** gpg-zipスクリプトが使用できない場合
61     :PROPERTIES:
62     :ID:       51701ad1-7d7b-43e0-96f8-81ef7aebd813
63     :END:
64
65 gpg-zipが使用できない場合はtarコマンド(もしくは7-zipなど、tarファイルが作成できるソフト)を使用することにより可能です。(尚、基本的にはtar環境が標準で使用できる環境にいる場合は恐らくgpg-zipコマンドも使用できる可能性が高いです。)尚、Windows環境で動作するtarコマンドはGNU utilities for Win32で入手できます。
66
67 ** tarファイルの作成
68    :PROPERTIES:
69    :ID:       f4a894dc-ddb6-40d3-adb2-ff0cfb0a2ef7
70    :END:
71
72 tarコマンドを使用してファイルを作成する場合は以下のようにします。
73
74 #+BEGIN_SRC sh
75 tar -c ファイル名 > file.tar
76 #+END_SRC
77
78 ** 暗号化・署名
79    :PROPERTIES:
80    :ID:       00a0b1de-5f95-46b6-96c0-8b068de20c00
81    :END:
82
83 作成したtarファイルを暗号化する際に、–set-filenameオプションを使用します。
84
85 #+BEGIN_SRC sh
86 gpg -o file.pgp -e file.tar –set-filename “foo.tar”
87 #+END_SRC
88
89 fooのところは任意の名称で構いません。この–set-filenameで.tarの名前がついたファイル名が指定されていない場合は正常動作しません。(後述)
90 この方法で作成したファイルはPGPでもPGP Zipとして取り扱えるようになります。
91
92 ** 上記を組み合わせた方法
93    :PROPERTIES:
94    :ID:       1bbbf334-5f86-46b9-bcc5-bda1f6341425
95    :END:
96
97 パイプを使うことにより上記を組み合わせることもできます。
98
99 #+BEGIN_SRC sh
100 tar -c [ファイル名] | gpg -o file.pgp -e –set-filename “foo.tar”
101 #+END_SRC
102
103 ** 復号化
104    :PROPERTIES:
105    :ID:       70a70c48-d172-40b4-9b2a-5cf4054799ab
106    :END:
107
108 PGPや上記の方法で作成したPGP Zipファイルを復号化する際は反対に暗号化されているものをtarファイルに復号化した後、tarファイルを解凍する方法になります。
109
110 #+BEGIN_SRC sh
111 gpg -o file.tar -d file.pgp tar xvf file.tar
112 #+END_SRC
113
114 パイプを使用した場合は次のとおりです。
115
116 #+BEGIN_SRC sh
117 gpg -d file.pgp | tar xv
118 #+END_SRC
119
120 尚、処理系が異なると日本語のファイル名は文字化けします。(特にWindowsとMac/Linuxの間)ただし、検証自体は処理間の形式に対して行われますので署名の判定に関しては正しいものとなります。
121
122 ** Macの場合の注意
123    :PROPERTIES:
124    :ID:       e0586ef0-02ab-4d59-921c-6b07115e11ff
125    :END:
126
127 Macの場合はtarコマンドではなくgnutarコマンドを使用してください。尚、環境変数としてCOPYFILE_DISABLE=trueが指定されていないとAppleDouble(file.txtに対応する._file.txtのようなファイルとして)として拡張属性が含まれてしまいますのでご注意ください。
128
129 * Kleopatraのオプションは使用できるか(Gpg4Win Windows、KDE環境)
130   :PROPERTIES:
131   :ID:       a66e4bdf-2768-4cbb-ba72-33b917de03d6
132   :END:
133
134 Kleopatraを使用しファイルをKleopatraウインドウにドラッグ・ドロップした上で、Encrypt/Signを選択、Archive files with:のチェックボックスを有効にしTAR (PGP®-compatible)を選択することができるようになっています。バージョン2.1.0で検証してみると、これを使用した場合、ファイル名が正常に埋めこまれないため、PGP(10.2で検証)ではtarファイルをファイルとして扱う挙動を見せてしまいます。そのため、現状は受け取ったPGP Zipファイルを復号することは可能ですが、暗号化には使用しない方がいいでしょう。
135
136 ** 埋めこまれたファイル名の違い
137    :PROPERTIES:
138    :ID:       93119e0b-950c-40a2-839a-7f7fa756a987
139    :END:
140
141 *** Kleopatraで作成した場合
142     :PROPERTIES:
143     :ID:       b7aa3729-1380-47f0-bb20-a287eb4e585e
144     :END:
145 #+BEGIN_EXAMPLE
146 :literal data packet:
147 mode b (62), created 1315533132, name=”",
148 raw data: unknown length
149 #+END_EXAMPLE
150 *** PGPで作成した場合
151     :PROPERTIES:
152     :ID:       51b89f2f-74bb-40d7-9600-733ba3c4bf59
153     :END:
154 #+BEGIN_EXAMPLE
155 :literal data packet:
156 mode b (62), created 0, name=”pgpTmpArchive2020.tar”,
157 raw data: unknown length
158 #+END_EXAMPLE
159
160 #+BEGIN_HTML
161 <script type="text/javascript"><!--
162 google_ad_client = "ca-pub-6327257212970697";
163 /* GNU Privacy Guard講座Banner */
164 google_ad_slot = "2155169100";
165 google_ad_width = 970;
166 google_ad_height = 90;
167 //-->
168 </script>
169 <script type="text/javascript"
170 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
171 </script>
172 #+END_HTML