Crypt-SKey-0.03 > Crypt::SKey

名前

Crypt::SKey - Perl S/Key 計算プログラム

概要

  # perlスクリプト:
  use Crypt::SKey qw(compute);
  $output = compute($sequence_num, $seed, $password);
  @output = compute($sequence_num, $seed, $password, $count);
  
  # コマンドライン:
  perl -MCrypt::SKey -e key 500 fo099804
  perl -MCrypt::SKey -e key 500 fo099804 100
  
  # 以下のシェル・エイリアスが便利かもしれません:
  alias key 'perl -MCrypt::SKey -e key'
  # これにより以下のように単にタイプすることができます:
  key 500 fo099804

説明

このモジュールにはPerlで実装された簡単なS/Key計算プログラム(RFC 1760で記述されているような)が入っています。これはデフォルトで関数keyをエクスポートします。そしてオプションとして関数computeをエクスポートすることもできます。

compute_md4, compute_md5, key_md4, そして key_md5 はMD4やMD5のハッシュを選択するための便宜上の関数として提供されます。デフォルトはMD4です;MD4MD5という値を代入することで$Crypt::SKey::HASHという変数を変更することにより、これを変えることができます。

インストール

Perlモジュールをインストールするための通常のステップに従ってください:

  perl Makefile.PL
  make test
  make install

関数

compute($sequence_num, $seed, $password [, $count])

compute_md4($sequence_num, $seed, $password [, $count])

compute_md5($sequence_num, $seed, $password [, $count])

3つの引数を与えられ、ハッシュ値を計算し、それを空白で区切られた6つの単語が入った文字列として返します。$countが指定され1よりも大きければ、そうした文字列のリストを返します。引数の意味は以下の通りです。

  • sequence_number

    計算されるS/Key応答のうち何番目のものを出力として生成するか。RFC 1760ではNと呼ばれています。これは通常、S/Keyチャレンジでの先頭の数字として現れます。

  • seed

    これは乱数のシード(種)です。これは通常、S/Keyチャレンジでの2番目の数値/文字として現れます。

  • password

    これはあなたの秘密のパスワードです。

  • count

    この引数はオプションでデフォルトは1です。生成するS/Key応答の数を指定します。S/Key計算プログラムを後で実行する必要が無いように、あらかじめレスポンスをまとめて生成しておき、紙に印刷しておきたいときには便利でしょう。

key()

key_md4()

key_md5()

標準のs/keyディストリビューションに入っている'key'実行可能プログラムと同じように動きます。コマンドラインからの引数(@ARGV)を読み込み、ユーザのパスワード入力を求め、1つあるいは複数の計算された応答をSTDOUTに出力します。コマンドラインの引数は前から順に以下の通りです:

  • sequence_number

  • seed

  • count (optional)

これらの意味は上記のcompute関数と全く同じです。

注意

もしあなたがセキュリティについて気にしているのであれば、おそらくはS/Keyを使うよりもSSHを使う方がいいでしょう。というのもSSHはあなたのセッションを完全に暗号化するのに対して、S/Keyはあなたのパスワードだけを暗号化するからです。私がこのモジュールを書いたのは、だれもまだこれをやっていなかったから、そして私はSSHもkeyプログラムもないシステムを時々、利用するのですが、S/Keyパスワード送信を提供するシステムにtelnetしたいからです。

オリジナルのkeyプログラムはcountパラメータを-nフラグを使って取得します。しかしこのバージョンではオプションの最後の引数として取得します。だれからもその動きを変更する必要があるとは聞いたことありませんが、私としては-nフラグを追加したくはありません。

私は現在、ログイン時点でS/Key応答の妥当性をチェックする、つまりサーバーがユーザを認証するために実行しなければならないコードを書くという計画はありません。しかし、それは難しくはないでしょう。そしてだれかがこの機能を実装するためのパッチを送りたいのであれば、私は喜んでそれを追加します。

作者(=AUTHOR)

Ken Williams, ken@forum.swarthmore.edu

著作権(=COPYRIGHT)

Copyright 2000-2002 Ken Williams. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

参考資料

perl(1). RFC 1760. Digest::MD4(1). Digest::MD5(1). Term::ReadKey(1).

翻訳者

川合孝典 (GCD00051@nifty.ne.jp)