암호를 해시하는 데 사용되는 해시 알고리즘을 찾는 방법은 무엇입니까?


11

작동 암호가 있으며 해시 (/ etc / passwd)를 볼 수 있습니다. 일치하는 것을 찾을 때까지 다른 알고리즘을 수동으로 시도하지 않고 암호를 해시하는 데 사용되는 해시 알고리즘을 어떻게 찾을 수 있습니까?


1
어떤 유닉스 변종을 사용하고 있습니까?
Kusalananda

3
에 해시가 표시되어 매우 놀랍습니다 /etc/passwd. 나는 모든 유닉스 / 리눅스 변형이 /etc/shadow몇 년 전에 분리 된 것으로 생각 했다. (이러한 시스템은 여전히 ​​해시를 지원 passwd한다는 것을 알고 있지만 더 이상 사용할 수있는 유틸리티는 없습니다. 임베디드 시스템일까요?
roaima

OpenWrt Backfire 10.03입니다. 해시는 여전히 /etc/passwd여기에 저장 됩니다. 그러나 이것은 문제의 문제를 바꾸지 않습니다. 그렇습니까?
Dorin Botan

1
BSD에는 두 가지 버클리 DB 파일 인 roaima가 있습니다. 여전히 분할되어 있지만 그렇지 않으며 /etc/shadow해당 이름의 파일이 없습니다.
JdeBP

답변:


27

이 설명되어 crypt(3)의 맨 페이지를 찾을 수있는 을 통해 shadow(5)S 맨 ' , 또는 passwd(5)'의 . 이러한 링크는 최신 Linux 기반 시스템에 적합합니다. 설명이 있습니다 :

경우 소금이 "$ 문자로 시작하는 문자열입니다 아이디 선택적으로"$ "로 종료 문자열 다음에 $가", 결과의 형식은 다음과 같습니다

$id$salt$encrypted

id 는 DES 대신 사용 된 암호화 방법을 식별 한 다음 나머지 비밀번호 문자열을 해석하는 방법을 결정합니다. 다음과 같은 id 값이 지원됩니다.

ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)

또한으로 알려진 복어는, bcrypt또한 접두사에 의해 식별됩니다 2, 2b, 2x,과 2y(참조 PassLib의 설명서를 ).

따라서 해시 된 비밀번호가 위의 형식으로 저장된 경우 id 를보고 사용 된 알고리즘을 찾을 수 있습니다 . 그렇지 않은 경우 crypt기본 DES 알고리즘 (13 자 해시 포함) 또는 "big" cryptDES (128 자 암호 지원, 최대 178 자 해시 길이로 확장) 또는 BSDI 확장 DES ( _접두사 포함) 뒤에 19 자 해시).

일부 배포판은 libxcrypt 를 사용하여 훨씬 더 많은 방법 을 지원하고 문서화 합니다.

  • y
  • gy: gost-yescrypt
  • 7: 암호화
  • sha1: sha1crypt
  • md5: SunMD5

다른 플랫폼은 다른 알고리즘을 지원하므로 crypt맨 페이지를 확인하십시오 . 예를 들어 OpenBSDcrypt(3)ID “2b”를 사용하여 식별하는 Blowfish 만 지원합니다 .


2
DES 기반 암호는 BTW 항상 13 자이며, 영숫자 문자뿐만 아니라 구성 ./. 처음 두 문자는 솔트이고 다른 11 문자는 해시 값 (정렬)입니다. 그리고 지원되는 알고리즘 중 유일하게 crypt강력한 암호를 선택하여 보상 할 수없는 유일한 알고리즘 입니다.
kasperd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.