LoginSignup
6
6

More than 3 years have passed since last update.

GPGコマンドで暗号化・復号

Last updated at Posted at 2020-05-29

LPIC102を学習中にGPGコマンドを初めて知ったので、実際に使用して理解を深めることにした。

環境

[ec2-user@ip-172-31-33-30 ~]$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

鍵ペアの作成

gpg --gen-keyコマンドで以下のように対話形式でキーペアを作成する。
鍵の種類:デフォルトのままにする
鍵長:鍵長は長いほどセキュリティが強いので、最大にしておく。
鍵の有効期間:流出した時に、有効期限を過ぎると無効になるので設定しておく。

[ec2-user@ip-172-31-33-30 ~]$ gpg --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

ご希望の鍵の種類を選択してください:
   (1) RSA と RSA (デフォルト)
   (2) DSA と Elgamal
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
あなたの選択は? 1
RSA 鍵は 1024 から 4096 ビットの長さで可能です。
鍵長は? (2048) 4096
要求された鍵長は4096ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 年間で期限切れ
鍵の有効期間は? (0)2y
鍵は2022年05月29日 03時48分32秒 UTCで期限切れとなります
これで正しいですか? (y/N) y

GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: r_saiki
電子メール・アドレス: r_saiki@example.com
コメント: 
次のユーザIDを選択しました:
    "r_saiki <r_saiki@example.com>"

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o
秘密鍵を保護するためにパスフレーズがいります。

パスフレーズを要求される。
image.png

作成した鍵の確認。
公開鍵の確認オプション:--list-public-keysもしくは-k
秘密鍵の確認オプション:--list-secret-keysもしくは-K

[ec2-user@ip-172-31-33-30 ~]$ gpg --list-public-keys
/home/ec2-user/.gnupg/pubring.gpg
---------------------------------
pub   4096R/0C8FB274 2020-05-29 [有効期限: 2022-05-29]
uid                  r_saiki <r_saiki@example.com>
sub   4096R/038BE8AA 2020-05-29 [有効期限: 2022-05-29]

[ec2-user@ip-172-31-33-30 ~]$ gpg --list-secret-keys
/home/ec2-user/.gnupg/secring.gpg
---------------------------------
sec   4096R/0C8FB274 2020-05-29 [有効期限: 2022-05-29]
uid                  r_saiki <r_saiki@example.com>
ssb   4096R/038BE8AA 2020-05-29

ファイルの暗号化

ファイルを暗号化する。
暗号化:--encryptもしくは-e
受取人の公開鍵情報を指定:--recipientもしくは-r <今回はメールアドレス>

[ec2-user@ip-172-31-33-30 ~]$ cat file
TEST

[ec2-user@ip-172-31-33-30 ~]$ gpg --encrypt --recipient r_saiki@example.com file
[ec2-user@ip-172-31-33-30 ~]$ ls
file  file.gpg

ファイルの複合

pgpに暗号化ファイル名で複合する。

[ec2-user@ip-172-31-33-30 ~]$ gpg file.gpg

次のユーザの秘密鍵のロックを解除するには
パスフレーズがいります:"r_saiki <r_saiki@example.com>"
4096ビットRSA鍵, ID 038BE8AA作成日付は2020-05-29 (主鍵ID 0C8FB274)

gpg: 4096-ビットRSA鍵, ID 038BE8AA, 日付2020-05-29に暗号化されました
      "r_saiki <r_saiki@example.com>"
ファイル「file」は既に存在します。上書きしますか? (y/N) y
[ec2-user@ip-172-31-33-30 ~]$ cat file
TEST

途中パスフレーズを求められる。
image.png

終わりに

今回はファイルの暗号化・復号のみやってみた。深堀するとlpic受験前に息切れしそうなので、詳しく知りたい場合は以下を参考。
GPG でファイルを暗号化, 復号化, 署名, 検証する方法

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6