man 5 shadow
두 번째 필드에 대해서는 다음과 같이 말합니다 .
암호화된 비밀번호
요즘 정말 그런가요? "해시된 비밀번호"라고 말해야 한다고 생각합니다. 내가 맞나요?
답변1
아니요, 섀도우 파일에는 암호화된 비밀번호가 포함되어 있지 않습니다. 제가 본 어떤 Unix 변형에도 없습니다. 이를 위해서는 어딘가에 암호화 키가 필요합니다. 어디에 있을까요?
심지어 원작도crypt
기능실제로는 해시 함수입니다. 비밀번호를 키로 사용하여 작동합니다.DES. 의 출력은 crypt
모든 비트가 0인 블록의 암호화입니다. 이는 구현의 일부로 암호화 기능을 사용하지만 crypt
작업은 암호화 작업이 아닙니다.해시 함수: 역함수를 계산하기 어려워 동일한 출력을 생성하는 두 값을 찾기 어려운 함수입니다.
제한 사항 내에서 원래 DES 기반 crypt
구현은 다음 기본 원칙을 따랐습니다.좋은 암호화 해시 함수: 되돌릴 수 없는 기능,소금, 감속 계수. 오늘날의 컴퓨팅 성능을 고려할 때 적합하지 않은 것은 디자인이 아니라 제한 때문입니다. 비밀번호 최대 8자, 전체 크기로 인해 무차별 대입 공격이 쉽고, 솔트가 너무 짧고, 반복 횟수가 너무 짧습니다.
이 이름 때문에 crypt
(그리고 암호화가 내부적으로 사용된다는 사실 때문에 crypt
) 그리고 최근까지 암호화에 대해 교육받은 사람이 거의 없었기 때문에 이 기능에 대한 광범위한 문서 crypt
와 다른 맥락에서 동등한 문서에서는 이를 "암호화 암호화"라고 설명합니다. ". 하지만 실제로는 비밀번호 해시이며 항상 그래왔습니다.
최신 시스템은 보다 강력한 알고리즘을 기반으로 하는 암호화 해시 함수를 사용합니다. 이러한 알고리즘 중 일부는 "MD5", "SHA-256" 및 "SHA-512"라고 불리지만 해시 계산은 MD5(비밀번호 + 솔트)와는 달리 느린 속도 요구 사항을 충족하는 반복 해시입니다(비록 공통 방법에는 GPU 기반 가속을 방지하기 위한 메모리 경도가 부족합니다.
답변2
man 5 shadow
"암호화된 암호" 섹션에서 이를 참조합니다 crypt(3)
. 매뉴얼( )을 읽어보면 man 3 crypt
기존 DES 암호화 암호와 현재 사용되는 해싱 알고리즘을 모두 사용할 수 있음을 알 수 있습니다. 따라서 "암호화된 비밀번호"가 해당 필드에 포함될 수 있는 내용을 완전히 포함하지 않는다고 생각하신 것이 맞습니다. 더 나은 설명은 "암호화되거나 해시된 비밀번호"입니다.
답변3
설정에 따라 다릅니다. 섀도우 파일에는 암호화된(자체 및 솔트 포함) 비밀번호가 포함될 수 있지만 해시 여부는 형식에 따라 다릅니다.
시스템은 해시 함수를 기반으로 새 비밀번호를 입력할 수 있지만 여전히 이전 형식을 지원할 가능성이 높습니다.
항목이 a로 시작하지 않으면 지원되는 해시 함수 중 하나를 사용하지 않고 $
출력된 것으로 간주됩니다.crypt
"$1$"은 MD5를 나타내고, "$2a$"는 Blowfish, "$2y$"는 Blowfish(8비트 문자를 올바르게 처리함), "$5$"는 SHA-256, "$6$"는 SHA-512,