03 / 가이드
체크섬으로 다운로드와 파일 무결성 검증하기
암호학적 해시가 실제로 증명하는 것, MD5와 SHA-1이 오늘날 무결성 전용인 이유, 인스톨러 단계별 검증, 그리고 민감한 텍스트를 업로드하지 않고 해시하는 방법.
진위성이 아니라 무결성
암호학적 해시는 임의의 입력을 고정 길이 지문으로 바꿉니다. 1기가바이트 파일의 어디서든 한 비트를 뒤집으면 다이제스트가 완전히 바뀌므로, 다이제스트 비교는 두 파일 사본이 바이트 단위로 동일한지를 재는 정밀한 검사입니다.
- 무결성 증명됨무결성은 증명됩니다. 당신의 다이제스트가 공개된 것과 일치하면, 당신의 사본은 발행자가 해시한 그 파일이 정확히 맞으며 전송 중에도 디스크에서도 손상이 없었던 것입니다.
- 진위성은 별개진위성은 아닙니다. 다운로드 옆에 인쇄된 체크섬은 그 파일을 누가 썼는지에 대해 아무것도 말해주지 않습니다. 다운로드를 바꿔치기할 수 있는 공격자는 인쇄된 체크섬도 바꿔치기할 수 있습니다.
- 서명은 다른 도구진위성에는 다른 메커니즘이 필요합니다. 이미 신뢰하는 키로 검증하는 서명이나, 다운로드 자체보다 더 신뢰하는 채널로 전달되는 체크섬입니다.
MD5와 SHA-1은 이제 무결성 전용이다
MD5는 128비트 다이제스트를 32자의 16진수 문자로 출력하고, SHA-1은 160비트를 40자로 출력합니다. 둘 다 빠르고 우발적 손상을 발견하는 데는 문제없지만, 둘 다 공개적으로 시연된 충돌이 있어서 일치하는 다이제스트를 가진 악성 파일을 고의로 만드는 공격자를 막지 못합니다.
실용 규칙: MD5나 SHA-1 일치는 여전히 잘린 다운로드나 고장 나는 디스크를 잡아냅니다. 사고는 충돌을 계산하지 않으니까요. 이 알고리즘들이 더 이상 할 수 없는 것은 의심할 이유가 있는 파일을 결백하다고 처리하는 일입니다. 그 판단은 이제 SHA-256 이상의 것입니다.
- MD5는 깨졌다MD5 충돌은 수년째 실용적입니다. 같은 MD5 다이제스트를 가진 두 개의 다른 파일을 고의로 만들 수 있으므로, MD5는 더 이상 사고와 공격을 구별하지 못합니다.
- SHA-1은 깨졌다SHA-1도 같은 길을 갔습니다. 시연된 충돌이 보안 프리미티브로서의 수명을 끝냈고, 브라우저, 인증 기관, 코드 호스트 모두가 떠났습니다.
- SHA-2가 기준선SHA-2 패밀리가 현재의 기준선입니다. SHA-256(16진수 64자)이 공개 다운로드 체크섬의 기본값이고, SHA-224, SHA-384, SHA-512(56, 96, 128자)가 서로 다른 제약을 위한 형제입니다.
인스톨러 검증, 단계별로
전체 확인은 1분이 채 걸리지 않고 당신의 머신에 이미 있는 도구를 씁니다. 순서가 중요합니다. 발행자의 공식 페이지에서 기대 다이제스트를 얻고, 로컬 사본을 해시하고, 모든 문자를 비교합니다.
불일치가 항상 악의는 아닙니다. 잘린 다운로드와 캐싱 프록시는 일상적으로 파일을 손상시킵니다. 하지만 반응은 어느 쪽이든 같습니다. 파일은 검증에 실패했고, 유일하게 올바른 다음 단계는 소스에서 새 사본을 받는 것입니다.
- 기댓값 얻기공개된 체크섬은 벤더의 공식 다운로드 또는 릴리스 페이지에서 찾으세요. 이상적으로는 당신이 직접 찾아간 도메인의 HTTPS로, 미러나 검색 결과 스니펫이 아니라요.
- 로컬에서 해시다운로드한 파일을 로컬에서 해시하세요. macOS나 Linux에서는 shasum -a 256, Windows에서는 PowerShell의 Get-FileHash. 둘 다 당신의 디스크에서 실행되며 아무것도 업로드되지 않습니다.
- 정확히 비교다이제스트 전체를 대소문자를 무시하고 한 글자씩 비교하세요. 한 글자라도 다르면 파일을 버리고 소스에서 새 사본을 받으세요. 설치하고 바라는 것은 그만두세요.
민감한 텍스트를 업로드하지 않고 해시하기
실제 확인 대상의 많은 것은 파일이 아니라 텍스트입니다. 구성 조각, 라이선스 키, 토큰 파편, 동료가 전화로 불러준 값. 그것들을 아무 웹사이트에나 붙여 넣는 것은 남의 로그에 넘기는 일이므로, 해싱은 로컬에서 일어나야 합니다.
SHA-256 해시 생성 및 검증은 공개 체크섬의 현행 표준인 64자를 커버합니다. 여기서 검증은 복호화가 아니라 비교입니다. 당신의 텍스트가 해시되고, 두 값이 브라우저 안에서 비교됩니다.
- 설계상 로컬입력은 기기에 머뭅니다. 작업 영역은 WebAssembly 엔진으로 탭 안에서 최대 1,048,576바이트의 UTF-8 텍스트를 해시하고, 이후에 아무것도 보관하지 않습니다.
- 명시적 비교검증 모드는 명시적 비교입니다. 기대 다이제스트를 붙여 넣으면 작업 영역이 일치 또는 불일치를 보고하고, 잘못된 형식의 값은 미리 거부합니다. MD5는 정확히 32자, SHA-256은 정확히 64자의 16진수 문자입니다.
- 구조상 단방향다이제스트는 단방향입니다. 이 도구들은 지문을 만들고 비교할 뿐 역산을 시도하지 않습니다. 제대로 된 도구라면 누구도 그럴 수 없기 때문입니다.
비교를 루틴에 내장하기
체크섬은 비교가 뒤늦은 생각이 아니라 습관일 때만 작동합니다. 몇 가지 작은 규율이 매번의 확인을 믿음직하게 만듭니다.
파일 전체에는 운영체제 내장 명령이 적합한 도구이며 브라우저만큼 로컬입니다. 브라우저 작업 영역은 텍스트 페이로드와 빠른 다이제스트 확인에서 빛납니다. MD5 해시 생성 및 검증은 오래된 다운로드 페이지가 아직도 게시하는 32자 레거시 참조값을 커버합니다.
- 전체 비교처음과 끝 몇 글자가 아니라 다이제스트 전체를 비교하세요. 부분적인 훑어보기는 정교하게 만들어진 충돌이 노리는 바로 그 지름길입니다.
- 알고리즘 명명알고리즘 이름을 다이제스트와 함께 보관하세요. 64자의 16진수 문자는 여러 알고리즘에서 올 수 있고, 라벨 없는 체크섬은 추측을 부릅니다.
- 홉마다 재해시USB 드라이브, 동기화 클라이언트, 이메일을 거쳐 파일을 옮긴 후에는 다시 해시하세요. 매 홉이 새로운 손상의 기회이고, 다이제스트 동반은 공짜입니다.
당신의 파일에 체크섬 게시하기
파일을 배포하고 있다면——릴리스 바이너리, 데이터 세트, 내부 도구——체크섬을 함께 게시하세요. 아티팩트당 명령 하나의 비용으로, 받는 모든 사람이 당신에게 연락하지 않고 무결성을 검증할 방법을 얻습니다.
SHA-512 해시 생성 및 검증은 더 긴 형태가 필요할 때 128자 다이제스트를 로컬에서 만들고, SHA-224와 SHA-384 형제가 SHA-2 패밀리의 나머지를 커버합니다. 같은 엔진, 같은 탭, 같은 경계입니다.
- SHA-256 최소최소한 SHA-256을 게시하세요. 청중이 SHA-512가 더 빠른 플랫폼에서 검증한다면 그것도 나란히 추가하고, 각 다이제스트에 알고리즘을 라벨링하세요.
- 같은 신뢰 수준체크섬은 다운로드 자체와 같은 신뢰 수준에서 제공하세요. 이상적으로는 사용자가 이미 권위 있다고 여기는 페이지나 저장소에서요.
- MD5는 레거시 라벨MD5 줄은 레거시 호환 라벨로만 유지하고, 우발적 손상에 대한 무결성 확인이라고 명확히 표시하세요. 보안 검증으로는 절대 아닙니다.
검증은 도구를 신뢰하는 일의 한 부분입니다.
파일을 넘기기 전에 온라인 도구의 데이터 경로를 확인하는 방법을 배우세요. 체크섬이 보상하는 바로 그 회의감입니다.