認証は、個人の同一性を確認するプロセスです。パスワード、ハードウェアトークンなど、その他いくつかの方法を使用することが必要です。
この記事を読み終えると、以下のことができるようになります。
記事のリンクをコピーする
サイバーセキュリティにおいて、認証とは、人物または人物以外の同一性を確認するプロセスです。認証は通常、パスワード、ハードウェアトークン、または同一性を証明するその他の情報を確認することで行われます。航空会社の職員が飛行機に搭乗する乗客のパスポートや身分証明書をチェックして本人確認をするのと同じように、コンピュータシステムもその人物を名乗る人が本当にその人であることを確認する必要があります。この認証プロセスによって、空港では、航空券を持った人だけが飛行機に乗れるようにし、デジタルシステムでは、データが正しい人によって閲覧・使用されるようにします。
認証は、人物であるユーザーを確認することだけに適用されるわけではありません。コンピュータシステムでは、サーバー、ソフトウェア、API、その他のコンピュータなどをチェックし、それらが「名乗る」通りのものであることを確認する必要があります。
認証は、 IDおよびアクセス管理(IAM)の重要な部分であり、誰がデータを閲覧でき、そのデータを使って何ができるかを規定します。しかし、認証は以下のようなセキュリティの他の多くの領域にも適用されます。
コンピュータは、人間のように、人物や他のコンピュータを「認識」できないため、認証のプロセスは、コンピュータが測定できる客観的な基準に依存します。客観的な基準の1つに、対象となる人物またはコンピュータが所有しているはずの何らかの性質をチェックするというものがあります。別の基準に、公開鍵暗号方式と呼ばれる技術を使用した同一性の証明があります。
このタイプの認証では、同一性の測定が可能な特性を、対応するデジタル記録と照合します。認証システムが確認する特性は、「要素」と呼ばれます。現在、3つの一般的な認証要素が広く使用されています。
1. そのユーザーが知っている事柄
この認証要素は、本人だけが所有しているはずの秘密の知識の一部を確認するものです。ユーザー名とパスワードの組み合わせは、この認証要素の典型的な例です。秘密の質問やPINコードもその一例です。
2. そのユーザーが持っている物
この認証要素は、その人物に対して発行された、あるいは所有していることが分かっている物理的なアイテムを所持しているかどうかを確認するものです。多くの人がこの認証要素を、金属製の鍵で解錠できる家やアパートに住む形で日常的に使用しています。この鍵を所持していることで、その建物に入る権限があることが証明され、入室が可能になります。
デジタルシステムでは、この認証要素は昔ながらの施錠と鍵を使用するわけではありません。しかし、物理的なトークンを確認することで、同様の原理を使用しています。トークンには、ソフトトークンとハードトークンの2種類があります。
ソフトトークン:ソフトトークンは、スマートフォンなどのデバイスにコードを送信し、ユーザーにそのコードを入力してもらうことで、デバイスを所有していることを確認するものです。コードは、テキストメッセージとして送信されるか、ランダムなコードを生成するアプリを通じて送信されます。
ハードトークン:ハードトークンは、BluetoothやUSBポートなどを介してコンピュータやモバイル機器に接続する小型の物理的な製品です。ユーザーは、このトークンをデバイスに差し込んで、本人確認を行う必要があります。
セキュリティ専門家の中には、ハードトークンの方がソフトトークンよりも安全だと考える人もいます。攻撃者は、ユーザーのスマートフォンに送信されるコードを遠隔から傍受し、そのコードを使ってユーザーになりすますことが可能です。しかし、ハードトークンの場合、攻撃者はトークンに物理的にアクセスする必要があるため盗むのは遥かに難しくなります。
3. その人物が誰であるかを示す何か
この認証要素は、その人の本質的な資質を評価するものです。現実世界では、その人物の習慣など、例えば、2人の友人が外見や話し方で互いを認識することがあります。コンピュータは、顔や網膜をスキャンしたり、親指の指紋を確認したり、声の周波数を測定したり、血液検査の結果を調べたりすることで同様のことが可能です(もっとも、最後のものはかなり稀なケースです)。
追加の認証要素
セキュリティ業界の一部では、上記の3つの認証要素に加えて追加の認証要素を提案または採用しています。2つの追加要素とは、場所(ユーザーがどこにいるか)と時間(ユーザーがシステムにアクセスしている時間)です。
上記の認証要素に加え、既知の信頼できるエンティティが電子証明書を発行することもできます。実生活において身分証明書が個人の身元を確認するための情報を含むのと同様に、デジタル証明書は同一性を確認するための情報を含む小さなデジタルファイルです。
パスポートやIDカード、紙幣には、偽造でないことを証明する透かしがあるように、電子証明書には、それを発行した機関から真正性を証明する電子署名が入ります。
電子証明書には、公開鍵鍵と呼ばれるランダムな値の文字列も含まれます。公開鍵は、別途保管される秘密鍵に対応します。証明書を保有するエンティティは、これらの鍵を使ってデータに電子署名を行い、秘密鍵を所有していること、したがって本物であることを証明することができます。
現在、電子証明書は個人の身元確認に使われることはあまりありません。しかし、ほとんどの人が気づかないうちに、日々電子証明書に頼っています。
HTTPS(HTTPのセキュアバージョン)を使用する Web サイトを誰かが読み込むたびに、TLSプロトコルはWebサイトの電子証明書( SSL証明書またはTLS証明書と呼ばれます)を使用してWebサイトを認証します。DKIM(メール送信者を認証するもの)も、認証要素をチェックする代わりにこの方法を使用する技術の一例です。DKIMは、メールプロバイダがスパムメールを分類およびブロックするのに役立ちます。
多要素認証(MFA)は、1つの認証要素だけでなく、2つ以上の認証要素を確認することによって、個人の同一性を確認するプロセスです。MFAは、1つの認証要素を偽造するよりも、2つの認証要素を偽造する方がはるかに難しいため、1要素認証よりも強力な認証の一種です。
攻撃者が(おそらくフィッシング攻撃によって)ボブのユーザー名とパスワードを盗むことは可能かもしれません。しかし、ボブが自分の顔もスキャンしなければならない場合、攻撃者はボブと同じ顔に見せることができないため、攻撃者はボブとの同一性を偽ることができません。あるいは、ボブがパスワードの入力に加えて、ハードトークンをコンピュータに差し込まなければならない場合、攻撃者はこのトークンも盗まなければなりません。可能ではありますが、このような盗難ははるかに困難であり、アカウント乗っ取りの可能性は低くなります。
真のMFAでは、別の要素をチェックする必要があります。1つの要素を複数回評価することは、MFAとは言えません。例えば、アプリケーションでユーザがパスワードを入力し、秘密の質問に答えて認証する場合、これはまだ一要素認証です。パスワードの入力と秘密の質問は、どちらも「ユーザーが知っていること」の要素を評価するものです。
セキュリティの強化につながるため、MFAはZero Trustセキュリティの中核的な原則となっています。プライベートネットワークにアクセスするすべてのユーザーとデバイスに対して同一性の確認を要求するセキュリティモデルです。
二要素認証(2FA)は、ちょうど二つの要素が使われる場合のMFAの呼び名です。2要素認証の最も一般的なタイプは、「ユーザーが知っていること」+「ユーザーが持っているもの」です。例えば、多くの人は銀行口座にアクセスする前にパスワードの入力に加えて、携帯電話にコードを送信しています(この要素の「ソフトトークン」版の例です)。
現在、多くの企業がフィッシング攻撃の影響を軽減するために2FAを採用しています。例えば、Googleでは、認証にハードトークンを用いた2FAを使用することで、 アカウント乗っ取り攻撃を排除することができました。
認証が同一性の確認に関係するのに対し、承認は権限、つまり保護されたシステムやリソースにアクセスした後に何が実行できるかに関係するものです。
ボブが会社のマーケティング部門に勤務しているとします。ボブは会社のネットワークにログインするために、パスワードを入力し、顔をスキャンして、ハードトークンを挿入します。この時点で、認証が完了します。
ログイン後、ボブは会社が所有するすべてのデータファイルへのアクセス権を保有しているわけではありません。承認によって、ボブが閲覧できるものと閲覧できないものが決定されます。マーケティング担当者であるボブには、会社がマーケティングメッセージを送付する見込み客のリストのような一部のデータを閲覧できるよう承認されていますが、会社のメインコードベースや従業員の給与のリストのようなその他のデータの閲覧は承認されていません。
詳しくは当社の記事、認証と承認の対比をご覧ください。
現代の企業の従業員は、多くの異なるクラウドベースのアプリケーションに対して認証を行う必要があります。そのため、従業員は多くの認証要素をアプリケーションごとに設定する必要があります。また、これは以下のセキュリティ上の懸念が生じる可能性があります。
シングルサインオン(SSO)は、ユーザーに一回だけの認証を可能にするサービスです。ユーザーはSSOサービスにサインインすると、SSOサービスは必要に応じて電子認証メッセージを各アプリケーションに送信することで、この認証をすべてのアプリケーションに渡します。
また、SSOはセキュリティポリシーを適用するための単一点をITチームに提供します。すべてのアプリケーションが2FAをサポートしているわけではありませんが、SSOサービスがサポートしていれば、いずれにせよ2FAを使用することができます。また、ITチームはSSOサービスを通じて、パスワードの長さや複雑さに関する要件を強制することも可能で、ユーザーが複数のパスワードを覚える負担を軽減することができます。
SSO認証メッセージは、Security Assertion Markup Language(SAML) と呼ばれるプロトコルを使用します。SAMLは、ユーザーが本人であることを外部のアプリケーションに伝えるための標準化された方法です。
ユーザを認証するメッセージは、SAML「アサーション」と呼ばれます。アプリケーションは、ユーザのSAMLアサーションを受信すると、SSOサービスによって既に認証済みであることを認識しているため、ユーザを独自に認証する必要はありません。
OpenID Connect(OIDC)もまた、SSOプロバイダーによって利用が拡大している認証プロトコルの一つです。OIDCの機能はSAMLと似ていますが、データのフォーマットが異なるなどの違いがあります。SAMLがXMLでデータをフォーマットするのに対し、OIDCはJSONを使用します。
Cloudflareは、すべての主要なSSOプロバイダーで動作するZero Trustプラットフォームを提供しています。ユーザーがSSOサービスに認証されると、Cloudflareはクラウドとオンプレミスのアプリケーション間で一貫したアクセス制御を適用します。ブラウザの分離、セキュアウェブゲートウェイ、DNSフィルタリング、およびその他のZero Trust機能を含む、このプラットフォームについて、詳しくは製品ページをご覧ください。