みなさんはインターネットで個人情報やクレジットカード番号を入力する時、どれくらい安全だと感じていますか?

日常的に行われるオンライン取引やSNSの利用、メールのやり取りなど、デジタル空間は私たちの生活に欠かせない存在となっています。しかし、このデジタルの世界は見えない脅威に満ちています。

みなさんも、不正アクセスやフィッシング攻撃、ランサムウェアなどのセキュリティインシデントのニュースを目にしない日のほうが珍しいのではないでしょうか?これらのインシデントは、個人のプライバシーや機密情報の漏洩だけでなく、ビジネスの信頼性やブランドイメージにも大きなダメージを与えることがあります。

この章では、セキュリティの基本的な概念から、具体的な脅威やその対策、そして安全にオンライン活動を行うためのベストプラクティスについて解説していきます。最先端の技術やプロトコルを学ぶことはもちろん大切ですが、それと同時に、新人エンジニアの皆さんがオンライン行動を見直し、常にセキュリティ意識を高く保つことが最も重要です。私たち一人一人が正しい知識と態度でセキュリティの問題に取り組むことで、安全なデジタル社会の構築に貢献することができます。

この章を勉強すれば、インターネットで情報をやり取りする際にどの程度安心して良いのか?どういった点に気をつけたら良いのかが分かります。

1. 情報セキュリティとは?

情報セキュリティの3大要素は「CIA」で表されます。これは情報セキュリティにおける重要な原則を示す頭文字であり、以下の3つの要素を指します。

  1. 機密性 (Confidentiality)は、情報が漏れないようにするということです。情報が不正なアクセスから保護され、権限のない人やシステムから守られることです。つまり、情報はその所有者または特定の権限を持つ者以外にはアクセスできないようにします。機密性を守ることで、情報が漏洩することを防止し、組織のセキュリティが確保されます。情報セキュリティというと誰もが最初にイメージするのは、この機密性ではないでしょうか?しかし、情報セキュリティには他の2つの要素もあるのです。
  2. 完全性 (Integrity)は、情報が間違っていないということです。情報が意図した状態と一致していることを意味します。つまり、情報が改ざんされたり、意図せずに変更されたりすることを防ぐことです。情報の完全性が保たれていることで、データの正確性と信頼性が確保され、情報が信用できるものとなります。
  3. 可用性 (Availability)は、使いたいときにいつでも情報にアクセスできるということです。情報が必要なときに適切な人々がアクセスできる状態であることを指します。情報が利用できない状況では、業務の継続性に支障をきたします。情報の可用性を確保するために、障害対策や災害復旧などの対策が必要とされます。

これらの3つの要素は、情報セキュリティの基本的な原則であり、組織が情報セキュリティを適切に管理し、情報資産を保護するために重要です。情報セキュリティ対策は、これらの要素をバランス良く考慮して計画し、実施することが求められます。

新人エンジニア
CIAとは?

例題

基本情報処理技術者試験 平成28年秋期 午前問37 情報の完全性の問題にチャレンジしてみましょう。

2. 情報セキュリティリスクとは?

情報セキュリティリスクは、情報資産の価値、脅威、および脆弱性の3つの要素によって計算・評価されることが一般的です。

情報セキュリティリスク = 情報資産の価値 × 脅威 × 脆弱性

それぞれの要素について詳しく見ていきましょう。

  1. 情報資産の価値とは、その情報が組織にとってどれだけ重要かを示します。情報資産には機密性の高い顧客データ、重要な業務データ、特許情報、社内プロセスなどが含まれます。リスク評価では、情報資産の価値を定量的または定性的に評価します。
  2. 脅威とは、情報資産を悪意を持つ者や自然災害、技術的な問題などが損傷や漏洩させる可能性を指します。脅威は多岐にわたり、ハッカーやマルウェア、内部者の不正行為、物理的な盗難や災害などが含まれます。リスク評価では、組織が直面する脅威を識別し、それらの脅威が発生する確率や影響度を評価します。
  3. 脆弱性とは、情報資産を攻撃や損傷から保護するための不備や弱点を指します。脆弱性が存在すると、脅威が実現した際により大きな被害をもたらす可能性が高まります。リスク評価では、システムやプロセスの脆弱性を特定し、それらの脆弱性が悪用されるリスクの度合いを評価します。

これらの要素を組み合わせて情報セキュリティリスクを評価することで、組織はリスクを優先順位づけし、適切な対策を実施することができます。リスク評価を定期的に実施し、変化する脅威や新たな脆弱性を考慮に入れることで、情報セキュリティ対策をより効果的に進めることが可能となります。

以下では、情報セキュリティの脅威と脆弱性を紹介します。

情報セキュリティの脅威

情報セキュリティの脅威は多岐にわたり、常に進化しています。これらの脅威は、情報資産を攻撃したり、損壊させたり、漏洩させたりする可能性があります。以下に、一般的な情報セキュリティの脅威の代表例を挙げます。

  1. マルウェアは悪意を持つソフトウェアの総称で、ウイルス、ワーム、トロイの木馬、スパイウェアなどが含まれます。マルウェアは感染したシステムやネットワークを制御したり、データを盗んだり、システムの機能を妨害したりすることがあります。
  2. フィッシングは、偽のウェブサイトや電子メールを用いて、ユーザーの個人情報やログイン情報を詐取する詐欺行為です。被害者は本物と信じ込んだウェブサイトやメールに情報を入力してしまう可能性があります。
  3. ハッキングは、悪意を持つ者が不正アクセスを試みる行為です。脆弱性を突いたり、不正なログイン情報を使ってシステムやネットワークに侵入することで、機密情報を盗み出したり、サービスを妨害します。
  4. データ漏洩の脅威があります。 情報が誤って公開される、セキュリティ対策が不十分なままで放置されるなどの理由で、機密情報や個人情報が外部に漏れ出すことがあります。
  5. 内部者の不正行為の脅威があります。組織の従業員や関係者が意図的に情報を悪用したり、不正アクセスしたりすることもあります。特権アクセスを持つ者の悪意による行為が、特に危険とされます。
  6. サイバー攻撃は、国家や組織によってそのインフラストラクチャに対して行われる攻撃です。
  7. DoS 【Denial of Service】攻撃は、サービス提供者のシステムに大量のリクエストを送り込むことで、システムを過負荷にさせて正常なサービス提供を妨害する攻撃です。

これらの脅威は個別にも、組み合わさっても情報セキュリティに対して大きな脅威となります。皆様のようなITエンジニアは脅威動向を把握し、適切な対応策を講じることが重要です。

例題

基本情報処理技術者試験 平成28年春期 午前問37 SQLインジェクションの問題にチャレンジしてみましょう。

実験

世界中で現在どのような攻撃が行われているのかをリアルタイムで可視化するサイトがいくつか存在しています。

講師の指導の下、そのようなサイトにアクセスしてみましょう。

情報セキュリティの脆弱性

情報セキュリティの脆弱性とは、システムやネットワーク、ソフトウェア、プロセスなどに存在する弱点や不備のことを指します。これらの脆弱性が悪意を持つ者によって悪用されると、情報セキュリティへの脅威が高まり、機密情報の漏洩やシステムの妨害などのリスクが生じます。

脆弱性の例としては以下のようなものがあります。

  • ソフトウェアにはセキュリティ上の欠陥(セキュリティホール)が存在することがあります。未修正の脆弱性を悪用することで、ハッカー(クラッカー)はシステムに侵入したり、マルウェアを実行したりすることが可能となります。
  • システムやデータベースに対して不適切なアクセス権が設定されている場合、権限のないユーザーが機密情報にアクセスできる可能性があります。
  • データが適切に暗号化されていない場合、機密情報が第三者によって傍受されたり、改ざんされたりするリスクが高まります。暗号化についてはこのあとの章で学びます。
  • ウェブアプリケーションなどが不正な入力を適切に検証(バリデーション【validation】といいます)しない場合、クロスサイトスクリプティング(XSS)SQLインジェクションといった攻撃を受ける恐れがあります。SQLインジェクション対策については、時間があればJavaWebアプリケーションで学びます。
  • 組織が適切なセキュリティポリシーを策定・実施していない場合、従業員の意識が低下し、セキュリティ対策の維持が困難になる可能性があります。

脆弱性はソフトウェアやシステムがアップデートされたり、セキュリティ対策が強化されたりすることで、修正される場合があります。しかし、脆弱性の存在は常にリスクとして認識し、適切なセキュリティ対策を継続的に実施することが重要です。皆様のようなITエンジニアは脆弱性を監視し、早期に対応することで、セキュリティレベルの向上とリスクの低減が可能となります。

2. 情報セキュリティ対策の基本

情報セキュリティ対策の基本として以下のようなテーマがあります。

  1. 認証は、ユーザーやシステムが正当なものであることを確認することです。ユーザーがシステムにアクセスする際に、ユーザー名とパスワード、生体認証、多要素認証などを使用して正当性を確認します。認証により、権限のないアクセスを制限することができます。
  2. 暗号化デジタル署名は、データを特定のアルゴリズムを使って暗号化し、不正なアクセスから保護します。暗号化されたデータは、正しい鍵を持つ者しか解読できません。デジタル署名は、データの真正性と信頼性を保証するための仕組みであり、公開鍵暗号方式を利用してデータにデジタル署名を付与します。
  3. 公開鍵基盤【Public Key Infrastructure : PKI】は、暗号通信を実現するための基盤です。PKIは、公開鍵と秘密鍵のペアを生成し、公開鍵は公開され、秘密鍵は所有者だけが保持します。デジタル署名やセキュアな通信において、PKIは信頼性とセキュリティを確保する重要な要素となります。

以下でもう少し詳しく見てみましょう。

2.1 アクセス権制御

アクセス権制御【Access Control】は、システムやデータへのアクセスを適切に管理し、権限のないアクセスを制限することを目的としています。アクセス権制御には、認証【Authentication】、認可【Authorization】、およびアクセス権制御の原則が含まれます。

1.認証は、ユーザーやシステムが正当なものであることを確認することです。情報システムにアクセスしようとするユーザーが自分自身を確認し、その正当性を証明する必要があります。一般的な認証方法には以下のようなものがあります。

  • ユーザー名とパスワード
  • 生体認証(指紋、虹彩、顔認識など)
  • セキュリティトークンやOTP【One-Time Password】
  • 多要素認証(複数の認証方法を組み合わせる)

2.認可は、認証が完了したユーザーに対して、どのリソースに対してどのような操作が許可されるかを決定するプロセスです。つまり、認証されたユーザーに対して、アクセス権限の範囲を指定します。認証によってユーザーが正当なものであることが確認されても、そのユーザーが特定のリソースにアクセスできるかどうかは、認可によって決定されます。

アクセス権制御には重要な原則がありますのでその一例を挙げます。

  • 最小特権の原則とは、ユーザーには必要最小限のアクセス権限のみを与えるべきであるという原則です。不要な権限を持つユーザーの存在は、リスクを増大させることになります。
  • 分割アクセスの原則とは、特権のある機能やデータへのアクセスを複数のユーザーで分割し、権限の集中を防ぐことです。これにより、誤用や悪用のリスクを低減します。

これらのアクセス権制御の原則に従って、適切な認証と認可の仕組みを構築し、情報セキュリティを確保することが重要です。

例題

基本情報処理技術者試験 平成27年秋期 午前問45 2要素認証の問題にチャレンジしてみましょう。

話し合ってみましょう

パスワード管理について知っていることを挙げてください。

例:付箋紙等に貼り出さない

2.2 暗号とデジタル署名の基本

インターネット上の脅威には、盗聴、改ざん、なりすましなどが含まれます。これらの脅威に対して、情報の機密性や完全性、可用性を確保するために暗号とデジタル署名が有効な対策となります。

  1. 盗聴対策には暗号が有効です。盗聴とは、通信データを不正に傍受することであり、暗号化を用いることでデータの機密性を保護します。暗号化は、通信データを特定のアルゴリズムによってランダムな文字列に変換することで、不正アクセス者が理解できない形式に変換します。通信データが暗号化されている場合、盗聴者がデータを理解することは非常に困難になります。
  2. 改ざん・なりすまし対策にはデジタル署名が有効です。 改ざんは、通信データが第三者によって不正に書き換えられることを指し、なりすましは通信の送信者が偽装されることを意味します。デジタル署名は、通信データに対して送信者の秘密鍵による署名を付与することで、データの改ざんを検知し、送信者の真正性を確認します。受信者は送信者の公開鍵を使って署名の検証を行い、データが改ざんされていないこと(メッセージ認証)と、送信者が本物であること(エンティティ認証)を確認できます。

暗号

共通鍵暗号方式

共通鍵暗号方式【Symmetric Key Encryption】は、暗号化と復号に同じ鍵(共通鍵)を使用する暗号方式のことを指します。暗号化と復号に同じ鍵を用いるため、暗号化と復号の両方が高速に実行される利点があります。しかし、共通鍵を安全に共有する必要があるため、以下の2つの課題があります。

①鍵の配布 ②鍵の管理

これらの課題を解決したのが公開鍵暗号方式なのですが、それはこのあとすぐに学びます。

共通鍵暗号方式の基本的な仕組みは以下の通りです。

  1. 暗号化と復号に使用する共通鍵を生成します。この鍵はランダムなビット列であり、鍵の長さによって暗号の強度が決まります。
  2. 送信者は、平文(元のデータ)を共通鍵を使って暗号文暗号化されたデータ)に変換します。共通鍵を持つ者だけが暗号文を復号して平文に戻すことができます。
  3. 受信者は、共通鍵を使って復号します。暗号文を共通鍵を使用して平文に戻すことを復号と呼びます。暗号化と逆の手順で行われます。
新人エンジニア
共通暗号方式

この後学ぶ公開鍵暗号方式に対しての共通鍵暗号方式の利点は、高速であることと実装が容易であることです。一方で、鍵の配布と管理が難しいという問題点があります。共通鍵を安全に共有する必要があるため、鍵の取り扱いには慎重さが求められます。

共通鍵暗号方式は、主にデータの暗号化やセキュアな通信などに広く使用されています。例えば、HTTPS通信で使用される暗号化アルゴリズムであるAES【Advanced Encryption Standard】は共通鍵暗号方式を利用しています。また、ファイルの暗号化やデータベースの暗号化にも共通鍵暗号方式が使用されます。

公開鍵暗号方式

公開鍵暗号方式【Public Key Encryption】は、暗号化と復号に異なる鍵ペア(公開鍵と秘密鍵)を使用する暗号方式のことを指します。この方式では、暗号化には公開鍵を用いてデータを暗号化し、復号にはそれに対応する秘密鍵を使用して暗号文を解読します。公開鍵は公開されているため、誰でも暗号化ができますが、その暗号文は秘密鍵を持つ者だけが復号できる仕組みです。

共通鍵暗号方式には①鍵の共有と②鍵の管理に課題がありました。それらの課題を解決するのが公開鍵暗号方式です。

公開鍵暗号方式の基本的な仕組みは以下の通りです。

  1. 公開鍵と秘密鍵のペアを生成します。公開鍵は誰でも知っている公開された鍵であり、秘密鍵は所有者だけが知っている秘密の鍵です。
  2. 送信者は、平文(元のデータ)を公開鍵を使用して暗号化します。公開鍵を持つ者がデータを暗号化できますが、暗号化されたデータを復号するためには秘密鍵が必要です。
  3. 受信者は、暗号文を秘密鍵を使用して平文に戻します。復号といいます。暗号化されたデータを復号することは、秘密鍵を持つ者だけが行える操作です。
新人エンジニア
公開鍵暗号方式

公開鍵暗号方式の利点は、鍵の配布が簡単であり、秘密鍵を安全に保持することができる点です。公開鍵は公開されているため、暗号化に使用する鍵を誰でも入手できますが、それを復号するためには対応する秘密鍵が必要です。そのため、秘密鍵の保持と管理が重要となります。

公開鍵暗号方式は、主にデータの暗号化やデジタル署名などに広く使用されています。例えば、SSL/TLS通信で使用される暗号化アルゴリズムであるRSAや、デジタル署名に使用される暗号アルゴリズムであるDSAやECDSAは公開鍵暗号方式を利用しています。

ただし、公開鍵暗号方式は計算過程が複雑なため暗号化と復号に時間がかかるという欠点があります。その欠点を補うのが次のハイブリッド方式です。

例題

基本情報処理技術者試験 平成30年春期 午前問38 公開鍵と秘密鍵の問題にチャレンジしてみましょう。

ハイブリッド方式

ハイブリッド方式【Hybrid Encryption】は、公開鍵暗号方式と共通鍵暗号方式を組み合わせた暗号化手法のことを指します。この方式は、両方の暗号方式の利点を組み合わせることで、効率的でセキュアな暗号化を実現します。

ハイブリッド方式の基本的な手順は以下の通りです。

  1. 共通鍵を生成します。 最初に共通鍵暗号方式を使用して、ランダムな共通鍵を生成します。この共通鍵は、後のデータの暗号化に使用されます。
  2. 公開鍵暗号方式による共通鍵の暗号化をします。 生成された共通鍵を、受信者の公開鍵を使って暗号化します。
  3. 共通鍵暗号方式によるデータの暗号化をします。データ(平文)を、共通鍵を使って暗号化します。この共通鍵は、前述のステップ2で暗号化されたものと同じです。
  4. 暗号化された共通鍵と、共通鍵暗号方式で暗号化されたデータを受信者に送信します。
  5. 受信者が自分の秘密鍵を使い共通鍵を復号します。 受信者は、受信した暗号化された共通鍵を自身の秘密鍵を使って復号し、元の共通鍵を取得します。
  6. 取得した共通鍵を使用して、共通鍵暗号方式で暗号化されたデータを復号します。

下図では公開鍵暗号方式とハイブリッド方式を比較しています。

新人エンジニア
公開鍵暗号方式とハイブリッド方式の比較

ハイブリッド方式の利点は、公開鍵暗号方式の特長である鍵の交換や管理が容易であることと、共通鍵暗号方式の特長である高速であることを組み合わせている点です。

共通鍵暗号方式は高速で効率的なため、データの大容量暗号化に適していますが、鍵の配布や管理に課題がありました。一方、公開鍵暗号方式はセキュアに鍵の交換ができるが、演算が比較的遅く、大容量データを直接暗号化するのは効率的ではありません。

ハイブリッド方式では、公開鍵暗号方式で共通鍵を安全に交換し、その共通鍵を使ってデータを高速に暗号化することができるため、両方の利点を活かしたセキュアな暗号化が可能となります。

例題

基本情報処理技術者試験令和2年免除 午前問40 ハイブリッド暗号方式の問題にチャレンジしてみましょう。

暗号を使うことで盗聴対策ができることは理解いただいたと思います。あとは、改ざんとなりすまし対策ですね。

改ざん対策にはハッシュ関数が関わってきます。

ハッシュ関数

ハッシュ関数【Hash Function】は、任意の長さのデータを固定長の一意のランダムな値(ハッシュ値やダイジェストと呼ばれる)に変換する関数のことを指します。ハッシュ関数は、主にデータの検索やデータの整合性確認などで使用されます。英語の【Hash】にはごちゃまぜにするという意味があります。(朝マックで食べられるのがハッシュドポテトですね)ハッシュ関数も同じでランダムな文字列が生成されます。また、ニュースのダイジェストは必ず3分間などの決まった時間に収まるようになっています。ハッシュ関数も同じで必ず一定の長さの文字列になります。

以下に、ハッシュ関数の特徴と用途について説明します。

特徴
  1. ハッシュ関数は一方向性を持ちます。つまり、元のデータからハッシュ値を計算することは容易ですが、逆にハッシュ値から元のデータを復元することは困難です。まれにハッシュ関数と暗号を混同する方がいますが、ハッシュ関数は元に戻せない、暗号は(鍵さえあれば)元に戻せると覚えましょう。
  2. 異なるデータに対して同じハッシュ値が生成されることがある現象を「ハッシュ衝突」と呼びます。ハッシュ関数は、異なる入力に対して同じハッシュ値を生成する可能性を最小限に抑えるように設計されています。より大きなハッシュ値空間や良好なハッシュアルゴリズムによって、ハッシュ衝突の発生を防ぐことが重要です。
  3. ハッシュ関数は、任意の入力データに対して固定長のハッシュ値を出力します。出力サイズは一定であり、入力の長さによらず常に同じ長さのハッシュ値が得られます。
用途
  1. 改ざんの検出に使われます。 ハッシュ関数はデータの整合性確認に使用されます。例えば、ファイルのハッシュ値を計算しておき、ファイルが後に改ざんされていないかを検証することができます。ハッシュ値が異なる場合、データが改ざんされている可能性があります。
  2. パスワードの保存に使われます。 パスワードなどの機密情報を保存する際に、ハッシュ関数を用いてハッシュ化します。このようにして、実際のパスワードを保存せずに、ハッシュ値のみをデータベースに保存することができます。認証時には、ユーザーが入力したパスワードをハッシュ化してデータベース内のハッシュ値と比較します。このことはJavaWebアプリケーションを学ぶ際にお話したいと思います。

実験

以下のJavaプログラムはSHA256というハッシュ値を計算するプログラムです。(ソースコードの詳細を理解する必要はありません)

講師の指導の元、実行結果が以下と同じになることを確かめなさい。

SHA-256ハッシュ値: 315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3

また、「ハッシュ化したい文字列」を一文字変えるだけで実行結果が全く異なることを確かめなさい。

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SHA256Example {
	public static void main(String[] args) {
		String input = "Hello, world!"; // ハッシュ化したい文字列

		try {
			// MessageDigestオブジェクトの取得とSHA-256ハッシュ計算
			MessageDigest digest = MessageDigest.getInstance("SHA-256");
			byte[] hash = digest.digest(input.getBytes(StandardCharsets.UTF_8));

			// ハッシュ結果を16進数文字列に変換して表示
			StringBuilder hexString = new StringBuilder();
			for (byte b : hash) {
				String hex = String.format("%02x", b);
				hexString.append(hex);
			}
			System.out.println("SHA-256ハッシュ値: " + hexString.toString());
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
	}
}
デジタル署名

デジタル署名は改ざんやなりすまし対策に非常に有効な技術です。デジタル署名は、データの真正性と信頼性を保証するために使用される暗号技術の一種です。デジタル署名は公開鍵暗号方式の応用なのですが、秘密鍵と公開鍵の使い方が公開鍵暗号方式のときとは逆になります。つまり、送信者が自身の秘密鍵で暗号化し、受信者が送信者の公開鍵で復号します。

以下に、デジタル署名の流れを説明します。なお、送信者(署名者)(下図の例ではA)の公開鍵は事前に受信者(B)に共有済みであるとします。

  1. 平文の作成をします。 送信者が署名したいデータ(メッセージ、ファイルなど)を用意します。
  2. ハッシュ化をします。 送信者は、作成したデータに対してハッシュ関数を使ってハッシュ値(メッセージダイジェスト)を計算します。ハッシュ関数は元のデータを固定長の一意の値に変換するため、同じデータに対しては常に同じハッシュ値が生成されます。
  3. 秘密鍵による署名をします。 送信者は、ハッシュ値に対して自身の秘密鍵を使ってデジタル署名を作成します。秘密鍵は送信者だけが知っている鍵であり、他者には秘密に保持されます。
  4. データとデジタル署名の送信をします。 送信者は、データとデジタル署名を受信者に送信します。受信者は送信者の公開鍵を持っているため、デジタル署名を検証することができます。
  5. エンティティ認証をします。 受信者は、受信したデータに対してハッシュ関数を適用し、送信者の公開鍵を使ってデジタル署名を検証します。送信者の公開鍵によってデジタル署名を復号できたということは、すなわち、送信者は公開鍵と対になる秘密鍵を持っている送信者本人ということになります。これをエンティティ認証といいます。
  6. メッセージ認証をします。 元のハッシュ値と受信したデータのハッシュ値を比較します。もしハッシュ値が一致すれば、データが改ざんされていないことを確認できます。
新人エンジニア
デジタル署名

デジタル署名を使用することで、データの改ざんを検知し、送信者の信頼性を確認することができます。デジタル署名は、データのセキュリティを強化し、データの真正性を確保するために良く使われています。特に、重要な文書、電子メール、ソフトウェアの配布、オンライン取引などでデジタル署名が利用されています。

例題

基本情報処理技術者試験 平成22年春期 午前問40 デジタル署名の問題にチャレンジしてみましょう。

2.3 公開鍵基盤

公開鍵基盤【Public Key Infrastructure、PKI】は、デジタル証明書やデジタル署名などのセキュリティ関連の技術を適切に管理・運用するための枠組みを指します。PKIは公開鍵暗号方式を中心に構築され、セキュリティに関連するさまざまな機能を提供します。

公開鍵基盤とは

公開鍵基盤の主な要素や概念について印鑑証明と対比させて説明します。

例えば、銀行口座を作る際には本人確認が必要です。どのようにして本人確認するかといえば、実印と市役所発行の印鑑証明書を金融機関に提出します。公開鍵基盤における鍵ペアは印鑑、デジタル証明書は印鑑証明書に例えることができます。

  1. 認証局【Certification Authority, CA】は、デジタル証明書を発行するための信頼性のある機関です。ユーザーやサーバーの公開鍵に対応するデジタル証明書を署名する役割を担います。認証局は公開鍵の所有者の身元を確認し、デジタル証明書の信頼性を保証します。印鑑証明の例では市役所に当たるのが認証局です。
  2. 公開鍵基盤では、公開鍵と対応する秘密鍵のペアが生成されます。公開鍵は他者と共有する公開された鍵であり、秘密鍵は所有者だけが知っている秘密の鍵です。デジタル証明書には公開鍵が含まれており、秘密鍵は所有者がデータを暗号化したり、デジタル署名を作成する際に使用されます。印鑑証明書の例では印鑑に当たります。
  3. デジタル証明書【Digital Certificate】は、公開鍵とその所有者の情報(例: ユーザー名、組織名)を含むデータの塊です。認証局が署名したデジタル証明書は、公開鍵の所有者が信頼性のある実体であることを証明します。公開鍵の信頼性を確保するために使用されます。印鑑証明書にあたります。
  4. デジタル証明書には認証局による署名をします。 オレオレ証明書という言葉があるように、デジタル証明書があるだけでは本人性の確認には不十分です。そこで、デジタル証明書には認証局の秘密鍵による署名がされています。認証局の公開鍵はOSやブラウザに組み込まれています。印鑑証明書の例では市長の公印がこれに当たります。
新人エンジニア
PKIを印鑑証明制度に例えると

PKIでは鍵の生成、配布、更新、失効などの鍵の管理が重要です。鍵を適切に管理することによって、公開鍵基盤全体のセキュリティが保持されます。

PKIは、セキュアな通信やデータの整合性確認、データの暗号化などの多くのセキュリティ関連機能において重要な役割を果たしています。特に、SSL/TLS通信や電子メールの暗号化、デジタル署名、認証などでPKIが広く使用されています。

例題

基本情報処理技術者試験 平成28年春期 午前問39 認証局(CA)の役割の問題にチャレンジしてみましょう。

公開鍵基盤を応用したSSL/TLS

SSL/TLS【Secure Sockets Layer/Transport Layer Security】は、先に見たハイブリッド方式の応用例の一つです。SSL/TLSは、WebブラウザとWebサーバー間の通信を暗号化するために広く使用されているセキュリティプロトコルです。

  1. サーバー証明書を用意する。サーバーに認証局(CA)のデジタル署名のあるサーバー証明書を事前に入手し、設定しておきます。
  2. クライアントが接続要求をします。クライアント(ウェブブラウザなど)がウェブサーバーに対してセキュアな接続を確立したい場合、HTTPSを使用して接続します。HTTPSはHTTPとTLSの組み合わせで、ウェブサイトのURLが"https://"で始まる通信プロトコルです。
  3. サーバー証明書が送付されます。 ウェブサーバーは、サーバー証明書と呼ばれる一種のデジタル証明書をクライアントに提供します。証明書にはサーバーの公開鍵とその他の情報が含まれており、証明書は信頼性のある認証局(CA)によって署名されています。クライアントはこの証明書を受け取り、サーバーの公開鍵を取得します。
  4. サーバー証明書を認証します。クライアントはサーバー証明書を認証局(CA)の公開鍵で検証します。クライアントはサーバーから受け取った証明書に含まれる情報を検証することで、サーバーの身元を確認します。
  5. クライアントの鍵交換をします。 クライアントは、セッション鍵(共通鍵)を生成するために、サーバーの公開鍵を使用します。具体的には、クライアントはランダムなセッション鍵を生成し、サーバーの公開鍵を使ってセッション鍵を暗号化します。これにより、セッション鍵は安全にサーバーに送信されます。セッション鍵というネーミングは使い捨てにされる鍵であることを表しています。
  6. 共通鍵が送付されます。この共通鍵は一連のセッションの間だけ使われるためセッション鍵とも呼ばれるのです。
  7. 共通鍵が共有されます。 ウェブサーバーは、クライアントから受け取った暗号化されたセッション鍵(共通鍵)を、サーバーの秘密鍵を使用して復号します。これにより、サーバーはクライアントと同じセッション鍵を取得します。
  8. 共通鍵による暗号化通信を行います。 クライアントとサーバーは、セッション鍵(共通鍵)を使って通信を暗号化します。共通鍵はセッションの期間中だけ有効で、データの暗号化と復号に使用されます。これにより、通信内容は安全に保護されます。 セッションが終了すると、共通鍵も破棄されます。次回の通信には新しい共通鍵が生成されます。共通鍵を使い捨てにすることで、セッションのセキュリティが向上します。
新人エンジニア
SSL/TLSの主な流れ

SSL/TLSは、公開鍵暗号方式と共通鍵暗号方式を組み合わせて安全な通信を確保するのでした。公開鍵暗号方式は鍵の交換と認証を行い、共通鍵暗号方式は高速なデータの暗号化と復号を行うことで、セキュリティと性能を両立させています。

実験

認証局の証明書がWindowsには入っています。講師の指導の下、見に行ってみましょう。

新人エンジニア
ルート証明書

また、ブラウザからサーバー証明書を見ることができますので試してください。

新人エンジニア
Google Chromeの証明書ビューア

以上で、システム開発の基礎は終わりです。

 最後までお読みいただきありがとうございます。