暗号技術の基礎固め
はじめに
ショッピングサイトで買い物をする際、私たちは個人情報をWeb通信で送信したり、送信先が本物であることを信用して通信したりしています。もし情報を盗聴されたり、第三者になりすまされたりすれば、こういった通信は成り立たなくなってしまいます。これらを防ぐために、暗号技術を駆使して安全に通信を行っているわけです。
また、近年では仮想通貨の取引が大きな話題となっています。仮想通貨を用いて相手に送金する際、送金者の真正性を保証するために秘密鍵(署名としての鍵)を用います。第三者に秘密鍵が盗まれるリスクを軽減するためにマルチシグネチャ(秘密鍵を複数人で保持し、複数の秘密鍵が揃ったときのみ秘密鍵の効能を発揮する)と呼ばれる仕組みが取られるなど、安全な鍵管理に多大な意識が向けられています。
このように、重要な技術であるがゆえに支援士試験でも午前問題・午後問題問わず頻繁に出題される傾向があります。今回は、この暗号技術の基本的な内容をまとめます。
暗号技術
暗号技術とはデータの内容を第三者にわからない形式に変換すること、またその変換したデータを元に戻すための技術です。データを第三者にわからない形式に変換することを暗号化と呼び、元に戻すことを復号と呼びます(図1)。
暗号化を行うためには、アルゴリズムと鍵が必要です。アルゴリズムは平文をどのように暗号化するかを定めたもので、AESやRSAなど一般に公開されている技術を用います。鍵は暗号化や復号の際に用いる秘密のデータで、非公開で運用します。鍵を非公開にすることで第三者は復号できなくなるため、データを保護できるわけです。
代表的な暗号化の方法として、「共通鍵暗号方式」と「公開鍵暗号方式」の2つがあります。
共通鍵暗号方式
共通鍵暗号方式では、データの送信者と受信者が共通の鍵を用いて暗号化や復号を行います。この鍵を持たない第三者は元のデータを知ることができません。この共通の鍵を共通鍵と呼びます。
共通鍵暗号方式では、通信に先立って鍵を安全に相手に渡す必要がありますが、インターネット上で大多数の相手に安全に共通鍵を渡すのは困難であるという問題点があります。
公開鍵暗号方式
公開鍵暗号方式には、次の2つの特徴があります。
- 対となる2つの鍵のペアを用いる
- 一方の鍵で暗号化した情報は、もう一方の鍵でのみ復号できる
暗号技術が難しいと感じられる場合、この2つの特徴が曖昧なケースが多く見られます。まずはこの特徴を確実に押さえておきましょう。
また、2つの鍵のペアは一方を公開鍵(Public Key)、もう一方を秘密鍵(Private Key)と呼び、それぞれ次のような特徴を持ちます(表1)。
公開鍵 | 秘密鍵 |
利用者に公開し、誰でも利用できるようにした鍵 | 完全非公開とし、自分のみ利用できるようにした鍵 |
どちらの鍵でも暗号化ができますが、どちらの鍵で暗号化をするかによって目的が大きく変わります。以下のように整理しておきましょう(図3、図4)。
なお、図4のような技術をディジタル署名とも呼びます。この時、秘密鍵は署名のための鍵であり、公開鍵は暗号文を作成した者が本人であることを検証するための鍵という役割を持ちます(表2)。
目的 | 公開鍵 | 秘密鍵 |
---|---|---|
秘匿 | 暗号化のための鍵 | 復号のための鍵 |
認証 | 検証のための鍵(復号) | 署名のための鍵(暗号化) |
公開鍵は公開して利用するため、共通鍵暗号方式における鍵配送の問題点が解決されています。ただし、共通鍵暗号方式に比べて処理速度が低速であるという特徴があります。そのため、公開鍵暗号方式で共通鍵を暗号化し、安全に鍵配送してから共通鍵暗号方式で暗号化通信を行うなどの工夫が多く行われています。
共通鍵暗号方式と公開鍵暗号方式の違いも整理しておきましょう(表3)。
項目 | 共通鍵暗号 | 公開鍵暗号 |
---|---|---|
処理速度 | 高速 | 低速 |
主なアルゴリズム | AES | RSA |
鍵の配送 | 配送方法に別途工夫が必要 | 公開鍵を利用する |
公開鍵暗号方式はやや仕組みが複雑ですが、暗号や認証の技術で非常に多く登場する重要な基盤技術です。各々の鍵の役割やそれらによって何ができるのか確実に整理しておきましょう。苦手意識のある方は他人に説明するつもりで自ら図を描いてみるのも良いですね。
ディジタル署名
平文を一方向性ハッシュ関数で処理し、さらに秘密鍵で暗号化したものをディジタル署名または電子署名と呼びます。ディジタル署名は、次の2つの認証を行う仕組みです。
- メッセージ認証(データの改ざんを検知する)
- エンティティ認証(署名の作成者が本人であること、なりすましされていないことを保証する)
図4の公開鍵暗号方式の認証の仕組みを基に、ディジタル署名の仕組みをまとめてみましょう(図5)。
公開鍵証明書
公開鍵が正しく相手に渡れば安全な通信ができますが、公開鍵そのものはただのデータであり、誰かが偽物を用意した場合は見抜くことができません。このような偽物を用意して本物になりすます攻撃を中間者攻撃と呼びます。
中間者攻撃を防ぐためには、公開鍵が本物であることを保証する必要があります。そこで、認証局(CA:Certification Authority)と呼ばれる第三者の機関が公開鍵を保証する証明書を発行し、その公開鍵の真正性を保証します。
認証局が発行する証明書を公開鍵証明書と呼びます。通常、ITU-T勧告のX.509規格に準拠したものが利用されます。公開鍵証明書は、ディジタル証明書、電子証明書、X.509証明書など、様々な呼び名があります。
公開鍵証明書には「サーバーの公開鍵」が含まれ、さらに「サーバーの所有者情報(組織名、URLなど)」「証明書の有効期間」「認証局のディジタル署名」などが含まれます。また、クライアントは受け取ったサーバーの公開鍵が本物であることを検証するために、サーバーの所有者情報が正しいか、証明書の有効期間が有効であるか、認証局のディジタル署名が認証局の公開鍵で検証できるかなどを確認します。
認証局がサーバーの公開鍵証明書を発行し、クライアントがその証明書を検証する流れは図6の通りです。
ここで、認証局の公開鍵も信用できるものであると保証する必要があります。認証局は階層構造で構築され、上位の認証局の秘密鍵で下位の認証局の公開鍵証明書の電子署名を生成することで上位の認証局が下位の認証局を保証します。最上位の認証局をルート認証局と呼び、クライアントはルート認証局を信頼する(ブラウザなどに予め登録)ことにより、下位の認証局、ひいてはサーバーまで信頼するモデルが成り立っています(図7)。
このような電子署名や証明書の仕組みなども含めた、公開鍵暗号方式の技術を利用したセキュリティ基盤の総称をPKI(Public Key Infrastructure:公開鍵暗号基盤)と呼びます。
暗号技術に関する過去問題
それでは、暗号技術に関する過去問題から、平成29年度秋期 午前Ⅱ問題の問10を考えてみましょう。
問10 ディジタル証明書に関する記述のうち,適切なものはどれか。
ア S/MIMEやTLSで利用するディジタル証明書の規格は,ITU-T X.400で標準化されている。
イ ディジタル証明書は,TLSプロトコルにおいて通信データの暗号化のための鍵交換や通信相手の認証に利用されている。
ウ 認証局が発行するディジタル証明書は,申請者の秘密鍵に対して認証局がディジタル署名したものである。
エ ルート認証局は,下位の認証局の公開鍵にルート認証局の公開鍵でディジタル署名したディジタル証明書を発行する。
(平成29年度秋期 午前Ⅱ問題 問10(試験問題から引用))
過去何度も出題された問題です。公開鍵(公開)や秘密鍵(非公開)、ディジタル署名(秘密鍵でメッセージダイジェストを暗号化し改ざん対策とする)、ディジタル証明書(公開鍵が利用者本人ものであることを証明)のそれぞれの役割を強く意識しましょう。
(ア)ディジタル証明書はITU-T勧告のX.509で規定されています。
(イ)SSL/TLSなどで暗号化を行う際、ディジタル証明書は「暗号のための鍵の安全な交換」や「通信相手の認証」に利用されます。
(ウ)本人認証のためには申請者の公開鍵に対して認証局がディジタル署名を行う必要があります。秘密鍵は外に持ち出してはいけないため、申請時に用いることはありません。
(エ)ディジタル署名は秘密鍵でメッセージダイジェストを暗号化することで改ざん対策とします。したがって、下位の認証局の公開鍵にルート認証局の秘密鍵でディジタル署名を行い、ディジタル証明書が改ざんされていないことを保証します。
したがって、(イ)が正解です。
続いて、午後問題も見てみます。平成28年度秋期 午後Ⅰ問題の問1では、設問2以降でSSHの認証の仕組みに関わる問題が出題されています。鍵と証明書の役割を意識して考えてみましょう。
ここでは、設問2 (2)、設問3 (2)~(4)を抜粋して解説します。
設問2(2)
問題文の下線①の前の記載に「パスワードの辞書攻撃を受けた痕跡」とあるので、パスワードクラックへの対策が必要です。問題文の下線①に「SSHのログイン認証をパスワードの強度に依存しない方式に設定変更した」とあるため、パスワード認証以外の認証方式を用いるのが良いでしょう。SSHクライアントの認証方式には「パスワード認証方式」と「公開鍵認証方式」の2種類があり、公開鍵認証を行うことでパスワードを用いない認証ができます。
解答例は「パスワード認証を無効化し、公開鍵認証を使用する。」です。
設問3(2)
SSHのホスト鍵はサーバーの真正性を保証するものです。SSHのホスト鍵が同じ場合、SSHサーバーの公開鍵も秘密鍵も同じ組み合わせとなります。すなわち同一モデルの機器が全て同じサーバーと見なされるため、攻撃者が同一モデルの機器を用意して正統なサーバーとしてなりすますことが出来てしまいます。このような攻撃手法で代表的なものは「中間者攻撃」です。
解答例は「中間者攻撃による通信内容の盗聴」です。
なお、問題文にもあるように異なるメーカーの機器で同一のホスト鍵が用いられているケースは実際に起きており、次のような注意勧告も出ています。
「JVN iPedia:組込み機器に固有でない X.509 証明書および SSH ホスト鍵を使用している問題」
設問3(3)
改ざんされていないかをチェックするのに適しているのはディジタル署名です。ディジタル署名は秘密鍵で暗号化することで、改ざん検知と本人認証を行うものでした。改ざん検知を行いたいデータにディジタル署名を付与することで実現できます。これは公開鍵証明書が改ざんされていないかを保証する仕組みと同じです。
解答例は、作成時:「秘密鍵を使用してイメージファイルにディジタル署名を付与する。」、更新時:「公開鍵を使用してイメージファイルのディジタル署名を検証する。」です。
設問3(4)
暗号化されたイメージファイルを更新する際には、復号するための復号鍵が必要です。そして、LTEルータで復号するためにはこのルータのどこかに復号用の鍵を保存する必要があります。したがって、攻撃者が鍵を入手するにはLTEルータに侵入し、復号用の鍵をファイルシステムから探し出す方法が考えられます。
解答例は「LTEルータにログインしてファイルシステムの中から見つける。」です。
たとえ暗号化していても、第三者が復号鍵を入手すれば簡単に情報を見られてしまいます。そのため、鍵の管理がとても重要になるわけです。
おわりに
試験では、今回紹介したような公開鍵暗号方式を中心に様々な技術における各鍵の役割や証明書の仕組みを正確に理解できているかが要求されます。基本的な内容を確実に押さえておけば、解答への手がかりをつかみやすくなります。公開鍵や秘密鍵がどのような役割を持っているか、ディジタル署名や公開鍵証明書が何のために存在しているかを整理しておきましょう。
次回は、DNSサーバーやMailサーバーなどDMZ上で活用されるサーバーについて解説します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- LG、「webOS」をオープンソース化
- Google、オープンソースの脆弱性発見を支援するサイト「Open Source Vulnerability」を発表
- 9/27開催「Open Source Summit」をはじめ、リアルイベントでのプロトコルを発表。11月までのKubeCon + CloudNativeConなどにも適用、ほか
- 新OS「Fuchsia」のウワサを検証、Googleの次の布石となるか
- MS-DOS互換のオープンソースOS「PC-MOS/386 5.01」リリース
- LinuxCon ChinaでMicrosoftのエンジニアが説くオープンソースプロジェクト成功のポイントとは?
- オープンソースソフトウェアのセキュリティ強化に取り組むLinux Foundationの組織「OpenSSF」が活動開始
- Androidベースの「CyanogenMod」を引き継ぐプロジェクト「Lineage」立ち上げ
- CentOSプロジェクトとRed Hatがオープンソースコミュニティのイノベーションと利用促進のための次世代オープンソースプロジェクトを推進
- The Linux Foundation、企業がオープンソースソフトウェアを最大限に活用するためのガイド「Open Source Guides for the Enterprise」を発表