비밀번호 및 OAuth 토큰 저장

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab 관리자는 비밀번호 및 OAuth 토큰의 저장 방식을 구성할 수 있습니다.

비밀번호 저장

  • PBKDF2+SHA512는 GitLab 15.2에서 소개되었으며 pbkdf2_password_encryptionpbkdf2_password_encryption_write라는 플래그로 구성되었습니다. 기본적으로 비활성화되어 있습니다.
  • 기능 플래그는 GitLab 15.6에서 제거되었으며, PBKDF2+SHA512는 FIPS 모드에서 실행 중인 모든 GitLab 인스턴스에 사용할 수 있게 되었습니다.

GitLab은 사용자 비밀번호를 해시화된 형식으로 저장하여 일반 텍스트로 저장되지 않도록 합니다.

GitLab은 사용자 비밀번호를 해싱하기 위해 Devise 인증 라이브러리를 사용합니다. 생성된 비밀번호 해시는 다음과 같은 특성을 가지고 있습니다:

  • 해싱:
    • bcrypt: 기본적으로 bcrypt 해시 함수가 제공된 비밀번호의 해시를 생성하는 데 사용됩니다. 이 암호화 해시 함수는 강력하며 산업 표준입니다.
    • PBKDF2+SHA512: PBKDF2+SHA512는 다음과 같이 지원됩니다:
      • pbkdf2_password_encryptionpbkdf2_password_encryption_write 기능 플래그가 활성화된 경우 GitLab 15.2에서 GitLab 15.5까지 사용 가능합니다.
      • FIPS 모드가 활성화된 경우 GitLab 15.6 이후로 사용 가능합니다(기능 플래그가 필요하지 않음).
  • 스트레칭: 비밀번호 해시는 무차별 대입 공격에 대응하기 위해 강화됩니다. 기본적으로 GitLab은 bcrypt에 대해 10의 스트레칭 요인을 사용하고 PBKDF2 + SHA512에 대해 20,000을 사용합니다.
  • 솔트 처리: 암호학적 솔트가 각 비밀번호에 추가되어 미리 계산된 해시 및 사전 공격에 대응하기 위해 강화됩니다. 안전을 높이기 위해 각 솔트는 무작위로 생성되며 두 개의 비밀번호가 동일한 솔트를 공유하지 않습니다.

OAuth 액세스 토큰 저장

  • PBKDF2+SHA512가 GitLab 15.3에서 도입되었으며 hash_oauth_tokens라는 플래그로 구성되었습니다.
  • 기본적으로 GitLab 15.5에서 기본적으로 활성화되었습니다.
  • GitLab 15.6에서 기능 플래그가 제거되었습니다.

OAuth 액세스 토큰은 PBKDF2+SHA512 형식으로 데이터베이스에 저장됩니다. PBKDF2+SHA512 비밀번호 저장과 마찬가지로 액세스 토큰 값은 무차별 대입 공격에 대응하기 위해 20,000번의 스트레칭을 받습니다.