HTTPパスワード相互認証プロトコル

プロトコルに関するFAQ

この認証プロトコルの正式な名称はなんですか。
正式な名称は「HTTP Mutual アクセス認証」あるいは「HTTP 相互アクセス認証」 (HTTP Mutual Access Authentication) です。Basic 認証や Digest 認証の対比として、Mutual認証と省略することもあります。
プロトコルの概要を教えてください。
提案プロトコルの概要 をご覧ください。
Basic認証やDigest認証とはどう違うのですか。
サーバとクライアントが同じパスワードに関する情報を知っていることを相互に確認することが出来、なおかつパスワードそのものは渡さないで済む部分が大きく違います。
TLS (SSL) とはどう違うのですか。
TLS (SSL) におけるサーバ認証は、外部の認証局が認証したサーバの「どれか」であることを確認するもので、フィッシングの様に最初から偽のドメイン名でサーバを立ち上げるような場合には必ずしも有効ではありません。このような場合、Mutual 認証はユーザが登録したパスワードを用いてサーバを確認することで、偽のドメイン名で立ち上げられた偽サーバを検知することができます。一方、通信傍受による盗聴などの攻撃に対しては TLS による暗号化を併用して防御することになります。
PAKE とはなんですか。
Password-authenticated key exchange の略で、パスワード(などの総当り攻撃に弱い秘密情報)を用いて安全に相互認証と鍵交換(通信当事者だけが知っていて、他人に知られていない秘密鍵を生成すること)を実現するプロトコルの総称です。
どうやってフィッシングを防止するのですか。
サーバとクライアントが PAKE に基づいた相互認証を行うことで、クライアントの登録したパスワードに関する情報をサーバが知らない限り、認証を成功させることができないように設計されています。これにより、フィッシングサイトは正規のパスワードを知らないので、クライアントに「認証成功」と嘘をついて騙すことができなくなります。
では、中間者攻撃はどうやって防止するのですか。
フィッシングの特徴の1つは、紛らわしいけど正規サイトとは異なるホスト名で立ち上げたサーバを用いることにあります。PAKE のプロトコルを変形し、ホスト名が一致していることの確認を付加することで、フィッシングサイトが正規のサイトに通信を転送しても、認証が成功しないようにしています。
このプロトコルは自由に使っていいのですか。
基本的に自由に使うことができます。ただし、プロトコルはまだ "draft" で、標準化されてはいません。そのため、標準化される際には、IETF などでの議論により現在のdraft とは互換性が無くなる可能性があります。また、実装に関しても皆様のサイトで自由に使うことができますが、研究・試験の目的で提供している参照実装であるため、未知の脆弱性その他の欠陥などが存在する可能性や、その欠陥を修正できない可能性があります。
プロトコルはまだ変更される予定がありますか。あるとしたらどういう変更が予定されていますか。
あります。同一のドメイン内で単一ログインを実現する「シングルサインオン機能」や、ログアウト時などの Web アプリケーションによる細かい動作の制御を行うための情報などを追加する予定です。これらの変更は現状のプロトコルの上位互換になる予定です。なお、前問で触れたとおり、今後の標準化や研究の結果によっては、互換性のない変更が加えられる可能性もあります。
今後の予定はどうなっていますか。
IETFでのインターネット標準化作業を進めるとともに、ウェブブラウザに標準搭載されるよう開発者コミュニティなどに働きかけていきます。また、技術評価デモンストレーションとして、「Yahoo!オークション」での実証実験を、2008年6月より開始する予定です。

プロトコル設計の詳細に関するFAQ にも関連する情報があります。