1 # -*- coding: utf-8-unix -*-
2 #+TITLE: PGP Zipの取り扱い方法
4 #+EMAIL: hideki@hidekisaito.com
5 #+DESCRIPTION: Emacs Builds prepared by Hideki Saito
6 #+KEYWORDS: Emacs, software, OSS, compile, build, binaries
8 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style.css" />
9 #+HTML_HEAD: <script type="text/javascript">
11 #+HTML_HEAD: var _gaq = _gaq || [];
12 #+HTML_HEAD: _gaq.push(['_setAccount', 'UA-114515-7']);
13 #+HTML_HEAD: _gaq.push(['_trackPageview']);
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);
20 #+HTML_HEAD: </script>
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
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
35 PGPにはPGP Zipと呼ばれるアーカイブの作成をすることができるようになっています。
39 :ID: 3a161657-fcf8-4e1d-9ff1-6d17dbb8f200
42 PGP Zipはファイル構成的には複数のファイルをtarにより単一化したものを暗号化するという構成をとっています。PGP Zipそのものがサポートされていない環境においてもこの処理を手動で行うことにより、PGP Zipとして扱えるファイルを作成することができます。
46 :ID: 9bf1149f-b0af-4316-81fc-747eb1bf2ef9
49 *** gpg-zipスクリプトがGnuPGに同梱されている環境の場合
51 :ID: ad5d003a-dcbc-4024-964f-ff503ca410c8
54 gpg-zipスクリプトがGnuPGとともに配布されている環境(シェルスクリプトが使用できる環境)である場合はgpg-zipスクリプトを使用することにより互換性のあるファイルが作成できます。
57 gpg-zip -e [ファイル名1] [ファイル名2] …
60 *** gpg-zipスクリプトが使用できない場合
62 :ID: 51701ad1-7d7b-43e0-96f8-81ef7aebd813
65 gpg-zipが使用できない場合はtarコマンド(もしくは7-zipなど、tarファイルが作成できるソフト)を使用することにより可能です。(尚、基本的にはtar環境が標準で使用できる環境にいる場合は恐らくgpg-zipコマンドも使用できる可能性が高いです。)尚、Windows環境で動作するtarコマンドはGNU utilities for Win32で入手できます。
69 :ID: f4a894dc-ddb6-40d3-adb2-ff0cfb0a2ef7
72 tarコマンドを使用してファイルを作成する場合は以下のようにします。
75 tar -c ファイル名 > file.tar
80 :ID: 00a0b1de-5f95-46b6-96c0-8b068de20c00
83 作成したtarファイルを暗号化する際に、–set-filenameオプションを使用します。
86 gpg -o file.pgp -e file.tar –set-filename “foo.tar”
89 fooのところは任意の名称で構いません。この–set-filenameで.tarの名前がついたファイル名が指定されていない場合は正常動作しません。(後述)
90 この方法で作成したファイルはPGPでもPGP Zipとして取り扱えるようになります。
94 :ID: 1bbbf334-5f86-46b9-bcc5-bda1f6341425
97 パイプを使うことにより上記を組み合わせることもできます。
100 tar -c [ファイル名] | gpg -o file.pgp -e –set-filename “foo.tar”
105 :ID: 70a70c48-d172-40b4-9b2a-5cf4054799ab
108 PGPや上記の方法で作成したPGP Zipファイルを復号化する際は反対に暗号化されているものをtarファイルに復号化した後、tarファイルを解凍する方法になります。
111 gpg -o file.tar -d file.pgp tar xvf file.tar
117 gpg -d file.pgp | tar xv
120 尚、処理系が異なると日本語のファイル名は文字化けします。(特にWindowsとMac/Linuxの間)ただし、検証自体は処理間の形式に対して行われますので署名の判定に関しては正しいものとなります。
124 :ID: e0586ef0-02ab-4d59-921c-6b07115e11ff
127 Macの場合はtarコマンドではなくgnutarコマンドを使用してください。尚、環境変数としてCOPYFILE_DISABLE=trueが指定されていないとAppleDouble(file.txtに対応する._file.txtのようなファイルとして)として拡張属性が含まれてしまいますのでご注意ください。
129 * Kleopatraのオプションは使用できるか(Gpg4Win Windows、KDE環境)
131 :ID: a66e4bdf-2768-4cbb-ba72-33b917de03d6
134 Kleopatraを使用しファイルをKleopatraウインドウにドラッグ・ドロップした上で、Encrypt/Signを選択、Archive files with:のチェックボックスを有効にしTAR (PGP®-compatible)を選択することができるようになっています。バージョン2.1.0で検証してみると、これを使用した場合、ファイル名が正常に埋めこまれないため、PGP(10.2で検証)ではtarファイルをファイルとして扱う挙動を見せてしまいます。そのため、現状は受け取ったPGP Zipファイルを復号することは可能ですが、暗号化には使用しない方がいいでしょう。
138 :ID: 93119e0b-950c-40a2-839a-7f7fa756a987
143 :ID: b7aa3729-1380-47f0-bb20-a287eb4e585e
146 :literal data packet:
147 mode b (62), created 1315533132, name=”",
148 raw data: unknown length
152 :ID: 51b89f2f-74bb-40d7-9600-733ba3c4bf59
155 :literal data packet:
156 mode b (62), created 0, name=”pgpTmpArchive2020.tar”,
157 raw data: unknown length
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;
169 <script type="text/javascript"
170 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">