사전

ZIP CRC란 무엇인가요?

CRC 또는 ZIP CRC는 아카이브 파일에서 자주 볼 수 있는 메타데이터 값입니다. CRC가 무엇의 약자인지와 이 값이 사용자의 파일에 대해 무엇을 알려주는지 더 자세히 읽어 보세요.

zip-crc

CRC는 파일이 압축 파일(아카이브)에 추가되었을 때 그 내용으로부터 계산되는 짧은 숫자입니다. 일종의 지문처럼 동작하여, 나중에 압축을 풀었을 때 원래 들어갔던 그대로의 파일이 나왔는지 확인할 수 있게 합니다. CRC는 cyclic redundancy check(순환 중복 검사)의 약자입니다.

어디에서 비롯되었는지, 그리고 어떤 파일에 있는지

아카이브에는 CRC가 포함됩니다. 즉 ZIP 파일과 .docx, .xlsx, .epub, .jar, .apk 같은 ZIP 기반 형식에는 CRC가 들어 있고, RAR, 7z 등 다른 형식은 각자 고유한 체크섬을 저장합니다. 파일 안에 CRC가 저장되어 있더라도, .epub 파일에 대해서는 보고서에 해당 값이 표시되지 않을 수 있습니다.

압축 프로그램은 파일의 원래 비압축 상태의 내용을 기준으로 이 값을 계산한 뒤, 해당 항목과 함께 저장합니다. 그래서 아카이브 안의 각 구성원은 자신만의 CRC를 가집니다. 이 값은 사용자가 선택하거나 입력할 수 없고, 사용자나 컴퓨터에 대한 정보도 아닙니다. 파일의 바이트에서만 순수하게 도출됩니다.

이 값을 저장하는 목적은 나중에 비교하기 위해서입니다. 아카이브의 압축을 풀 때, 프로그램은 방금 추출한 내용으로 CRC를 다시 계산한 뒤 두 값을 비교합니다. 값이 다르면 WinZip, 7-Zip 또는 unzip에서 익숙한 CRC 오류 메시지가 표시되는데, 이는 추출된 파일이 처음 추가되었던 파일과 일치하지 않는다는 뜻입니다. 그 과정 어딘가에서 손상이 발생했다는 신호입니다. 예를 들어 다운로드가 중단되었거나, 디스크에 문제가 있거나, 복사가 도중에 끊긴 경우입니다. 아카이브 내 다른 파일이 모두 멀쩡해도, 구성원 하나만 손상되어도 이 메시지가 표시됩니다.

값이 어떻게 보이는지

ZIP은 CRC-32라는 변형을 사용하며, 32비트 숫자를 만들어 냅니다. 일반적으로 0x8f3d2b1c처럼 8자리 16진수로 표시되며, 일부 앱은 같은 값을 긴 10진수로 출력하기도 합니다. 단위나, 값의 좋고 나쁨을 가르는 척도는 없습니다. 빈 파일과, 데이터를 담지 않는 폴더 항목은 0x00000000로 표시됩니다.

왜 중요한지

이 값은 무결성 필드로, 콘텐츠가 저장과 전송을 거치며 온전히 살아남았다는 아카이브 자체의 내장 증거입니다. 메타데이터 보고서에서 CRC를 본다고 해서 아카이브에 문제가 있다는 뜻은 아닙니다. 이는 아카이브를 만들 때 기록된 값일 뿐이며, 실제 검사는 사용자가 내용을 볼 때가 아니라 압축을 풀 때 수행됩니다.

CRC에는 유용한 부가 용도도 있습니다. 동일한 내용은 항상 동일한 CRC를 생성하므로, CRC와 크기가 같은 두 항목은 거의 확실하게 같은 파일입니다. 이를 이용하면 큰 아카이브 안에서 중복 파일을 빠르게 찾아낼 수 있습니다.

CRC는 보안 기능이 아닙니다. CRC는 우발적인 손상을 잡아내도록 설계되었고, 값이 짧기 때문에 의도적으로 동일한 값을 맞추는 것도 가능합니다. 따라서 CRC 검사가 통과되었다고 해서 파일이 전혀 변조되지 않았다는 증거가 되지는 않습니다. 그 역할을 위해서는 SHA-256 같은 암호화 해시가 있습니다. 또한 이 값은 콘텐츠에서 도출되므로, 서로 다른 두 아카이브에 동일한 파일이 들어 있는지 확인하는 데도 쓸 수 있습니다. 이는 때때로 유용하며, 아카이브를 넘기기 전에 가끔 떠올려 둘 만한 점입니다.

메타 키