리눅스 시스템 etc/shadow파일과 해시

리눅스 시스템 etc/shadow파일과 해시

태그
linux
생성 일시
Apr 10, 2025 01:17 AM
최종 편집 일시
Last updated April 10, 2025
Date

개요

현대의 리눅스 운영체제에서 사용자 인증은 시스템 보안의 핵심 요소 중 하나이며, 그 중심에는 사용자 암호 정보가 위치한다. 이 정보는 일반적으로 /etc/shadow 파일에 저장되며, 이 파일은 사용자 계정의 인증 정보를 안전하게 보관하는 목적을 가진다. 본 포스팅에서는 /etc/shadow 파일의 구조를 기술하고, 다양한 해시 알고리즘이 이 파일에서 어떻게 사용되는지를 분석한다. 특히 각 해시 방식의 식별자와 보안적 특성을 비교하여 설명한다.

1. /etc/shadow 파일의 구조

/etc/shadow 파일은 리눅스 시스템의 사용자 계정 정보 중 민감한 암호 관련 데이터를 저장하는 파일로, 루트 권한을 가진 사용자만이 접근할 수 있다. 이 파일의 각 줄은 하나의 사용자 계정에 해당하며, 다음과 같은 구조를 따른다:
username:password:lastchg:min:max:warn:inactive:expire:reserved
각 필드의 의미는 다음과 같다:
필드
설명
username
사용자 계정명
password
암호 해시값
lastchg
마지막 암호 변경일 (1970-01-01 기준 일 수)
min
암호 변경 최소 주기 (일 단위)
max
암호 변경 최대 주기 (일 단위)
warn
암호 만료 전 사용자에게 경고를 시작할 일 수
inactive
암호 만료 후 계정 비활성화까지의 유예 기간
expire
계정 만료일 (1970-01-01 기준 일 수)
reserved
예약 필드 (현재는 사용되지 않음)

2. 암호 해시 식별자 및 알고리즘

/etc/shadow 파일 내 두 번째 필드(password)에는 사용자의 암호가 직접적으로 저장되지 않고, 해시 함수에 의해 계산된 결과가 저장된다. 이 값은 보통 다음과 같은 형식으로 구성된다:
$ID$SALT$HASH
  • ID: 사용된 해시 알고리즘을 식별하는 접두어
  • SALT: 무작위로 생성된 문자열로, 해시 충돌 및 사전 공격 방지를 위한 요소
  • HASH: 해시 알고리즘에 의해 계산된 최종 값 다양한 ID 값은 다음과 같은 해시 알고리즘을 나타낸다:
식별자 ($ID$)
해시 알고리즘
특징
$1$
MD5
과거 널리 사용되었으나, 현재는 보안성 부족
$2a$
Blowfish
강력한 보안을 제공하나, 일부 시스템에서 제한적 사용
$5$
SHA-256
SHA 계열의 강력한 해시 알고리즘, 보안성 우수
$6$
SHA-512
SHA-256보다 긴 출력값과 더 나은 보안성 제공
$y$ / $7$
yescrypt
메모리-강화형 해시 알고리즘, 최신 배포판에서 기본값으로 채택 중
없음
DES (암시적)
초기 유닉스 시스템의 기본값, 현재는 보안상 심각한 결함 존재
특히, yescrypt는 메모리-하드닝 기법을 도입함으로써 GPU 및 ASIC 기반의 병렬 공격에 대해 매우 강한 저항성을 갖는다. 반면, DES는 별도의 식별자가 없는 경우 기본적으로 사용되며, 이는 보안 수준이 극히 낮은 방식이다.

3. 해시 알고리즘의 보안적 비교

리눅스 시스템에서 사용하는 해시 알고리즘은 보안성을 기준으로 시대별로 발전해 왔다. 초기에는 DES 및 MD5가 사용되었으나, 이들은 현재 사전공격(dictionary attack), 무차별 대입(brute-force attack), 해시 충돌(hash collision) 등에 취약한 것으로 판명되었다.
알고리즘
보안성 평가
사용 권장 여부
DES
매우 낮음
❌ 비권장
MD5
낮음
❌ 비권장
SHA-256
보통~높음
✔️ 권장
SHA-512
높음
✔️ 권장
yescrypt
매우 높음
✅ default
현재의 보안 가이드라인에 따르면, 가능하면 SHA-512 또는 yescrypt를 사용하는 것이 바람직하며, 과거 알고리즘은 시스템에서 제거하거나 즉시 교체하는 것이 권장된다.

결론

/etc/shadow 파일은 리눅스 시스템 보안의 중요한 축을 담당하는 요소로, 이 파일의 해시 알고리즘 설정은 전체 시스템의 인증 보안 강도를 결정짓는 핵심 요소이다. 사용자는 시스템에서 사용 중인 해시 방식이 무엇인지 확인하고, 필요시 보다 안전한 알고리즘으로 전환해야 한다. 특히 최신 배포판에서 기본 채택되고 있는 yescrypt는 현대적인 공격 방식에 효과적으로 대응할 수 있는 알고리즘으로, 향후의 표준으로 자리잡을 것으로 기대된다.
참고문헌