programing

Drupal의 기본 비밀번호 암호화 방법은 무엇입니까?

prostudy 2022. 9. 14. 21:40
반응형

Drupal의 기본 비밀번호 암호화 방법은 무엇입니까?

Drupal 6/7이 패스워드를 저장하기 위해 기본적으로 사용하는 보안이 무엇인지 알아보려고 합니다.MD5, AES, SHA인가요?나는 아무것도 찾을 수 없었다.

Drupal 8과 Drupal 7은 기본적으로 SHA512를 소금과 함께 사용합니다.패스워드의 최종 해시(스트레칭이라고 불리는 보안 기술)를 생성하기 위한 계산 비용을 증가시키기 위해 PHP의 해시 함수를 통해 해시를 여러 번 실행합니다.

Drupal 8에서는 구현이 객체 지향적입니다.해시 메서드를 정의하는 Password Interface가 있습니다.이 인터페이스의 기본 실장은 PhpassHashedPassword 클래스에 있습니다.이 클래스의 해시 메서드는 SHA512를 통과하는 암호화 메서드를 해시 알고리즘, 암호 및 생성된 솔트로 호출합니다.클래스의 crypt 메서드는 Drupal 7의 _password_crypt() 메서드와 거의 동일합니다.

Drupal 7에서는 구현은 user_hash_password()와 _password_crypt()의 두 가지 글로벌 함수로 분할됩니다.

Drupal 6은 소금 없이 MD5를 사용합니다.관련된 함수는 user_save()입니다.

다음은 Drupal 7의 해시 예시입니다.

  • "pass" : "$S$Dxl65"W9p07LfQU7jvy5CnsyDpMoLujiAgzy123khcg1OJi/P9PKS"

  • 문자 0 ~ 2는 유형입니다($S$는 Drupal 7).

  • 문자 3은 이 목록의 문자 위치를 기준으로 한 log2 라운드의 수(X)입니다. ' . 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefijklmnopqrstuvxyz 예에서는 15로 매핑됩니다.
  • 문자 4-11은 SALT입니다.
  • 나머지는 2^X 라운드를 사용하는 SHA512 해시입니다.
  • 그런 다음 base64를 사용하여 이진 결과를 문자열로 변환합니다.

    $count = 1 <$count_log2;
    $password = 해시 알고리즘, $password. $password, TRUE);
    { $syslog = hashsyslogalgo, $syslog. $password, TRUE}를 실행합니다.
    } 동안 (--$count);

전체 프로세스는 mydrupalsite\includes\password.inc에서 확인할 수 있습니다.

www\includes\password.inc에서 확인할 수 있습니다.

function user_check_password($password, $account) {
  if (substr($account->pass, 0, 2) == 'U$') {
    // This may be an updated password from user_update_7000(). Such hashes
    // have 'U' added as the first character and need an extra md5().
    $stored_hash = substr($account->pass, 1);
    $password = md5($password);
  }
  else {
    $stored_hash = $account->pass;
  }

  $type = substr($stored_hash, 0, 3);
  switch ($type) {
    case '$S$':
      // A normal Drupal 7 password using sha512.
      $hash = _password_crypt('sha512', $password, $stored_hash);
      break;
    case '$H$':
      // phpBB3 uses "$H$" for the same thing as "$P$".
    case '$P$':
      // A phpass password generated using md5.  This is an
      // imported password or from an earlier Drupal version.
      $hash = _password_crypt('md5', $password, $stored_hash);
      break;
    default:
      return FALSE;
  }
  return ($hash && $stored_hash == $hash);
}

"// Sha512를 사용한 일반 Drupal 7 비밀번호"라고 명확하게 쓰여 있습니다.

Drupal 6 core의 경우 MD5를 사용하고 있으며, 염분은 사용하지 않는 것으로 알고 있습니다.드루팔 7에서는 좀 더 고도의 해시가 사용됩니다.이에 관한 좋은 기사는 이쪽 -

drupal 8은 Phpass(변경판)를 사용하고 있습니다.

드루팔 7은 SHA-512 + 소금을 사용합니다.

drupal 6과 이전 버전은 소금 없이 md5를 사용하고 있었다.

다음은 drupal.org에서 찾은 링크입니다.

https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Password%21PhpassHashedPassword.php/function/PhpassHashedPassword%3A%3Acrypt/8.2.x https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Password%21PhpassHashedPassword.php/function/PhpassHashedPassword%3A%3Ahash/8.2.x

언급URL : https://stackoverflow.com/questions/5031662/what-is-drupals-default-password-encryption-method

반응형