배경

배경

배경

  • 실험적으로 항목을 수동으로 생성하여 새 사용자(루트)를 추가했습니다 /etc/passwd. openssl구체적으로 내가 사용한 비밀번호를 해싱했지만 OpenSSL 1.1.1g결과는 다른 버전에서도 동일해야 합니다.

  • testing나는 문자열 " "을 해시 할 때마다 다른 결과를 얻는다는 것을 알았습니다 .
    # openssl passwd testing YY9E0oGqqamCM # openssl passwd testing csL9dpD2Iy3H2

  • /etc/passwd그런 다음 다음과 같이 두 개의 해시를 파일 에 추가했습니다 .
    # echo "root2:YY9E0oGqqamCM:0:0:root:/root:/bin/bash" >> /etc/passwd # echo "root3:csL9dpD2Iy3H2:0:0:root:/root:/bin/bash" >> /etc/passwd

  • 마지막으로 해시는 달랐지만 각 사용자로 성공적으로 전환했습니다.
    $ whoami reguser
    $ su root2 Password: testing
    # whoami root # exit
    $ whoami reguser
    $ su root3 Password: testing
    # whoami root

질문

  • testing파일의 실제 해시가 다른 경우에도 /etc/passwd동일한 비밀번호를 어떻게 사용할 수 있습니까 ?
    • 누군가가 뒤에서 무슨 일이 일어나고 있는지 설명할 수 있다면 좋을 것입니다.
      • "testing"이라는 문자열이 해시될 때마다 다른 솔트가 제공된다고 가정합니다. 하지만 사용자를 전환하기 위해 비밀번호를 입력할 때 Linux는 해당 솔트가 무엇인지 어떻게 알 수 있습니까?

답변1

비밀번호 해시는 일반적으로소금에 절인. 솔트를 지정하지 않으면 무작위로 생성됩니다. 그래서 결과가 다릅니다. 소금은 출력의 일부입니다.

openssl passwd -salt xx foo
xxY8K1xpBNqPg

openssl passwd -salt xx foo
xxY8K1xpBNqPg

답변2

  • 해시 항목의 처음 두 문자는 소금입니다. openssl passwd더도 말고 덜도 말고 항상 2자 길이의 솔트가 있어야 합니다.

  • YY9E0oGqqamCMcsL9dpD2Iy3H2따라서 및 의 경우에는 각각 염이 됩니다 YY.cs

    $ openssl passwd -salt YY testing
    YY9E0oGqqamCM
    $ openssl passwd -salt cs testing
    csL9dpD2Iy3H2
    

관련 정보