パスワードとOAuthトークンの保管

GitLab 管理者はパスワードと OAuth トークンの保存方法を設定できます。

パスワードの保存

  • PBKDF2+SHA512はGitLab 15.2でpbkdf2_password_encryptionpbkdf2_password_encryption_writeというフラグで 導入されました。デフォルトでは無効になっています。
  • GitLab 15.6で機能フラグが削除され、FIPSモードで動作するすべてのGitLabインスタンスでPBKDF2+SHA512が利用可能になりました。

GitLabは、パスワードがプレーンテキストとして保存されるのを防ぐために、ハッシュ化されたフォーマットでユーザーパスワードを保存します。

GitLabはDevise認証ライブラリを使ってユーザーパスワードをハッシュ化します。作成されたパスワードハッシュは以下の属性を持ちます:

  • ハッシュ
    • bcrypt:デフォルトでは、bcrypt ハッシュ関数が、提供されたパスワードのハッシュの生成に使用されます。この暗号化ハッシュ関数は強力で、業界標準です。
    • PBKDF2+SHA512: PBKDF2+SHA512 がサポートされています:
      • GitLab 15.2 から GitLab 15.5 でpbkdf2_password_encryptionpbkdf2_password_encryption_write 機能フラグが有効な場合。
      • GitLab 15.6以降でFIPSモードが有効な場合(機能フラグは不要)。
  • ストレッチング: パスワードハッシュはブルートフォース攻撃に対して強固にするためにストレッチングされます。デフォルトでは、GitLabはbcryptに10、PBKDF2 + SHA512に20,000のストレッチング係数を使用します。
  • ソルティング:事前に計算されたハッシュ攻撃や辞書攻撃から身を守るため、各パスワードに暗号化ソルトが追加されます。セキュリティを高めるため、各ソルトはパスワードごとにランダムに生成され、2つのパスワードが同じソルトを共有することはありません。

OAuthアクセストークンの保管

OAuthアクセストークンはPBKDF2+SHA512フォーマットでデータベースに保存されます。PBKDF2+SHA512パスワードの保存と同様に、アクセストークンの値はブルートフォース攻撃に対して強固にするために20,000倍に伸ばされます。