|
現: 2022-08-13 (土) 14:09:06 yuji  |
| + | * GnuPG [#w8527e2a] |
| + | [[GnuPG(OpenPGP):https://www.gnupg.org/]]は,通信やデータファイルなどに暗号化・復号化・デジタル署名等を行うためのソフトウェア。~ |
| | | |
| + | 電子メールのメッセージの暗号化にも使用できる。~ |
| + | - 暗号化すると特定の人しか解読できないファイルが作成できる~ |
| + | - デジタル署名すると作成した人を特定できる~ |
| + | |
| + | GnuPGの元になったのは,Phil Zimmermannさんが開発した''PGP(Pretty Good Privacy)''という暗号化ツール。~ |
| + | PGPの最初のバージョンは,1991年に公開された。当時のPhil Zimmermannさんは反核運動家で,政府等の組織からデータやメッセージ(特に電子メール)を保護するための手段として開発したみたいで,それをフリーソフトとして公開した。 |
| + | |
| + | その後,PGPは改良を重ねていったが,1998年にRFC 2440で[[OpenPGP:https://www.openpgp.org/]]として標準化された。~ |
| + | また,特許上の制限や国際政治上の問題も2000年を機に大幅に緩和され,PGPを含む多くの暗号化ソフトウェアが本格的に使われるようになった。 |
| + | |
| + | GnuPGはOpenPGPをベースに独で生まれたソフトウェア。特定の個人・組織が独占することのないよう,[[GNUプロジェクト>https://www.gnu.org]]の一環として現在も開発が行われている。 |
| + | |
| + | GnuPGでは特許で制限される暗号化アルゴリズムは使用していない。 |
| + | |
| + | GnuPGは現在バージョン2系/バージョン1.4系があるが,対応している暗号化アルゴリズムは以下のようなものがある。 |
| + | - 公開鍵暗号~ |
| + | -- [[RSA:https://ja.wikipedia.org/wiki/RSA%E6%9A%97%E5%8F%B7]](1.0.3より)~ |
| + | -- [[ElGamal:https://ja.wikipedia.org/wiki/ElGamal%E6%9A%97%E5%8F%B7]]~ |
| + | -- [[DSA:https://ja.wikipedia.org/wiki/Digital_Signature_Algorithm]]~ |
| + | -- [[ECDH:https://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9A%E3%83%87%E3%82%A3%E3%83%95%E3%82%A3%E3%83%BC%E3%83%BB%E3%83%98%E3%83%AB%E3%83%9E%E3%83%B3%E9%8D%B5%E5%85%B1%E6%9C%89]]~ |
| + | -- [[ECDSA:https://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9ADSA]]~ |
| + | -- [[EdDSA:https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%89%E3%83%AF%E3%83%BC%E3%82%BA%E6%9B%B2%E7%B7%9A%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E7%BD%B2%E5%90%8D%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0]]~ |
| + | - 共通鍵暗号~ |
| + | -- [[IDEA:https://ja.wikipedia.org/wiki/International_Data_Encryption_Algorithm]](1.4.13/2.0.20より)~ |
| + | -- [[3DES:https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AA%E3%83%97%E3%83%ABDES]]~ |
| + | -- [[CAST5:https://ja.wikipedia.org/wiki/CAST-128]]~ |
| + | -- [[Blowfish:https://ja.wikipedia.org/wiki/Blowfish]]~ |
| + | -- [[AES-128, AES-192, AES-256:https://ja.wikipedia.org/wiki/Advanced_Encryption_Standard]]~ |
| + | -- [[Twofish:https://ja.wikipedia.org/wiki/Twofish]]~ |
| + | -- [[Camellia-128, Camellia-192, Camellia-256:https://ja.wikipedia.org/wiki/Camellia]](1.4.10/2.0.12より)~ |
| + | - ハッシュ関数~ |
| + | -- [[MD5:https://ja.wikipedia.org/wiki/MD5]]~ |
| + | -- [[SHA-1:https://ja.wikipedia.org/wiki/SHA-1]]~ |
| + | -- [[RIPEMD-160:https://ja.wikipedia.org/wiki/RIPEMD]]~ |
| + | -- [[SHA-256, SHA-384, SHA-512, SHA-224:https://ja.wikipedia.org/wiki/SHA-2]]~ |
| + | - 圧縮形式~ |
| + | -- 無圧縮~ |
| + | -- [[ZIP:https://ja.wikipedia.org/wiki/ZIP_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88)]]~ |
| + | -- [[ZLIB:https://ja.wikipedia.org/wiki/Zlib]]~ |
| + | -- [[BZIP2:https://ja.wikipedia.org/wiki/Bzip2]]~ |
| + | |
| + | //2.2(2.1)系では,楕円曲線暗号(楕円曲線DSA(ECDSA),楕円曲線ディフィー・ヘルマン鍵共有(ECDH),エドワーズ曲線デジタル署名アルゴリズム(EdDSA))に対応した。~ |
| + | |
| + | ** フロントエンドや統合パッケージ [#fe79dbfa] |
| + | GnuPGはコマンドラインで使用するツールなので,GUIフロントエンドがいくつか開発されている。~ |
| + | それらには,GUIアプリケーションやKMailやEvolutionといった電子メールクライアントに統合されたものなどがある。~ |
| + | |
| + | - GUIフロントエンドの例~ |
| + | -- [[WinPT>http://winpt.wald.intevation.org/]] (Windows用)~ |
| + | -- [[Kleopatra>https://apps.kde.org/kleopatra/]](Windows/Linux/macOS用) |
| + | -- [[GnuPG Shell>http://www.tech-faq.com/gnupg-shell.html]] (Windows/Linux用)~ |
| + | -- [[KGpg>https://www.kde.org/applications/utilities/kgpg/]], [[Seahorse>https://wiki.gnome.org/Apps/Seahorse]] (Linux用)~ |
| + | - 電子メールクライアントの例~ |
| + | -- [[Thunderbird>https://www.thunderbird.net/ja/]] (Windows/Linux/macOS用)~ |
| + | --- [[Enigmail>https://addons.thunderbird.net/ja/thunderbird/addon/enigmail/]] (v78未満のMozilla ThunderbirdおよびSeamonkey用のアドオン)~ |
| + | -- [[Sylpheed>https://sylpheed.sraoss.jp/ja/]] (Windows/Linux/macOS用)~ |
| + | -- [[eM Client>https://emclient.jp/]] (Windows/macOS用)~ |
| + | -- [[KMail>https://apps.kde.org/kmail2/]], [[Evolution>https://wiki.gnome.org/Apps/Evolution]] (Linux用)~ |
| + | - 統合パッケージ(GnuPGとGUIフロントエンド・電子メールクライアントの一括インストール) |
| + | -- [[Gpg4win>https://www.gpg4win.org/]] (Windows用)~ |
| + | -- [[GPGTools>https://gpgtools.org/]] (macOS用)~ |
| + | |
| + | ** 他の暗号化通信との違い [#ldb27995] |
| + | + SSLなどとの違い~ |
| + | SSL/TLS(Secure Sockets Layer/Transport Layer Security)やSSH(Secure Shell)のポート転送を用いて,''メールサーバー''との通信を暗号化することが出来る。~ |
| + | しかしそれでは,送信後のメールの配送やサーバで保管されるメールについては,暗号化されていないことになる。~ |
| + | ~Bcc(Blind Carbon Copy)でメールを送る場合,メールのヘッダに宛先が表示されないが配送自体も暗号化されないし,サーバーで保管された状態のメールは暗号化されていない。~ |
| + | ~これに対してPGPやGnuPGでは,必ずしも安全でない通信経路やサーバーを介しても,メッセージが暗号化されていて秘密を守れる。~ |
| + | + 暗号化ZIPとの違い~ |
| + | パスワードつきのZIPファイル(暗号化ZIP)は,そのファイルごとにパスワードが設定される。~ |
| + | しかし,何らかの理由でパスワードを変更したいと思っても,送付したあとには出来ない。ファイルをいくつも作るとなると,そのパスワードの管理が面倒になる。~ |
| + | ~PGPやGnuPGでの暗号化では,鍵(セッション鍵)が受信者の公開鍵で暗号化されている。したがって,その安全性は受信者の鍵の管理に依存することになる。~ |
| + | 受信者の持つ秘密鍵はパスフレーズを入力しないと使用出来ないが,もちろんそのパスフレーズは後でも変更出来る。~ |
| + | ~なお,暗号化ZIPでは,一つのファイルに対してパスワードを知っている複数の人が復号できるが,PGPやGnuPGにおいても,複数の利用者が(それぞれの秘密鍵で)ファイルを復号出来るような単一のファイルを作ることは可能。~ |
| + | + S/MIMEとの違い~ |
| + | S/MIME(Secure/Multipurpose Internet Mail Extensions)は,RSA Data Security社が開発したメールの暗号化や署名についての規格(RSA公開鍵暗号方式)で,そのデータフォーマットはPGPやGnuPGとは異なっている。~ |
| + | IETFによって標準化されている。~ |
| + | S/MIMEでは第3者認証局により鍵や証明書が発行される。また第3者認証局では所有者の正当性を保証するための管理を行っている。~ |
| + | このため,S/MIMEでのデジタル証明書の利用については有料となる。 |
| + | |
| + | * GnuPGをインストール [#uf825992] |
| + | GnuPGはコマンドラインツールで,3つのバージョンがある。~ |
| + | - ''Stable''(2.4)~ |
| + | バージョン2系の最新版で,現在の開発系列。初版リリースは2021/04/08。サポート終了は2026/06/30の予定。~ |
| + | - ''LTS''(2.2)~ |
| + | バージョン2系の旧版。2024/12/31でサポートが終了した。~ |
| + | 楕円曲線暗号などの新機能を実装している。バージョン2.2.0で安定版となった。(2017/08/28) |
| + | - ''Legacy''(1.4)~ |
| + | 古いバージョン。旧来のスタンドアロン版。~ |
| + | 古いシステムや組み込み用途に適している。初版リリースは2004/12/16。~ |
| + | |
| + | これから使用する場合には,''LTS''か''Stable''をインストールすればいい。 |
| + | |
| + | ** Windowsマシンにインストール [#k1a28cb0] |
| + | Microsoft Outlookでも暗号化出来るようにするアドイン等も合わせてインストールしたい場合は,下に書いてある''[[Gpg4winをインストールする>./#t4a99f3b]]''でインストールした方が,アドイン等も合わせてインストールできるので手間がかからない。 |
| + | |
| + | *** コマンドラインで動作するGnuPGのみをインストール [#cdec028c] |
| + | [[公式サイト>https://gnupg.org/download/]] から,windows版のインストラー(gnupg-w32-2.x.x_yyyymmdd.exe)をダウンロードする。 |
| + | ''バージョン2系の最新版は2.4.7。''~ |
| + | |
| + | ダウンロードしたインストーラーをダブルクリックして実行する。~ |
| + | [Next]ボタンを3回ぐらいクリックでインストールされる。インストール先は,C:\Program Files (x86)\gnupgになっている。~ |
| + | 古いバージョンをインストールしている場合は,上書きインストールされる。 |
| + | |
| + | インストーラーにより実行PATHに追加されるため,すぐにコマンドプロンプトから使用できる。~ |
| + | |
| + | インストール後確認するにはコマンドプロンプトを開いて,~ |
| + | C:\home\ueno> gpg --version |
| + | gpg (GnuPG) 2.4.6 |
| + | libgcrypt 1.11.0 |
| + | Copyright (C) 2024 g10 Code GmbH |
| + | License GNU GPL-3.0-or-later <https://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: C:\home\ueno\.gnupg |
| + | サポートしているアルゴリズム: |
| + | 公開鍵: RSA, ELG, DSA, ECDH, ECDSA, EDDSA |
| + | 暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, |
| + | TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 |
| + | ハッシュ: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 |
| + | 圧縮: 無圧縮, ZIP, ZLIB, BZIP2 |
| + | と,実行とバージョンが確認できる。 |
| + | |
| + | デフォルトでは,鍵(公開鍵,秘密鍵)などを保存するディレクトリは,Windowsマシンの場合は |
| + | C:/Users/<ユーザー>/AppData/Roaming/gnupg |
| + | になる。~ |
| + | Linuxマシン(Unix系)などでは |
| + | ~/.gnupg |
| + | になる。~ |
| + | |
| + | 他のフォルダに変更したい場合は,環境変数''GNUPGHOME''で任意ディレクトリを設定することが出来る。~ |
| + | また,gpg.exe実行時に''--homedir''オプションで,直接指定することも出来るようになっている。 |
| + | |
| + | *** Gpg4winをインストールする [#t4a99f3b] |
| + | Gpg4winは,Windows用のGnuPG・GUIフロントエンド・Microsoft Outlook用のアドインなどを一括でインストール出来るパッケージ。~ |
| + | |
| + | WindowsマシンでMicrosoft OutlookでGnuPGを使用してメールを暗号化したい場合は,このパッケージをインストールすると手っ取り早い。~ |
| + | ''コマンドライン版GnuPGも含まれているので,上記のコマンドライン版はインストールする必要はない。'' |
| + | |
| + | [[公式サイト>https://www.gpg4win.org/]] から最新版のインストーラー(gpg4win-x.x.x.exe)をダウンロード((gpg4win バージョン4.4.0をインストールしたら,Microsoft 365版32bit Outlookで連絡先から宛先を指定するとOutlookがクラッシュしてしまう問題が出ている。バージョン4.3.1なら問題ない。))する。~ |
| + | |
| + | インストールは,ダウンロードしたインストーラーをダブルクリックするだけ。~ |
| + | |
| + | ''GpgOL''というOutlook用のアドオンが一緒にインストールされ,Outlookを再起動するとリボンの右の方にアイコンが表示されていて,公開鍵を使用してメールを暗号化することが簡単に出来るようになる。~ |
| + | |
| + | また,''GpgEX''というWindowsのエキスプローラーに統合化された暗号化ツールと,''Kleopatra''という鍵を管理するツールもインストールされる。 |
| + | |
| + | ** Linuxマシンにインストール [#gefa07c5] |
| + | 多くのLinuxディストリビューションではデフォルトでインストールされている。~ |
| + | |
| + | パッケージ管理ツールでもインストールできる。~ |
| + | # yum install gpg |
| + | |
| + | * 暗号化する場合の流れ [#l3392175] |
| + | GnuPGを利用する場合は,以下のような流れになる。~ |
| + | - 暗号化するための公開鍵を取得する~ |
| + | - 公開鍵を使用して暗号化する~ |
| + | - 暗号化した情報(ファイル)を送る~ |
| + | - 情報(ファイル)を受信した人が自分の秘密鍵で複合化する~ |
| + | |
| + | 暗号化するためには,鍵が必要になる。~ |
| + | 通常,暗号化してメールを送って欲しい人は,''公開鍵''という種類の鍵を公開鍵サーバーや自分のホームページ等で公開している。~ |
| + | |
| + | 公開されている''公開鍵''を取得することが出来れば,その公開鍵を使用してファイルなどを暗号化することが出来るようになる。 |
| + | |
| + | 復号化する側は,''公開鍵''とペアになっている''秘密鍵''を復号化したい人は持っているので,その秘密鍵を使って復号化(デコード)します。~ |
| + | この''秘密鍵''は復号化する人しか持っていないので,電子メールを暗号化して安全に送受信するといったことがが出来るようになる。 |
| + | |
| + | GnuPGを使う場合の原則は,次の5つになる。~ |
| + | - &color(red){暗号化には受信者の公開鍵を使用する。};~ |
| + | - &color(red){復号には受信者の秘密鍵を使用する。};~ |
| + | - デジタル署名には送信者の秘密鍵を使用する。~ |
| + | - デジタル署名の検証には送信者の公開鍵を使用する。~ |
| + | - &color(red){秘密鍵を使用するときパスフレーズを入力する。};~ |
| + | |
| + | * 鍵の管理 [#k6185ac3] |
| + | ** 自分の鍵を作成する [#w4b027a7] |
| + | 自分の鍵がまだ無い場合は,新規に鍵を作成する。''--generate-key''オプションを使用する。 |
| + | D:\home\ueno> gpg --generate-key |
| + | ご希望の鍵の種類を選択してください: |
| + | (1) RSA and RSA (default) |
| + | (2) DSA and Elgamal |
| + | (3) DSA (署名のみ) |
| + | (4) RSA (署名のみ) |
| + | 選択? 1 |
| + | |
| + | SA keys may be between 1024 and 4096 bits long. |
| + | What keysize do you want? (2048) |
| + | 要求された鍵長は2048ビット |
| + | 鍵の有効期限を指定してください。 |
| + | 0 = 鍵は無期限 |
| + | <n> = 鍵は n 日間で満了 |
| + | <n>w = 鍵は n 週間で満了 |
| + | <n>m = 鍵は n か月間で満了 |
| + | <n>y = 鍵は n 年間で満了 |
| + | 鍵の有効期間は? (0) |
| + | これで正しいですか? (y/N) y |
| + | あなたの鍵を同定するためにユーザーIDが必要です。 |
| + | このソフトは本名、コメント、電子メール・アドレスから |
| + | 次の書式でユーザーIDを構成します: |
| + | "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" |
| + | |
| + | 本名: Yuji Ueno |
| + | 電子メール・アドレス: yuji@yueno.net |
| + | コメント: mail for Yuji Ueno. |
| + | 次のユーザーIDを選択しました: |
| + | “Yuji Ueno (mail for Yuji Ueno.) <yuji@yueno.net>” |
| + | 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? O |
| + | 秘密鍵を保護するためにパスフレーズがいります。 |
| + | |
| + | 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす |
| + | とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で |
| + | 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 |
| + | ......+++++ |
| + | .+++++ |
| + | 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす |
| + | とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で |
| + | 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 |
| + | .+++++ |
| + | 十分な長さの乱数が得られません。OSがもっと乱雑さを収集 |
| + | できるよう、何かしてください! (あと75バイトいります) |
| + | .gpg: 鍵CBXXXXXを絶対的に信用するよう記録しました |
| + | 公開鍵と秘密鍵を作成し、署名しました。 |
| + | |
| + | 作成した''公開鍵''があることを確認する。''--list-keys''オプションを使用する。 |
| + | D:\home\ueno> gpg --list-keys |
| + | C:/Users/yueno/AppData/Roaming/gnupg/pubring.gpg |
| + | ------------------------------------------------ |
| + | pub dsa1024 2012-12-01 [SC] |
| + | XXYYZZ25014C60E8319983AA6CC87XXYYYYYYYYY |
| + | uid [ 究極 ] Yuji Ueno (mail for Yuji Ueno.) <yuji@yueno.net> |
| + | sub elg2048 2012-12-01 [E] |
| + | |
| + | 秘密鍵があることを確認する。''--list-secret-keys''オプションを使用する。 |
| + | D:\home\ueno> gpg --list-secret-keys |
| + | C:/Users/yueno/AppData/Roaming/gnupg/pubring.gpg |
| + | ------------------------------------------------ |
| + | sec dsa1024 2012-12-01 [SC] |
| + | XXYYZZ25014C60E8319983AA6CC87XXYYYYYYYYY |
| + | uid [ 究極 ] Yuji Ueno (mail for Yuji Ueno.) <yuji@yueno.net> |
| + | ssb elg2048 2012-12-01 [E] |
| + | |
| + | sec dsa1024 2012-12-01 [SC] というのは秘密鍵で,1024のDSAの鍵です。~ |
| + | 公開鍵の場合は,pubになります。 |
| + | |
| + | 鍵を作成した時に登録した''パスフレーズは,絶対忘れないようにすることと,絶対に漏らさないこと''が大事。 |
| + | |
| + | ** 自分の公開鍵を公開する [#t640ad98] |
| + | インターネット上にある鍵サーバー(公開鍵サーバ)に自分の公開鍵を登録して,他の人に公開鍵を渡すことが出来ます。~ |
| + | 公開鍵をファイルまたはデータ情報として渡しても良いのだが,それだとちょっと面倒になる。~ |
| + | そのために,鍵サーバー(公開鍵サーバ)がサービスされています。注意することは,鍵サーバー(公開鍵サーバ)は,公開鍵のやりとりの利便性を図るものであって,公開鍵そのものの正当性は保証してくれているわけではありません。~ |
| + | |
| + | 鍵サーバー(公開鍵サーバ)に公開鍵を登録するには,''--send-keys''オプションを使うと登録出来る。 |
| + | D:\home\ueno> gpg --keyserver pgp.mit.edu --send-keys <鍵ID> |
| + | |
| + | もし,間違えて送ってしまったものを削除するには,''--gen-revoke''で失効証明書を作成してrevoke.ascに保存している場合は, |
| + | D:\home\ueno> gpg --keyserver pgp.mit.edu --send-keys <鍵ID> < revoke.asc |
| + | とすると,その公開鍵を無効にできる。(削除は出来ない) |
| + | |
| + | **公開されている鍵を探す [#h2347266] |
| + | メッセージを暗号化する場合は相手の公開鍵を使用して暗号化します。つまり,相手の公開鍵を入手する必要があります。 |
| + | |
| + | 公開鍵を直接ファイル等で貰っても良いのだが,上記の公開鍵を管理してくれる鍵サーバーがある。~ |
| + | 相手が鍵サーバーに公開している場合は,相手のメールアドレスがだいたいわかっていれば,鍵サーバーを検索出来る。(--keyserverを指定しない場合は,gpg.confのkeyserverが使用される)~ |
| + | D:\home\ueno> gpg --keyserver pgp.mit.edu --search-keys yyyyy@xxxxx.com |
| + | gpg: data source: https://37.191.226.104:443 |
| + | (1) Yuji Ueno <yyyyy@xxxxx.com> |
| + | 2048 bit RSA key XXF0FF212XXYYYYY, 作成: 2016-01-21 |
| + | Keys 1-1 of 1 for "yyyyy@xxxxx.com". 番号(s)、N)次、またはQ)中止を入力してください > |
| + | |
| + | 鍵が見つかったので,取得してみる。 |
| + | D:\home\ueno> gpg --recv-keys XXF0FF212XXYYYYY |
| + | これで鍵が取得できる。''--list-keys''オプションで確認できる。 |
| + | D:\home\ueno> gpg --list-keys |
| + | pub rsa2048 2016-01-21 [SC] |
| + | XX220398D03470AA38747DD9XXF0FF212XXYYYYY |
| + | uid [ 究極 ] Yuji Ueno <yyyyy@xxxxx.com> |
| + | sub rsa2048 2016-01-21 [E] |
| + | |
| + | 間違えた時などで削除したい場合は,''--delete-keys''を使う。 |
| + | D:\home\ueno> gpg --delete-keys XXF0FF212XXYYYYY |
| + | |
| + | ** 古い鍵を更新する [#j6981965] |
| + | ずいぶん前に作成した鍵が1024bit DSAなので,鍵の信頼性に問題が出ていて,アプリケーションによっては使用できない場合も出てきた。~ |
| + | しょうがないんで,鍵を更新することにした。 |
| + | |
| + | まず,更新したい鍵に対して新しい鍵を作成する。gpgのバージョンが新しいものを使って期限とかを設定したい場合はfull-generate-keyを使う。 |
| + | D:\home\ueno> gpg --full-generate-key |
| + | |
| + | *** 新しい鍵が出来たら,古い鍵で新しい鍵にサインする [#h277c122] |
| + | 古い鍵を作った人が,新しい鍵を作ったよってことがちゃんと証明できるように署名をする。 |
| + | D:\home\ueno> gpg -u XXXXXXXXXXXXXX --sign-key YYYYYYYYYYYYY |
| + | |
| + | *** 古い鍵を無効にする [#pcb17161] |
| + | D:\home\ueno> gpg -o yuji-old.revoke --gen-revoke XXXXXXXXXXXXXX |
| + | D:\home\ueno> gpg --import yuji-old.revoke |
| + | |
| + | *** 鍵サーバに登録する [#n87be572] |
| + | 古い鍵をrevoke(無効)したので,その情報を鍵サーバーに送信する。 |
| + | D:\home\ueno> gpg --keyserver pgp.mit.edu --send-keys XXXXXXXXXXXXXX |
| + | |
| + | 新しい鍵も登録する。 |
| + | D:\home\ueno> gpg --keyserver pgp.mit.edu --send-keys YYYYYYYYYYYYY |
| + | |
| + | *** 古い鍵を削除する [#s94c2e19] |
| + | 手元にある古い鍵を削除。 |
| + | D:\home\ueno> gpg --delete-secret-and-public-keys XXXXXXXXXXXXXX |
| + | |
| + | ** 鍵を別のPCに移す [#yad19ee5] |
| + | 何らかの理由で別のPCに鍵を移す必要がある場合は,以下のようにする。 |
| + | |
| + | *** 鍵がある側 [#q72f2ec4] |
| + | - 公開鍵のエクスポート~ |
| + | $ gpg -o hogehoge.key --export hogehoge |
| + | - 秘密鍵のエクスポート~ |
| + | $ gpg -o hogehoge_sec.key --export-secret-key hogehoge |
| + | - 公開鍵の信用情報エクスポート~ |
| + | $ gpg --export-ownertrust > hogehoge.trust |
| + | |
| + | *** 鍵の移動先 [#l031b9f3] |
| + | - 公開鍵のインポート~ |
| + | $ gpg --import hogehoge.key |
| + | - 秘密鍵のインポート~ |
| + | $ gpg --import --allow-secret-key-import hogehoge_sec.key |
| + | - 公開鍵の信用情報インポート~ |
| + | $ gpg --import-ownertrust hogehoge.trust |
| + | |
| + | ** 有効期限の更新 [#h7a4a73a] |
| + | 鍵の有効期限が切れていた場合は,期限を変更することが出来る。~ |
| + | |
| + | まず期限が切れている鍵のIDを調べてメモする。~ |
| + | 鍵のIDがわかったら,その鍵の期限を変更する。~ |
| + | $ gpg --edit-key [鍵のID] |
| + | gpg> key [NUM] <-- 操作対象のキー番号を指定する。NUMを省略した場合はマスターキーになる |
| + | gpg> expire <-- 次のプロンプトで有効期限を指定出来る |
| + | gpg> save |
| + | gpg> exit |
| + | expireで,0を指定すると無期限,数字で日数,またはその後にw,m,yの単位を入力することにより週,月,年の単位で指定する事ができる。~ |
| + | 例えば,1yと入力する事により一年間有効にする事が出来る。 |
| + | |
| + | これで鍵の有効期限の更新作業が出来る。 |
| + | |
| + | * 代用的な公開鍵サーバー [#u560f258] |
| + | 昔は多くのPGP公開鍵サーバーがあったが,有名なところも含めていろいろと閉鎖されている。~ |
| + | また,公開鍵サーバーは,公開鍵のやりとりの利便性を図る目的で運営されており,''鍵そのものの正当性は保証していない''ので注意する。 |
| + | |
| + | 通常は1日毎にすべての公開鍵サーバーで同期されるようになっているので,どこか1箇所を利用するようにすれば良いようだ。~ |
| + | |
| + | デフォルトで使用する公開鍵サーバーは,''gpg.conf''で設定している。~ |
| + | Windowsマシンでは,''C:/Users/<ユーザー>/AppData/Roaming/gnupg'',Linuxマシンでは,''~/.gnupg''に''gpg.conf''ファイル(環境変数GNUPGHOMEを設定している場合はそこに)が有る。~ |
| + | keyserver hkp://keys.gnupg.net |
| + | このように設定されている。変更したい場合は,以下のリストからどれかを設定すれば良い。 |
| + | |
| + | 動作しているPGP公開鍵サーバー |
| + | |name |url |port|h |
| + | |%%MIT PGP Public Key Server%%|%%hkp://pgp.mit.edu%% |11371,443| |
| + | |OpenPGP keyserver |hkp://keys.gnupg.net |11371,443| |
| + | |Ubuntu keyserver |hkp://keyserver.ubuntu.com |11371,443| |
| + | |%%SKS OpenPGP Key Server%% |%%hkp://keyserver3.maxweiss.io%% |11371,443| |
| + | |%%SKS OpenPGP Key Server%% |%%hkp://pgpkeys.eu%% |11371,443| |
| + | |SKS OpenPGP Key Server |hkp://pgp.asia |11371,443| |
| + | |%%OpenPGP key server%% |%%hkp://pgp.surfnet.nl%% |11371,443| |
| + | |SKS OpenPGP Key Server |hkp://key-server.org |11371,443| |
| + | |
| + | どうもhkp://pgp.mit.eduは完全にサービスを停止したみたいだ。~ |
| + | [[http://pgp.nic.ad.jp>http://pgp.nic.ad.jp]]は,2022/09/30をもってサービスが終了した。~ |
| + | |
| + | また,単独のKey Server(相互に同期はしていない)として以下がある。~ |
| + | |name |url |port|h |
| + | |OpenPGP Key Server |hkp://keys.openpgp.org |11371,443| |
| + | |
| + | * GnuPGで暗号化・復号化する方法 [#n9dbfb6c] |
| + | |
| + | ** ファイルをパスワード(共通鍵暗号)で暗号化・復号化する [#rfae2f5a] |
| + | とりあえず簡単にパスワードを指定してファイルを暗号化したい場合でも,GnuPGが使えます。~ |
| + | > gpg --symmetric ファイル |
| + | または |
| + | > gpg -c ファイル |
| + | とします。 |
| + | |
| + | ダイアログが表示され,パスワード入力を促されます。パスワードを入力すると暗号化された''ファイル.gpg''というファイルが作成される。~ |
| + | |
| + | 復号化する場合は, |
| + | > gpg --decrypt ファイル.gpg |
| + | or |
| + | > gpg -d ファイル.gpg |
| + | とします。~ |
| + | ** メール文書を暗号化(公開鍵での暗号化) [#q46015f7] |
| + | メールなどでは,そのメール文書の受取人の公開鍵を使って暗号化して,その受取人しか復号化することが出来ないようにします。~ |
| + | > gpg --encrypt --recipient 受取人のメールアドレス メール文書のファイル名 |
| + | 暗号化すると,メール文書のファイル名.gpgという暗号化されたバイナリファイルが作成される。 |
| + | |
| + | メールに貼り付ける場合にはテキストファイルにする必要がある。 |
| + | > gpg --encrypt --armor --recipient 受取人のメールアドレス メール文書のファイル名 |
| + | とすれば,メール文書のファイル名.ascという暗号化されたテキストファイルが作成される。 |
| + | |
| + | もし,受取人と自分の両方で復号化出来るようにするには, |
| + | > gpg --encrypt --recipient 受取人のメールアドレス --recipient 自分のメールアドレス メール文書のファイル名 |
| + | とすると,自分の秘密鍵でも復号化出来るようになる。 |
| + | |
| + | ** 暗号方式を指定してファイルを暗号化 [#le46eb5f] |
| + | 暗号方式を指定するには,GnuPGの設定ファイル''~/.gnupg/gpg.conf''に''cipher-algo AES256''のように暗号方式を追加するか,コマンド実行時に''--cipher-algo''オプションで指定します。 |
| + | |
| + | 例:暗号方式を指定してファイルを暗号化 |
| + | > gpg --cipher-algo AES256 --symmetric hello.txt |
| + | |
| + | *** 暗号方式一覧 [#sbecb9f8] |
| + | gpgが対応している暗号方式を確認する場合は,以下のようにします。 |
| + | > gpg --version |
| + | ... |
| + | Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, |
| + | CAMELLIA128, CAMELLIA192, CAMELLIA256 |
| + | |
| + | *** 暗号時にパスフレーズを標準入力から取得する [#p3d0e7f5] |
| + | 暗号時にパスフレーズを標準入力から指示する場合は,''--passphrase-fd 0''オプションを使います。 |
| + | > gpg --batch --passphrase-fd 0 --symmetric hello.txt < password.txt |
| + | |
| + | *** 圧縮方式を指定して暗号化する [#j9573423] |
| + | 圧縮方式を指定するには,''--compress-algo''オプションを使用します。 |
| + | > gpg --compress-algo zlib --symmetric hello.txt |
| + | |
| + | 主に使用される圧縮方式は以下のようなものがある。 |
| + | :--compress-algo none|圧縮なし |
| + | :--compress-algo zip|zip |
| + | :--compress-algo zlib|zlib, gzip |
| + | :--compress-algo bzip2|bzip2 |
| + | |
| + | *** 対応している圧縮方式一覧 [#ad63c492] |
| + | gpgが対応している圧縮方式を確認する場合は,以下のようにします。 |
| + | > gpg --version |
| + | ... |
| + | Compression: Uncompressed, ZIP, ZLIB, BZIP2 |
| + | |
| + | ** ファイルを復号化する [#a5ff0ba8] |
| + | ファイルを復号化する場合は,以下のようにします。 |
| + | > gpg hello.txt.gpg |
| + | もしくは |
| + | > gpg -d hello.txt.gpg |
| + | |
| + | *** 標準入力からパスワードを取り込んで復号化する [#o343845c] |
| + | 複合時パスフレーズを標準入力から指示する場合は,''--passphrase-fd 0''オプションを使います。 |
| + | > gpg --batch --passphrase-fd 0 hello.txt.gpg < password.txt |