📑

[SC] 学習ノート⑫:暗号

に公開

初めに

情報処理安全確保支援士(SC)試験対策として、著者の学習アウトプットを兼ねて作成している
必要に応じて追記等を行う予定である

暗号化とは

暗号化 とは、第三者に内容を知られないように 平文 (元のデータ)を暗号文に変換することである。
暗号分から平文に戻すことを 復号 という

暗号化には 共通鍵暗号方式公開鍵暗号方式 がある

共通鍵暗号方式

暗号に用いる鍵(暗号鍵)と復号に用いる鍵(復号鍵)が同じ方式

代表例

名称 特徴 鍵長
AES 排他的論理和を用い、鍵長により演算数が決まる 128 / 192 / 256 bit
DES 旧標準方式 56 bit
3DES DESを3回適用 実質112 / 168 bit
Camellia 日本開発(NTT・三菱電機) 128 / 192 / 256 bit

公開鍵暗号方式

暗号鍵と復号鍵が異なる方式
暗号鍵のみを公開するため、暗号化する鍵を 公開鍵 、復号鍵を 秘密鍵 ともいう

代表例

名称 特徴 鍵長(目安)
RSA 素因数分解の困難さを用いる 2048bit以上推奨
DSA デジタル署名専用 2048 / 3072bit
ECDSA 楕円曲線DSA 256bit程度
ECC 楕円曲線上の離散対数問題を利用 224~521bit

暗号方式の比較

名称 特徴 メリット デメリット
共通鍵方式(秘密鍵方式) 暗号鍵と復号鍵が同一 処理が高速で大量データの暗号化に向いている 鍵を安全に共有する必要がある(鍵配送問題)
公開鍵方式 公開鍵と秘密鍵の2つの鍵を使用 鍵を安全に配布でき、認証や署名にも利用できる 処理が遅く、大量データの暗号化には不向き

ハッシュ関数

共通鍵暗号方式や公開鍵暗号方式は、データの内容を第三者に読まれないようにするための技術である
一方で、データが改ざんされていないことを確認するための技術として「ハッシュ関数」が利用される

ハッシュ関数とは

ハッシュ関数とは、任意の長さのデータを入力すると、一定の長さの値( ハッシュ値[1]を生成する関数である
このハッシュ値は メッセージダイジェスト とも呼ばれる

ハッシュ関数の特徴

特徴 説明
一方向性 (preimage resistance) ハッシュ値から元のデータを求めることが困難である性質
第二原像困難性 (second preimage resistance) あるデータと同じハッシュ値になる別のデータを見つけることが困難である性質
衝突耐性 (collision resistance) 異なる2つのデータで同じハッシュ値になる組み合わせ(衝突)を見つけることが困難である性質

特に衝突耐性がハッシュ関数の中で重要視されており、この特徴のおかげで 改竄時にハッシュ値が変わる = 改竄が検知できる が可能となっている

ハッシュ関数の種類

アルゴリズム ハッシュ長 特徴 安全性
MD5 128bit 古くから利用されていたハッシュ関数 衝突が発見されており安全ではない
SHA-1 160bit MD5の後継として利用された 衝突が発見されており現在は非推奨
SHA-2 (SHA-256 など) 256bit など 現在広く利用されているハッシュ関数 安全とされている
SHA-3 224 / 256 / 384 / 512bit SHA-2とは異なる構造のハッシュ関数 安全とされている

試験対策ポイント

追記予定

脚注
  1. ハッシュ関数の入力元がハッシュ値の規定よりも短い場合でも、規定通りの長さに揃えられる ↩︎

Discussion