Securing Liferay
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

パスワード暗号化アルゴリズムと保存パスワード形式の設定

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]

プレースホルダーを、 サポートされているアルゴリズムのいずれかに置き換えます。

サポートされているアルゴリズム

利用可能な暗号化アルゴリズムは次のとおりです。

  • BCRYPT
  • MD2
  • MD5
  • NONE
  • PBKDF2WithHmacSHA1/160/1300000 または PBKDF2WithHmacSHA1/[キーサイズ]/[ラウンド数]
  • SHA
  • SHA-256
  • SHA-384
  • SSHA
  • UFC-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]