.\" Hey Emacs! This file is -*- nroff -*- source. .\" $Id: pam_fail_delay.3,v 1.5 2002-11-03 06:38:28 horikawa Exp $ .\" %FreeBSD: src/contrib/libpam/doc/man/Attic/pam_fail_delay.3,v 1.2.6.2 2001/06/11 15:28:11 markm Exp % .\" Copyright (c) Andrew G. Morgan 1997 .\" $FreeBSD$ .TH PAM_FAIL_DELAY 3 "1997 Jan 12" "PAM 0.56" "Programmers' Manual" .SH 名称 pam_fail_delay \- エラー時に遅延を要求 .SH 書式 .B #include .br または .br .B #include .sp .BI "int pam_fail_delay(pam_handle_t " "*pamh" ", unsigned int " "usec" ");" .sp 2 .SH 解説 .br 申請ユーザのアクセスをスキームが拒否する場合にかかる時間を悪用することで、 しばしば認証スキームに攻撃可能です。 タイムアウトが .I 短い 場合、 .I 腕力による 辞書攻撃が可能な場合があります。 自動処理により考えられるパスワードをすべて試して、攻撃者がシステムに アクセスしようとするのです。 一方、個々の失敗が (失敗の性質を示すような) 計測可能な時間を費す場合、 認証処理に関する有用な情報を攻撃者が取得可能です。 後者の攻撃は、重要な情報の .I 隠れ通信路 (covert channel) である、手続き遅延を使用することです。 .br このような攻撃の効果を最低限に抑えるには、エラーとなった認証プロセスで ランダムな遅延を導入することが有効です。 .B PAM には、ランダムな遅延を導入する機能があります。遅延は、 .BR pam_authenticate "(3)" 関数と .BR pam_chauthtok "(3)" 関数の エラー時に発生します。すべての認証モジュールが呼び出された .I 後 で、制御がサービスアプリケーションに戻る .I 前 に発生します。 .br .BR pam_fail_delay "(3)" 関数を使用すると、エラー遅延に必要な最低時間 ( .I usec 引数) を指定できます。この関数は、ユーザによるサービスの再申請を 遅らせることが重要となるサービスアプリケーションや認証モジュールから呼び 出せます。遅延の長さは必要なときに算出されます。 長さは、 .I 最大 要求値に対する擬似ガウシアン分布になります。 最大要求値の上下 25% までに分散されるのです。 .br .BR pam_authenticate "(3)" や .BR pam_chauthtok "(3)" から戻る場合、問題の有無に関係なく、新しい要求遅延は デフォルト値の 0 にリセットされます。 .SH 例 .br .B ログイン アプリケーションで約 3 秒間のエラー遅延が必要となる場合、 このアプリケーションには以下のコードが含まれます。 .sp .br .B " pam_fail_delay(pamh, 3000000 /* micro-seconds */ );" .br .B " pam_authenticate(pamh, 0);" .sp .br モジュールが遅延を要求しない場合、エラー遅延は 2.25 秒と 3.75 秒の 間になります。 .br 認証プロセスで呼び出されるモジュールでも、以下のような遅延が 要求されることがあります。 .sp .br .RB " (モジュール #1) " "pam_fail_delay(pamh, 2000000);" .sp .br .RB " (モジュール #2) " "pam_fail_delay(pamh, 4000000);" .sp .br この場合、実際のエラー遅延の算出に使用されるのは最大要求値です。 ここでは 3 秒から 5 秒です。 .SH 戻り値 .BR pam_fail_delay "(3)" で問題が発生しなかった場合は、 .BR PAM_SUC-CESS が戻されます。その他すべての戻り値は、重大なエラーとみなしてください。 .SH エラー .BR pam_strerror "(3)" でテキストに変換できます。 .SH 準拠 X/Open グループが、PAM RFC. 1996/1/10 に組み込むことを検討中です。 .SH バグ .sp 2 見つかっていません。 .SH 関連項目 .BR pam_start "(3), " .BR pam_get_item "(3), " .BR pam_strerror "(3)" .BR システム管理者 、 .BR モジュール開発者 、 .BR アプリケーション開発者 用の .BR Linux-PAM ガイドも参照してください。