내 목표
나는 사용자 이름과 비밀번호가 sha256을 사용하여 해시되는 오래된 MySQL 데이터베이스를 가지고 있습니다. 원래 비밀번호가 없어서 알 수도 없습니다. 이는 데이터베이스에서 Linux 시스템으로의 간단한 사용자 마이그레이션입니다. Linux 인증은 다른 부분에서 사용될 것이고 사용자가 자격 증명을 다시 생성하도록 하고 싶지 않기 때문에 Linux에서 이러한 사용자를 모두 생성해야 합니다.
지금까지의 내 생각
crypt를 사용하여 섀도우 파일을 사용하여 이상한 base64 형식을 생성할 수 있다는 것을 알았습니다. 하지만 이 경우 원래 비밀번호가 필요합니다. Linux에서의 프로세스는 다음과 같습니다.
- 솔트와 비밀번호를 기반으로 간단한 sha512 해시 생성
- 1000을 5000번 반복하고 이전 해시 값과 비밀번호 및 솔트의 해시 값을 번갈아 연결하여 새로운 sha512 해시 값을 계산합니다. 또한 sha512-crypt를 사용하면 1000에서 999999999까지 사용자 정의 라운드 수를 지정할 수 있습니다.
- 비밀번호 해시 문자열은 최종 해시의 특수 Base64 인코딩을 사용하여 생성됩니다.
인용하다:https://www.vidarholen.net/contents/blog/?p=33
첫 번째 단계는 솔트를 사용하여 해시를 생성하는 것이므로 이것이 가능해야 한다고 생각합니다. 리눅스는 오픈소스이기 때문에 이런 곳에서 crypt의 소스코드를 구해볼 수 있을 것 같아요.https://code.woboq.org/userspace/glibc/crypt/crypt-entry.c.html 그리고 2단계부터 시작하세요. 하지만 그 모든 것을 하기 전에, 그것이 효과가 있을지 모르겠고, 더 쉬운 방법이 있는지 알고 싶습니다. 그렇지 않은 경우 이를 수행하기 위한 올바른 Linux 소스 코드를 어디서 얻을 수 있습니까? 제가 제공한 링크가 정확한지 잘 모르겠습니다.
감사합니다.
답변1
아니요, 죄송합니다. 이전 해시를 직접 사용하여 새 해시를 생성할 수는 없습니다.
첫째, SHA-256 해시를 갖고 이를 사용하여 SHA-512 기반 해시를 계산하는 것에 대해 이야기하고 있는데, 이는 SHA-256 해시를 반전하지 않으면 발생하지 않습니다. 둘째, 동일한 해시 기반 암호화 알고리즘(SHA-256 기반 암호화의 경우)을 사용하려는 경우에도 $5$
링크의 첫 번째 단계는 여전히 "sha512(비밀번호+소금+비밀번호)에서 대체 합계를 계산"하는 것입니다. 일반 텍스트 비밀번호가 필요합니다.
하나의 비밀번호 해시를 다른 비밀번호 해시로 변환하는 방법은 사용자가 어떤 방식으로든 비밀번호를 새로 고쳐 새 해시가 생성되도록 하는 것입니다. 또는 더 나은 방법은 새 해시가 존재하지 않을 때 이전 해시에 대한 로그인을 허용하도록 로그인 루틴을 수정하는 것입니다.그리고동시에 새로운 해시 값이 생성됩니다. 이렇게 하면 잊어버린 계정을 제외하고 결국 오래된 해시를 폐기할 수 있습니다.
답변2
이를 수행하는 방법은 여러 가지가 있습니다. 아마도 자신만의 코드를 컴파일할 필요는 없을 것입니다.
PAM을 확인해보세요. 모듈식 인증 관리자입니다. 이는 많은 Gnu/Linux 시스템에서 사용됩니다. 기존 해시를 사용할 수 있는 모듈이 있을 수 있습니다.