한국어

개발자 도구 · SHA 해시 계산기

충돌, 사전 이미지 및 두 번째 사전 이미지: 세 가지 해시 보안 목표

· 배경

샤-256 암호화 보안

사전 이미지 저항, 두 번째 사전 이미지 저항 및 충돌 저항을 보여주는 세 가지 다이어그램
원본 ToolAcre 벡터 일러스트레이션

권고에 따르면 알고리즘에 충돌 문제가 있으므로 사용이 영향을 받는지 알아야 합니다. 이 게시물은 세 가지 저항 속성을 정의하고, 어떤 사용 사례가 어떤 것에 따라 달라지는지 보여주고, 이를 SHA-1에 적용합니다.

내 사용이 영향을 받나요? — 자문가가 직접적으로 대답하는 경우가 거의 없는 질문

SHA-1에 충돌 문제가 있으므로 시스템을 업그레이드해야 한다는 권고가 도착합니다. 하지만 시스템이 메시지 인증이 아닌 키 파생에만 SHA-1을 사용한다면 어떻게 될까요? SHA-1가 진위 여부를 증명하는 것이 아니라 동일한 파일의 중복을 제거하는 데만 사용된다면 어떻게 될까요? "내 시스템이 영향을 받나요?"라는 질문이 있습니다. 해시 함수의 어떤 속성이 실제로 손상되었는지, 사용 사례가 어떤 속성에 의존하는지 이해하지 않고는 대답할 수 없습니다.

해시 함수는 사전 이미지 저항, 두 번째 사전 이미지 저항 및 충돌 저항과 같은 여러 보안 속성을 제공합니다. 한 속성이 손상되더라도 다른 속성은 손상되지 않으며 일부 사용 사례는 보안이 유지되는 속성에만 의존합니다. ToolAcre SHA 해시 계산기는 알고리즘과 해당 다이제스트 너비, 각 보안 목표의 경계를 결정하는 속성을 표시합니다. 이러한 속성을 이해하는 것은 권고가 시스템에 영향을 미치는지 여부를 결정하는 첫 번째 단계입니다.

사전 이미지 저항 — 해시가 주어지면 이를 생성하는 입력을 찾을 수 없습니다.

사전 이미지 저항은 주어진 다이제스트에서 해당 다이제스트를 생성하는 입력을 찾는 것이 불가능해야 함을 의미합니다. 비밀번호 해시를 받고 비밀번호를 추측하려고 합니다. 이것은 사전 이미지 공격입니다. 두 번째 사전 이미지 저항은 메시지와 해당 해시가 주어지면 동일한 해시를 사용하는 다른 메시지를 찾는 것이 불가능해야 함을 의미합니다. 다운로드한 파일과 해당 파일의 SHA-256 체크섬이 있습니다. 공격자는 동일한 해시를 가진 다른 파일로 파일을 교환하려고 합니다. 이것은 두 번째 사전 이미지 공격입니다.

충돌 저항은 동일한 해시를 사용하는 두 개의 다른 메시지를 찾는 것이 불가능해야 함을 의미합니다. 귀하는 문서에 서명하고 있습니다. 공격자는 동일한 서명을 사용하여 다른 문서를 생성하려고 합니다. 이것은 충돌 공격이다. 이 세 가지 시나리오에는 공격자가 요구하는 작업량이 다르며 보안 범위도 다릅니다. 사전 이미지 저항은 가장 강력한 특성이며 깨지는 경우가 거의 없습니다. 다이제스트가 주어지면 사전 이미지를 찾으려면 가능한 입력 공간을 통한 무차별 검색이 필요합니다. 다이제스트 너비는 일반 검색 공간에 영향을 미치지만 이 기사에서는 이를 파생하고 공격 모델을 정의하지 않고 작업 횟수를 명시하지 않습니다.

두 번째 사전 이미지 저항 — 입력이 주어지면 동일한 해시를 가진 다른 입력을 찾을 수 없습니다.

두 번째 사전 이미지 저항은 그 다음으로 강력하며 단독으로 깨지는 경우도 거의 없습니다. 메시지와 해당 해시가 주어지면 동일한 해시가 있는 다른 메시지를 찾으려면 다이제스트 크기에 있어서 기하급수적인 작업이 필요합니다. 두 번째 사전 이미지 및 충돌 검색은 공격자에게 다양한 선택권을 부여하므로 일반적인 경계는 서로 바꿔 사용할 수 없습니다. 여기서는 질적 차이가 충분합니다. 인라인 파생 없이는 수치적 경계가 주장되지 않습니다. 무차별 대입이 필요하지 않은 구조적 공격이 있는 경우 알고리즘은 두 번째 사전 이미지 저항을 잃습니다.

충돌 저항은 세 가지 속성 중 가장 약한 속성이며 가장 자주 깨지거나 구부러지는 속성입니다. 충돌 검색을 사용하면 공격자가 다른 두 목표와 달리 두 입력을 모두 선택할 수 있으므로 일반적인 경계가 다릅니다. 이 기사에서는 생일에 맞춰진 수치와 하드웨어 타임라인을 의도적으로 생략했습니다. 왜냐하면 이를 파생하고 소싱하는 것이 검증된 자료를 벗어나기 때문입니다.

충돌 저항 — 동일한 해시를 가진 두 개의 입력을 찾을 수 없으며 이것이 세 가지 중 가장 약한 이유

세 가지 보안 속성을 사용 사례에 매핑하면 각 작업에 필요한 속성이 표시됩니다. 중복 제거는 두 파일의 해시가 동일하면 동일한 파일이라는 가정을 기반으로 합니다. 이를 위해서는 충돌 저항이 필요합니다. 충돌이 가능한 경우 공격자는 동일한 해시를 사용하여 두 개의 서로 다른 파일을 생성하고 중복 제거 불변성을 깨뜨릴 수 있습니다. 그러나 이론적으로 가능하더라도 실제 충돌은 극히 드물기 때문에 이는 약한 요구 사항입니다.

디지털 서명에는 강력한 형태의 충돌 저항이 필요합니다. 서명자가 문서 해시에 대한 서명을 생성하고 검증자가 나중에 서명을 확인할 때 두 사람은 동일한 해시를 확인해야 합니다. 충돌이 쉬운 경우 공격자는 서명된 문서와의 충돌을 찾아 다른 문서에 대한 서명을 위조할 수 있습니다. 이는 인증서에서 SHA-1을(를) SHA-256(으)로 업그레이드하도록 동기를 부여한 공격입니다. CA가 서명한 인증서와 동일한 서명이 있는 위조 인증서는 해시에 충돌이 있는 경우 모두 확인을 통과합니다.

충돌 저항은 사전 이미지 목표와 다릅니다. 파생 없이는 생일에 한정된 숫자가 나타나지 않습니다.

Content-Addressed Storage는 해시를 조회 키로 사용합니다. 파일이 해시에 의해 결정된 위치에 저장되고 나중에 동일한 해시를 사용하여 검색되는 경우 두 작업이 동일한 파일에 도달해야 합니다. 활성 공격자가 있으면 충돌 저항이 필요하지만 공격자가 수동적이면 두 번째 사전 이미지 저항만 필요합니다. 수동적 공격자는 충돌을 일으킬 수 없습니다. 합법적인 파일이 우연히 충돌하는지 여부만 관찰할 수 있습니다.

다운로드 확인은 체크섬을 사용하여 인터넷에서 검색된 파일이 손상되지 않았는지 확인합니다. 체크섬은 일반적으로 신뢰할 수 있는 소스의 파일과 함께 게시됩니다. 다운로드한 파일을 수정하는 공격자는 신뢰할 수 있는 소스에 액세스하지 않고는 체크섬을 업데이트할 수 없습니다. 이 사용 사례에는 두 번째 사전 이미지 저항이 필요합니다. 원본 파일과 해당 체크섬이 주어지면 공격자는 동일한 체크섬을 사용하여 다른 파일을 생성할 수 없어야 합니다. SHA-1 두 번째 사전 이미지 저항은 충돌이 깨졌음에도 불구하고 여전히 견고합니다.

필수 속성에 대한 무결성 및 명명 사용을 매핑합니다. 일반 해시는 비밀번호 저장소가 아닙니다.

비밀번호 저장은 해시 함수가 올바른 도구가 아닌 사용 사례 중 하나입니다. 비밀번호가 SHA-256 해시로 저장되어 있고 해시 데이터베이스가 유출된 경우 공격자는 사전 공격을 실행할 수 있습니다. 즉, 수백만 개의 추측을 해시하고 저장된 해시와 일치하는 것이 있는지 확인합니다. 공격자는 각 비밀번호에 대해 하나의 사전 이미지만 필요하며, 빠른 기능은 공격자에게 애플리케이션 속도 제한 없이 효율적인 오프라인 비교 루프를 제공합니다.

비밀번호에는 Argon2id, scrypt 또는 bcrypt와 같이 의도적으로 느리고 메모리 하드하며 사용자별 솔트 처리된 기능이 필요합니다. 고유한 사용자별 솔트를 사용하면 동일한 비밀번호가 서로 다른 저장된 기록을 생성하는 반면, 비밀번호 기능의 구성된 메모리 및 시간 비용으로 인해 각 후보자는 의도적으로 더 많은 비용을 지불하게 됩니다. 정확한 매개변수는 로컬 벤치마킹이 필요하며 여기서는 규정되지 않습니다. ToolAcre SHA 해시 계산기는 비밀번호 해싱을 수행하지 않으며 가이드 문서에서는 SHA-256이 이 사용 사례에 적합하지 않은 이유를 설명합니다.

작업 예 — Git 저장소의 SHA-1에 매핑을 적용하고 인증서의 SHA-1에 매핑을 적용합니다.

작업된 예: Git 저장소의 SHA-1. 모든 Git 커밋에는 객체 ID로 SHA-1 해시가 있습니다. SHA-1 충돌 저항이 손상되면 Git 저장소가 취약합니까? 대답은 '아마도'입니다. 공격자는 기존 커밋과 동일한 SHA-1을 사용하여 커밋을 생성하고 이를 리포지토리 서버에 푸시할 수 있으며, 그러면 리포지토리 서버가 다른 클라이언트에 다른 커밋을 제공할 수 있습니다. 그러나 이를 위해서는 특정 대상을 선택하고 충돌을 계산해야 하며, 이는 SHA-1가 손상된 경우에도 비용이 많이 듭니다.

Git 프로젝트 구성원은 SHA-256로 마이그레이션하기 위한 로드맵을 발표했지만 실제 공격에는 충돌 기술과 서버 손상이 모두 필요하므로 긴급성은 보통입니다. "내 Git 저장소 보안이 SHA-1 충돌 저항에 의존합니까?"라고 묻는 개발자의 경우 대답은 '그렇다'입니다. 하지만 다른 보안 위협에 비해 실질적인 위험은 낮습니다. ToolAcre SHA 해시 계산기는 적절하게 레이블이 지정된 SHA-1 및 SHA-256을 모두 제공하므로 개발자는 둘 중 하나를 계산하고 차이점을 이해할 수 있습니다.

요약: 당황하기 전에 속성 이름 지정 — ToolAcre SHA 해시 계산기를 사용하면 각 알고리즘의 경계를 설정하는 다이제스트 길이를 확인할 수 있습니다.

SHA-1을 사용하는 시스템의 경우 업그레이드 결정은 사용 사례에 손상된 특정 속성이 필요한지 여부에 따라 달라집니다. 사용 사례가 활성 공격자에 대한 디지털 서명 또는 중복 제거인 경우 충돌 저항이 필요하며 SHA-1이 손상되었으므로 즉시 SHA-256로 업그레이드하세요. 사용 사례가 콘텐츠 주소 지정 저장소 또는 체크섬인 경우 두 번째 사전 이미지 저항이 필요하며 SHA-1은 해당 목적에 대해 여전히 안전하지만 미래 보장을 위해서는 SHA-256이 바람직합니다.

사용 사례가 키 파생 또는 비밀번호 확인인 경우 사전 이미지 저항이 필요하며 키 파생에는 더 빠른 기능이 더 좋기 때문에 이 툴킷의 어떤 것도 사용해서는 안 됩니다. ToolAcre SHA 해시 계산기를 사용하면 개발자가 다이제스트를 계산하고 실제 속성을 확인할 수 있습니다. 이 세 가지 속성을 이해하고 이를 사용 사례에 일치시키는 것이 실제 시스템에서 안전한 암호화를 선택하는 기초입니다.