tomai
로그인

Hash 함수 비교: MD5, SHA-1, SHA-256과 CRC32

hash 함수는 임의의 입력을 고정 길이의 지문으로 압축합니다. 같은 파일은 항상 같은 문자열을 만들며, 작은 변경은 눈사태처럼 완전히 다른 값으로 바뀝니다. 이 하나의 성질이 손상 탐지, 콘텐츠 지문, 그리고 추가 장치와 결합한 비밀번호 보호라는 세 가지 전혀 다른 일을 떠받칩니다.

1. 파일용 체크섬: MD5, SHA-1, SHA-256

다운로드 페이지가 체크섬을 공개하는 이유는 파일이 온전히 도착했는지 확인시키기 위해서입니다. 자신의 사본을 hash화하여 문자열을 비교하면 됩니다. MD5는 가장 빠르며 우발적인 손상 검사에는 지금도 충분합니다. SHA-1은 중간에 위치하고, SHA-256은 중요한 상황의 현재 기본값입니다. 속도 차이는 기가바이트급 파일에서만 드러납니다.

2. 보안상으로는 broken, 무결성에는 문제없음

MD5와 SHA-1은 의도적인 공격자 앞에서는 산산이 깨졌습니다. 연구자들은 동일한 MD5를 가진 두 개의 다른 파일을 만들 수 있으며, SHA-1도 수년 전 실제 충돌로 무너졌습니다. 따라서 서명, 인증서, 비밀번호 저장에는 사용해서는 안 됩니다. 다만 Linux ISO 다운로드 안에 공격자가 숨어 있는 것은 아니며, 순수한 손상 탐지에는 지금도 훌륭하게 동작합니다.

3. 비밀번호에는 느림이 필요하며 빠름이 아닙니다

고속 hash는 비밀번호 저장에 잘못된 도구입니다. 공격자가 1초에 수십억 번의 추측을 시도할 수 있기 때문입니다. 진정한 비밀번호 저장은 느리고, salt가 적용되며, 메모리를 많이 쓰는 전용 함수를 사용합니다. 비밀번호의 MD5 저장을 가르치는 튜토리얼을 만나면 그 튜토리얼을 닫아야 합니다.

4. CRC32와 HMAC, 간단히

CRC32는 애초에 암호학적 hash가 아닙니다. 네트워크와 ZIP 파일에서 유래한 고속 오류 검출 부호이며, 전송 오류 발견에는 뛰어나지만 위조에 대해서는 무력합니다. 반면 HMAC은 비밀 key를 hash에 섞으므로 수신자는 무결성과 진위 여부를 함께 검증할 수 있습니다. our hash generator에서 자신의 텍스트나 파일에 대해 이 모든 것을 시험할 수 있으며, 계산은 모두 브라우저 안에서 로컬로 이루어집니다.