暗号化

このページでは、共通鍵暗号と公開鍵暗号の違い、DES・AES・RSAなどの方式、ハイブリッド暗号方式の仕組み、必要な鍵の数の計算がわかります。

  • 一言で言うと:
    • 「盗聴」から情報を守るために、文書を他人には読めない形に変える(暗号化)話
    • 鍵の使い方で、共通鍵暗号方式(鍵が1つ)と公開鍵暗号方式(鍵が2つ)に分かれ、両方のいいとこ取りがハイブリッド暗号方式

暗号に必要なもの(ルールとキー)→ 暗号の種類(共通鍵 → 公開鍵 → ハイブリッド)

覚え方の軸

  • 暗号方式は「暗号化と復号で、同じ鍵を使うか、別の鍵を使うか」で分ける
    • 同じ鍵なら共通鍵暗号方式、別の鍵なら公開鍵暗号方式
  • 共通鍵と公開鍵は、長所と短所が裏返し
    • 共通鍵は、処理が速い。でも、鍵を配るのが大変で、相手が増えると鍵の数が増える
    • 公開鍵は、この2つの問題を解決する。でも、処理が遅い
    • だから、データ本体は共通鍵、共通鍵を渡すときだけ公開鍵を使うのがハイブリッド暗号方式
  • 公開鍵暗号で暗号化するときは「受信者の」鍵ペアを使う
    • 受信者の公開鍵で暗号化し、受信者の秘密鍵で復号する
    • デジタル署名では、送信者の鍵ペアを逆向きに使う(ひっかけ注意)
  • 鍵の数は「共通鍵はペアの数、公開鍵は1人2本」
    • 共通鍵は n(n−1)÷ 2 個、公開鍵は 2n 個
  • 安全の根拠は「解くのに膨大な計算が必要な数学の問題」
    • RSAは素因数分解、楕円曲線暗号とElGamal暗号は離散対数問題

前置き:暗号化とは

  • 情報システムの運用のリスク:
    • 「盗聴」「改ざん」「なりすまし」「否認」などがある
    • リスクは完全には消せないが、セキュリティ措置で適切な水準にコントロールできる
    • 「盗聴」リスクへの代表的な措置が暗号化
  • 暗号:
    • 重要な文書の本来の姿(平文)を、ある規則で変換して、一見意味のない文字列や図案にしたもの
    • 変換のルールは、文書を読む正当な権利を持つ人だけが知っているので、情報の漏えいを防げる
    • 例えば、友だちとだけ決めた「合言葉の暗号」でメモを書けば、他の人に見られても読まれない

暗号化に必要な要素:ルールとキーを守る

  • 暗号化の基本:
    • 平文を暗号にできるルールがあること
    • 暗号を平文に戻せる(復号という)ルールがあること
    • この2つのルールは、同じでも違っていてもかまわない
  • キー(鍵):
    • ルールに代入する情報
  • 換字式:
    • 例えば、文字列を50音で後ろに数文字ずつずらして、意味のない文字列にする手法
    • 「文字を後ろにずらす」ことが暗号化ルール、ずらす文字数がキー
    • 例えば、1文字ずらすなら「あい」→「いう」
  • 暗号を解読しようとする人の方法:
    • キーを不正な手段で入手しようとする
    • 暗号の特性から変換ルールを推定し、キーがなくても暗号から平文を得ようとする
  • 注意点:
    • 暗号化は、ただ暗号を作ればよいのではない
    • 暗号化した文書が、本当にキーを持つ人以外に読めないかを常に意識する
  • 暗号を適正に使うための2つの要素(★):
    • ①キーを他人が入手できないように厳重に管理すること
    • ②変換ルールを複雑にして、容易に推測できないようにすること
    • 特に②を満たすために、多くの変換ルール(暗号化方式)が考えられ、実装されている
  • コンピュータの性能向上への備え:
    • コンピュータの性能が上がると、暗号の解読方法が確立されてしまうこともある
    • そこで、新しい暗号方式を取り入れたり、解読にかかるコストが、対象の情報に見合わないくらい膨大になるように誘導したりする

暗号化方式の種類:共通鍵、公開鍵、ハイブリッド(★試験によく出る)

  • 暗号化方式の分類:
    • いろいろな区分の仕方があるが、最も代表的な分類は、共通鍵暗号方式と公開鍵暗号方式
共通鍵暗号方式 公開鍵暗号方式
鍵 暗号化と復号で同じ鍵(共通鍵) 暗号化は公開鍵、復号は秘密鍵(別々)
鍵を持つ人 送信者と受信者が同じ鍵を持つ 公開鍵は誰でも使える。秘密鍵は受信者だけが管理
n人が互いに通信するときの鍵の数 n(n−1)÷ 2 個 2n 個
鍵の配布 共通鍵を安全に渡す方法が手間 公開鍵は公開してよいので、配布の問題がない
鍵の管理 相手が増えるごとに鍵が増え、負担が大きい 受信者は秘密鍵を1つ持てばよいので、負担が少ない
処理の速さ 速い 遅い(暗号化、復号に時間がかかる)
代表的な方式 DES、AES など RSA、楕円曲線暗号、ElGamal暗号 など

① 共通鍵暗号方式

  • 共通鍵暗号方式:
    • コンピュータシステムの初期段階から使われてきた暗号化方式
  • 共通鍵暗号方式の特徴:
    • 暗号化と復号のルールとキーが同じ
    • 送信者と受信者は、同じキー(共通鍵)を持つ
    • 通信相手が増えるごとに、管理する鍵の数が増え、鍵管理の負担が大きくなる
    • 共通鍵の配布方法が手間になる
  • 流れ:
    • 送信者は、平文を共通鍵で暗号化し、受信者は、暗号を同じ共通鍵で復号する
  • 注意すべき点:
    • 共通鍵が絶対に外部に漏れないようにする
    • 最初に共通鍵を作ったとき、互いに送る方法を工夫する
    • 例えば、共通鍵をメールで送ると、第三者の手に渡る危険がある
  • 共通鍵暗号方式の例え:
    • 家の合鍵。同じ鍵で閉めて、同じ鍵で開ける。でも、合鍵を郵便で送ると途中で盗まれるおそれがあるし、相手が増えるほど合鍵の種類が増えて管理が大変
  • 共通鍵の数:
    • n人の通信相手が相互に通信する場合、n(n−1)÷ 2 個の鍵が必要
    • 2人の組(ペア)ごとに1本ずつ必要なので、ペアの数と同じになる
  • ブロック暗号:
    • 平文を一定の長さのブロックに分割し、それぞれを暗号化する
    • 主な実装方式は、DES、Triple DES、AES、FEAL、IDEA、Camellia など
  • ストリーム暗号:
    • 平文を分割せずに、1ビットごとに暗号化する
    • 主な実装方式は、RC4、KCipher-2 など

共通鍵暗号の実装方式

  • DES:
    • 最も代表的な実装方式
    • 鍵長は56ビットで、2⁵⁶ 個の鍵パターンがある
    • 平文を64ビット(8バイト)のブロックに分け、キーによる変換処理を16回繰り返す
  • DESの弱点:
    • 2⁵⁶ 個すべての鍵を試して正解を当てる総当たり法で、解読が少しずつ現実的な時間でできるようになり、解読の危険が高まった
  • AES:
    • DESの後継として登場した
    • DESと同じブロック暗号方式
    • ブロック長は128ビットで固定
    • 鍵長は128ビット、192ビット、256ビットの中から選べる

② 公開鍵暗号方式

  • 公開鍵暗号方式:
    • 暗号化する鍵と、復号する鍵を別々のものにした方式
  • 公開鍵暗号方式の特徴:
    • 暗号化鍵(公開鍵)は、広く一般に公開し、誰でも暗号化できる
    • 復号鍵(秘密鍵)は、受信者だけが管理するので、受信者だけが暗号を復号して読める
    • 受信者は、送信者が増えても秘密鍵を1つ持っていればよいので、鍵管理の負担が少ない
    • 共通鍵暗号方式に比べて、暗号化、復号の処理に時間がかかる
  • 流れ:
    • 送信者は、受信者の公開鍵で暗号化する
    • 受信者は、受信者の秘密鍵で復号する
  • 公開鍵暗号方式が解決したこと:
    • 共通鍵暗号方式の2つの問題点、「鍵配布の方法」と「鍵管理負担の増大」を、同時にクリアしている
  • 公開鍵暗号方式の例え:
    • 誰でも閉められる南京錠(公開鍵)を配っておき、開ける鍵(秘密鍵)は受信者だけが持つ。箱に南京錠をかけて送れば、受信者しか開けられない
  • 公開鍵の数:
    • n人の通信相手が相互に通信する場合、2n 個の鍵が必要
    • 1人あたり公開鍵と秘密鍵の2本を持つから

公開鍵暗号の実装方式

  • RSA:
    • 代表的な方式
    • 大きな数の素因数分解に膨大な時間がかかる(膨大な計算量になる)ことを、安全の根拠にする
    • 鍵長が短いと解読されるので、安全のため2,048ビット以上の鍵の使用が推奨されている
  • 楕円曲線暗号:
    • 離散対数問題の解き方が難しいことを、安全の根拠にする
    • RSA暗号と比べて、短い鍵長で同じレベルの安全性を実現できる
  • ElGamal(エルガマル)暗号:
    • 離散対数問題の解き方が難しいことを、安全の根拠にする
  • 量子暗号:
    • 計算量に依存しない(コンピュータが速くなっても解読されない)暗号方式
    • 不確定性原理を使う
    • 原理的に、第三者に解読されない秘匿通信を実現できる
  • 注意(新しい情報):
    • 日本の暗号の評価をしているCRYPTREC(後述)の基準では、RSA 2,048ビット相当(セキュリティ強度112ビット)は2030年までの利用とされている。2031年以降は新しく暗号化や署名をすることはできず、過去に保護したデータの復号や検証だけが許される
    • また、量子コンピュータでも解読しにくい「耐量子計算機暗号(PQC)」への移行の検討も進んでいる(米国NISTが2024年に最初の標準を公開)
    • 試験では、「2,048ビット以上が推奨」で覚えてよい

③ ハイブリッド暗号方式

  • ハイブリッド暗号方式:
    • 公開鍵暗号方式と共通鍵暗号方式を組み合わせた方式
  • ハイブリッド暗号方式が生まれた理由:
    • RSAなどの公開鍵暗号は、「鍵配布時のセキュリティ確保」「鍵数の増加による管理工数の増大」という問題を解決する
    • しかし、演算がとても複雑で、CPUに大きな負担がかかる
    • 特に、大きなデータをやりとりするときは、暗号化と復号に膨大な時間がかかる
  • ハイブリッド暗号方式のやり方:
    • データ本文のやりとりには、処理時間の短い共通鍵暗号方式を使う
    • 共通鍵の受渡しには、公開鍵暗号方式を使う
    • こうして、速度と強度の両方を確保する
  • 流れ:
    • 送信者は、平文を共通鍵で暗号化する
    • その共通鍵を、受信者の公開鍵で暗号化して送る
    • 受信者は、自分の秘密鍵で共通鍵を復号し、取り出した共通鍵で本文を復号する
  • ハイブリッド暗号方式の特徴:
    • 2つを組み合わせて、鍵管理コストと処理性能の両立を図る
  • 使われている技術:
    • S/MIME、PGP、SSL/TLS などの暗号化技術で使われている
  • ハイブリッド暗号方式の例え:
    • 大きな荷物(本文)は、開け閉めが速い合鍵付きの箱(共通鍵)で送る。その合鍵だけを、受信者しか開けられない南京錠付きの小箱(公開鍵)に入れて送る
  • エンベロープ暗号化:
    • ハイブリッド暗号方式のように、ある暗号化鍵(データキー)で平文を暗号化し、そのデータキーを別の暗号化鍵(マスタキー)で暗号化する技術
    • エンベロープは「封筒」という意味。鍵を、さらに封筒に入れて守るイメージ

例題(鍵の数)

  • 問題:
    • 10人が互いに暗号通信をする。共通鍵暗号方式と公開鍵暗号方式では、それぞれ鍵がいくつ必要か
  • 答え:
    • 共通鍵暗号方式は、10 ×(10 − 1)÷ 2 = 90 ÷ 2 = 45個
    • 公開鍵暗号方式は、2 × 10 = 20個
  • 検算:
    • 10人から2人を選ぶ組合せは、₁₀C₂ = 45 で、共通鍵の数と一致する
  • 人数が増えると:
    • 100人なら、共通鍵は 100 × 99 ÷ 2 = 4,950個、公開鍵は 2 × 100 = 200個
    • 人数が増えるほど、共通鍵のほうが鍵の数が一気に増える

混同しやすいペア

  • 暗号化 / 復号
    • 暗号化は、平文を暗号に変える
    • 復号は、暗号を平文に戻す
  • 暗号化ルール / キー
    • 暗号化ルールは、変換のやり方(例:文字を後ろにずらす)
    • キーは、ルールに代入する情報(例:ずらす文字数)
  • 共通鍵暗号方式 / 公開鍵暗号方式
    • 共通鍵暗号方式は、暗号化と復号で同じ鍵。速いが、鍵の配布と管理が大変
    • 公開鍵暗号方式は、暗号化と復号で別の鍵。鍵の配布と管理は楽だが、遅い
  • 公開鍵 / 秘密鍵
    • 公開鍵は、広く公開し、誰でも暗号化に使える
    • 秘密鍵は、受信者だけが厳重に管理し、復号に使う
  • 共通鍵の数 / 公開鍵の数
    • 共通鍵は、n(n−1)÷ 2 個
    • 公開鍵は、2n 個
  • ブロック暗号 / ストリーム暗号
    • ブロック暗号は、一定の長さのブロックごとに暗号化する(DES、AESなど)
    • ストリーム暗号は、1ビットごとに暗号化する(RC4、KCipher-2など)
  • DES / AES
    • DESは、鍵長56ビット、ブロック64ビット、16回繰り返す。総当たりで解読の危険が高まった
    • AESは、DESの後継。ブロック128ビット固定、鍵長は128・192・256ビットから選ぶ
  • RSA / 楕円曲線暗号
    • RSAは、素因数分解の難しさが安全の根拠
    • 楕円曲線暗号は、離散対数問題の難しさが安全の根拠。RSAより短い鍵長で同じ安全性
  • 量子暗号 / RSAなどの公開鍵暗号
    • 量子暗号は、不確定性原理を使い、計算量に依存しない
    • RSAなどは、計算量の多さが安全の根拠なので、コンピュータが速くなると危うくなる
  • ハイブリッド暗号方式 / エンベロープ暗号化
    • ハイブリッド暗号方式は、本文は共通鍵、共通鍵の受渡しは公開鍵で行う
    • エンベロープ暗号化は、データキーで平文を暗号化し、そのデータキーをマスタキーで暗号化する技術
  • データキー / マスタキー
    • データキーは、平文を暗号化する鍵
    • マスタキーは、データキーを暗号化する鍵
  • 公開鍵暗号での暗号化 / デジタル署名
    • 暗号化は、受信者の公開鍵で暗号化し、受信者の秘密鍵で復号する
    • デジタル署名は、送信者の秘密鍵で署名を作り、送信者の公開鍵で検証する

← 08 セキュリティの目次に戻る

タイトルとURLをコピーしました