相手認証(アイニントウシン)とは | 意味や読み方など丁寧でわかりやすい用語解説
相手認証(アイニントウシン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
相手認証 (アイニントウショウ)
英語表記
authentication (オーセンティケーション)
用語解説
相手認証とは、通信を行う際に、接続先の相手が本当に意図した正規の相手であるかを確認するプロセスである。一般的に認証というと、利用者がIDとパスワードを入力してシステムにログインするような「利用者認証」を想起することが多い。利用者認証は、システム側が「アクセスしてきた利用者は誰か」を確認する行為である。これに対して相手認証は、利用者側が「いま接続しようとしているシステムは本物か」を確認する行為であり、認証の方向が逆になる点が大きな特徴である。インターネットを介したサービス利用において、利用者は自分がアクセスしているウェブサイトやサーバーが、攻撃者によって用意された偽物ではなく、正規の運営者が提供する本物であることを確かめる必要がある。この確認作業こそが相手認証であり、安全な通信を実現するための第一歩となる極めて重要な仕組みである。
相手認証を実現する中心的な技術は、公開鍵暗号方式と、それを利用したデジタル証明書である。特にウェブサイトの相手認証では、SSL/TLSサーバー証明書、あるいは単にサーバー証明書と呼ばれるものが用いられる。まず、公開鍵暗号方式では、数学的に対となる「公開鍵」と「秘密鍵」という二つの鍵が生成される。秘密鍵はサーバーの管理者だけが厳重に保管し、公開鍵は誰でも入手できるように広く公開される。この仕組みを利用し、サーバーは自身の身元を証明するためにデジタル証明書を取得する。デジタル証明書とは、認証局(CA: Certificate Authority)と呼ばれる信頼できる第三者機関が、そのサーバーの運営組織が実在することや、ドメイン名の所有権が正しいことを審査した上で発行する電子的な身分証明書である。証明書には、サーバーのドメイン名(コモンネーム)、運営組織の情報、証明書の発行者であるCAの情報、証明書の有効期限、そして最も重要なサーバーの公開鍵が含まれている。さらに、これらの情報が改ざんされていないことを保証するため、CAは自身の秘密鍵でデジタル署名を行っている。
利用者がブラウザを使ってウェブサイトにアクセスする際の相手認証のプロセスは次のようになる。まず、利用者のブラウザ(クライアント)が、HTTPSで保護されたウェブサイト(サーバー)に接続を要求する。この要求を受け取ったサーバーは、自身のデジタル証明書をクライアントに送信する。クライアントであるブラウザは、受け取ったデジタル証明書が信頼できるものであるかを検証する。この検証作業は複数のステップで構成される。第一に、証明書を発行したCAが、ブラウザ自身が信頼するCAの一覧に含まれているかを確認する。主要なブラウザやオペレーティングシステムには、信頼できるCAの公開鍵を含む「ルート証明書」があらかじめインストールされており、このルート証明書を起点として信頼の連鎖を辿ることで検証が行われる。第二に、証明書の有効期限が現在の日時において有効であるかを確認する。期限切れの証明書は無効と判断される。第三に、証明書に記載されているドメイン名が、いまアクセスしようとしているウェブサイトのドメイン名と一致するかを照合する。これが一致しない場合、別のサイトになりすましている可能性がある。第四に、証明書が改ざんされていないことを確認するために、CAのデジタル署名を検証する。ブラウザは、あらかじめ保持しているCAの公開鍵を使って署名を復号し、証明書の内容から計算したハッシュ値と一致するかを比較する。これらが一致すれば、証明書は正当なCAによって発行され、途中で改ざんされていないことが証明される。これらの検証ステップをすべて無事に通過した場合、ブラウザは接続先のサーバーが本物であると判断し、安全な通信路であるTLS/SSLセッションを確立してデータの送受信を開始する。もし検証のいずれかの段階で問題が検出された場合、ブラウザは警告画面を表示し、利用者に危険性を知らせる。
相手認証の重要性は、フィッシング詐欺や中間者攻撃といったサイバー攻撃を防止する点にある。フィッシング詐欺では、攻撃者は正規のサイトそっくりの偽サイトを用意して利用者を誘導し、個人情報を窃取しようとする。しかし、攻撃者は偽サイトのドメイン名に対する正規のデジタル証明書を信頼できるCAから取得することが極めて困難であるため、利用者のブラウザは警告を出し、被害を未然に防ぐことができる。また、中間者攻撃では、攻撃者が利用者とサーバーの間に割り込んで通信を盗聴・改ざんしようとするが、相手認証の仕組みによって、クライアントは通信相手が正規のサーバーではないことに気づくことができる。攻撃者は正規サーバーの秘密鍵を持っていないため、クライアントとの間で正当なTLS/SSLセッションを確立できないからである。このように、相手認証は、その後の通信を暗号化する以前に、通信相手の信頼性を担保するための根幹をなすセキュリティ技術である。なお、相手認証は主にクライアントがサーバーを認証する片方向のプロセスを指すが、より高いセキュリティが求められるシステムでは、サーバーがクライアントを認証するプロセスも加えた「相互認証」が行われることもある。この場合、クライアント側もクライアント証明書をサーバーに提示し、双方がお互いの身元を確認し合うことになる。