LinuCレベル1 102試験の例題と解説

1.10.3暗号化によるデータの保護

LinuCレベル1 102試験の出題範囲から「1.10.3 暗号化によるデータの保護」についての例題を解いてみます。
ここでは、鍵の生成について確認しておきましょう。

Linucレベル1 102試験 出題範囲


例題

GnuPGにおいて鍵のペア(公開鍵と秘密鍵)を生成するため使用するコマンドとして正しいものを選択してください。

  1. ssh-keygen
  2. crypt
  3. ssh-agent
  4. gpg

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「4. gpg」です。

GnuPG(GNU Privacy Guard)とは、ファイルに電子署名を付与したり、ファイルの暗号化に用いる仕組みです。

GnuPGでは、gpgコマンドを使用します。

gpg [オプション]

gpgコマンドの主なオプションは以下の通りです。

--gen-key鍵ペアを生成
--list-keys公開鍵情報を表示
--exportメールアドレス 公開鍵をエクスポート
-oファイル名 出力ファイルを指定
--importファイル名 公開鍵をインポート
-aインポート、エクスポートをASCII形式で行う(デフォルトはバイナリ)
--sign-keyメールアドレス 公開鍵に署名する
-eファイルを暗号化
-rメールアドレス 公開鍵を指定
-b署名ファイルを作成(分離署名)
--verify署名ファイルを検証

例題の「GnuPGにおいて鍵のペア(公開鍵と秘密鍵)を生成する」には、gpgコマンドに--gen-keyオプションを指定します。

以下はgpgコマンドを使って鍵のペアを生成する例です。

$ gpg --gen-key
gpg (GnuPG) 2.2.20; Copyright (C) 2020 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.

注意: 全機能の鍵生成には "gpg --full-generate-key" を使います。

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

本名:linuc
電子メール・アドレス: testuser@linuc.example.com
次のユーザIDを選択しました:
    "testuser@linuc.example.com"

名前(N)、電子メール(E)の変更、またはOK(O)か終了(Q)? O

        ----------------------------------------------------------------
        | 新しい鍵を保護するために、                                   |
        | パスフレーズを入力してください。                             |
        |                                                              |
        | パスフレーズ **********______________________________________|
        |                                                              |
        |         <OK>                            <キャンセル(C)>      |
        ----------------------------------------------------------------

        ----------------------------------------------------------------
        | このパスフレーズをもう一度入力してください                   |
        |                                                              |
        | パスフレーズ **********______________________________________|
        |                                                              |
        |         <OK>                            <キャンセル(C)>      |
        ----------------------------------------------------------------

gpg: /home/testuser/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵2B74A1F948B26A3Aを究極的に信用するよう記録しました
gpg: ディレクトリ'/home/testuser/.gnupg/openpgp-revocs.d'が作成されました
gpg: 失効証明書を '/home/testuser/.gnupg/openpgp-revocs.d/AB5794E9FB803CD77151A7FC2B74A1F948B26A3A.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub   rsa2048 2023-06-05 [SC] [有効期限: 2025-06-04]
      AB5794E9FB803CD77151A7FC2B74A1F948B26A3A
uid                      testuser@linuc.example.com
sub   rsa2048 2023-06-05 [E] [有効期限: 2025-06-04]

生成した鍵は ~/.gnupg/ 配下に格納されます。

$ ls ~/.gnupg/
openpgp-revocs.d  private-keys-v1.d  pubring.kbx  pubring.kbx~  trustdb.gpg

gpgコマンドに--list-keysオプションを指定することで、公開鍵の情報を表示できます。

$ gpg --list-keys
gpg: 信用データベースの検査
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
gpg: 次回の信用データベース検査は、2025-06-04です
/home/testuser/.gnupg/pubring.kbx
---------------------------------
pub   rsa2048 2023-06-05 [SC] [有効期限: 2025-06-04]
      AB5794E9FB803CD77151A7FC2B74A1F948B26A3A
uid           [  究極  ] testuser@linuc.example.com
sub   rsa2048 2023-06-05 [E] [有効期限: 2025-06-04]

上記がGnuPGにおける鍵ペアの生成方法となります。

この後、生成した公開鍵を使うことで、ファイルを暗号化し安全にファイルを送受信することができます。大まかな流れとしては以下の通りです。

実施者実施内容
ファイルを受取るユーザ鍵ペア(公開鍵と秘密鍵)を生成
ファイルを受取るユーザファイルを送付するユーザに公開鍵を配布
ファイルを送付するユーザ受け取った公開鍵でファイルを暗号化
ファイルを送付するユーザ暗号化したファイルを受取るユーザへ送付
ファイルを受取るユーザ暗号化されたファイルを秘密鍵で復号化

これにより、安全なファイルのやり取りが可能となります。

それでは、例題の選択肢について解説します。

1.ssh-keygen
不正解です。

ssh-keygenはSSH鍵の生成に使用されるコマンドです。GnuPGにおける鍵ペアの生成はできないため不正解となります。

2.crypt
不正解です。

cryptはパスワードを暗号化するためのコマンドです。GnuPGにおける鍵ペアの生成はできないため不正解となります。

3.ssh-agent
不正解です。

ssh-agentはSSH鍵のエージェントプロセスです。SSH鍵の管理や認証のために使用されます。GnuPGにおける鍵ペアの生成はできないため不正解となります。

4.gpg
正解です。

前述の通り、gpgコマンドに--gen-keyオプションを指定することで、GnuPGにおける鍵ペアの生成を行うことができます。

暗号化によるデータの保護は、セキュリティを高めるためにも重要な手順です。
実際に試して使えるようにしておきましょう。


例題作成者

株式会社デージーネット OSS研究室 橋本知里

ページトップへ