이 임의의 비밀번호가 너무 단순하거나 체계적이라고 표시된 이유는 무엇입니까?

이 임의의 비밀번호가 너무 단순하거나 체계적이라고 표시된 이유는 무엇입니까?

다음을 기반으로 임의의 문자열이 M1uG*xgRCthKWwjIjWc*010iSthY9buc비밀번호/시스템에 비해 너무 단순한 것으로 감지되는 방법비밀번호그리고크랙 라이브러리 확인? 컴퓨터에서 사용해 보세요.

echo "M1uG*xgRCthKWwjIjWc*010iSthY9buc" | cracklib-check

이것은 내 비밀번호가 아니라 동일한 무작위 비밀번호 생성기에서 무작위로 생성된 또 다른 문자열이며 동일한 결과를 생성합니다.

답변1

cracklib은 오픈 소스이므로 답변은 다음에서 찾을 수 있습니다.소스 코드.

"과도하게 단순화/체계적"이라는 것은 너무 많은 문자 앞에 알파벳순 이웃 중 하나가 오는 것을 의미합니다. 따라서 "ab" 또는 "ba"는 나쁜 것으로 간주되지만 "ac" 또는 "ca"는 b가 생략되므로 괜찮습니다.

앞으로이 패치는 2010-03-02부터입니다., 이는 최대 허용네 글자이런 특성을 보여줍니다. 예를 들어, "bar12345"는 문자 "a", "2", "3", "4" 및 "5"가 선행 문자의 알파벳 이웃이기 때문에 실패합니다.

slm은 그의 대답에서 ' M1uG*xgRCthKWwjIjWc*010iS그렇지만 M1uG*xgRCthKWwjIjWc*010iSt그렇지 않다'는 것을 발견했습니다. 그것을 분석해 봅시다. 다음은 crashlib-check가 시스템 비밀번호를 나타내는 것으로 간주하는 문자입니다.

M1uG*xgRCthKWwjIjWc*010iS
               ^^    ^^

4개의 최대값보다 낮지만 t를 추가하면 다음과 같습니다.

M1uG*xgRCthKWwjIjWc*010iSt
               ^^    ^^  ^

T가 S를 따르기 때문에 한계를 넘어서는 것입니다(테스트에서는 대소문자를 구분하지 않는 것 같습니다).

패치는 이러한 오탐을 방지하기 위해 총 비밀번호 길이에 따라 최대 제한을 변경합니다.

답변2

페도라 19에서

실행해 보니 괜찮습니다. 저는 페도라 19를 사용하고 있습니다.

$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK

버전 정보는 다음과 같습니다.

$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version     : 2.8.22
Release     : 3.fc19

노트:또한 큰 따옴표 대신 작은 따옴표를 사용해 볼 것입니다. 왜냐하면 *이상한 방식으로 확장될 가능성이 있기 때문입니다.

CentOS 5 및 6

CentOS 6에서 예제를 시도하면 제대로 작동하고 문제가 없지만 CentOS 5.9에서 설명한 대로 실패합니다.

$ echo 'M1uG*xgRCthKWwjIjWc*010iSthY9buc' | cracklib-check
M1uG*xgRCthKWwjIjWc*010iSthY9buc: it is too simplistic/systematic

버전 정보:

$ rpm -qfi /usr/sbin/cracklib-check | grep -E "Version|Release"
Version     : 2.8.9                  
Release     : 3.3

실수?

당신이 발견한 것은 버그인 것 같습니다. 문자열을 입력하고 점점 더 많이 실행하면 cracklib-check26번째 문자에 도달하면 실패하기 시작한다는 것을 알 수 있습니다.

# 25    
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iS"
M1uG*xgRCthKWwjIjWc*010iS: OK

# 26
$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSt"
M1uG*xgRCthKWwjIjWc*010iSt: it is too simplistic/systematic

t마지막 문자를 a에서 계속 작동한다는 의미로 바꾸면 v이 내용을 좀 더 깊이 살펴보겠습니다.

$ cracklib-check <<<"M1uG*xgRCthKWwjIjWc*010iSvhY9b"
M1uG*xgRCthKWwjIjWc*010iSvhY9b: OK

그래서 버전에서는 cracklib-checksubstrings 에 걸린 것처럼 보입니다 Sth.

귀하가 제공한 문자열 블록에는 확실히 뭔가 이상한 점이 있습니다. 끝 부분을 빼내고 앞부분을 생략했다면 이 부분도 실패했을 것 같아요.

$ cracklib-check <<<"jIjc*010Sth"
jIjc*010Sth: it is too simplistic/systematic

동일한 문자열은 Fedora 19 및 CentOS 6에서도 문제를 일으킵니다!

업데이트 #1

@를 기준으로평화새의매우 훌륭한 조사입니다. 이제 우리는 4개 이상의 문자가 서로 너무 가까우면 사용된 휴리스틱이 잘못될 것이라는 것을 알고 있습니다. ㅏ패치가 도입되었습니다.이는 고려 중인 비밀번호의 전체 길이를 고려하여 이러한 오탐지를 제거하도록 이 경험적 방법을 변경합니다.

결론적으로?

제한된 테스트 중 일부에 따르면 여기에는 이상한 경험적 방법이 있는 것 같습니다. 겉으로 보기에 정상인 일부 문자열은 문제를 일으킬 수 있습니다.

이것을 코딩하려는 경우 비밀번호 생성 및 평가를 래핑한 다음 pacify 비밀번호를 생성한 후 루프에서 벗어나는 것이 좋습니다 cracklib-check.

아니면 적어도 @maxwing이 답변에서 언급한 수정 사항이 포함된 최신 버전으로 업그레이드하는 것이 좋습니다.

비밀번호 생성 대안

보편적인 뿌리

나는 또한 내가 일반적으로 사용하는 것을 추가하고 싶습니다pwgen비밀번호를 생성합니다. 이것은 당신에게도 도움이 될 수 있습니다.

$ pwgen -1cny 32
iWu0iPh8aena9raSoh{v6me)eh:eu6Ei
우랜덤

tr/dev/urandom, 및 와 함께 일부 스크립트 마법을 사용하여 fold매우 높은 품질의 임의 비밀번호를 얻을 수도 있습니다.

$ tr -dc '[:graph:]' </dev/urandom | fold -w 32 | head -n 1
;>$7\`Hl$=zn}R.b3h/uf7mY54xp}zSF

fold명령은 길이를 제어합니다. 대안으로 다음을 수행할 수도 있습니다.

$ echo $(tr -dc '[:graph:]' </dev/urandom | head -c 32)
/_U>s[#_eLKAl(mrE@oo%X~/pcg$6-kr

관련 정보