情報セキュリティの基本技術|暗号・公開鍵・ハッシュを体系的に理解する

7 min 76 views
セキュリティ(暗号など)

セキュリティを学ぶうえで避けて通れないのが、
暗号化・公開鍵基盤(PKI)・ハッシュ関数です。

これらは、日々私たちが当たり前のように使っている
HTTPS・ログイン処理・ファイルダウンロードなど、
あらゆるWebサービスの裏側で動いています。

目次

セキュリティの目的は3つのCIAで表されます。

対象意味
Confidentiality(機密性)情報を守るパスワード暗号化、HTTPS
Integrity(完全性)改ざん防止Hashでチェック
Availability(可用性)必要なとき使えるバックアップ、冗長化

暗号は特に機密性を守る中心技術です。

データは平文 → 暗号文 → 復号という流れで扱われます。

例)LINEメッセージは端末間で暗号化→サーバは内容を読めません
これを E2E(End-to-End)暗号化 といいます。

● 仕組み

同じ鍵で
暗号化 & 復号 を行う方式です。

✔ 高速で、大量データ通信に強い
✔ だからHTTPS内部通信でも使われる

代表例解説
AES現在の標準方式(超重要)
RC4古い方式。脆弱性が発見され現在は非推奨

● ブロック暗号とモード

モード仕組みメリットデメリット
ECBブロック単位で単純変換高速パターンが露出→危険
CBC乱数IVを加えて連鎖処理安全性高い処理負担が少し増

CBCはセキュリティ教本・実務でも広く扱われる基本

ECBは絶対に覚えておく理由
→ 画像を暗号化したとき模様がそのまま残り有名な例あり
「安全に見えて全然安全じゃないモード」として語られます。

● 共通鍵暗号の課題

課題具体例
鍵配送LINEで「あとで鍵送るね」→盗聴される
鍵管理ユーザー100人で4950個必要

規模が増えるほどカオスになる
なので、次に紹介する公開鍵暗号の登場です。

● 基本概念

「暗号化する鍵」と「復号する鍵」が違う方式。

種類役割
公開鍵誰でも配れる(鍵を渡すため)
秘密鍵自分だけが持つ(復号する)

● イメージ

銀行の「投函口と金庫」の関係
入れる穴(公開)→開けられるのは銀行(秘密)

● 実際の通信:ハイブリッド方式

ステップ
① 公開鍵暗号で共通鍵を安全に送る
② あとは共通鍵で高速通信

SSL/TLS(HTTPS)はこの流れ
公開鍵暗号は入口、共通鍵が本番

● アルゴリズムと役割

方式目的
RSA公開鍵暗号の代表。署名・鍵交換にも
Diffie-Hellman(DHE)共通鍵の安全交換
ECDHEモダン環境の主流、楕円曲線で高速&強力

近年はRSA→ECDHE(より強く速い)へ移行

● 公開鍵方式の弱点

  • 計算が重くて遅い
  • 設定や証明書の管理が必要(PKI)

でも、これがあるからHTTPSや電子署名が成立します。

● 特性

特性意味
一方向性元に戻せない
衝突耐性同じ値が出にくい
固定長入力サイズに関係なく同じ長さ

「1文字違うだけで全く違う値になる」のが重要

● 主な用途

用途
改ざん検知ファイルのハッシュチェック
ログインパスワードをそのまま保存しない
電子署名メッセージ要約に使用

● よく出る用語

用語解説
コリジョン(Collision)異なるデータが同じハッシュに
レインボーテーブルパスワードのハッシュ照合辞書
ソルトランダム値を加え辞書攻撃防止

例:passwordpassword123!Qx で爆発的に強化
ソルトはハッシュの“スパイス”

用語説明
PPAP2通メールでZip暗号→時代遅れ、危険
CRYPTREC日本政府推奨暗号リスト
E2E暗号化端末間で暗号化→SNSで採用

「PPAPはアウト、CRYPTRECはOK」
この認識だけでも実務で役立ちます。

● 要点整理

項目本質
共通鍵高速、実通信担当
公開鍵鍵配布の救世主
ハッシュ改ざん・認証の土台

● 学習ステップ(ロードマップ)

  1. CIA三要素
  2. 共通鍵と公開鍵の違い
  3. HTTPSの流れ
  4. ハッシュとソルト
  5. 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でハッシュしてみる

入力(平文)ハッシュ値
hello2cf24dba5f...e94f88e
Hello185f8db322...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 Top10Web攻撃対策

セキュリティは「動作を知る→仕組みを理解→実装に活かす」順で伸びます。

暗号史を知ると、技術選択の“理由”が見えて理解が深まります。

◆ 暗号方式の進化

時代技術特徴
1970sDES56bit鍵。今では短すぎて破られる
1990s3DESDESを3回→強化だが遅い
2001AES現在の標準。高速・安全性高
現在AES + ECDHEHTTPSの世界標準

DESが破られた理由


→ コンピュータ性能の向上
→鍵長56bitでは総当たり可能に

AESが選ばれた理由

  • 高速
  • セキュリティ高い
  • ハード・ソフト両対応

暗号は「攻撃 vs 防御」の軍拡競争
技術の歴史を知ると、なぜ今これを学ぶかが腑に落ちます。

◆ 時代ごとの“戦い”

攻撃技術の進歩対応した暗号
総当たり(ブルートフォース)長い鍵(AES)
数学的攻撃ハイブリッド方式
モバイル普及軽量暗号(E.g. ChaCha20)
量子コンピュータPQ暗号(ポスト量子暗号)

これからは量子耐性がキーワード
興味が出た人は「NIST PQC」を検索!

◆ 実際の応用例

技術使われる場面
DES/3DES古い金融機器などレガシー環境
AESHTTPS/E2E暗号化・Wi-Fi WPA3
ECC/ECDHETLSの鍵交換
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. → 鉄板の書き方

 まとめ:今日覚えたキーワード(英語×概念)

EnglishJapaneseNotes
Encryption暗号化plaintext → ciphertext
Public key公開鍵encryption側
Private key秘密鍵decryption側
Hash functionハッシュ関数one-way function
Integrity完全性detect tampering
関連記事