【認証技術.005】利用者認証①
佐藤@IT雑貨屋です。
利用者認証の話です。この利用者認証には、パスワードを使う認証以外にも様々な方法があります。認証だけではなく、利用者ごとに必要な資源のみ認可するOAuthなどの仕組みも必要です。
◆パスワード認証
パスワード認証とは、ユーザ名(ユーザID)とパスワードを組み合わせて行う認証です。パスワードは、そのままネットワーク上で送信すると盗聴されるリスクがあります。その為、通信経路上のデータを盗聴されても不正にアクセスされない様に、様々な対策が考えられています。
パスワードをネットワーク上で送信する方法には、次の様なものがあります。
①パスワードを平文で送信する方法
パスワードをそのままネットワークに流す方法です。盗聴されるリスクはありますが、メールの送受信など古くからある通信方法で、未だに使われています。
②パスワードを判読てきない様に送信する方法
チャレンジレスポンス方式などを用いて、パスワードを判読できないようにして送信する方法です。
➂パスワードを毎回変更する方法
後述するワンタイムパスワード方式などを用いて、パスワードを毎回変える方法です。
④パスワードを送る経路を暗号化する方法
パスワードを送る通信経路を、SSLなどのプロトコルを用いて暗号化して送る方法です。
◆ワンタイムパスワード
ユーザ名とパスワードは、一度盗聴されると何度でも不正利用される危険性があります。それを避けるために、ネットワーク上を流れるパスワードを毎回変える手法が、ワンタイムパスワードです。ワンタイムパスワードの生成方法には以下のものがあります。
①セキュリティトークン
認証の助けとなるような物理的なデバイスのことを、セキュリティトークン、または単にトークンと言います。トークンの表示部に、認証サーバと時刻同期したワンタイムパスワードを表示するのが一般的です。
②S/Key
ハッシュ関数を利用して、ワンタイムパスワードを生成する方式です。乱数で作成した種(Seed)を基に、ハッシュ関数で必要な回数の演算を行います。
◆パスワードの保管方法
サーバなどでファイルにそのままパスワードを保管していると、そのファイルが漏洩したときに全てのパスワードが見られてしまいます。それを防ぐため、パスワードの管理では、ハッシュ関数を用いてハッシュ値を求め、そのハッシュ値のみを保管する方法がよく用いられます。
しかしハッシュ値から元のパスワードを復元する事はできないので、パスワードを忘れた場合には、再度、新たなパスワードを設定しなくてはいけません。
なお、同じパスワードからは同じハッシュ値が求められます。これを異なる値にしてレインボーテーブルなどによる攻撃を防ぐため、パスワードにソルトを加えてハッシュ値を生成する方法もよく用いられます。
◆リスクベース認証
リスクベース認証とは、通常と異なる環境からログインをしようとする場合などに、通常の認証に加えて、合言葉などによる追加認証を行う認証方式です。ユーザの利便性をそれほど損なわずに、第三者による不正利用が防止しやすくなります。
◆CAPTCHA
CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)は、ユーザ認証のときに合わせて行うテストで、利用者がコンピュータでないことを確認するために使われます。コンピュータには認証困難な画像で、人間には文字として認識できる情報を読み取らせることで、コンピュータで自動処理しているのではないことを確かめます。
◆FIDO
FIDO(Fast IDentity Online:素早いオンライン認証)は、パスワードに代わる認証技術としてFIDO Allianceによって規格が策定されています。公開鍵認証方式や生体認証などを組み合わせ、パスワードだけに頼らず本人認証を行います。
FIDO Allianceでは、いろいろな利用状況に対応するために、以下の三つの仕様を提供しています。
①FIDO UAF
FIDO UAF(Universal Authentication Framework)は、パスワードレス認証の規格です。FIDO UAFに対応したデバイスを用い、パスワードを使わずに指紋認証や顔認証などの生体認証を行います。
あらかじめ、認証先のサーバと公開鍵認証を行うために、デバイスで鍵ペアを作成し、公開鍵をサーバに登録しておきます。認証時にはデバイスで生体認証を行い、サーバと公開鍵認証を行います。そのため、サーバに生体認証の情報を登録する必要がありません。
②FIDO U2F
FIDO U2F(Universal 2nd Factor)は2段階認証の規格です。オンラインのサービスでパスワードを使ってログインし、追加の認証をデバイスで行います。USBキーなどのセキュリティキーを2段階目の認証で使用できます。
➂FIDO2
FIDO2は、Web認証のAPI仕様です。UAFとU2Fと統合した仕様で、生体認証デバイスなどを使用して、Webブラウザ経由でのオンラインサービスの利用を実現します。
CTAP(Client to Authenticator Protocol)を利用し、ブラウザから直接、生体認証機器に認証要求を送る事を可能にしています。