パスワードSALT
パスワード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 passwordsaltmain
を passwordsaltalt1
に変更します (厳密表現を使用する必要があることに留意してください):
$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を使用して、アップグレードします。