パスワードSALT

提供:MoodleDocs
移動先:案内検索

パスワードSALTとは?

パスワードは、md5 hashと呼ばれる、暗号化された形でMoodle内に保存されます。

パスワードSALTは、md5ハッシュが計算される前、パスワードにランダム文字列を追加して、さらにパスワードを安全にする手法です。パスワードSALTにより、パスワードの推測がさらに難しくなります (ランダム文字列を長くするほど、推測の困難さが増します)。

パスワードSALTを有効にする

パスワードSALTを設定するには、あなたのconfig.phpファイルに次の行を追加してください:

$CFG->passwordsaltmain = 'ここに沢山の半角文字を使って、ランダムな文字列を記述してください';

ランダム文字列は、数字および他の文字を混ぜた形で記述してください。適切な長いランダム文字列を取得するため、Moodle Salt Generatorを使用することができます。ストリング長は、少なくとも40文字を推奨します。

注意: セキュリティ上の理由から、config.phpの修正が、パスワードSALTを有効にできる唯一の方法です - Moodleインターフェースにより編集することはできません。

SALTを変更する

どのような理由であれ、あなたがSALTを変更したい場合、新しいSALTと共に、config.php内に古いSALTを保持する必要があります。

以下のように、古いSALT passwordsaltmainpasswordsaltalt1 に変更します (厳密表現を使用する必要があることに留意してください):

$CFG->passwordsaltalt1 = '古いランダム文字列';
$CFG->passwordsaltmain = '新しいランダム文字列';

あなたが将来的に再度SALTを変更する場合、しばらくの間 (すべてのユーザが少なくとも1回ログインして、新しいSALTを使用するようになるまで)、前のSALTを保持する必要があります。前のSALTを20個を保持するため、あなたは、$CFG->passwordsaltalt2、$CFG->passwordsaltalt3 等を使用することができます。

警告: あなたがSALTを変更して、古いSALTをconfig.phpに保持しない場合、あなたのサイトにログインできないようになります!

SALTを無効にする

注意: 推奨できません! パスワードSALTを一旦有効にした場合、パスワードSALTを有効のままにしてください。

パスワードSALTを無効にするには、あなたは、passwordsaltmainの値を削除、コメントアウトまたは空にすることができます。

// 例: 空の文字列を設定
$CFG->passwordsaltmain = '';


// EXAMPLE: コメントアウト
/*
$CFG->passwordsaltmain = '';
*/

しかし、あなたはこれで完了したわけではありません! あなたは、前述の「SALTを変更する」ように、古いSALTを代替値 (alt value) として、移動する必要があります:

$CFG->passwordsaltalt1 = '古いランダム文字列';
$CFG->passwordsaltmain = '';

別のサイトからユーザをインポートする

パスワードSALTを使用している別のMoodleサイトからユーザをインポートする場合、あなたは、config.phpに別のサイトのSALTも追加する必要があります。以下のように最大20のSALTを追加することができます。

$CFG->passwordsaltalt1, $CFG->passwordsaltalt2, ...  $CFG->passwordsaltalt20

パスワードSALTは、どのように動作しますか?

パスワードのチェック時、Moodleコードは、CFG->passwordsaltmain を探します。設定されている場合、md5ハッシュを計算する前、ユーザのパスワードにSALTが追加されます。

SALTされていないmd5ハッシュのユーザパスワードが確認された場合、最後にユーザがログインした後、SALTが設定されたと見なされます。ユーザパスワードは、SALTを使用してアップグレードされます。config.phpにSALTが設定された後、初回ログインにて、ユーザのパスワードがSALTされます。

SALTされていなmd5ハッシュまたはSALTされたmd5ハッシュ値のどちらでもない場合、Moodleコードは、20個の代替SALTを探します。

あなたがSALTを変更する場合、既存のユーザアカウントを迷子にしないため、古いSALTを代替スロットに入力する必要があります。

ユーザが「古いSALT」パスワードにてログインする場合、新しいSALTによる認証のテストは失敗します ... そして、Moodleコードは、パスワードが有効であると証明できるよう、別のSALTを探します。

ユーザパスワードが有効であると見なされた場合、システムはユーザのパスワードを新しいSALTを使用して、アップグレードします。