技術ノート ハードウェア Linux 上の GPG を使用してファイルを暗号化および復号化する方法

Linux 上の GPG を使用してファイルを暗号化および復号化する方法

Linux gpg コマンドを使用してプライバシーを保護します。世界クラスの暗号化を使用して秘密を安全に保ちます。 gpg を使用してキーを操作し、ファイルを暗号化し、復号化する方法を説明します。

GnuPrivacy Guard ( GPG ) を使用すると、ファイルを安全に暗号化して、意図した受信者のみがファイルを復号化できるようになります。具体的には、GPG は OpenPGP 標準に準拠しています。これは、Pretty Good Privacy ( PGP ) と呼ばれるプログラムをモデルとしています。 PGP は 1991 年に Phil Zimmerman によって書かれました。

GPG は、1 人あたり 2 つの暗号化キーという考えに基づいています。各人は秘密鍵と公開鍵を持っています。公開キーは、秘密キーを使用して暗号化されたものを復号化できます。

ファイルを安全に送信するには、自分の秘密キーと受信者の公開キーを使用してファイルを暗号化します。ファイルを復号化するには、自分の秘密キーとあなたの公開キーが必要です。

このことから、公開鍵は共有する必要があることがわかります。ファイルを暗号化するには受信者の公開キーが必要で、受信者はファイルを復号化するために公開キーを必要とします。公開鍵をそのまま公開しても危険はありません。実際、これから説明するように、まさにその目的のための公開鍵サーバーが存在します。秘密キーは秘密にしておかなければなりません。公開鍵がパブリック ドメインにある場合、秘密鍵は秘密にして安全に保管する必要があります。

GPG の設定には、使用時よりも多くの手順が必要です。ありがたいことに、通常は一度設定するだけで済みます。

キーの生成

gpg コマンドは、Ubuntu、Fedora、Manjaro など、チェックされたすべての Linux ディストリビューションにインストールされていました。

電子メールで GPG を使用する必要はありません。ファイルを暗号化してダウンロードできるようにしたり、受信者に物理的に渡したりできます。ただし、生成するキーに電子メール アドレスを関連付ける必要があるため、使用する電子メール アドレスを選択してください。

キーを生成するコマンドは次のとおりです。の

--full-generate-key

オプションは、ターミナル ウィンドウ内の対話型セッションでキーを生成します。パスフレーズの入力も求められます。パスフレーズが何であるかを必ず覚えておいてください。 3 つまたは 4 つの単純な単語を句読点で結合したものは 、パスワードとパスフレーズの優れた堅牢なモデル です。

 gpg --full-generate-key

メニューから暗号化の種類を選択するように求められます。そうしない正当な理由がない限り、 1 と入力して Enter キーを押します。

暗号化キーのビット長を選択する必要があります。 Enter キーを押してデフォルトを受け入れます。

キーの存続期間を指定する必要があります。システムをテストしている場合は、 5 日間のような短い期間を入力します。このキーを保持する場合は、1 年間の場合は 1y など、より長い期間を入力します。キーの有効期間は 12 か月なので、1 年後に更新する必要があります。 Y で選択を確定します。

名前とメールアドレスを入力する必要があります。必要に応じてコメントを追加できます。

パスフレーズの入力を求められます。キーを操作するときは常にパスフレーズが必要になるため、それが何であるかを必ず知ってください。

パスフレーズを入力したら、 OK ボタンをクリックします。 gpg を操作するときにこのウィンドウが表示されるため、パスフレーズを必ず覚えておいてください。

キーの生成が行われ、コマンド プロンプトに戻ります。

Linux 上の GPG を使用してファイルを暗号化および復号化する方法

失効証明書の生成

秘密キーが他人に知られた場合は、新しいキーを生成できるように、古いキーを自分の身元から切り離す必要があります。これを行うには、失効証明書が必要になります。これを今すぐ実行し、安全な場所に保管します。

--output オプションの後には、作成する証明書のファイル名を続ける必要があります。 --gen-revoke オプションを使用すると、 gpg 失効証明書を生成します。キーの生成時に使用した電子メール アドレスを指定する必要があります。

 gpg --output ~/revocation.crt --gen-revoke dave-geek@protonmail.com

証明書を生成するかどうかを確認するメッセージが表示されます。 Y を押してEnterを押します。証明書を生成する理由を尋ねられます。これは事前に行っているため、確実なことはわかりません。もっともらしい推測として 1 押し、Enter キーを押します。

必要に応じて説明を入力できます。 Enter を 2 回押して説明を終了します。

設定を確認するように求められるので、 Y 押して Enter を押します。

証明書が生成されます。この証明書を安全に保管する必要性を強調するメッセージが表示されます。

マロリーという人物について言及されています。暗号に関する議論では長い間、通信する 2 人として ボブとアリスが 使用されてきました。他にもサポートキャラクターがいます。イブは盗聴者、マロリーは悪意のある攻撃者です。私たちが知っておく必要があるのは、証明書を安全に保管しなければならないということだけです。

少なくとも、私たちの権限以外のすべての権限を証明書から削除しましょう。

 chmod 600 ~/revocation.crt

ls で現在の権限を確認してみましょう。

 ls -l

それは最高です。ファイル所有者 (私たち) 以外の誰も、証明書に対して何もすることはできません。

Linux 上の GPG を使用してファイルを暗号化および復号化する方法

他人の公開鍵をインポートする

受信者だけが復号できるようにメッセージを暗号化するには、受信者の公開キーが必要です。

ファイルでキーが提供されている場合は、次のコマンドを使用してインポートできます。この例では、キー ファイルの名前は「mary-geek.key」です。

 gpg --import mary-geek.key

キーがインポートされ、そのキーに関連付けられた名前と電子メール アドレスが表示されます。明らかに、それを受け取った相手と一致する必要があります。

キーを必要とする人が自分のキーを公開キー サーバーにアップロードしている可能性もあります。これらのサーバーには、世界中の人々の公開鍵が保管されています。鍵サーバーは定期的に相互に同期するため、鍵は誰でも利用できるようになります。

MIT 公開キー サーバーは一般的なキー サーバーであり、定期的に同期されているため、そこでの検索は成功するはずです。誰かが最近キーをアップロードしたばかりの場合、表示されるまでに数日かかることがあります。

--keyserver オプションの後には、検索するキー サーバーの名前を指定する必要があります。 --search-keys オプションの後には、検索する人の名前または電子メール アドレスを続ける必要があります。 次の電子メール アドレスを使用します。

 gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com

一致するものはリストされ、番号が付けられます。インポートするには、番号を入力して Enter キーを押します。この場合、一致するものが 1 つあるため、 1 と入力して Enter キーを押します。

キーがインポートされ、そのキーに関連付けられた名前と電子メール アドレスが表示されます。

Linux 上の GPG を使用してファイルを暗号化および復号化する方法

キーの検証と署名

知り合いから公開キー ファイルを渡された場合、それはその人のものであると言って間違いありません。公開鍵サーバーから鍵をダウンロードした場合は、その鍵が意図された人物のものであることを確認する必要があると感じるかもしれません。

--fingerprint オプションを使用すると、 gpg 4 つの 16 進文字の 10 セットの短いシーケンスを作成します。相手にキーの指紋を送ってもらうように依頼できます。

その後、 --fingerprint オプションを使用して、同じ 16 進文字のフィンガープリント シーケンスを生成し、それらを比較できます。それらが一致すれば、そのキーがその人のものであることがわかります。

 gpg --fingerprint mary-geek@protonmail.com

フィンガープリントが生成されます。

キーが本物であり、関連付けられるべき人物が所有していることが確認できたら、そのキーに署名できます。

これを行わなくても、その相手との間で送受信されるメッセージを暗号化および復号化するために使用できます。ただし、鍵が署名されていないため、 gpg 処理を続行するかどうかを毎回尋ねます。適切な名前の --sign-key オプションを使用し、その人の電子メール アドレスを指定して、 gpg どの鍵に署名するかを認識できるようにします。

 gpg --sign-key mary-geek@protonmail.com

キーとその人物に関する情報が表示され、本当にキーに署名するかどうかを確認するよう求められます。 Y を押して Enter を押してキーに署名します。

Linux 上の GPG を使用してファイルを暗号化および復号化する方法

公開キーを共有する方法

キーをファイルとして共有するには、 gpg ローカル キー ストアからキーをエクスポートする必要があります。これを行うには、 --export オプションを使用します。このオプションの後に、キーの生成に使用した電子メール アドレスを続ける必要があります。 --output オプションの後には、キーをエクスポートするファイルの名前を指定する必要があります。 --armor オプションは、バイナリ ファイルの代わりに ASCII Armor 出力を生成するように gpg 指示します。

 gpg --output ~/dave-geek.key --armor --export dave-geek@protonmail.com

less を使用してキー ファイルの内部を確認できます。

 dave-geek.key を減らす

鍵はその栄光のすべてを示しています。

公開鍵サーバー上で公開鍵を共有することもできます。 --send-keys オプションは、キーをキーサーバーに送信します。 --keyserver オプションの後には、公開キー サーバーの Web アドレスを指定する必要があります。どのキーを送信するかを識別するには、コマンド ラインでキーのフィンガープリントを指定する必要があります。 4 つの文字のセットの間にスペースがないことに注意してください。

( --fingerprint オプションを使用すると、キーのフィンガープリントを確認できます。)

 gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

キーが送信されたことを示す確認が表示されます。

Linux 上の GPG を使用してファイルを暗号化および復号化する方法

ファイルの暗号化

いよいよファイルを暗号化して Mary に送信する準備が整いました。このファイルの名前は Raven.txt です。

--encrypt オプションは gpg ファイルを暗号化するように指示し、 --sign オプションはユーザーの詳細を使用してファイルに署名するように指示します。 --armor オプションは、gpg に ASCII ファイルを作成するように指示します。 -r (受信者) オプションの後には、ファイルの送信先の電子メール アドレスを続ける必要があります。

 gpg --encrypt --sign --armor -r mary-geek@protonmail.com

ファイルは、元のファイルと同じ名前で作成されますが、ファイル名に「.asc」が追加されます。中身を見てみましょう。

 Raven.txt.asc を省略

ファイルは完全に判読できず、あなたの公開鍵とメアリーの秘密鍵を持っている人だけが復号化できます。その両方を備えているのはメアリーだけです。

これで、他の誰も解読できないという確信を持ってファイルを Mary に送信できます。

Linux 上の GPG を使用してファイルを暗号化および復号化する方法

ファイルの復号化

メアリーが返信を送りました。これは、coded.asc という暗号化されたファイル内にあります。 --decrypt オプションを使用すると、非常に簡単に復号化できます。出力を plain.txt という別のファイルにリダイレクトします。

gpg にファイルの送信元を伝える必要がないことに注意してください。ファイルの暗号化された内容からそれを解決できます。

 gpg --decrypt coded.asc > plain.txt

plain.txt ファイルを見てみましょう。

あまりプレーンではない.txt

ファイルは正常に復号化されました。

キーを更新する

定期的に、 gpg 、公開キー サーバーに対して所有するキーをチェックし、変更されたキーを更新するように依頼できます。これは、数か月ごとに行うことも、新しい連絡先からキーを受け取ったときに行うこともできます。

--refresh-keys オプションを指定すると、 gpg チェックを実行します。 --keyserver オプションの後には、選択したキー サーバーを指定する必要があります。公開鍵サーバー間で鍵が同期されたら、どれを選択しても問題はありません。

 gpg --keyserver pgp.mit.edu --refresh-keys

gpg 、チェックするキーをリストし、変更および更新されたキーがあるかどうかを通知することで応答します。

プライバシーはホットな話題です

最近では、プライバシーがニュースから決して遠ざかることはありません。情報を安全かつプライベートに保ちたい理由が何であれ、 gpg ファイルと通信に非常に強力な暗号化を適用する簡単な手段を提供します。

gpg を使用する他の方法もあります。 Enigmail という Thunderbird 用のプラグインを入手できます。 gpg 設定に直接フックして、Thunderbird 内から電子メール メッセージを暗号化できるようにします。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

関連: 開発者と愛好家のための最高の Linux ラップトップ

「Linux 上の GPG を使用してファイルを暗号化および復号化する方法」に関するベスト動画選定!

暗号化とは?|暗号化とは何か、暗号化の仕組みや暗号化方式についてわかりやすく3分で解説
ゼロから学ぶLinux ~暗号化の仕組みの基本~ 2023-1-28 C-2