답변:
Linux 시스템의 비밀번호는 암호화되지 않으며 해시되어 큰 차이가 있습니다.
정의에 따라 해시 함수를 되돌릴 수 없습니다. 자세한 내용은 Hash Wikipedia 항목을 참조하십시오 .
사용되는 해시 기능은 시스템 구성에 따라 다릅니다. MD5 와 복어 는 사용 된 해시 함수의 일반적인 예입니다.
따라서 사용자의 "실제"비밀번호는 시스템에 저장되지 않습니다.
로그인하면 비밀번호로 입력 한 문자열이 해시되고 / etc / shadow 파일과 비교됩니다. 일치하면 올바른 비밀번호를 입력 한 것입니다.
어쨌든 암호 해시에 대한 공격 벡터가 여전히 있습니다. 자주 사용하는 암호 사전을 유지하고 자동으로 시도 할 수 있습니다. 인터넷에는 많은 사전이 있습니다. 또 다른 방법은 가능한 많은 문자 조합을 시도하여 많은 시간을 소비하는 것입니다. 이것을 무차별 대입 공격이라고합니다.
Rainbowtables 는 해시에 대한 또 다른 멋진 공격 벡터입니다. 이 개념의 기본 개념은 가능한 모든 해시를 미리 계산 한 다음 테이블에서 해시를 찾아 해당 비밀번호를 찾는 것입니다. 이러한 테이블을 생성 하는 여러 분산 컴퓨팅 프로젝트 가 있으며 , 사용되는 문자의 크기가 다르며 대부분 몇 TB입니다.
이러한 룩업 테이블의 위험을 최소화하기 위해 암호 해시에 소위 " salt "를 추가하는 일반적인 관행과 Unix / Linux의 기본 동작입니다 . 비밀번호를 해시하고 임의의 솔트 값을 해시에 추가 한 후이 새 문자열을 다시 해시하십시오. 입력 한 값이 올바른 비밀번호인지 확인하려면 새 해시와 솔트를 저장해야합니다. 이 방법의 가장 큰 장점은 각각의 고유 한 소금에 대해 새 조회 테이블을 작성해야한다는 것입니다.
다른 운영 체제의 사용자 비밀번호에 대해 사전 또는 무차별 대입 공격을 실행하는 데 널리 사용되는 도구는 John The Ripper (또는 JTR)입니다. 자세한 내용은 프로젝트 홈페이지 를 참조하십시오.
John the Ripper는 빠른 암호 크래커로 현재 Unix, Windows, DOS, BeOS 및 OpenVMS의 다양한 버전에서 사용할 수 있습니다. 주요 목적은 약한 유닉스 암호를 탐지하는 것입니다.
이 암호는 단방향 암호화이기 때문에 암호를 해독하는 것은 사실상 불가능합니다.
다른 사람들이 말했듯이 섀도 파일을 실제로 해독 할 수는 없습니다.
당신이 시도 할 수있는 유일한 것은 John the Ripper 와 같은 도구를 사용하여 암호를 무차별 추측하는 것 입니다. 이것은 성공할 수도 있고 아닐 수도 있으며, 거의 확실히 오랜 시간이 걸릴 것입니다.
비밀번호는 비밀번호를 사용하고 해당 비밀번호에 고유 한 해시를 생성하는 알고리즘을 사용하여 암호화됩니다. 이 해시는 / etc / shadow 파일에 저장됩니다. 해시에서 비밀번호를 복구 할 수 없습니다. 암호를 복구하는 유일한 방법은 전체 키 공간을 무차별 공격 하거나 일종의 사전 공격 을 사용하는 것입니다 . 초기 해시 함수는 DES 표준을 사용했습니다. 컴퓨팅 성능이 향상되어 DES 키 공간을 적절한 시간 안에 강제로 실행할 수있게되었습니다. 암호를 암호화하는 데 사용되는 최신 해시 함수에는 MD5, SHA 등이 있습니다. crypt (3) 라이브러리에 대한 자세한 내용은 여기를 참조하십시오 .