유닉스 / 리눅스 시스템에서 암호의 최대 길이는 얼마입니까?


27

유닉스 / 리눅스 시스템에서 허용되는 최대 암호 길이는 얼마입니까?


20
대답이 42가 아닌 경우에 해당합니다.
tvanfosson 2016 년

더 좋은 질문은 누군가가 타이핑하기를 합리적으로 기대할 수있는 것입니까? 한계가 40이고이를 초과하면 무언가 잘못하고있는 것입니다.
msw

답변:


39

시스템이 암호 해시를 사용하여 암호 (예 : MD5, SHA1 등)를 저장하는 경우 이러한 해시는 모든 양의 데이터로 만들 수 있으므로 암호 길이 자체에는 제한이 없습니다. MD5 또는 SHA1 해시는 전체 하드 드라이브에 대해 생성 될 수 있으며 일반적으로 법의학 목적으로 수행됩니다. 비트가 조금이라도 조금이라도 바뀌면 매우 다른 해시가 있으므로 데이터가 변경되었는지 확인할 수 있기 때문입니다. 즉, 동일한 알고리즘을 사용하여 데이터가 변경되었는지 테스트 할 수 있습니다. Linux (현재 Linux 이상)는 이와 동일한 해시 함수를 사용합니다. 암호를 묻고 사용자가 제공 한 암호의 암호 해시를 작성하고이 해시가 저장된 암호와 일치하는지 확인합니다.

이러한 해시를 사용하면 약간의 단점이 있습니다. 예를 들어 해시의 크기는 유한합니다. 예를 들어 MD5 해시는 128 비트입니다. 이는 MD5 해시에만 2^128있거나 340,282,366,920,938,463,463,374,607,431,768,211,456가능한 조합 이 있음을 의미합니다 . 이제는 큰 숫자이지만 이것이 의미하는 것은 동일한 해시를 생성하는 두 개의 다른 항목이나 키가있는 해시 충돌이라고 할 수 있다는 것입니다. 이론적으로, 더 큰 키 크기, 충돌의 낮은 확률은 더 이상은 브 루트 포스에 암호를해야하지만, 엄격하게 엔트로피를 평가하고 얼마나되는가 CAN그러나 그들이 시도하는 첫 번째 항목이 해시 충돌 인 경우에도 일치하는 항목이 될 가능성도 있습니다. 일반적으로 말하면 키 크기가 더 큰 해시를 사용하는 것이 더 안전합니다. MD5라고 가정하면 340,282,366,920,938,463,463,374,607,431,768,211,456가능한 일치 항목 중 첫 번째 암호가 일치 할 가능성은 극히 적습니다. 크래커를 많이 시도하고 있기 때문에 또한 좋은 암호를 선택 사용하는 단어 목록, 이름 목록 및 이러한 목록의 돌연변이 (즉, 단어는 "물고기"그들은 시도 할 경우 fish1234, fish!@#$등)가 암호를 강제 짐승에 의존하기 전에.

시스템이 암호 해시를 사용하여 암호를 저장하는지 알 수있는 방법은 /etc/shadow파일을 살펴 보는 것입니다 (루트 액세스 권한이 있다고 가정). 모든 줄의 형식은 다음과 같습니다 user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved. 비밀번호 필드는로 시작할 수 있습니다 $num$(예 : 비밀번호 필드 의 md5 해시는 $1$01234567$b5lh2mHyD2PdJjFfALlEz1시작 위치와 같습니다 $1$). 이것으로 시작하면 시스템이 암호화 해시를 사용하고 있음을 의미합니다. 모든 최신 시스템에서 비밀번호 필드의 형식은입니다 $id$salt$hash. id는 사용중인 암호화 해시 유형을 지정합니다. 솔트는 알려진 해시의 미리 계산 된 테이블로부터 보호하기 위해 키 (일반 텍스트 비밀번호)와 연결된 임의로 생성 된 문자열입니다. 해시는 솔트 및 키 / 암호로 생성 된 암호화 해시입니다. 비밀번호 입력란이$num$ 그런 다음 암호화 해시를 사용하고 있습니다.

숫자가 의미하는 바는 다음과 같습니다.

  • $1$ MD5를 사용하고 있음을 의미
  • $2$또는 $2a$복어를 사용한다는 의미입니다
  • $5$ SHA-256을 사용하고 있음을 의미
  • $6$ SHA-512를 사용하고 있음을 의미

SHA-512는 glibc가 제공하는 최고의 해시입니다. 나는 복어가 얼마나 강한 지 모르지만 glibc의 일부가 아니며 그것을 추가 한 특정 배포판에서만 사용할 수 있습니다. SHA-512는 충돌이 예상되기 전에 512 비트 키 또는 2 ^ 512 가능한 조합을 생성하며 복잡한 암호를 사용하면 실제 암호 또는 해시에서 충돌을 찾기 위해 컴퓨터 클러스터가 매우 오랜 시간이 걸립니다. .

또한 시작하지 않는 해시가 있으면 $num$DES를 사용하고 있으며 8 자 길이로 제한됩니다. DES를 사용하는 구형 시스템 또는 적어도 일부는 크기 암호를 사용하지만 처음 8 자만 사용한다고 생각합니다. 이것은 당신이 당신의 암호를 설정 mybigbigapple하고 누군가가 암호 mybigbigcity를 사용하면 DES 는 그 암호 를 사용할 수 mybigbig있고 그 이후의 것은 버려 지기 때문에 허용 됩니다.

2008 년 4 월에 릴리스 된 8.04 기준의 Ubuntu는 MD5 해시를 사용했습니다. 2008 년 10 월에 릴리스 된 8.10의 Ubuntu와 그 이후의 모든 버전은 SHA-512 해시를 사용합니다. 2008 년 4 월 이전까지는 잘 모르겠지만, 대부분의 모든 배포판에는 해시가 사용되었다고 생각합니다.

Ubuntu의 현재 12.04 및 14.04 LTS (장기 지원 릴리스)는 기본적으로 SHA-512를 사용하는 것으로 보이며 $6$/ etc / shadow 파일의 해시 앞에 붙인 것처럼 볼 수 있습니다 .

catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]

이제 해싱 알고리즘에 허용되는 키 또는 비밀번호의 길이 만 허용되는 비밀번호 크기를 결정하는 것은 아닙니다. 관심이있는 다른 항목은 프로그램 작성 방법과 프로그램 자체가 지원할 길이입니다. 현대의 모든 passwd 프로그램들과 아마도 crypt(3)Linux에서 대부분의 기능 일 것입니다 . crypt는 오랫동안 (최소한 MD5가 사용되고 그 이전에 사용되었으므로) 실제 키에 대한 문자 포인터를 허용했습니다. 즉, 키가 얼마나 오랫동안 허용되는지에 대한 유일한 제한은 프로그램이 사용할 수있는 RAM의 양에 따라 결정되지만 모든 사람이 기억할 수있는 암호보다 훨씬 더 길다는 것을 의미합니다. (수백만의 문자?).

비밀번호의 길이에 대한 질문에 답변해야합니다. 도움이 되었기를 바랍니다.

참고 문헌 :


7
"SU 답변의 최대 길이는 얼마입니까?" 좋은 대답!
James Mertz

1
crypt () 알고리즘은 10 년 이상 더 이상 사용되지 않습니다. crypt () 암호의 길이에 관계없이 8 자로 잘립니다. crypt ()는 12 비트 솔트의 매우 작은 키 공간과 결합되어 완전히 안전하지 않게되었습니다. 참고로, 다음은 2010 년에 crypt ()를 사용하여 1 백만 개의 Gawker 암호가 노출 된 방법에 대한 기사입니다. https://www.lightbluetouchpaper.org/2010/12/15/the-gawker-hack- How-a-million-passwords-
west

8

사용되는 인증 모듈에 따라 다릅니다. 최신 Linux 시스템에서는 비밀번호 길이에 대한 최대 제한이 없습니다. 일부 오래된 시스템에는 암호 저장 시스템에 의해 제한이있을 수 있습니다. 일반적으로 최대 값은 8, 40 및 255 인 것 같습니다.


3

암호 저장 방법, MD5, SHA1, BlowFish 등에 따라 저장 방법 자체에서 설정 한 암호에 제한이 없다고 생각합니다.

이전 구현에는 8 자 또는 255 자로 제한 될 수 있습니다.

이것은 www.serverfault.com에 더 적합한 질문처럼 보입니다. :)


5
이것은 일반적인 컴퓨터와 관련이 있으며 반드시 서버에만 한정되는 것은 아닙니다!
다스 안드로이드

0

passwd 명령은 암호화를위한 mcrypt 명령과 관련이 있습니다. mcrypt의 소스 코드에 따르면 stdin의 최대 크기는 512 자 (암호)로 제한되어 있지만 2 년 전입니다 ....-(다음 시간에이 답변을 업데이트하겠습니다) ... 예 ... 소스 코드 디렉토리 src에 mcrypt의 2.6.8에는 getpass.c 파일이 있습니다. 처음에는 거기에 값 512가 정적 문자 값으로 설정되어 있습니다. (1.4GB까지 펌핑하고 싶습니다 ...) :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.