セキュリティを学ぶうえで避けて通れないのが、
暗号化・公開鍵基盤(PKI)・ハッシュ関数です。
これらは、日々私たちが当たり前のように使っている
HTTPS・ログイン処理・ファイルダウンロードなど、
あらゆるWebサービスの裏側で動いています。
目次
◆ 1. 情報セキュリティの目的と暗号の必要性
セキュリティの目的は3つのCIAで表されます。
| 対象 | 意味 | 例 |
|---|---|---|
| Confidentiality(機密性) | 情報を守る | パスワード暗号化、HTTPS |
| Integrity(完全性) | 改ざん防止 | Hashでチェック |
| Availability(可用性) | 必要なとき使える | バックアップ、冗長化 |
暗号は特に機密性を守る中心技術です。
データは平文 → 暗号文 → 復号という流れで扱われます。
例)LINEメッセージは端末間で暗号化→サーバは内容を読めません
これを E2E(End-to-End)暗号化 といいます。
◆ 2. 共通鍵暗号方式(対称暗号)
● 仕組み
同じ鍵で
暗号化 & 復号 を行う方式です。

✔ 高速で、大量データ通信に強い
✔ だからHTTPS内部通信でも使われる
| 代表例 | 解説 |
|---|---|
| AES | 現在の標準方式(超重要) |
| RC4 | 古い方式。脆弱性が発見され現在は非推奨 |
● ブロック暗号とモード
| モード | 仕組み | メリット | デメリット |
|---|---|---|---|
| ECB | ブロック単位で単純変換 | 高速 | パターンが露出→危険 |
| CBC | 乱数IVを加えて連鎖処理 | 安全性高い | 処理負担が少し増 |
CBCはセキュリティ教本・実務でも広く扱われる基本
ECBは絶対に覚えておく理由
→ 画像を暗号化したとき模様がそのまま残り有名な例あり
「安全に見えて全然安全じゃないモード」として語られます。
● 共通鍵暗号の課題
| 課題 | 具体例 |
|---|---|
| 鍵配送 | LINEで「あとで鍵送るね」→盗聴される |
| 鍵管理 | ユーザー100人で4950個必要 |
規模が増えるほどカオスになる
なので、次に紹介する公開鍵暗号の登場です。
◆ 3. 公開鍵暗号方式(非対称暗号)
● 基本概念
「暗号化する鍵」と「復号する鍵」が違う方式。

| 種類 | 役割 |
|---|---|
| 公開鍵 | 誰でも配れる(鍵を渡すため) |
| 秘密鍵 | 自分だけが持つ(復号する) |
● イメージ
銀行の「投函口と金庫」の関係
入れる穴(公開)→開けられるのは銀行(秘密)
● 実際の通信:ハイブリッド方式
| ステップ |
|---|
| ① 公開鍵暗号で共通鍵を安全に送る |
| ② あとは共通鍵で高速通信 |
SSL/TLS(HTTPS)はこの流れ
公開鍵暗号は入口、共通鍵が本番
● アルゴリズムと役割
| 方式 | 目的 |
|---|---|
| RSA | 公開鍵暗号の代表。署名・鍵交換にも |
| Diffie-Hellman(DHE) | 共通鍵の安全交換 |
| ECDHE | モダン環境の主流、楕円曲線で高速&強力 |
近年はRSA→ECDHE(より強く速い)へ移行
● 公開鍵方式の弱点
- 計算が重くて遅い
- 設定や証明書の管理が必要(PKI)
でも、これがあるからHTTPSや電子署名が成立します。
◆ 4. ハッシュ関数
● 特性
| 特性 | 意味 |
|---|---|
| 一方向性 | 元に戻せない |
| 衝突耐性 | 同じ値が出にくい |
| 固定長 | 入力サイズに関係なく同じ長さ |
「1文字違うだけで全く違う値になる」のが重要
● 主な用途
| 用途 | 例 |
|---|---|
| 改ざん検知 | ファイルのハッシュチェック |
| ログイン | パスワードをそのまま保存しない |
| 電子署名 | メッセージ要約に使用 |
● よく出る用語
| 用語 | 解説 |
|---|---|
| コリジョン(Collision) | 異なるデータが同じハッシュに |
| レインボーテーブル | パスワードのハッシュ照合辞書 |
| ソルト | ランダム値を加え辞書攻撃防止 |
例:password → password123!Qx で爆発的に強化
ソルトはハッシュの“スパイス”
◆ 5. PPAP、CRYPTREC など補足
| 用語 | 説明 |
|---|---|
| PPAP | 2通メールでZip暗号→時代遅れ、危険 |
| CRYPTREC | 日本政府推奨暗号リスト |
| E2E暗号化 | 端末間で暗号化→SNSで採用 |
「PPAPはアウト、CRYPTRECはOK」
この認識だけでも実務で役立ちます。
◆ 6. まとめと学習ロードマップ
● 要点整理
| 項目 | 本質 |
|---|---|
| 共通鍵 | 高速、実通信担当 |
| 公開鍵 | 鍵配布の救世主 |
| ハッシュ | 改ざん・認証の土台 |
● 学習ステップ(ロードマップ)
- CIA三要素
- 共通鍵と公開鍵の違い
- HTTPSの流れ
- ハッシュとソルト
- TLS 1.3 / ECDHE の概念
✅ 暗号鍵の英語
| 日本語 | 英語 | 補足 |
|---|---|---|
| 暗号鍵 | Encryption Key | 暗号化に使う鍵(総称) |
| 復号鍵 | Decryption Key | 復号に使う鍵 |
| 共通鍵 | Symmetric Key / Shared Key | 同じ鍵で暗号化・復号 |
| 公開鍵 | Public Key | 公に配る鍵 |
| 秘密鍵 | Private Key | 自分だけ持つ鍵 |
共通鍵暗号方式:Symmetric-key cryptography
公開鍵暗号方式:Public-key cryptography(PKC)
✅ ハッシュの英語
| 日本語 | 英語 | 補足 |
|---|---|---|
| ハッシュ | Hash | 一方向のデータ変換全般 |
| ハッシュ関数 | Hash Function | ハッシュを計算する関数 |
| ハッシュ値 | Hash Value / Hash Digest | ハッシュ結果(指紋) |
| ソルト | Salt | ハッシュ強化のためのランダム値 |
| レインボーテーブル | Rainbow Table | 逆引き辞書攻撃用データ |
| 衝突(コリジョン) | Collision | 異なる入力→同じハッシュ |
digest(ダイジェスト)は「要約」の意味
例:Message Digest (MD5)
補足:文章例(英語学習にも)
- This password is stored as a hash value, not plain text.
パスワードは平文ではなくハッシュ値として保存します。 - The system uses a public key to encrypt and a private key to decrypt.
公開鍵で暗号化し、秘密鍵で復号します。 - Adding a salt prevents rainbow table attacks.
ソルトを加えることでレインボーテーブル攻撃を防ぎます。
さいごに
セキュリティは暗記より理解が大切です。
専門用語は多いですが、仕組みがつながると一気におもしろくなります。
迷ったらまたココに戻ってきてください。
じんわりと項目増やしていきますので。
下に続くおまけは,より深く知りたい人用なので関係ないなって方は読み飛ばしてください。
おまけ①|ハッシュの実行例と理解演習
ハッシュ関数は概念だけでは掴みにくいので、
実際の出力を見てみましょう。
◆ 例:SHA-256でハッシュしてみる
| 入力(平文) | ハッシュ値 |
|---|---|
hello | 2cf24dba5f...e94f88e |
Hello | 185f8db322...a7b003 |
hello! | 334d7e5ddf...132514 |
たった1文字違いでまったく別の値になります。
これが一方向性と雪崩効果。
◆ 実際に試してみよう
ブラウザでできるサイト👇
(インストール不要)
試してみる言葉例:
| 入力 | 目的 |
|---|---|
test | 基本確認 |
Test | 大文字小文字の違い |
test123 | 簡単パスワード |
test!123 | 記号追加で強化 |
疑問:なぜtest123は危険?
→ レインボーテーブルに存在する可能性が高い
対策:ソルトを付ける%G9#test123!aQ → レインボーテーブル無効化
◆ ミニ演習
次の2つは同じハッシュになる?違う?
| 入力 | 予想 |
|---|---|
password | |
Password |
▼
別のハッシュになります(先頭が変わるだけで全体が激変)
学び:
✓ ハッシュ=暗号ではない
✓ 元に戻せない
✓ “ちょっと違う”が“ぜんぜん違う”になる
✨学習Tips
「ハッシュ値=指紋」とイメージするとうまく理解できます。
おまけ②|🔑 「パスワード保管はハッシュ」が常識な理由
● パスワードをそのまま保存すると…
DBが漏洩 = 全ユーザーの生パスワードが漏れる
→ 企業停止級被害
→ ユーザー全サービス乗っ取り
だから現代では
パスワードを平文で保存 = セキュリティ犯罪級のNGです。
● 正しい保存方法
| ステップ | 内容 |
|---|---|
| ① 入力パスワード+ソルト | ランダム値で強化 |
| ② ハッシュ化 | SHA-256 / bcrypt / Argon2 |
| ③ 登録 | ハッシュ値だけ保存 |
| ④ ログイン時 | 入力→同じ処理→一致すればOK |
DBに残るのは生パスワードではなくハッシュ
● なぜ安全?
| ハッシュの性質 | セキュリティ効果 |
|---|---|
| 一方向性 | 元に戻せない |
| 雪崩効果 | わずかな違いでも別値 |
| ソルト | レインボーテーブル対策 |
逆算が実質不可能
だから「盗まれても守られる」構造。
● 実務で聞く「bcrypt」「Argon2」とは?
| アルゴリズム | 特徴 | 推奨度 |
|---|---|---|
| bcrypt | わざと重く処理 | ◎ 多くのWebで採用 |
| Argon2 | メモリ耐性、最新 | ◎ セキュア |
| MD5/SHA1 | 古い、危険 | ❌ 使用禁止 |
◆ よくある誤解
| NG思考 | 正しい理解 |
|---|---|
| ハッシュ=暗号? | 違う(元に戻せない) |
| SHA256だけで十分? | いいえ、ソルト必須 |
| 企業がパス漏らしたら終わり? | 正しく処理してれば被害減 |
✅ 企業は「漏洩しても形に残らない運用」をする
学びの次ステップ
| 学ぶ内容 | 身につく力 |
|---|---|
| 証明書チェーン | PKIの理解 |
| TLSハンドシェイク | 安全な鍵交換の仕組み |
| bcrypt実装 | 認証システムの実装力 |
| OWASP Top10 | Web攻撃対策 |
セキュリティは「動作を知る→仕組みを理解→実装に活かす」順で伸びます。
おまけ③|暗号技術の歴史(DES→AES)
暗号史を知ると、技術選択の“理由”が見えて理解が深まります。
◆ 暗号方式の進化
| 時代 | 技術 | 特徴 |
|---|---|---|
| 1970s | DES | 56bit鍵。今では短すぎて破られる |
| 1990s | 3DES | DESを3回→強化だが遅い |
| 2001 | AES | 現在の標準。高速・安全性高 |
| 現在 | AES + ECDHE | HTTPSの世界標準 |
DESが破られた理由
→ コンピュータ性能の向上
→鍵長56bitでは総当たり可能に
AESが選ばれた理由
- 高速
- セキュリティ高い
- ハード・ソフト両対応
暗号は「攻撃 vs 防御」の軍拡競争
技術の歴史を知ると、なぜ今これを学ぶかが腑に落ちます。
◆ 時代ごとの“戦い”
| 攻撃技術の進歩 | 対応した暗号 |
|---|---|
| 総当たり(ブルートフォース) | 長い鍵(AES) |
| 数学的攻撃 | ハイブリッド方式 |
| モバイル普及 | 軽量暗号(E.g. ChaCha20) |
| 量子コンピュータ | PQ暗号(ポスト量子暗号) |
これからは量子耐性がキーワード
興味が出た人は「NIST PQC」を検索!
◆ 実際の応用例
| 技術 | 使われる場面 |
|---|---|
| DES/3DES | 古い金融機器などレガシー環境 |
| AES | HTTPS/E2E暗号化・Wi-Fi WPA3 |
| ECC/ECDHE | TLSの鍵交換 |
| SHA-256 | ユーザーパスワード、ブロックチェーン |
「どこで使われているか」が分かると、実務で強くなります。
あなたが今学んでいる暗号とハッシュは、ネット社会の安全を支える“根っこ”です。
- 考え方を学ぶ
- 手を動かして確かめる
- 歴史で背景を知る
この3つが揃うと、理解が“自分の力”になります。
おまけ④|🔐 セキュリティ英作文トレーニング|模範解答付き
✍️ 課題 1:セキュリティの重要性
「情報セキュリティはデータを守り、信頼できるサービスを提供するために重要です。」
✅ 模範解答
Information security is essential to protect data and provide reliable services.
💡 ポイント
- essential = 重要
- reliable services = 信頼できるサービス
✍️ 課題 2:暗号化とは?
「暗号化は、平文を暗号文に変換して第三者から情報を守る技術です。」
✅ 模範解答
Encryption is a technology that converts plaintext into ciphertext to protect information from unauthorized access.
💡 ポイント
- plaintext / ciphertext(正しい用語)
- unauthorized access = 不正アクセス
✍️ 課題 3:ハッシュとは?
「ハッシュ関数はデータを一方向で変換し、改ざん検知に使われます。」
✅ 模範解答
A hash function converts data in one direction and is used to detect tampering.
💡 ポイント
- one direction = 一方向
- detect tampering = 改ざん検知
✍️ 課題 4:公開鍵と秘密鍵の違い
「公開鍵は暗号化に、秘密鍵は復号に使います。」
✅ 模範解答
A public key is used for encryption, while a private key is used for decryption.
💡 ポイント
- A is used for X, while B is used for Y. → 鉄板の書き方
まとめ:今日覚えたキーワード(英語×概念)
| English | Japanese | Notes |
|---|---|---|
| Encryption | 暗号化 | plaintext → ciphertext |
| Public key | 公開鍵 | encryption側 |
| Private key | 秘密鍵 | decryption側 |
| Hash function | ハッシュ関数 | one-way function |
| Integrity | 完全性 | detect tampering |



