반응형
파일 Checksum 원리
파일 Checksum은 한 문장으로 말하면:
파일이 원본 그대로인지 확인하기 위한 지문(Fingerprint)
이다.
즉:
파일 내용이 중간에 바뀌지 않았는가?
를 검증하는 기술이다.
1. 왜 Checksum이 필요한가?
인터넷에서 파일은:
- 다운로드 중 손상될 수 있고
- 중간에 변조될 수 있고
- 악성코드가 삽입될 수도 있다.
예:
ubuntu.iso
를 다운로드했는데,
중간 공격자가:
악성코드 포함 ISO
로 바꿔치기했다면?
사용자는 겉보기엔 구분하기 어렵다.
그래서:
파일의 고유 fingerprint
를 만들어 비교한다.
이게 Checksum이다.
2. Checksum 기본 원리
원리는 단순하다.
원본 파일
file.zip
Hash 계산
예:
SHA-256(file.zip)
결과:
a8f3c1...
이 값을 함께 공개한다.
사용자는 다운로드 후 다시:
SHA-256(다운로드 파일)
계산.
값이 동일하면:
파일이 원본과 동일
하다고 판단.
3. 왜 가능한가?
좋은 해시 함수는:
입력 조금만 바뀌어도
결과가 완전히 달라짐
특징이 있다.
예:
hello
와
hellp
의 SHA-256은 완전히 다르다.
이걸:
Avalanche Effect
라고 한다.
즉 파일이 1byte만 달라도:
checksum 완전히 변경
된다.
4. 실제 흐름
서버 측
파일 배포.
app.exe
Checksum 공개.
SHA256:
f3ab...
사용자 측
다운로드 후:
sha256sum app.exe
실행.
결과 비교.
같으면:
파일 무결성 확인
.
5. Linux에서 많이 사용하는 명령어
SHA-256
sha256sum file.zip
- sha256sum
→ SHA-256 hash 계산 명령어
MD5
md5sum file.zip
- md5sum
→ MD5 checksum 계산
(보안용으론 비추천)
6. 왜 MD5는 위험한가?
예전엔 MD5 checksum 많이 썼다.
하지만 현재는:
충돌 공격 가능
해서 보안 목적으론 위험.
즉 공격자가:
다른 파일인데 같은 MD5
를 만들 가능성이 있다.
그래서 현재는 보통:
- SHA-256
- SHA-512
사용.
7. Checksum과 암호화 차이
많이 헷갈리는 부분.
Checksum
목적:
변조 여부 확인
암호화
목적:
내용 숨기기
즉 checksum은:
파일 내용을 숨기지 않는다
.
단지:
원본 동일 여부만 검증
한다.
8. Checksum만으로 완전 안전한 건 아님
이것도 중요하다.
예를 들어 공격자가:
- 악성 파일
- 악성 checksum
둘 다 바꾸면?
사용자는 속을 수 있다.
그래서 실제 배포 시스템은:
전자서명(Signature)
을 같이 사용한다.
9. 전자서명과 Checksum
예:
파일 hash 생성
→ 개인키로 서명
사용자는:
- hash 계산
- 공개키 검증
으로:
"진짜 배포자가 만든 파일"
인지 확인 가능.
즉 현대 소프트웨어 배포는:
무결성 + 인증
둘 다 필요하다.
10. Git도 사실 Checksum 시스템
Git은 내부적으로:
모든 객체를 hash로 관리
한다.
즉 파일 한 글자만 바뀌어도:
hash 완전히 변경
된다.
그래서 Git은 사실상:
거대한 무결성 검증 시스템
이라고 볼 수 있다.
11. Docker도 Checksum 기반
Docker Image도:
digest
라는 hash값으로 관리된다.
예:
sha256:abcd...
즉 이미지 변조 여부 확인 가능.
12. 결국 Checksum의 본질
Checksum은 단순 숫자가 아니다.
본질적으로는:
파일의 무결성을 검증하기 위한 디지털 지문
이다.
그리고 현대 인터넷의:
- 소프트웨어 배포
- Git
- Docker
- 클라우드
- 패키지 매니저
등은 거의 모두:
Checksum 기반 신뢰 검증
위에서 동작한다고 볼 수 있다.
반응형
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| AES는 왜 빠른가 (0) | 2026.05.14 |
|---|---|
| ECB 모드는 왜 위험한가 (0) | 2026.05.14 |
| 무결성이란 무엇인가 (0) | 2026.05.13 |
| Argon2 vs bcrypt (0) | 2026.05.13 |
| SHA-256은 어떻게 동작하는가 (0) | 2026.05.13 |
댓글