コンテンツにスキップ

暗号化技術

インターネット上でデータをやり取りするとき、通信の途中で第三者にデータを盗み見られるリスクがあります。たとえば、ネットショッピングでクレジットカード番号を送信する場面を想像してみてください。もしそのデータがそのまま読める状態で送られていたら、悪意のある第三者に番号を知られてしまいます。

こうしたリスクを防ぐために使われるのが暗号化です。暗号化とは、もとのデータ(平文(ひらぶん)と呼びます)を、特別なルール(アルゴリズム)とを使って、第三者には意味のわからないデータ(暗号文)に変換することです。

暗号文を受け取った正当な相手は、対応する鍵を使って暗号文をもとの平文に戻します。この操作を復号といいます。

試験で出るポイント

「暗号化=平文を暗号文に変換すること」「復号=暗号文を平文に戻すこと」という基本の定義は正確に押さえておきましょう。「復号化」ではなく「復号」が正式な用語です。

共通鍵暗号方式(秘密鍵暗号方式)

Section titled “共通鍵暗号方式(秘密鍵暗号方式)”

暗号化の方式にはいくつかの種類があります。まず最も基本的な方式が共通鍵暗号方式です。秘密鍵暗号方式とも呼ばれます。

共通鍵暗号方式では、暗号化と復号に**同じ鍵(共通鍵)**を使います。送信者と受信者が同じ鍵を持っていて、送信者がその鍵でデータを暗号化し、受信者が同じ鍵で復号するという仕組みです。

身近な例でいえば、同じ鍵で施錠・解錠できる南京錠のようなイメージです。

  • 処理速度が速い:大量のデータを暗号化するのに向いています
  • 鍵の管理が大変:通信する相手ごとに異なる鍵が必要です
  • 鍵の受け渡しが課題:安全に相手へ鍵を届ける方法を別途考えなければなりません

共通鍵暗号方式では、通信する2人の間に1つの鍵が必要です。したがって、N人が互いに秘密の通信を行う場合、必要な鍵の数は次の式で求められます。

N(N−1) ÷ 2

たとえば、5人で互いに通信する場合は 5×4÷2 = 10個 の鍵が必要です。人数が増えると鍵の数が急激に増え、管理が非常に大変になることがわかります。

共通鍵暗号方式の「鍵の受け渡しが難しい」という課題を解決するために考え出されたのが公開鍵暗号方式です。

公開鍵暗号方式では、公開鍵秘密鍵という2つの鍵をペアで使います。この2つの鍵には「一方で暗号化したものは、もう一方でしか復号できない」という数学的な関係があります。

仕組みは次のとおりです。

  1. 受信者が公開鍵秘密鍵のペアを作成します
  2. 受信者は公開鍵を公開します(誰でも入手できる状態にする)
  3. 送信者は受信者の公開鍵で暗号化してデータを送ります
  4. 受信者は自分だけが持つ秘密鍵で復号します

公開鍵は文字どおり公開されているため、鍵の受け渡しに悩む必要がありません。また、暗号文を復号できるのは秘密鍵を持つ受信者だけなので、安全性が保たれます。

  • 鍵の受け渡しが安全:公開鍵は誰に知られても問題ありません
  • 鍵の管理が容易:各自が公開鍵と秘密鍵の1ペアを持てばよい
  • 処理速度が遅い:共通鍵暗号方式に比べて計算量が多い

公開鍵暗号方式では、1人あたり公開鍵と秘密鍵の2つが必要です。したがって、N人の場合に必要な鍵の数は次の式で求められます。

2N

たとえば、5人の場合は 2×5 = 10個 の鍵で済みます。100人になっても200個で済むため、共通鍵暗号方式に比べて管理がはるかに楽です。

共通鍵暗号方式と公開鍵暗号方式の比較

Section titled “共通鍵暗号方式と公開鍵暗号方式の比較”

2つの方式を対比して整理しておきましょう。

比較項目共通鍵暗号方式公開鍵暗号方式
使う鍵暗号化と復号に同じ鍵公開鍵で暗号化、秘密鍵で復号
鍵の数(N人)N(N−1) ÷ 22N
処理速度速い遅い
鍵の受け渡し安全に届ける手段が必要公開鍵は自由に配布でき安全
向いている用途大量データの暗号化鍵の交換、少量データの暗号化

試験で出るポイント

共通鍵と公開鍵の違いは最頻出テーマです。「共通鍵=速いが鍵の管理が大変」「公開鍵=鍵の管理は楽だが遅い」という特徴を対比で覚えましょう。また、鍵の数の計算問題も出題されます。N人の場合、共通鍵は N(N−1)÷2、公開鍵は 2N です。

共通鍵暗号方式は速いけれど鍵の受け渡しが課題、公開鍵暗号方式は鍵の受け渡しは安全だけれど遅い――この2つの方式の「いいとこ取り」をしたのがハイブリッド暗号方式です。

ハイブリッド暗号方式の仕組みは次のとおりです。

  1. 送信者が共通鍵をランダムに生成する
  2. データ本体は共通鍵で暗号化する(高速に処理できる)
  3. その共通鍵を受信者の公開鍵で暗号化する(安全に鍵を届けられる)
  4. 暗号化されたデータと暗号化された共通鍵をセットで送信する
  5. 受信者は自分の秘密鍵で共通鍵を復号し、その共通鍵でデータ本体を復号する

つまり、「大量のデータは共通鍵で高速に暗号化し、その共通鍵自体は公開鍵で安全に届ける」という組み合わせです。現在のインターネット通信(HTTPS)では、このハイブリッド暗号方式が広く使われています。

試験で出るポイント

ハイブリッド暗号方式では「データは共通鍵で暗号化」「共通鍵は公開鍵で暗号化」という2段階の仕組みを理解しておきましょう。どちらの鍵で何を暗号化するかが問われます。

ハッシュ関数は、暗号化とは異なる仕組みですが、セキュリティにおいて非常に重要な技術です。

ハッシュ関数とは、任意の長さのデータを入力すると、**固定長のデータ(ハッシュ値)**を出力する関数のことです。出力されるハッシュ値は「メッセージダイジェスト」とも呼ばれます。

たとえば、「こんにちは」という短いテキストでも、数百ページの文書でも、同じハッシュ関数に通すと同じ長さのハッシュ値が出力されます。

ハッシュ関数には、次の3つの重要な特徴があります。

  1. 一方向性:ハッシュ値からもとのデータを逆算することはできません。暗号化と異なり「元に戻す」ことを想定していないのが大きな違いです
  2. 同じデータなら常に同じハッシュ値:同じ入力からは必ず同じハッシュ値が得られます
  3. 衝突耐性:異なるデータから同じハッシュ値が生成される可能性は極めて低くなるよう設計されています

ハッシュ関数は次のような場面で活用されます。

  • データの改ざん検知:送信前と受信後のハッシュ値を比較し、データが途中で変更されていないか確認する
  • パスワードの保管:パスワードをそのまま保存するのではなく、ハッシュ値に変換して保存する。万が一データベースが流出しても、元のパスワードがわからない

試験で出るポイント

ハッシュ関数は「元のデータに戻せない(一方向性)」「同じデータなら常に同じハッシュ値になる」という2つの性質がよく出題されます(2019年 問93)。暗号化は復号できますが、ハッシュ関数は復号できないという違いを押さえましょう。

ディスク暗号化とファイル暗号化

Section titled “ディスク暗号化とファイル暗号化”

ここまでは通信中のデータを守る暗号化を見てきましたが、コンピュータに保存されているデータを守る暗号化も重要です。

ディスク暗号化とは、ハードディスクやSSDなどの記憶装置全体を暗号化する技術です。パソコンの盗難や紛失があっても、暗号化されていればディスク内のデータを読み取ることができません。Windowsの「BitLocker」やmacOSの「FileVault」が代表的なディスク暗号化ツールです。

ファイル暗号化とは、特定のファイルやフォルダを個別に暗号化する技術です。ディスク暗号化がストレージ全体を保護するのに対し、ファイル暗号化は必要なファイルだけを選んで暗号化できます。メールの添付ファイルを暗号化して送る場合などに使われます。

方式対象特徴
ディスク暗号化記憶装置全体PC紛失・盗難時にデータ全体を保護
ファイル暗号化個別のファイル特定のファイルだけを選んで保護

試験で出るポイント

ディスク暗号化とファイル暗号化の違いは、暗号化する「対象の範囲」です。記憶装置全体か、個別のファイルかを区別しておきましょう。

アプリで問題を解こう!