0Pricing
Cryptology Academy · レッスン

非対称ファイル暗号化のためのGPG

GPGを使って特定の受信者向けにファイルを暗号化し、コンテンツに署名し、GPGキーリングを管理します。

「非対称ファイル暗号化のためのGPG」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

GPGの概要と目的

GNU Privacy Guard(GPG)は、OpenPGP標準(RFC 4880)を実装し、非対称ファイル暗号化とデジタル署名を提供します。GPGでは、意図した受信者だけが復号できるようにファイルを暗号化することと、他者がファイルの真正性と完全性を検証できるように署名することという、2つの基本操作を実行できます。GPGは、安全なファイル転送とソフトウェアリリースへの署名に使われる標準ツールです。

GPG鍵の生成

GPG鍵の生成はgpg --gen-keyを使って対話的に行うことも、gpg --quick-gen-keyを使ってスクリプト化することもできます。現代のGPGでは、署名にed25519、暗号化にcv25519(Curve25519)を使用する設定がデフォルトになっており、主鍵として署名鍵を、サブキーとして暗号化鍵を作成します。--full-gen-keyオプションを使用すると、カスタム設定が必要なユーザー向けに、鍵の種類、サイズ、有効期限を完全に制御できます。

GPG鍵の種類の比較

RSA 4096ビットのGPG鍵は、すべてのOpenPGP実装と互換性があり、強力なセキュリティを提供します。Curve25519を使用するECDSA(署名にはEd25519、暗号化にはCv25519)は、同等のセキュリティを維持しながら、より小さな鍵と高速な処理を実現します。従来のDSA鍵は、古い実装ではSHA-1ダイジェストに制限されるため、使用しないでください。新しい鍵にはCurve25519ベースの種類を使用してください。

公開鍵のエクスポートと共有

キーペアを生成したら、配布するために公開鍵をエクスポートします。gpg --armor --export your@email.comを実行すると、ASCIIアーマー形式の公開鍵ブロックが出力されます。このファイルを、あなた宛てにファイルを暗号化する人や、あなたの署名を検証する人と共有してください。受信者は、暗号化や検証を行う前に、gpg --import publickey.ascであなたの公開鍵をインポートします。

受信者向けのファイル暗号化

特定の受信者向けにファイルを暗号化するには、gpg --encrypt --recipient recipient@email.com --output secret.gpg plaintext.txtを実行します。GPGは受信者の公開鍵を使ってファイルのセッションキーを暗号化し、ファイル本体をAES-256(またはネゴシエーションされた暗号方式)で暗号化します。対応する秘密鍵を持つ受信者だけがファイルのセッションキーを復号し、平文を復元できます。

分離署名の作成

分離署名(gpg --detach-sign --armor file.tar.gz)を作成すると、署名を含む独立した.ascファイルが生成されます。元のファイルは変更されません。受信者はgpg --verify file.tar.gz.asc file.tar.gzで検証します。分離署名はソフトウェアリリースで標準的に使われており、配布されたファイルを復号したり変更したりせずに署名を検証できます。

署名の検証

署名を検証すると、ファイルが申告された鍵によって署名されたことと、署名後に変更されていないことを確認できます。gpg --verify signature.asc fileを実行すると、鍵のフィンガープリント、ユーザーID、署名が有効か無効かが出力されます。セキュリティは、署名者の公開鍵を正しく信頼できるかどうかに依存します。信頼または検証されていない鍵による有効な署名では、十分な保証になりません。

パスフレーズで保護された秘密鍵

GPGは、秘密鍵を保存する前に、パスフレーズから導出した共通鍵暗号で秘密鍵を暗号化します。パスフレーズがなければ、秘密鍵ファイルを入手した攻撃者もそれを使用できません。GPGは鍵導出関数を使って、パスフレーズから暗号化鍵を導出します。すべての暗号化ファイルがこのパスフレーズによって保護されるため、パスフレーズは長く覚えやすいものにし、他の場所では使わないでください。

GPG鍵サーバーの操作

GPG鍵サーバーは、公開鍵を検索できるようにホストします。gpg --send-keys KEYID --keyserver hkps://keys.openpgp.orgを実行すると、公開鍵をアップロードできます。他のユーザーは、gpg --recv-keys KEYIDで検索してインポートできます。鍵サーバーは互いに同期するため、世界中から利用できます。keys.openpgp.orgのような最新の鍵サーバーでは、公開前にメールアドレスの検証が必要であり、鍵スパム攻撃を防止します。

鍵の有効期限と失効

鍵に有効期限を設定すると、失効証明書を作成していなくても、鍵を管理できなくなった場合に自動的に保護できます。鍵の有効期限が切れると、GPGはその鍵を使って暗号化しようとするユーザーに警告します。鍵が侵害された場合は、鍵の生成時に作成しておいた失効証明書を直ちに鍵サーバーへ公開してください。gpg --import revocation.certとgpg --send-keysを使用します。これにより、侵害された鍵に対する新たな暗号化を防止できます。

自動化されたワークフローでのGPG

GPGは、--batchと--yesフラグを使い、ファイルディスクリプターから読み取るパスフレーズを--passphrase-fdで指定することで、スクリプト内で非対話的に動作させられます。GPG agent(gpg-agent)は、設定可能な期間パスフレーズをキャッシュするため、自動処理で再利用できます。CI/CDパイプラインでは、鍵のマテリアルをソースコードや環境変数に保存せず、シークレット管理システムに保存してください。

GPGによる暗号化コマンド

公開鍵を使って特定の受信者向けにファイルを暗号化するGPGコマンドはどれですか?

GPGファイル暗号化のまとめ

GPGのまとめ:キーペアを生成し(Curve25519を推奨)、公開鍵をエクスポートして共有し、受信者の公開鍵で暗号化し(--encrypt --recipient)、分離署名(--detach-sign)でファイルに個別に署名し、--verifyで署名を検証し、パスフレーズで秘密鍵を保護し、有効期限を設定して失効証明書を準備し、鍵サーバーを使って公開鍵を検索・配布します。

よくある質問

「非対称ファイル暗号化のためのGPG」レッスンは無料ですか?

はい。「非対称ファイル暗号化のためのGPG」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「非対称ファイル暗号化のためのGPG」で何を学びますか?

GPGを使って特定の受信者向けにファイルを暗号化し、コンテンツに署名し、GPGキーリングを管理します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「非対称ファイル暗号化のためのGPG」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 非対称ファイル暗号化のためのGPG
  2. age暗号化ツール:現代的なGPGの代替手段
  3. VeraCryptによる暗号化コンテナ
  4. 安全な削除と鍵の破棄
← Cryptology Academyに戻る