리눅스

[draft] 리눅스 패스워드 해싱 알고리즘 개요 및 변경하기

SangChul Dot Kr Blog 2025. 10. 22. 17:05

리눅스 패스워드 해싱 알고리즘 개요 및 변경하기

주요 해시 알고리즘(간략 비교)

MD5($1$)

  • 특징 : 빠르고 간단함. 역사적으로 널리 쓰였음.
  • 문제점 : 충돌 및 역산 공격에 취약. 패스워드 저장에는 사용 금지 권고.

SHA-1

  • 특징 : MD5 대비 향상된 무결성 해시.
  • 문제점 : 충돌 가능성이 보고되어 패스워드 해시에 권장되지 않음.

SHA-2 계열 (SHA-256 $5$, SHA-512 $6$)

  • 특징 : 비교적 안전하며 시스템 패스워드에 널리 사용됨. 많은 배포판에서 기본값으로 설정.
  • 장점 : 표준화되어 있고 구현이 안정적임.
  • 단점 : CPU 기반 해시이므로 빠른 해시 계산이 가능 — 느린(hasher) 알고리즘보다 무차별 대입 공격에 더 취약할 수 있음.

bcrypt

  • 특징 : 패스워드 해싱 전용 설계. 솔트 포함, 계산 비용(작업 인자)을 늘려 공격 난이도 상승.
  • 장점 : GPU/병렬 공격에 대해 SHA 계열보다 강함(설계상 느리게 동작).
  • 사용처 : 애플리케이션(웹서비스)에서 널리 권장.

Argon2

  • 특징 : PHC(Password Hashing Competition) 우승 알고리즘. 메모리-강건성, 병렬성 조절 가능.
  • 장점 : 최신 추천 알고리즘(특히 새로운 애플리케이션에 권장).
  • 사용처 : 애플리케이션 레벨 비밀번호 저장 권장.
권장 요지
시스템 계정(로그인 비밀번호)은 현재 많은 배포판에서 SHA-512를 기본으로 사용합니다. 신규 애플리케이션은 Argon2나 bcrypt 같은 패스워드-전용 해시를 사용하는 것이 바람직합니다.

/etc/shadow의 해시 식별자

/etc/shadow에 저장된 암호값은 보통 다음과 같은 형식의 접두사를 가집니다.

  • $1$ → MD5
  • $5$ → SHA-256
  • $6$ → SHA-512

예) $6$... 이면 SHA-512 해시임.

authconfig로 해시 알고리즘 변경

authconfig 설치

sudo yum install -y authconfig

현재 해싱 알고리즘 확인

authconfig --test | grep -i hashing

/etc/login.defs 확인

  • 변경 후 시스템에 반영되는지 확인
grep -i ENCRYPT_METHOD /etc/login.defs

해시 알고리즘을 SHA-512로 변경

sudo authconfig --passalgo=sha512 --update
  • --passalgo 옵션에 sha512, md5 등 사용 가능.
  • 명령 실행 후 /etc/login.defs의 ENCRYPT_METHOD가 SHA512로 바뀌어야 합니다.

기존 사용자에게 변경(강제 재설정 적용)

  • 사용자에게 새 해시로 갱신되도록 강제하려면 비밀번호 변경을 유도하거나 즉시 변경하려면
sudo chage -d 0 username
  • 로그인 시 비밀번호 변경을 요구합니다.
  • 또는 각 사용자에게 passwd username으로 새 비밀번호를 설정하게 합니다.