名前¶
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です;MD4
や MD5
という値を代入することで$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, [email protected]
著作権(=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).
翻訳者¶
川合孝典 ([email protected])