0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「公開鍵で暗号化、秘密鍵で復号」だけじゃない!3つのユースケースをAWSの実例で理解する

0
Posted at

はじめに

AWSの試験勉強や実務で「PGP暗号化」「TLS」「デジタル署名」といったキーワードが出てきたとき、なんとなく理解しているようで、いざ問題を解くと手が止まる…という経験はありませんか?

私もSAPの勉強中にAWS Transfer Familyの問題を解いていて、なんとなくわかっているつもりになっていることを認識しました。

「PGPで暗号化されたファイルを自動復号したい。Secrets Managerには何を保存すればいい?公開鍵?秘密鍵?」

この記事では、公開鍵・秘密鍵の3つのユースケースを、AWSの実践的な文脈と合わせて整理します。


前提:公開鍵・秘密鍵とは

まず最低限の前提を整理します。

  • 公開鍵(Public Key):誰に渡してもOKな鍵
  • 秘密鍵(Private Key):絶対に外に出してはいけない鍵。自分だけが持つ

この2つはペアになっており、非対称暗号方式(Asymmetric Encryption)と呼ばれます。

「どちらの鍵で何をするか」がユースケースによって変わるのがポイントです。


ユースケース① 暗号化・復号(例:PGP, RSA)

基本の流れ

送信者                          受信者
[公開鍵で暗号化] → 🔒暗号文 → [秘密鍵で復号] → 平文

公開鍵で暗号化し、秘密鍵で復号するのが基本です。

  • 送信者は受信者の公開鍵を使って暗号化する
  • 受信者だけが持つ秘密鍵でのみ復号できる
  • 通信途中で盗聴されても、秘密鍵がなければ復号不可

AWSの実例:Transfer Family + PGP自動復号

以下のようなシナリオを考えます。

サードパーティからPGP暗号化されたファイルをS3に受け取り、自動で復号したい。
AWS Transfer FamilyのマネージドワークフローとSecrets Managerを使う構成。

この場合、Secrets Managerに保存すべきは秘密鍵です。

サードパーティ(送信者)
  └─ 自社の公開鍵でファイルを暗号化して送信
        ↓
S3バケットに着信
        ↓
Transfer Family マネージドワークフロー
  └─ Secrets Managerから秘密鍵を取得
  └─ 名目上のステップ(Nominal Step)で復号処理
        ↓
復号済みファイル

よくある間違い:「公開鍵をSecrets Managerに保存すればいい」→ ❌ 公開鍵で復号はできません。

また、復号は正常系の処理なので「名目上のステップ(Nominal Step)」に追加します。エラー時の処理である「例外処理ステップ(Exception Step)」ではありません。


ユースケース② デジタル署名(例:コード署名、電子証明書)

暗号化・復号とは鍵の使い方が逆になります

基本の流れ

送信者(本人)                       受信者
[秘密鍵で署名] → 📄データ+署名 → [公開鍵で検証] → ✅本人確認OK

秘密鍵で署名し、公開鍵で検証するのがデジタル署名です。

  • 秘密鍵は本人しか持っていない → 秘密鍵で作られた署名 = 本人の証明になる
  • 受け取った側は公開鍵で署名を検証し、「本当にこの人が送ったか」「改ざんされていないか」を確認する

主な使用例

  • メールの送信元確認(S/MIME)
  • ソフトウェアの改ざん検知(コード署名)
  • 電子契約・電子証明書

ユースケース③ TLS/SSL(HTTPS通信)

TLSは公開鍵暗号と共通鍵暗号を組み合わせた方式です。まず「共通鍵」について簡単に説明します。

共通鍵暗号とは

公開鍵方式とは別の暗号化方式で、暗号化も復号も同じ1つの鍵を使います。

送信者 ──[共通鍵で暗号化]──→ 受信者 ──[同じ共通鍵で復号]
  • メリット:処理が非常に速い(ビット演算ベース)
  • デメリット:最初に鍵をどうやって相手に安全に渡すか問題がある

「共通鍵を暗号化して送ろう」→「その暗号化の鍵はどうやって送る?」→無限ループになります。

そこで公開鍵暗号を使って共通鍵を安全に渡す

① ブラウザ → サーバー:「接続したい」
② サーバー → ブラウザ:「公開鍵(証明書)をどうぞ🔓」
③ ブラウザ:ランダムな共通鍵を生成し、公開鍵で暗号化して送信🔒
④ サーバー:秘密鍵で復号して共通鍵を取得🔑
⑤ 以降:共通鍵で高速に暗号化通信 ⚡

なぜ公開鍵暗号だけで通信しないのか?

公開鍵暗号(RSAなど)は、巨大な素数の計算を伴うため処理が重く、大量のデータを継続的に暗号化するには向きません。そこで、「共通鍵の安全な受け渡し」だけに公開鍵暗号を使い、実際の通信は高速な共通鍵暗号(AESなど)に切り替えます。


まとめ:鍵の使い方の対応表

ユースケース 秘密鍵の役割 公開鍵の役割
暗号化・復号(PGPなど) 復号 暗号化
デジタル署名 署名(作成) 検証
TLS/HTTPS 復号・認証 暗号化・検証

ポイントは「署名では鍵の使い方が逆になる」という点です。暗号化・復号のイメージだけで覚えていると、署名の場面で混乱します。


おわりに

今回のAWS Transfer FamilyのPGP復号問題のように、「公開鍵 vs 秘密鍵」の使い分けは実際の試験や設計でも問われます。「復号したいなら秘密鍵」「本人証明なら秘密鍵で署名」と目的から逆引きできるようになると、迷わなくなります。

暗号化の仕組みを理解しておくと、AWSのセキュリティサービスの設計判断にも自信が持てるようになりますので、ぜひ参考にしてみてください。

0
0
1

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?