0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔐 LPIC-3 Security「暗号化Cryptography」ガむド ゞブリ図解 × 原理原則 × 実機コマンド文系女性向け

0
Posted at

本蚘事は、自分の理解を深めるためAIメンタヌちゃんにたずめおもらった資料をもずに再構成しおいたす。


📚 目次

  1. ゞブリで理解する「暗号化」の䞖界芳
  2. 共通鍵暗号 vs 公開鍵暗号
  3. ハッシュ関数っお䜕
  4. PKI ず 蚌明曞の仕組み
  5. SSL/TLS のしくみ
  6. GPG / OpenPGP
  7. 実機コマンド集
  8. 詊隓察策チヌトシヌト

🎬 ゞブリで理解する「暗号化」の䞖界芳

🏰 倩空の城ラピュタ  共通鍵暗号

「バルス」← これが共通鍵

シヌタずパズヌだけが知っおいる「呪文鍵」
同じ鍵で「かける暗号化」も「解く埩号」もできる。

でも その鍵をどうやっお安党に枡す
→ これが「鍵配送問題」
┌────────────────────────────────────────┐
│  共通鍵暗号察称鍵暗号              │
│                                        │
│  シヌタ ──[バルス!]──▶ 暗号文          │
│                                        │
│  パズヌ ──[バルス!]──▶ 元の文章        │
│                                        │
│  同じ鍵 = 速いでも鍵の受け枡しが問題│
└────────────────────────────────────────┘

🔮 もののけ姫  公開鍵暗号

アシタカの「芋る目公開鍵」は誰でも芋られる
でも「呪い秘密鍵」を持぀のはアシタカだけ

誰でも手玙をアシタカ宛おに「公開鍵で封印」できる
封を開けられるのはアシタカ秘密鍵だけ
┌─────────────────────────────────────────────┐
│  公開鍵暗号非察称鍵暗号                 │
│                                             │
│  公開鍵誰でも持おる──▶ 暗号化          │
│  秘密鍵自分だけ持぀──▶ 埩号            │
│                                             │
│  鍵配送問題が解決でも凊理は遅い          │
└─────────────────────────────────────────────┘

🍞 魔女の宅急䟿  ハッシュ関数

キキが焌いたパン ──▶ 配達ハッシュ倀

どんなに倧きな荷物でも「配達蚌明曞ハッシュ倀」は小さく䞀定
荷物が1gでも倉わるず、蚌明曞は党然違う芋た目になる
蚌明曞から荷物の䞭身は絶察に埩元できない
┌────────────────────────────────────────┐
│  ハッシュ関数                          │
│                                        │
│  どんな長さのデヌタ                    │
│       ↓                                │
│  [ハッシュ関数]                        │
│       ↓                                │
│  固定長のハッシュ倀指王みたいなもの│
│                                        │
│  ・同じ入力 → 垞に同じ出力             │
│  ・少しでも倉わるず党然違う倀          │
│  ・ハッシュ倀から元デヌタを埩元䞍可    │
└────────────────────────────────────────┘

🌊 千ず千尋の神隠し  デゞタル眲名

千尋の名前は湯婆婆に奪われた。
でも、契玄曞デゞタル眲名があれば
「本圓に千尋が曞いたかどうか」がわかる

秘密鍵で眲名 ──▶ 公開鍵で怜蚌
「この文曞は確かに私が曞きたした」を蚌明

🔑 共通鍵 vs 公開鍵 {#共通鍵-vs-公開鍵}

共通鍵暗号察称鍵暗号

特城 内容
速床 ⚡ 速い
鍵管理 送受信者で同じ鍵を共有
問題点 鍵を安党に枡す手段が必芁
甹途 倧量デヌタの暗号化

代衚的アルゎリズム

アルゎリズム 鍵長 詊隓での泚意点
AES 128/192/256bit 珟圚の暙準芚えよう
3DES 168bit 叀い・遅い・非掚奚
Blowfish 32〜448bit 可倉長が特城
DES 56bit 脆匱詊隓に出る
RC4 可倉長 WEPで䜿われた・廃止
💡 詊隓ポむント
DES = 56bit = 脆匱 = 䜿っおはいけない
AES = 珟代の暙準 = 安党

公開鍵暗号非察称鍵暗号

特城 内容
速床 🐢 遅い共通鍵の玄1000倍遅い
鍵管理 公開鍵ず秘密鍵のペア
解決するこず 鍵配送問題
甹途 鍵亀換・眲名・蚌明曞

代衚的アルゎリズム

アルゎリズム 甹途 特城
RSA 暗号化・眲名 最もポピュラヌ
DSA 眲名のみ 眲名特化
ECDSA 眲名 楕円曲線。短い鍵で匷い
DH / ECDH 鍵亀換 暗号化ではなく鍵を安党に共有
ElGamal 暗号化・眲名 GPGで䜿われる
💡 詊隓ポむント
RSA = 暗号化も眲名もできる
DSA = 眲名専甚暗号化はできない
DH = 鍵亀換暗号化ではない

ハむブリッド暗号実際のSSLはこれ

┌──────────────────────────────────────────────────────┐
│  ハむブリッド暗号の流れ                              │
│                                                      │
│  ① 公開鍵暗号で「共通鍵」を安党に亀換               │
│       Alice ──[Bobの公開鍵で暗号化]──▶ Bob          │
│       Bob   ──[Bobの秘密鍵で埩号]──▶ 共通鍵ゲット   │
│                                                      │
│  ② 共通鍵暗号でデヌタを高速に暗号化                 │
│       倧量のデヌタ ──[共通鍵]──▶ 高速安党        │
│                                                      │
│  公開鍵の安党性  共通鍵の速さ = いいずこ取り     │
└──────────────────────────────────────────────────────┘

#⃣ ハッシュ関数 {#ハッシュ関数}

基本的な性質

1. 䞀方向性ハッシュ倀から元デヌタは絶察に埩元できない
2. 衝突耐性異なるデヌタが同じハッシュ倀にならないなりにくい
3. 決定性 同じ入力は必ず同じ出力になる
4. 雪厩効果入力が1ビット倉わるず出力が倧きく倉わる

代衚的なハッシュアルゎリズム

アルゎリズム ビット長 安党性 詊隓での扱い
MD5 128bit ❌ 脆匱 衝突が発芋枈み䜿甚犁止
SHA-1 160bit ❌ 脆匱 廃止掚奚
SHA-256 256bit ✅ 安党 SHA-2ファミリヌ。珟圚の暙準
SHA-512 512bit ✅ 安党 よりセキュア
SHA-3 可倉 ✅ 安党 新しい蚭蚈
💡 芚え方
MD5・SHA-1 → 叀い・危険・䜿うな
SHA-256以䞊 → 安党䜿おう

よく䜿われる堎面

・パスワヌドの保存ハッシュ化しお保存
・ファむルの改ざん怜知ダりンロヌドしたファむルの確認など
・デゞタル眲名眲名はハッシュ倀に察しお行う
・HMAC鍵付きハッシュ = メッセヌゞ認蚌コヌド

🏛 PKI ず蚌明曞 {#pki-ず蚌明曞}

PKI公開鍵基盀の党䜓像

┌──────────────────────────────────────────────────────────┐
│  PKIPublic Key Infrastructure                        │
│                                                          │
│  ┌─────────────────────────────┐                        │
│  │  CA認蚌局               │                        │
│  │  Certificate Authority      │                        │
│  │  ・蚌明曞を発行する信頌の根拠│                        │
│  └──────────┬──────────────────┘                        │
│             │ 眲名しお蚌明曞を発行                        │
│  ┌──────────▌──────────────────┐                        │
│  │  サヌバヌ蚌明曞             │                        │
│  │  ・公開鍵が含たれる         │                        │
│  │  ・有効期限あり             │                        │
│  │  ・CAの眲名で正圓性を蚌明   │                        │
│  └──────────┬──────────────────┘                        │
│             │ ブラりザが怜蚌                              │
│  ┌──────────▌──────────────────┐                        │
│  │  クラむアントブラりザ等  │                        │
│  │  「本物のサむトかどうか」確認│                        │
│  └─────────────────────────────┘                        │
└──────────────────────────────────────────────────────────┘

蚌明曞の皮類

皮類 説明
ルヌトCA蚌明曞 信頌の根っこ。OSやブラりザに組み蟌み
侭間CA蚌明曞 ルヌトCAず末端の間。階局構造を䜜る
サヌバヌ蚌明曞 Webサむトなどに䜿う
クラむアント蚌明曞 ナヌザヌ認蚌に䜿う

X.509蚌明曞の䞭身

┌────────────────────────────────────┐
│  X.509 蚌明曞の構成芁玠            │
│                                    │
│  ・バヌゞョンv1/v2/v3          │
│  ・シリアル番号                    │
│  ・発行者CAの名前              │
│  ・有効期間開始〜終了          │
│  ・サブゞェクト誰の蚌明曞か    │
│  ・公開鍵情報                      │
│  ・拡匵領域v3のみ              │
│  ・CAのデゞタル眲名                │
└────────────────────────────────────┘

蚌明曞の倱効

仕組み 説明
CRL蚌明曞倱効リスト 倱効した蚌明曞番号の䞀芧。定期曎新
OCSP リアルタむムで倱効確認。CRLより新しい
💡 詊隓ポむント
CRL = リスト圢匏・定期曎新・叀い方匏
OCSP = リアルタむム確認・新しい方匏

🔒 SSL/TLS {#ssltls}

SSL vs TLS

SSL 2.0 → 脆匱・廃止
SSL 3.0 → POODLE攻撃で廃止
TLS 1.0 → 非掚奚
TLS 1.1 → 非掚奚
TLS 1.2 → 珟圚も広く䜿甚
TLS 1.3 → 最新・掚奚ハンドシェむクが速い

TLSハンドシェむクの流れ

┌────────────────────────────────────────────────────────┐
│  TLS ハンドシェむクTLS 1.2の堎合                   │
│                                                        │
│  Client                              Server            │
│    │                                    │              │
│    │── ClientHello ──────────────────▶  │              │
│    │   察応する暗号スむヌトを提瀺    │              │
│    │                                    │              │
│    │  ◀────────────── ServerHello ───── │              │
│    │   䜿う暗号スむヌトを決定        │              │
│    │                                    │              │
│    │  ◀────────────── Certificate ───── │              │
│    │   サヌバヌ蚌明曞を送る          │              │
│    │                                    │              │
│    │ 蚌明曞を怜蚌本物のサヌバヌ      │              │
│    │                                    │              │
│    │── ClientKeyExchange ────────────▶  │              │
│    │   共通鍵の元になる情報を送る    │              │
│    │                                    │              │
│    │── ChangeCipherSpec ─────────────▶  │              │
│    │── Finished ─────────────────────▶  │              │
│    │  ◀────────────── Finished ───────  │              │
│    │                                    │              │
│    │ 🔒 暗号化通信スタヌト             │              │
└────────────────────────────────────────────────────────┘

暗号スむヌトの読み方

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

↑    ↑       ↑        ↑       ↑  ↑
|    |       |        |       |  └─ HMACのハッシュ
|    |       |        |       └──── 暗号モヌド
|    |       |        └──────────── 共通鍵暗号ずビット長
|    |       └───────────────────── 認蚌方匏
|    └───────────────────────────── 鍵亀換方匏
└────────────────────────────────── プロトコル

ECDHE = 前方秘匿性あり詊隓に出る重芁キヌワヌド
💡 前方秘匿性Perfect Forward Secrecy / PFSずは
セッションごずに䞀時的な鍵を生成する仕組み。
仮に秘密鍵が挏れおも、過去の通信は埩号できない
DHE、ECDHEが前方秘匿性を持぀。

✉ GPG / OpenPGP {#gpg--openpgp}

GPGずは

GnuPGGNU Privacy Guard= OpenPGP暙準の実装
ファむルの暗号化・眲名・鍵管理ができるコマンドラむンツヌル

基本的な䜿い方

# 鍵ペア生成
gpg --gen-key

# 公開鍵の䞀芧衚瀺
gpg --list-keys

# 秘密鍵の䞀芧衚瀺
gpg --list-secret-keys

# 公開鍵を゚クスポヌトテキスト圢匏
gpg --armor --export user@example.com > pubkey.asc

# 公開鍵をむンポヌト
gpg --import pubkey.asc

# ファむルを暗号化盞手の公開鍵で
gpg --encrypt --recipient user@example.com file.txt

# ファむルを埩号自分の秘密鍵で
gpg --decrypt file.txt.gpg

# ファむルに眲名
gpg --sign file.txt
gpg --detach-sign file.txt   # 眲名を別ファむルに

# 眲名を怜蚌
gpg --verify file.txt.sig file.txt

信頌の茪Web of Trust

┌────────────────────────────────────────┐
│  PGP の信頌モデル = 信頌の茪           │
│                                        │
│  Alice ─ ä¿¡é Œ ─▶ Bob ─ ä¿¡é Œ ─▶ Carol │
│                                        │
│  AliceはCarolず盎接䌚ったこずがなくおも │
│  Bobを経由しお信頌できる             │
│                                        │
│  ※PKIのCA方匏ずは違う分散型モデル     │
└────────────────────────────────────────┘

💻 実機コマンド集 {#実機コマンド集}

OpenSSL 基本操䜜

# RSA秘密鍵を生成2048bit
openssl genrsa -out private.key 2048

# 秘密鍵から公開鍵を取り出す
openssl rsa -in private.key -pubout -out public.key

# CSR蚌明曞眲名芁求を䜜成
openssl req -new -key private.key -out server.csr

# 自己眲名蚌明曞を䜜成テスト甚
openssl req -x509 -new -key private.key -days 365 -out cert.pem

# 蚌明曞の内容を確認
openssl x509 -in cert.pem -text -noout

# サヌバヌのTLS蚌明曞を確認
openssl s_client -connect example.com:443

# ハッシュ倀を蚈算
openssl dgst -sha256 file.txt
sha256sum file.txt   # こちらでも可

ファむルの暗号化・埩号

# AES-256-CBCでファむルを暗号化
openssl enc -aes-256-cbc -in plaintext.txt -out encrypted.bin

# 埩号
openssl enc -aes-256-cbc -d -in encrypted.bin -out decrypted.txt

パスワヌドのハッシュ化

# SHA-512でパスワヌドをハッシュsaltあり
openssl passwd -6 "mypassword"

# MD5叀い・非掚奚
openssl passwd -1 "mypassword"

/etc/ssh/ 関連SSH暗号化

# SSHホスト鍵の確認
ls -la /etc/ssh/ssh_host_*

# SSH鍵ペア生成ナヌザヌ甚
ssh-keygen -t ed25519 -C "user@example.com"
ssh-keygen -t rsa -b 4096

# 公開鍵の指王を確認
ssh-keygen -lf ~/.ssh/id_ed25519.pub

蚌明曞の有効期限チェック実務でよく䜿う

# 蚌明曞の有効期限だけ衚瀺
openssl x509 -in cert.pem -noout -dates

# リモヌトサヌバヌの蚌明曞確認
echo | openssl s_client -connect example.com:443 2>/dev/null \
  | openssl x509 -noout -dates

📋 詊隓察策チヌトシヌト {#詊隓察策チヌトシヌト}

⚡ 絶察芚えるアルゎリズム早芋衚

【共通鍵暗号】
DES    → 56bit  → 脆匱・廃止
3DES   → 168bit → 叀い・䜎速
AES    → 128/192/256bit → ✅ 珟圚の暙準
Blowfish → 可倉長最倧448bit

【公開鍵暗号】
RSA    → 暗号化・眲名䞡方OK
DSA    → 眲名専甚暗号化䞍可
ECDSA  → 楕円曲線・短い鍵で匷力
DH/ECDH → 鍵亀換専甚

【ハッシュ】
MD5    → 128bit → 衝突発芋枈み・廃止
SHA-1  → 160bit → 廃止掚奚
SHA-256 → 256bit → ✅ 珟圚の暙準
SHA-512 → 512bit → ✅ よりセキュア

【SSL/TLS バヌゞョン】
SSL2/3  → 廃止
TLS 1.0/1.1 → 非掚奚
TLS 1.2 → 珟圚も䜿甚
TLS 1.3 → ✅ 最新・掚奚

💣 詊隓によく出る「廃止・脆匱」キヌワヌド

技術 なぜダメ
DES 鍵が56bitず短すぎる
RC4 統蚈的偏りがある
MD5 衝突攻撃が成功しおいる
SHA-1 Google が衝突を実蚌(2017)
SSL 3.0 POODLE攻撃
TLS 1.0 BEAST攻撃

🔑 詊隓によく出る「甚語」たずめ

甚語 意味
PFS / 前方秘匿性 過去の通信が埌から解読できない性質。DHE/ECDHEが実珟
HMAC 鍵付きハッシュ関数。メッセヌゞの完党性ず認蚌を確認
PKCS 公開鍵暗号の暙準芏栌矀。PKCS#1(RSA)、PKCS#12(蚌明曞+秘密鍵)など
CRL 倱効蚌明曞リスト。CAが公開する
OCSP リアルタむムの倱効確認プロトコル
CSR 蚌明曞眲名芁求。CAに送るための申請曞
Web of Trust PGP/GPGの信頌モデル。PKIのCAずは違う
salt パスワヌドハッシュに付加するランダム倀。レむンボヌテヌブル察策

🎯 出題パタヌン別・狙われやすいポむント

① 「なぜDESはダメか」→ 鍵長56bitが短すぎる
② 「前方秘匿性を持぀のは」→ DHE、ECDHE
③ 「眲名専甚アルゎリズムは」→ DSA
④ 「CRLずOCSPの違いは」→ CRL=リスト/定期曎新、OCSP=リアルタむム
â‘€ 「Web of TrustずCAモデルの違い」→ 分散型 vs 䞭倮集暩型

🌞 たずめ53%→合栌点ぞのロヌドマップ

Week 1アルゎリズムの暗蚘
  → 共通鍵・公開鍵・ハッシュの衚を完党暗蚘
  → 廃止されたものDES, MD5, SSL3.0を確実に抌さえる

Week 2PKI ず TLS の流れ
  → ハンドシェむクの順番を図で描けるようにする
  → 蚌明曞の仕組みCA → 侭間CA → サヌバヌ蚌明曞

Week 3実機で手を動かす
  → opensslコマンドを実際に打っおみる
  → gpgで鍵生成・暗号化・眲名を䜓隓

Week 4過去問 & 匱点補匷
  → 間違えた問題の甚語を本蚘事で確認

0
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?