暗号技術は、情報セキュリティのCIAのうち主に機密性を守るための中核技術である。試験では、共通鍵暗号方式と公開鍵暗号方式の違い、両者を組み合わせたハイブリッド暗号方式、そして完全性・真正性・否認防止に関わるハッシュ関数と電子署名の仕組みを、それぞれの特徴と使い分けとともに整理しておく必要がある。
共通鍵暗号方式(対称鍵暗号方式)
暗号化と復号に同一の鍵を使う方式を、共通鍵暗号方式(対称鍵暗号方式)と呼ぶ。代表的なアルゴリズムはAES(Advanced Encryption Standard)。計算量が少なく処理速度が速いという長所がある一方、通信を行う相手ごとに鍵を用意し、その鍵を安全に届ける必要があるという「鍵配送問題」を抱える。
公開鍵暗号方式(非対称鍵暗号方式)
暗号化に使う鍵と復号に使う鍵が異なる方式を、公開鍵暗号方式(非対称鍵暗号方式)と呼ぶ。受信者は公開鍵と秘密鍵のペアを用意し、公開鍵を広く公開する。送信者は受信者の公開鍵でデータを暗号化し、受信者は自分だけが持つ秘密鍵で復号する。代表的なアルゴリズムはRSA。鍵配送問題を解決できる一方、共通鍵暗号方式に比べて処理に時間がかかるという短所がある。
共通鍵暗号方式は「速いが鍵配送が難しい」、公開鍵暗号方式は「鍵配送はできるが遅い」というトレードオフの関係にある。この2つの短所を補い合う仕組みがハイブリッド暗号方式である。
ハイブリッド暗号方式
共通鍵暗号方式の「速いが鍵配送が難しい」という短所と、公開鍵暗号方式の「鍵配送はできるが遅い」という短所を補い合うのが、ハイブリッド暗号方式である。データ本体は処理の速い共通鍵暗号方式で暗号化し、その共通鍵(セッション鍵)自体を公開鍵暗号方式で暗号化して相手に届ける。TLS(HTTPS通信)など、実際の通信の多くはこの仕組みを採用している。
ハッシュ関数
任意の長さのデータから、固定長の値(ハッシュ値・メッセージダイジェスト)を生成する関数をハッシュ関数と呼ぶ。同じ入力からは常に同じハッシュ値が得られる一方、ハッシュ値から元のデータを逆算することは事実上不可能という一方向性を持つ。代表的なアルゴリズムはSHA-256。データが少しでも改変されるとハッシュ値が大きく変わるため、通信途中での改ざんを検知する用途、すなわち完全性の確保に用いられる。
電子署名とPKI
電子署名は、公開鍵暗号方式とハッシュ関数を組み合わせて、文書の真正性・完全性・否認防止を実現する仕組みである。送信者はまず文書のハッシュ値を求め、それを自分の秘密鍵で暗号化(署名)して文書に添付する。受信者は送信者の公開鍵でその署名を復号し、自分で計算したハッシュ値と一致するかを確認することで、なりすましや改ざんがないこと、そして送信者が後から「送っていない」と否認できないことを検証できる。
この仕組みを支えるのがPKI(Public Key Infrastructure:公開鍵基盤)である。認証局(CA:Certificate Authority)が、公開鍵の持ち主が本人であることを保証するデジタル証明書を発行し、第三者機関の立場で公開鍵の信頼性を担保する。
暗号化と電子署名では、公開鍵と秘密鍵を使う順番が逆になる。暗号化は「受信者の公開鍵で暗号化→受信者の秘密鍵で復号」、電子署名は「送信者の秘密鍵で署名→送信者の公開鍵で検証」であり、誰の鍵をどちらの用途で使うかを取り違えないようにする。
試験では、「共通鍵暗号と公開鍵暗号のどちらが速いか・鍵配送問題を解決できるか」「ハッシュ関数はなぜ復号ではなく検証に使われるのか」「電子署名はどの鍵で署名し、どの鍵で検証するか」といった、鍵の対応関係を取り違えさせる問題が頻出する。誰が・どの鍵を持ち・何のために使うのかを図で整理しておくとよい。
ぞうログ