openssl 암호화 파일의 소금에 대해 혼란스러워함

openssl 암호화 파일의 소금에 대해 혼란스러워함

opensslversion 을 사용할 때 1.0.2m테스트 파일을 다음과 같이 암호화했습니다.

openssl enc -aes-256-cbc -salt -in test.txt -out test.txt.enc

비밀번호를 입력하세요. 그게 바로 제가 원하는 것입니다.


이제 문제는 파일을 해독할 때 앞으로 이 솔트가 필요할까요, 아니면 다른 것이 필요할까요?입니다. 아니면 소금이 어디에 저장되어 있는지 정말 이해가 안 돼요.

답변1

솔트(또는 IV, 초기화 벡터)는 암호화를 무작위화하는 데에만 사용됩니다. 하나도 없으면 동일한 입력으로 인해 동일한 출력이 발생하고 정보가 유출됩니다(즉, 메시지가 동일하다는 사실). 비밀번호 해시와 관련하여 "솔트"라고 부르는 것을 주로 본 것 같고 암호화에서는 IV라고 부르는 경우도 자주 본 것 같지만 아이디어는 동일합니다. 예를 들어 참조하십시오.Salt_(암호화)그리고초기화 벡터위키피디아에서.crypto.stackexchange.com그리고security.stackexchange.com두 가지에 대한 자세한 정보도 제공됩니다.

솔트는 출력 파일에 저장되므로 명시적으로 저장할 필요가 없습니다. 대신 플래그를 제공하면 출력 파일이 더 작아지는 것을 확인할 수 있습니다 -nosalt.

답변2

ilkkachu의 답변은 오해의 소지가 있습니다. Salt와 IV는 완전히 다른 두 가지 용도를 가지고 있습니다.

이러한 목적은 링크된 Wikipedia 페이지에 설명되어 있습니다.

키 파생에는 솔트(Salt)가 사용됩니다. 해싱은 사용자가 제공한 비밀번호에서 고정 길이 암호화 키를 생성하는 데 사용됩니다. 솔팅의 목적은 동일한 비밀번호를 사용하지 않고 동일한 키를 생성하여 레인보우 테이블 공격을 방지하는 것입니다. 비밀번호와 솔트, 해시를 연결하세요.

초기화 벡터는 다양한 용도로 사용됩니다. AES 암호는 고정 길이 키와 이전 일반 텍스트 블록의 내용을 사용하여 고정된 수의 일반 텍스트 비트(블록)를 변환(암호화)합니다. 첫 번째 블록은 이전 블록이 없으므로 IV와 키를 사용하여 암호화됩니다.

솔트는 일반적으로 암호화된 파일의 시작 부분에 저장됩니다. 그건 비밀이 아니야

관련 정보