One-Time Password の概要

Last modified: Mon Jan 26 13:38:06 1998

rigs には OPIE (One-Time Password In Everything) という One-Time Password システムを導入してあります。 One-Time Password は、文字通り「一度しか使えないパスワード」です。

では、通常の UNIX password を用いる場合とどう違うのでしょうか。 以下では、telnet で login する際の違いを例に取って説明します。


通常の UNIX password を用いる場合

通常の UNIX password を用いる場合は次のようになります。 UNIX から UNIX に telnet 接続するとします。

  1. 接続元計算機で telnet コマンドを起動します。
    local% telnet 
    telnet>
    
  2. open コマンドで接続先を指定します。接続先計算機から login プロンプトが返ってきます。
    telnet> open remote
    Connected to remote.st.ryukoku.ac.jp.
    Escape character is '^]'.
    
    
    GEGEBO-OS Release 1.1 (remote)
    
    login:
    
  3. login 名を入力します。password プロンプトが返ってきます。
    login: kjm
    Password:
    
  4. パスワードを入力します。これは表示 (エコーバック) されません。
    Password:
    Last login: Wed Nov 20 20:13:06 from local.st.ryukoku.ac.jp
    
    remote% 
    

パスワードは表示されないし、誰にも教えていないし、 簡単には推測できない文字列を使っているとします。何が問題なのでしょうか?

実は、あなたがパスワードを入力した事自体が問題なのです。 あなたが入力したパスワードはネットワークを経由して接続先計算機に到達します。 つまり、ネットワーク上を流れます。 暗号化されていないパスワード文字列がネットワーク上を流れてしまうのが問題なのです。

もし誰かがネットワークを盗聴していれば、 ネットワーク上を流れたパスワードを盗み取り、 そのパスワードを使ってあなたになりすますことができます。 盗聴が大変困難であればまだ救いがあるのですが、 困ったことに、少々の知識があれば比較的簡単に盗聴できてしまうのです。 これが「再使用攻撃」と呼ばれる攻撃方法です。

再使用攻撃に対抗するには以下の方法があります:

  1. ネットワークにパスワードを流さない

    パスワードを流さないとなると、 パスワードの変わりになるものが必要となります。 例えば指紋、声紋、網膜パターンなどで代用することが考えられます。 しかし、 接続先計算機が遠くはなれた場所にあるとなると、 これらはほとんど使用不可能です。

  2. ネットワークにパスワードを流すが、 暗号化して簡単には盗聴できないようにする

    この方法の問題点は、 接続元、接続先の両方に暗号化機能を実装する必要がある点です。 さらに、高度な暗号化機能を実装しなければ意味がありません。 各プラットホーム (MS Windows, Macintosh, UNIX, ...) 共通にそのような高度なソフトウェアをそろえるのは、 残念ながら難しいのが実情です。

  3. ネットワークにパスワードを流すが、それは一度しか使えないものとする

    これを実現するのが One-Time Password システムです。


One-Time Password を用いる場合

では、One-Time Password を使って telnet 接続してみましょう。 以下の説明では、UNIX/X Window 上に xterm, kterm などの仮想端末ソフトウェアをあらかじめ 2 つ起動してある状態を想定しています。

MacintoshMS Windows 3.1/95/NT からの接続については別項にて解説しています。

  1. 一方の仮想端末から telnet コマンドを起動します。
    local% telnet 
    telnet> 
    
  2. open コマンドで接続先を指定します。接続先計算機から login プロンプトが返ってきます。 現時点では rigs の実体は starbow という計算機なので、 「Connected to starbow.st.ryukoku.ac.jp.」とか 「Ryukoku University Internet Gateway (starbow)」 という表示が出てきますが、気にしないで下さい。
    telnet> open rigs.st.ryukoku.ac.jp
    Connected to starbow.st.ryukoku.ac.jp.
    Escape character is '^]'.
    
    
    Ryukoku University Internet Gateway (starbow)
    
    login:
    
  3. login 名を入力します。password プロンプトのかわりに One-Time Password のチャレンジ文字列と response プロンプトが返ってきます。
    login: kjm
    otp-md5 497 st6167
    Response:
    
    otp-md5 は計算アルゴリズム (MD5)、497 は シーケンス番号、 st6167 は種 (seed) を示しています。
  4. チャレンジ文字列にしたがって、接続元計算機 でレスポンス文字列を計算します。

    UNIX + X Window 環境では、login: プロンプトの下に表示される チャレンジ文字列を、 もう一方の仮想端末にそのままコピー&ペーストして実行すれば ok です。

    local% otp-md5 497 st6167
    Using the MD5 algorithm to compute response.
    Reminder: Don't use opiekey from telnet or dial-in sessions.
    Enter secret pass phrase: 
    

    otp-md5 は One-Time Password 計算プログラムの名前でもあるので、 このような使いかたができます。 この計算プログラムは、 接続元の計算機にあわせて作成/入手する必要があります。 詳細は「One-Time Password 計算プログラムのインストール」を参照してください。

  5. 接続元計算機で パスワードのかわりとなるパスフレーズを入力します (表示されません)。 接続元計算機上でパスフレーズを入力するので、 ネットワーク上には流れません。 パスフレーズを入力すると、レスポンス文字列が表示されます。 (パスフレーズについては別項 にて説明します)
    Enter secret pass phrase: 
    COCA INN MUCK LOP TEAL FINE
    local%
    
  6. レスポンス文字列を response プロンプトにカット&ペーストします。 これで login が完了します。
    otp-md5 497 st6167
    Response: COCA INN MUCK LOP TEAL FINE
    Last login: Mon Nov 18 18:01:38 from foo.st.ryukoku.ac.jp
    GEGEBO-OS Version 2.3 (KJM) #1: Mon Oct 21 17:35:22 JST 1996
    
    rigs%
    
  7. もういちど telnet 接続してみると、 チャレンジ文字列のシーケンス番号が異なっている事がわかります (496 になります)。 チャレンジ文字列が異なれば、 それを用いて計算されるレスポンス文字列も異なりますから、 前回使用したレスポンス文字列が再使用できない事になります。

もくじ | 概要 | 限界 | パスフレーズ | パスワード、パスフレーズの選び方 | インストール | login | ftp | OTP 計算機がない場所からの login | 更新 | 既知の不具合情報 | 関連リンク
Copyright (C) 1997-2000 龍谷大学 理工学部 RINS 運営委員会
この文書は OpenContent License 1.0 (日本語参照訳) に基づく再配布・再利用が可能です。
www-admin@rigs.st.ryukoku.ac.jp