OTPを使う


OTP

ネットワークに流れる平文のパスワードを盗聴して、それを利用してサーバに 侵入されることを防御する手段の 1つに、OTP(One Time password)があります。 認証時のパスワードを 1回限りの使い捨てのパスワードにすることによって、 パスワードの盗聴を無意味なものにします。

OPIE

有名なフリーの OTPパッケージとして、S/Key(logdaemon)と、 OPIE(One Time Password In Everytime)があります。OPIEは、S/Key の修正版として、 US Naval Research Labratory(NRL)で開発されました。今回は、この OPIEを インストールします。
OPIEを導入して、ワンタイムパスワードが使用できるのは、rlogin,rsh,rcp などの r系サービス、telnet、su コマンドなどです。
OPIEのOTPは、種(Seed)と呼ばれる文字列、シーケンス番号、秘密パスフレーズの 3つから生成されます。使用に先立って、サーバ上で、ユーザ毎に種と最初の OTPの保存が行われます。認証のたびに、サーバから種と、毎回1つずつ減っていく シーケンス番号が提示され、ユーザは、その種とシーケンス番号、および 秘密パスフレーズをOTP Generator に入力して、OTPを生成します。この OTPを サーバに送ることで、認証が行われます。
OTP Generator による OTPの生成は、「種+秘密パスフレーズ」の MD5 による ハッシュ化を、シーケンス番号の回数分だけ行うことで行われます。例えば、 シーケンス番号が 3である場合には、
OTP=MD5(MD5(MD5(種+秘密パスフレーズ)))
で求められます。サーバには、認証が行われるたびに、そのときの OTPが保存 されています。次回の認証時には、シーケンス番号が 1つ減っているので、 送られてきた MD5 によるハッシュ化を 1回行って、前回の OTP と 比較することにより認証が行われます。
サーバに保存されている情報は、ユーザ毎の種と現在のシーケンス番号、 前回認証時の OTPだけです。そこから秘密パスフレーズが導き出されるような 要素は含まれていません。また、保存されている OTPから、次回の OTPを推定する ことも不可能です。認証時にネットワーク上に流れるのは、種とシーケンス番号と OTPです。秘密パスフレーズが無くては、次の OTP を生成できませんので、これらが 盗聴されたとしても安全です。

インストール

ここでは、OPIEを FreeBSd-2.2.8Release にインストールします。 以下の URL
http://ftp.cc.chuo-u.ac.jp/home/pub/security/misc/
より、OPIE を入手します。今回は、opie-2.32.tar.gz を入手しました。入手後、 適当なディレクトリで解凍・展開し、ディレクトリを移動します。
% tar xvfz opie-2.32.tar.gz
% cd opie-2.32
インストールは簡単で、以下のように configure スクリプトを実行し、 make , make install を実行します。
% ./configure
% make
% su
Password:
# make install
インストールが終了すると、login、su、ftpd といったコマンドが、OTP対応のものに 置き換えられます。元のコマンドは、login.opie.old、su.opie.old、ftpd.opie.old といったファイル名で保存されます。なお、
# make uninstall
を実行すれば、全て元通りに戻ります。
まだ、鍵を作成していないので、コンソール以外での login は不可能になります。 別のマシンから、telnet を試みると
login: sakai
otp-md5 139 fu2837 ext
Response:
というように、シーケンス番号と種を表示して、レスポンスを求められ、 ログインできません。

鍵の生成

鍵の生成を行います。opiepasswd というコマンドを使用しますが、コンソール上で 行う場合と、リモートで行う場合とで、方法が異なります。 以上の 2通りの方法で、鍵を生成することができます。

実際の使用

以下に、使用例を示します。どれも、シーケンス番号と種を表示し、レスポンスを 求められます。なお、FreeBSD で、DES をインストールしてある場合には、 認証に失敗します。DES については、ここを御覧下さい。 シーケンス番号は、認証のたびに 1つずつ減っていくので、ゼロになる前に 鍵を生成し直す必要があります。シーケンス番号の初期値はデフォルトで 500ですが、 opiepasswd の -n オプションで指定可能です。
OPIEで面倒なのは、OTP Generator を使用して、毎回 OTP を計算しなくてはならない 点です。しかし、Windows や Mac 用で、非常に使い勝手のよいフリーソフトが あります。
以下のURL
http://tama.gate.nec.co.jp/so/dotkey95080.zip
に、NEC製の Windows95/NT 用のフリーソフトである dotkey95 があります。

戻る

sakai@oak.eg.t.kanazawa-u.ac.jp
Last modified: Thu Jun 8 15:47:01 JST 2000