暗号の仕組み — 盗み見られても大丈夫にする

概要 — まず全体をつかむ

盗み見られても中身が分からないようにする——その土台が暗号です。鍵で施錠・開錠する、と捉えましょう。

詳細 — 1段階ずつ追う

鍵で施錠・開錠する

  • 暗号化 — 平文(読める文)を、鍵を使って暗号文(読めない文)に変える
  • 復号 — 暗号文を、鍵を使って元に戻す

大事なのは、秘密にするのは「鍵」だけで、アルゴリズム(方式)は公開・検証されたものを使うこと。「秘密の方式だから安全」は間違いです。

この部分をもっと深く(中級
  • 共通鍵の弱点 — 速いが、鍵をどう安全に相手へ渡すか(鍵配送問題)
  • 公開鍵の弱点 — 鍵配送を解くが、計算が遅い
  • ハイブリッド — 最初だけ公開鍵の仕組みで共通鍵(セッション鍵)を確立し、以降は速い共通鍵で。HTTPS(TLS)の基本
アニメーション『ハイブリッド暗号(鍵の受け渡し)』を開く
あなたサーバ
  • あなた通信を始める側。まず共通鍵(セッション鍵)を用意する
  • サーバ公開鍵と秘密鍵を持つ側。届いた包みを秘密鍵で開ける
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 6

共通鍵の確立には2通りあります(この違いが前方秘匿性に効く)。

  • 鍵交換(DH/ECDHE) — 双方が公開値を交換して、同じ共通鍵をその場で作り出す。使い捨てにでき前方秘匿性を持つ(現代TLSの主流)
  • 鍵転送(RSA) — 送る側が共通鍵を公開鍵で暗号化して渡す。前方秘匿性が無く、TLS1.3で廃止された旧方式

TLSの流れは「①鍵交換で共通鍵を確立 → ②以降はAES-GCMなどの共通鍵で高速通信」の順です。

大きく2種類

暗号の鍵の持ち方で、2つに分かれます。

  • 共通鍵暗号 — 施錠も開錠も同じ鍵。速いが、鍵の受け渡しが課題
  • 公開鍵暗号2つの鍵(公開鍵で施錠、秘密鍵で開錠)。鍵の受け渡し問題を解く

実際には、この2つを組み合わせて使います(各記事へ)。

この部分をもっと深く(中級
  • 共通鍵暗号 — AES-128/256など。ブロック暗号+利用モード(GCM等で認証も)
  • 公開鍵暗号 — RSA-2048/楕円曲線(ECC)。鍵交換はDH/ECDHE
  • ハッシュ — 改ざん検知・指紋(SHA-2など)
  • 電子署名 — 本物・改ざんなしの証明(秘密鍵で署名、公開鍵で検証)

暗号でできること

  • 通信の暗号化 — HTTPS(盗聴・改ざんを防ぐ)
  • 保存の暗号化 — 盗まれても読めないように
  • 本人確認・改ざん検知 — 電子署名・ハッシュ

守る性質でいえば、暗号は主に機密性を、署名・ハッシュは完全性・真正性を担います。

この部分をもっと深く(中級
  • 前方秘匿性 — 使い捨て鍵で、後の鍵漏洩から過去を守る
  • 認証付き暗号(AEAD) — 暗号化と改ざん検知を一体で
  • 乱数の質 — 弱い乱数は鍵を予測可能にする(暗号の土台)
  • 鍵管理 — 生成・保管・ローテーション・失効。ここが最重要

⚠️ 落とし穴

  • 鍵の管理 — 暗号の強さは、結局鍵をどう守るかで決まる
  • 自作暗号 — 検証されていない方式は穴だらけ
  • 古い方式 — 時代とともに破られる。アルゴリズム・鍵長は更新が必要
この部分をもっと深く(中級
  • アルゴリズムの陳腐化 — MD5・SHA-1・短い鍵は非推奨へ。更新が前提
  • 実装の穴 — 方式が正しくても、実装バグやサイドチャネルで漏れる
  • 鍵の使い回し/固定 — 使い捨てにできず前方秘匿性を失う
  • 量子計算の脅威 — 耐量子暗号(PQC)の標準化が進み、移行が始まっている

関連する知識

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. 暗号(暗号化)の目的に最も近いのは?

2. 自分で考えた独自の暗号アルゴリズムを使うのは?

3. 共通鍵暗号の説明として正しいのは?

4. 公開鍵暗号が共通鍵暗号より優れている点は?

5. 暗号を安全に使う鉄則として正しいのは?

6. 暗号(暗号化)が主に守る性質はどれ?

7. 通信を暗号化してWebを安全にする、鍵マークでおなじみの仕組みを英字5文字で答えてください。

8. 暗号文を、鍵を使って元の読める文(平文)に戻すことを何という?