Instiq
第5章 · セキュリティ·v1.0.0·更新 2026/7/6·読了目安 約12分

変更要約: 初版(主題1.10・副主題1.10.1〜1.10.4に対応)

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

この節の要点

公開鍵技術によるデータ・通信の保護を学びます。OpenSSH クライアントの鍵管理(ssh-keygenssh-agentssh-add)、主要な暗号化アルゴリズムRSAECDSAEd25519)の特徴、SSHポート転送(ローカル/リモート)、GnuPGgpggpg-agent~/.gnupg/)によるファイルの暗号化・署名を押さえます。

101 で「鍵で SSH 接続する」ところまでは学びました。本節はその先——鍵の生成と管理を自分で行い、暗号化の仕組みを通信(SSH)とファイル(GnuPG)の両方に応用する——が範囲です。公開鍵秘密鍵のペアという1つの原理で全部つながります。

5.3.1SSH 鍵の生成と管理

  • ssh-keygen=鍵ペアの生成(ssh-keygen -t ed25519)。パスフレーズを付ければ秘密鍵ファイル自体も暗号化され、盗まれても即悪用されない。
  • アルゴリズムの特徴=RSA(伝統・広い互換性・鍵長 3072〜4096 推奨)/ECDSA(楕円曲線・短い鍵で同等強度)/Ed25519現行の推奨・高速で安全・鍵が短い)。
  • ssh-agent=復号済みの秘密鍵をメモリに保持する常駐エージェント。ssh-add で鍵を登録すれば、パスフレーズ入力はセッションで1回になり、以後の接続は自動。

5.3.2ポート転送と GnuPG

  • SSHポート転送=暗号化トンネルに他の通信を通す。ローカル転送 ssh -L 8080:db01:3306 踏み台手元の8080への接続が踏み台経由で db01:3306 へ届く(社内DBに安全に到達する定石)。リモート転送は -R で逆向き。
  • GnuPGgpg)=ファイルの暗号化・復号・署名。鍵生成 gpg --gen-key・公開鍵で暗号化 gpg -e -r 宛先 file・復号 gpg -d。鍵束は ~/.gnupg/ に保存され、gpg-agent がパスフレーズを管理。
  • 原理の対応=相手に渡すのは常に公開鍵。SSH では公開鍵をサーバーへ(authorized_keys)、GnuPG では受取人の公開鍵で暗号化し、受取人だけが秘密鍵で復号できる。
試験ポイント

「パスフレーズ入力を1回にする=ssh-agent+ssh-add」「現行推奨アルゴリズム=Ed25519」「-L ローカル転送の書式(手元ポート:宛先ホスト:宛先ポート)」「受取人の公開鍵で暗号化=gpg -e -r」 が定番です。ssh-keygen(鍵生成)と ssh-add(エージェント登録)の役割の混同を誘う選択肢に注意。

安全と利便を両立する日常構成はこうなります。ssh-keygen -t ed25519パスフレーズ付きの鍵を作り、公開鍵を各サーバーの authorized_keys へ配布。作業開始時に eval $(ssh-agent)ssh-add ~/.ssh/id_ed25519 で1回だけパスフレーズを入れれば、以後のセッションは自動認証です——「秘密鍵は暗号化して保管し、復号済みの鍵はメモリのエージェントにだけ持たせる」という設計思想を理解すると選択肢に迷いません。ポート転送の書式は「listen する側:届けたい先」と読みます:-L 8080:db01:3306 は「手元で 8080 を listen し、トンネルの向こうで db01:3306 に届ける」。ファイアウォールで直接届かない DB へ、SSH の口ひとつで安全に到達できるわけです。GnuPG は「バックアップを自分の公開鍵で暗号化して保存」「リリース物に署名して改ざん検知を可能にする」(yum のリポジトリ署名も同じ原理)が代表用途で、暗号化=相手(または自分)の公開鍵・署名=自分の秘密鍵という向きを押さえれば完成です。

道具役割要点
ssh-keygen鍵ペアの生成-t ed25519 が現行推奨
ssh-agent + ssh-add復号済み鍵の保持/登録パスフレーズは1回
ssh -Lローカルポート転送手元:宛先ホスト:宛先ポート
gpgファイル暗号化・署名暗号化は受取人の公開鍵で
注意

ひっかけ: 「ssh-agent は鍵ペアを生成するコマンド」は誤りです(生成は ssh-keygen・agent は保持・add は登録)。また「GnuPG でファイルを暗号化するときは自分の秘密鍵を使う」も誤り=暗号化は受取人の公開鍵で行い、秘密鍵を使うのは復号と署名です。「Ed25519 より RSA 1024 の方が安全」も誤り(短い RSA は現代では危険)です。

ssh-keygen/agent・ポート転送 -L・gpg の暗号化/署名の向きの図。
渡すのは常に公開鍵

5.3.3この節のまとめ

  • ssh-keygen(生成・Ed25519推奨・パスフレーズ付与)→ ssh-agent/ssh-add(1回入力で保持)
  • -L 手元:宛先:ポート=トンネル経由の到達。gpg は暗号化=公開鍵・署名=秘密鍵(鍵束は ~/.gnupg/)

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. パスフレーズ付きの SSH 秘密鍵を使っているが、作業のたびの入力を避けたい。セッション中1回の入力で済ませる仕組みは?

Q2. ファイアウォールで直接接続できない社内 DB(db01:3306)へ、踏み台サーバー経由の SSH トンネルで手元の 8080 番から届くようにしたい。適切なコマンドは?

Q3. 取引先(受取人)だけが復号できる形でファイルを GnuPG で暗号化して送りたい。使う鍵として正しいのはどれ?

理解度を確認第5章「セキュリティ」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。