パスワード暗号化アルゴリズムと保存パスワード形式の設定
Liferay は、 OWASP パスワード保存チートシートの推奨事項に準拠したアルゴリズムを使用してパスワードを暗号化します。 デフォルトの実装では、チートシートのガイダンスを反映し、OWASP の推奨事項の更新に従って進化する PBKDF2 ベースの構成 (PBKDF2WithHmacSHA1/160/1300000) が使用されます。
既存のパスワードを検証したり、アルゴリズムを切り替えたりするときに、ハッシュ サイズ、反復回数、アクティブな暗号化アルゴリズム、および従来のアルゴリズムを構成できます。
詳細については、 ポータル プロパティ および パスワード を参照してください。
アクティブな暗号化アルゴリズムの設定
Liferay は複数の暗号化アルゴリズムをサポートしています。 portal-ext.propertiesでアクティブなアルゴリズムを設定します。
passwords.encryption.algorithm=[Encryption Algorithm]
プレースホルダーを、 サポートされているアルゴリズムのいずれかに置き換えます。
この設定は、ポータルの最初の起動 の前にのみ 適用されます。 最初の起動後の変更については、 既存のアルゴリズムからの移行の手順に従ってください。
既存のアルゴリズムからの移行
アルゴリズムを切り替える場合、または古いバージョンからアップグレードする場合は、Liferay が既存のパスワード ハッシュを検証できるように、レガシー アルゴリズムを指定します。
移行中、
-
新しいパスワードでは、新しいアルゴリズム (ポータルのプロパティで設定) が使用されます。
-
既存のパスワードは従来のアルゴリズムで引き続き検証されます。
-
ユーザーは、ログイン後またはパスワードを更新した後に新しいアルゴリズムに移行します。
portal-ext.propertiesでレガシーアルゴリズムを設定します。
passwords.encryption.algorithm.legacy=[Legacy Encryption Algorithm]
プレースホルダーを、 サポートされているアルゴリズムのいずれかに置き換えます。
サポートされているアルゴリズム
利用可能な暗号化アルゴリズムは次のとおりです。
BCRYPTMD2MD5NONEPBKDF2WithHmacSHA1/160/1300000またはPBKDF2WithHmacSHA1/[キーサイズ]/[ラウンド数]SHASHA-256SHA-384SSHAUFC-CRYPT
NONE アルゴリズムはプレーンテキストのパスワードを保存します。 これは重大なセキュリティリスクです。
保存されたパスワードの形式
Liferay は PBKDF2 で暗号化されたパスワードを Base64 でエンコードされたバイナリ構造として保存します。 エンコードされたデータには、キー サイズ、反復回数、ソルト、派生キーが含まれます。
バイナリレイアウトは
- 4バイト: キーサイズ(ビット単位)
- 4バイト: 反復回数
- 16バイト: ソルト
- Nバイト: 派生キー (
キーサイズ / 8バイト; HMAC-SHA1の場合は20バイト)
キーのサイズとラウンド数は設定可能です。 たとえば、 PBKDF2WithHmacSHA1/256/2000000 または PBKDF2WithHmacSHA1/192/1000000です。
必要に応じてラウンド数を減らすことができます (たとえば、低速な本番ハードウェアの場合)。 ただし、 OWASP パスワード保存チートシートによれば、 HMAC-SHA1 にはデフォルト値 (1,300,000) が推奨されています。
標準アルゴリズムの(PBKDF2WithHmacSHA1/160/1300000)保存値には以下が含まれます。
- 鍵サイズ: 160ビット
- ラウンド数: 1,300,000
- ソルト: 16バイト
- 派生キー: 20 バイト
保存されるパスワードは、このバイナリ構造の Base64 エンコードです。
ダイジェストパスワードは、 16 進数 または base64でエンコードできます。
エンコーディングを設定します。
passwords.digest.encoding=[hex|base64]