SASL 【Simple Authentication and Security Layer】
概要
SASL(Simple Authentication and Security Layer)とは、様々なプロトコルにユーザー認証の機能を付け加えるための共通仕様。プロトコル本来の仕様・機能とは独立に認証に関する仕様を定義でき、プロトコル規格を更新せずに認証方式を追加することができる。様々なアプリケーションプロトコルから共通して利用できる認証の仕組みを定義している。様々な認証方式が用意されており、システム環境や用途などに応じて使い分けることができる。最初の仕様は1997年のRFC 2222にまとめられ、2006年にRFC 4422によって更新された。
プロトコル側の仕様でSASL対応が行われている規格には電子メールの送受信に用いられるSMTP(SMTP認証で使用)やPOP3、IMAP4がよく知られており、他にLDAPやXMPP、AMQP、IRCなども対応している。SubversionやVNC、memcachedなどのアプリケーションも認証機構としてSASLを利用する。
SASLで定義された認証機構としては、「LOGIN」または「PLAIN」(平文でIDとパスワードを送受信する)、「ANONYMOUS」(認証不要のゲストユーザー)、「OTP」または「SKEY」(S/KEYによるワンタイムパスワードを使用)、「CRAM-MD5」(ハッシュ値によるチャレンジ/レスポンス認証)、「DIGEST-MD5」(ハッシュ値によるダイジェスト認証)、「NTLM」(NTLM認証)、「GSSAPI」(GSSAPIによるKerberos認証)などがある。
CRAM-MD5 (Challenge Response Authentication Mechanism)
SASLで定義された認証メカニズムの一つで、ハッシュ関数のMD5を利用したチャレンジ/レスポンス認証である。サーバから「チャレンジ」と呼ばれるランダム文字列が送られ、クライアントはパスワードとチャレンジを連結した文字列のMD5ハッシュを送り返す。
ハッシュ関数は逆算が困難な性質があるため、やり取りを盗み見してもハッシュ値からパスワードを割り出すのは困難である。また、チャレンジは認証のたびに毎回異なるため、レスポンスも毎回異なり、反射攻撃などに用いられることを防止することができる。