なぜ、あらゆる物の認証が必要になるのか?

なぜ、あらゆる物の認証が必要になるのか?

著者:StephaneDiVito

認証とは何か?

認証(Authentication)とは、何らかの主張(Assertion)の正当性を証明する行為のことです。情報セキュリティの分野では、コンピュータのユーザのアイデンティティ(Identity)を確認するための処理のことを認証と呼ぶケースが多いでしょう。

ただ、識別(Identification)と認証は明確に区別しなければなりません。人、マシン、コンピュータで実行されているプロセスなど、対象とする物事を一意的に区別できている場合、その物事は識別されているということになります。それに対し、認証というのは、その物事のアイデンティティを証明するということを意味します。認証によって得られる結果はそれだけではありません。以下に説明するように、認証を行うことによって様々な効果を得ることができます。

認証の代表的な用途

ここでは、認証の5つの一般的な用途について解説します。これまで、筆者はこのブログで公開鍵暗号、公開鍵のインフラ、秘密鍵暗号の使い方などについて説明してきました。それらは、認証の様々な側面について理解するための基礎になります。

【用途1】業務アプリケーションやウェブ・サーバへのアクセスを求めるユーザのアイデンティティを証明します。通常、この種の認証には、メール・アドレスなど個人が一意的に有している識別子とパスワードを使用したクエリが使われます。この種の方式では、パスワードの漏洩を防ぐために第2の要素を使用して認証の処理が強化されていることが少なくありません。第2の要素の代表的な例としては、ユーザの携帯電話などに送信されるワンタイム・コードが挙げられます。このような追加の保護手法が適用されている場合、攻撃者はパスワードとユーザの携帯電話の両方を盗み見しなければなりません。そのため、リスクが大幅に軽減されます。この手法は、多要素認証として知られています。

【用途2】認証は、マシンのアイデンティティを証明するためにも使用されます。セキュアなネットワークにおいて、コンピュータやIoT(Internet of Things)デバイスなどのコネクテッド・デバイスは、データを交換する前に相互に認証を実施する必要があります。この措置を講じていない場合、ハッカー(クラッカー)が何らかの機器をネットワークに接続し、正規の機器になりすます可能性があります。通常のマシンでは、公開鍵をベースとする認証を利用します(Part 1、Part 2を参照)。人間の場合、記憶しているパスワードやその他の物理的な属性を使用して認証を実施しますが、マシンは秘密鍵を使用し、検証者が送信した乱数(「チャレンジ」とも呼ばれる)とネットワーク認証局が発行した証明書に署名を行います。この認証方式は、「強力な認証」、「チャレンジ・レスポンス認証」などと呼ばれています。

【用途3】データの出所(provenance)と完全性を証明するためにも認証が使用されます。ネットワークに接続されたマシンが、データを受信するケースを考えます。その場合、送信側のマシンのアイデンティティを確認し、データの転送中に改ざんなどが行われなかったことが保証されていなければなりません。そのような保証がない場合、ハッカーが偽のネットワーク・トラフィックを偽造したり(スプーフィング、なりすまし)、転送中にデータを改ざんしたりした可能性があり得るということになります。現在のほとんどのネットワークでは、このようなリスクを軽減するために、TLS(Transport Layer Security)などのプロトコルを使用しています(以前、TLSはSSLとして知られていました)。その場合、次の3つの手法が組み合わせられます。1つは、最初のステップとしてのマシン間の相互認証です(用途2と同様)。もう1つは、2台のマシン間で秘密鍵を安全に交換することです。3つ目は、交換された鍵を使用して2台のマシンの間でやり取りされるすべてのデータの秘密鍵ベースの認証です(多くの場合、暗号化も組み合わせられます)。その結果、不正な送信者は正しいセッション鍵を保有していないことになり、データの出所が保証されます。また、データの改ざんが行われていれば、受信側で実施される検証が失敗に終わります。そのため、データの完全性が強化されます。

【用途4】認証のもう1つの用途としては、コンピュータで実行するプログラムの出所を証明するというものが挙げられます。言うまでもなく、コンピュータまたはあらゆる種類のコネクテッド・デバイスでは、正規のプログラムを実行することが不可欠です。そのようなデバイスに攻撃者が任意のプログラムを仕込むことができたとしたらどうなるでしょうか。その場合、ユーザの個人データを含めて、そのデバイスで処理されるあらゆるデータを操作できることになります。攻撃者は、そのデバイスを武器として、ネットワーク上の他のマシンに対してDoS攻撃(Denial of Service Attack)などを仕掛ける可能性があります。プログラムの出所の証明は公開暗号鍵を使用して実施されます。この手法は「コード署名」とも呼ばれており、プログラムに対しては秘密鍵を使ったデジタル署名が行われます。デバイス側では、それに対応する公開鍵を使用してプログラムの出所を確認します。

【用途5】最後に紹介する用途はアテステーション(Attestation)です。アテステーションについては、マシンの現在の状態を認証することだと考えることができます。ここで言うマシンの状態には、実行されたソフトウェア/OSのリビジョン、マシンのハードウェアのリビジョン、マシンの構成、実行されたソフトウェアが認証済みのものであったという事実(用途4と同様)などが該当します。あるいは、「OSの最新のアップデートは適用されているのか?」、「ウイルス対策ソフトは稼働しているのか?」といった質問に対する答えなど、あらゆるものが含まれる可能性があります。通常、こうした状態は、マシンに関する何らかの信頼を確立するための一連の属性として捉えることができます。それにより、ネットワーク通信におけるマシン間の保証が強化されます。例えば、個人の認証は完全であるものの、使用されているOSのバージョンが古かったとしましょう。その場合、ネット・バンキングのウェブサイトにおいて接続を拒否されてしまうといったことが起こり得ます。なお、アテステーションにも公開鍵暗号が使用されます。

トラステッド・コンピューティングは、認証によって実現される

現在の代表的な情報セキュリティ(InfoSec)では、上述した手法のすべてが組み合わせられています。それにより、いわゆるトラステッド・コンピューティングが実現されています。ユーザはネットワーク・アプリケーションに対して自らの認証を行います。また、基盤となるマシンは相互に認証を実施します。加えて、アテステーションにより相互の信頼性を保証することで、トラフィックの完全性についての検証が行われます。このようにすることで、ユーザとアプリケーションの間で行われるアプリケーション・レベルのやり取りの信頼性が保証されます。また、ほとんどの場合、暗号化の処理を追加することによって、ネットワーク上のユーザ個人のデータが保護されます。

ハードウェアの偽造を防止する

上述した用途2は強力な認証手法です。これは、偽造機器の製造を防ぐ強力なツールにもなります。公開鍵または秘密鍵をベースとする認証を使用することで、ハードウェアに関する保証を行うということです。例えば、使い捨て型の医療用機器の認証を実施することで、それらが純正であることを確認するといったことが行われます。また、メインの機器にアクセサリを接続するといった状況でも認証を活用できます。メインの機器がチャレンジ・レスポンス認証を行うことにより、そのアクセサリは認定を受けたメーカーによって製造されたものであり、複製品ではないということが確認されるといった具合です。メーカーの鍵(秘密鍵認証を使用している場合)を把握していることや、メーカーが認定した秘密鍵(公開鍵ベースの認証を使用している場合)を所有していることを実証すれば、その機器は自身が純正品であることを証明することが可能になります。

まとめ

認証は情報セキュリティの中核を成す技術です。ユーザの安全を確保するために偽造機器の製造を防止する上でも重要な役割を果たします。