情報処理安全確保支援士試験の合格に不可欠な「暗号技術」分野。午前では暗号方式の仕組みが問われ、午後問題では具体的なシステム設計における応用力が試されます。しかし、「PKIや電子署名の登場人物が多くて混乱する」「共通鍵と公開鍵の使い分けがよく分からない」といった悩みを持つ方も多いのではないでしょうか。
本記事では、こうした苦手意識を克服するために、暗号技術の重要キーワードを豊富な図解と身近な具体例を交えて徹底解説します。共通鍵・公開鍵暗号の基本から、ハッシュ関数、電子署名、そしてPKIの仕組みまで、一歩ずつ着実に理解を深め、得点源に変えていきましょう。
目次
【暗号技術の基礎】共通鍵と公開鍵の違いとは?ハイブリッド暗号の仕組みまで解説
情報を守るための最も基本的な技術が「暗号化」です。情報処理安全確保支援士試験では、その代表的な方式である共通鍵暗号方式と公開鍵暗号方式の違いを理解していることが必須となります。両者の特徴と、それぞれの「いいとこ取り」をしたハイブリッド暗号方式までを見ていきましょう。
共通鍵暗号方式:高速だけど「鍵の配送」が課題
共通鍵暗号方式は、暗号化と復号に同じ一つの鍵(共通鍵)を使う方式です。身近な例でいえば、家の鍵(合鍵)のようなものです。自分と相手が同じ合鍵を持っていれば、家のドアに鍵をかけても、相手は合鍵で開けることができます。
- メリット: 暗号化・復号の処理が非常に高速です。そのため、動画のような大きなデータをやり取りするのに向いています。
- デメリット: 鍵配送問題という大きな課題があります。通信を始める前に、どうやって相手に安全に「共通鍵(合鍵)」を渡すのか、という問題です。もし鍵を配送している途中で第三者に盗まれれば、通信内容がすべて解読されてしまいます。
代表的なアルゴリズムには、現在主流のAESや、過去に使われていたDESがあります。
公開鍵暗号方式:安全だけど「処理が遅い」
公開鍵暗号方式は、「公開鍵」と「秘密鍵」というペアの鍵を使う方式です。これは「南京錠と、その鍵」に例えると分かりやすいでしょう。
- 鍵の準備: まず、情報を受け取る側(あなた)が「南京錠(公開鍵)」と「その南京錠を開ける鍵(秘密鍵)」のペアを作ります。
- 鍵の配布: 「南京錠(公開鍵)」だけを、情報を送ってほしい相手に渡します(これは誰に見られても構いません)。「開ける鍵(秘密鍵)」は自分だけで厳重に保管します。
- 暗号化: 相手は、あなたに送りたい情報を箱に入れ、あなたが渡した「南京錠(公開鍵)」でロックして送ります。
- 復号: あなたの手元に届いた箱は、あなたが持つ「開ける鍵(秘密鍵)」でしか開けることができません。
このように、公開鍵暗号方式は安全に鍵をやり取りできるため、共通鍵暗号方式の「鍵配送問題」を解決できます。
- メリット: 鍵の交換が安全に行えます。
- デメリット: 処理が非常に遅く、共通鍵暗号方式と比べて数千倍の時間がかかることもあります。
代表的なアルゴリズムにはRSAや楕円曲線暗号があります。
2つの方式の比較まとめ
特徴 | 共通鍵暗号方式 | 公開鍵暗号方式 |
---|---|---|
使用する鍵 | 1つ(共通鍵) | 2つ(公開鍵と秘密鍵) |
処理速度 | ◎ 速い | △ 遅い |
鍵の管理 | △ 鍵配送問題がある | ◎ 安全に交換可能 |
主な用途 | データ本体の暗号化 | 鍵の交換、電子署名 |
身近な例 | 家の合鍵 | 南京錠と専用の鍵 |
ハイブリッド暗号方式:両者の長所を組み合わせる
実際の通信では、これら2つの方式の長所を組み合わせたハイブリッド暗号方式が広く使われています。具体的には、以下のような手順で通信を行います。
- データの暗号化: まず、やり取りしたいデータそのものは、処理が高速な共通鍵暗号方式で暗号化します。このときに使う共通鍵を「セッション鍵」と呼びます。
- 鍵の暗号化: 次に、そのセッション鍵を、安全に交換できる公開鍵暗号方式を使って暗号化し、相手に送ります。
- 通信開始: セッション鍵を受け取った相手は、自身の秘密鍵でそれを復号します。これで、安全にセッション鍵を共有できました。以降は、このセッション鍵を使って高速な通信を行います。
[図解:ハイブリッド暗号方式の通信フロー]
この仕組みは、Webサイトの閲覧で使われるSSL/TLS通信でも利用されている、非常に重要な技術です。
【改ざん・なりすまし対策】ハッシュ関数・電子署名の仕組みと否認防止の重要性
暗号化によって通信の「盗聴」を防ぐことはできますが、セキュリティの脅威はそれだけではありません。「データが途中で書き換えられる改ざん」や、「送信者になりすますなりすまし」を防ぐ仕組みも不可欠です。ここでは、その中核技術であるハッシュ関数と電子署名について解説します。
ハッシュ関数:データから固有の「指紋」を生成する技術
ハッシュ関数は、任意の長さのデータ(メッセージ)から、規則性のない固定長のデータ(ハッシュ値)を生成する関数です。生成されたハッシュ値は、元のデータの「指紋」のようなものだと考えてください。
- 指紋のように、一人ひとり違う: 元のデータが1ビットでも異なれば、生成されるハッシュ値はまったくの別物になります。
- 指紋から、元の人物を特定できない: ハッシュ値から元のデータを復元することは、計算上ほぼ不可能です。これを一方向性と呼びます。
- 同じ指紋を持つ別人がいない: 異なるデータから同じハッシュ値が偶然生成される可能性が、天文学的に低い性質を持ちます。これを衝突耐性と呼びます。
この性質を利用することで、データの完全性(改ざんされていないこと)を確認できます。例えば、ソフトウェアをダウンロードする際にサイトに記載されているハッシュ値と、ダウンロードしたファイルのハッシュ値を比較し、一致すればファイルが改ざんされていないと判断できます。
代表的なハッシュ関数にはSHA-256やSHA-3があります。過去に使われていたMD5やSHA-1は脆弱性が発見されており、現在は利用が推奨されません。
メッセージ認証コード(MAC):送信者の正しさを加える
ハッシュ値だけでは、「悪意のある第三者がデータとハッシュ値の両方を書き換える」という攻撃を防げません。そこで登場するのがメッセージ認証コード(MAC: Message Authentication Code)です。
MACは、メッセージに加えて送信者と受信者だけが知る「共通鍵」を混ぜてハッシュ値を計算します。これにより、鍵を知らない第三者は正しいMAC値を生成できないため、改ázん検知に加えて送信者認証も可能になります。
電子署名:「実印」と「印鑑証明」の役割をデジタルで実現
MACは送信者と受信者の間でのやり取りには有効ですが、「第三者に対して送信者が本人であることを証明する」ことや、「送信者が後になって『そんなデータは送っていない』と主張すること(否認)を防ぐ」ことはできません。
この問題を解決するのが電子署名です。電子署名は、公開鍵暗号方式を応用して、現実世界の「実印」と「印鑑証明」のような役割を果たします。
電子署名の仕組みは、暗号化とは逆に、秘密鍵で署名(暗号化)し、公開鍵で検証(復号)するのがポイントです。
- 署名者(送信者)の作業
- 送りたいメッセージ全体のハッシュ値をとる。
- そのハッシュ値を、自身の秘密鍵で暗号化する。これが「電子署名」。
- 元のメッセージと、暗号化した電子署名をセットで相手に送る。
- 検証者(受信者)の作業
- 受信したメッセージから、署名者と同じハッシュ関数を使ってハッシュ値を計算する(①)。
- セットで送られてきた電子署名を、署名者の公開鍵を使って復号する。すると、元のハッシュ値に戻るはず(②)。
- ①と②の結果がピッタリ一致すれば、「署名者の秘密鍵でのみ作成可能」かつ「データは改ざんされていない」ことが証明できる。
[図解:電子署名の仕組み(署名プロセスと検証プロセス)]
このように、電子署名は「完全性」「送信者認証」に加えて、第三者に対しても証明可能であることから「否認防止」という非常に重要な役割を担っています。これは電子契約サービスなどで中核をなす技術です。
公開鍵の信頼性を保証するPKIとは?認証局から証明書失効まで徹底解説
前の章で、電子署名は「公開鍵」を使って検証すると学びました。しかし、ここで一つ大きな疑問が生まれます。「その公開鍵は、本当に送ってきた本人のものなのか?」という点です。悪意のある第三者が「これが本人の公開鍵だ」と偽って、偽の公開鍵を渡してくるかもしれません(中間者攻撃)。
この「公開鍵の持ち主が誰であるか」を社会的に保証するための仕組み全体が、PKI(Public Key Infrastructure:公開鍵基盤)です。
PKIの登場人物:「役所」と「印鑑証明」に例えて理解する
PKIを理解するコツは、登場人物とその役割を覚えることです。これは、現実世界の「印鑑証明」の仕組みに非常によく似ています。
- 認証局(CA: Certification Authority)
役割: 公開鍵の持ち主が本人であることを審査し、お墨付きを与える信頼された第三者機関です。
例えるなら: 申請を受けて印鑑証明書を発行する「役所」。 - デジタル証明書(公開鍵証明書)
役割: 認証局が「この公開鍵は、確かにこの持ち主のものです」と保証した電子的な証明書。中には、公開鍵、持ち主の情報、有効期間などが含まれ、最後に認証局が電子署名を行っています。
例えるなら: 役所が発行する「印鑑登録証明書」そのもの。 - 利用者(サブジェクト)と検証者
役割: 証明書を発行してもらう人や組織を「利用者」、その証明書が本物か確認する側を「検証者」と呼びます。
例えるなら: 印鑑登録を申請する「市民」と、契約時に印鑑証明書を確認する「相手方」。 - リポジトリ
役割: 発行されたデジタル証明書や、後述する失効リストを保管し、誰もが参照できるようにしておくためのデータベースです。
[図解:PKIの登場人物と信頼の連鎖]
この仕組みにより、私たちは直接会ったことのない相手の公開鍵でも、信頼できる認証局(役所)が発行した証明書(印鑑証明書)を確認することで、その正当性を信じることができるのです。
なぜ認証局を信頼できるのか?:信頼のチェーン
では、そもそもなぜ私たちは認証局(CA)を信頼できるのでしょうか。それは、私たちが使うPCのOSやブラウザには、「ルート認証局(ルートCA)」と呼ばれる、世界的に信頼された最上位の認証局の証明書が予めインストールされているからです。
このルートCAを信頼の起点(トラストアンカー)として、ルートCAが下位の認証局を証明し、その下位認証局がさらに別の認証局や利用者の証明書を発行する…という形で、信頼が鎖(チェーン)のようにつながっています。これを信頼のチェーン(または証明のパス)と呼びます。
証明書の有効期限と「失効」の仕組み
デジタル証明書には有効期間がありますが、秘密鍵が漏洩した場合など、期間内であっても証明書を緊急で無効化する必要があります。これを証明書の失効と呼びます。その確認方法は主に2つです。
- CRL(Certificate Revocation List:証明書失効リスト)
認証局が「失効した証明書のシリアル番号リスト」を定期的に発行する方式です。検証者はこのリストをダウンロードして、対象の証明書が載っていないかを確認します。
課題: 発行が定期的(例:1日1回)なためリアルタイム性に欠け、リストが巨大になると検証の負荷が大きくなります。 - OCSP(Online Certificate Status Protocol)
証明書の有効性を、検証者が都度オンラインで認証局に問い合わせる方式です。
利点: リアルタイムで状態を確認でき、CRLが持つ課題を解決します。
より厳格なEV証明書
Webサイトで使われるSSL/TLS証明書の中には、EV証明書(Extended Validation Certificate)という種類があります。これは、認証局が企業の法的・物理的な実在性を非常に厳格な基準で審査した上で発行されるものです。対応するブラウザでアクセスすると、アドレスバーが緑色になったり、組織名が表示されたりするため、フィッシングサイトとの見分けがつきやすく、サイトの信頼性を高くアピールできます。
暗号の強度を左右する「鍵管理」│鍵長・更新とKMSの重要性
どんなに頑丈な金庫を用意しても、その金庫の「鍵」を誰でもアクセスできる机の上に置きっぱなしにしていたら、全く意味がありません。暗号技術もこれと同じで、暗号アルゴリズムの安全性は、その「鍵」がどれだけ厳重に管理されているかに大きく依存します。この鍵の生成から廃棄までの一連のプロセスを鍵管理と呼び、セキュリティ運用の要となります。
暗号強度を決定づける「鍵長」
鍵管理の第一歩は、適切な強度の鍵を生成することです。暗号の強さを測る指標の一つに鍵長(Key Length)があります。
- 鍵長とは: 鍵を構成するデータのビット数のことです。例えば、AES-256の「256」は鍵長が256ビットであることを示します。
- 長いほど安全: 鍵長が長ければ長いほど、鍵の組み合わせのパターンが爆発的に増加します。これにより、考えられるすべての鍵を試す「総当たり攻撃(ブルートフォースアタック)」で解読することが非常に困難になります。
- トレードオフの関係: ただし、鍵長を長くすると安全性が高まる一方で、暗号化・復号にかかる計算量が増え、処理速度が低下するというトレードオフの関係にあります。
システムを設計する際は、保護対象の情報の重要度と、求められる性能要件のバランスを考慮して、適切な鍵長を選択する必要があります。
鍵のライフサイクル:生成から廃棄まで
暗号鍵は、一度作って終わりではありません。鍵には「生成・保管・配布・利用・更新・廃棄」といった一連のライフサイクルが存在し、それぞれの段階で適切な管理が求められます。
特に試験で問われやすいのが「鍵更新」の重要性です。なぜ定期的な鍵の更新が必要なのでしょうか?
- 漏洩リスクの低減: 同じ鍵を長期間使い続けると、それだけ攻撃者に狙われる時間も長くなり、漏洩のリスクが高まります。
- 被害の局所化: 万が一、鍵が危殆化(きたいか:危険な状態になること)しても、定期的に更新されていれば、被害は古い鍵で暗号化されたデータだけに限定されます。
これは、私たちがWebサービスのパスワードを定期的に変更するのと同じ理屈です。また、役目を終えた鍵は、過去のデータが復号されないよう、復元不可能な手段で確実に廃棄することも重要です。
効率的な鍵管理を実現する「KMS」
数百、数千もの暗号鍵を人間が手動で管理するのは、非常に複雑でヒューマンエラーの温床となります。そこで活用されるのがKMS(Key Management System)です。
KMSは、鍵のライフサイクル全体を一元的に管理するための専用システムです。
- 安全な鍵の生成
- 鍵のバックアップと保管
- アクセス制御に基づいた鍵の配布
- スケジューリングされた鍵の更新・廃棄
- 鍵の利用状況に関する監査ログの記録
これらの機能をKMSに集約することで、人為的なミスを防ぎ、効率的で安全な鍵管理を実現できます。AWS Key Management Service (KMS) や Azure Key Vault といったクラウドサービスで広く利用されており、現代のシステム開発において必須のコンポーネントとなっています。
【午後問題対策】SSL/TLSハンドシェイクとVPN(IPsec)の仕組み
これまで学んできた共通鍵・公開鍵暗号、ハッシュ関数、デジタル証明書といった技術要素は、実際には「プロトコル」という形で組み合わされ、私たちの通信の安全を守っています。ここでは、情報処理安全確保支援士試験の午後問題でも頻出の、代表的な2つの暗号プロトコルを見ていきましょう。
SSL/TLS:ブラウザとサーバ間の通信を保護する
SSL/TLSは、主にWebブラウザとWebサーバ間の通信(HTTP)を暗号化するためのプロトコルです。URLがhttps://
で始まるサイトで利用されており、私たちのオンラインショッピングやネットバンキングの安全性を支えています。
このSSL/TLS通信を開始する前の「お約束」のプロセスを、SSL/TLSハンドシェイクと呼びます。このハンドシェイクの主な目的は以下の3つです。
- サーバの認証: 通信相手のサーバが本物か、偽物ではないかをデジタル証明書を使って検証します。
- 暗号方式の合意: 通信で使う暗号化アルゴリズムやハッシュ関数などを、ブラウザとサーバの間で「今回はこのセットでいこう」と合意します(暗号スイートの決定)。
- 共通鍵(セッション鍵)の共有: 実際の通信データを暗号化するための共通鍵を、公開鍵暗号の仕組みを使って安全に交換します。まさにハイブリッド暗号方式の実用例です。
なお、最新バージョンのTLS 1.3では、セキュリティを向上させるために、RSA鍵交換など古い方式が廃止され、ハンドシェイクの高速化も図られています。
IPsec:ネットワーク層で通信を丸ごと守るVPNの主力技術
IPsec (IP Security Architecture) は、ネットワーク層(IP層)で動作する暗号化プロトコルです。Web通信に特化したSSL/TLSとは異なり、IPパケットそのものを暗号化するため、特定のアプリケーションに依存せず、すべてのIP通信を保護対象にできる点が大きな特徴です。
この特性を活かした最も代表的な用途が、VPN (Virtual Private Network) です。VPNは、インターネットのような公衆網を介して、あたかも組織内の専用線(プライベートネットワーク)であるかのように安全な通信を実現する技術です。IPsecを利用することで、以下のようなVPNを構築できます。
- 拠点間VPN: 本社と支社のネットワークを安全に接続する。
- リモートアクセスVPN: 社外にいる従業員が、自宅や外出先から社内ネットワークに安全にアクセスする。
IPsecは、今日のセキュアなネットワーク構築に欠かせない、非常に重要なプロトコルです。
まとめ:暗号技術の全体像を掴み、得点源にしよう
本記事では、情報処理安全確保支援士試験の合格に欠かせない暗号技術について、基本から応用までを体系的に解説してきました。
- 暗号化(共通鍵・公開鍵・ハイブリッド) は「盗聴」を防ぐ
- ハッシュ関数は「改ざん」を検知する
- 電子署名とPKIは「なりすまし」と「否認」を防ぐ
- 鍵管理は、これらすべての安全性を運用面で支える土台となる
このように、一つひとつの技術が異なる脅威に対応するために存在し、互いに連携することで、私たちの情報セキュリティは成り立っています。
午前問題では個々の知識が問われますが、午後問題では、これらの技術がなぜ必要で、どのように組み合わせてシステムの安全性を確保するのか、という本質的な理解が問われます。
単に用語を暗記するだけでなく、それぞれの技術の「目的」と「関係性」を意識して全体像を掴むことが、合格への一番の近道です。本記事が、皆さんの学習の一助となれば幸いです。