본문 바로가기
C.W.K.
Stream
Lesson 01 of 06 · published

다이제스트 계약

~12 min · sha256, checksum, integrity, verification

Level 0Kindling
0 XP0/32 lessons0/10 achievements
0/100 XP to next level100 XP to go0% complete

지문은 무엇을 위한 것인가

암호학적 다이제스트는 파일의 바이트에서 계산된 고정 크기 지문이야. SHA-256은 어떤 입력이든 — 4 KB config이든 40 GB 텐서 샤드든 — 64개의 16진 문자로 바꿔. 중요한 성질은 avalanche야: 입력 어디서든 한 비트만 바꾸면 다이제스트가 완전히, 예측 불가능하게, 거꾸로 설계할 수 없는 방식으로 바뀌어. SHA-256이 같은 두 파일은, 이 퀘스트의 모든 실용적 목적에서, 같은 바이트야.

그러면 한 줄에 저장할 수 있는 계약이 생겨. 아티팩트 자체는 거대할 수 있어도. 그 정체성의 증명은 64 문자야. 증명을 노트북에, 이메일에, 데이터베이스에, 스티키 노트에 복사해 — 어디로든 가고 무게가 없어. 이 비대칭이 아카이브 검증의 경제 전부야: 무시할 만한 저장 비용으로 정체성 증명을 얻는 거지.

계약이 말하는 것과 말하지 않는 것

다이제스트는 정확히 하나의 질문에 답해: 이 바이트가 이 다이제스트가 계산된 그 바이트인가? 안전성에 대해서는 아무 말도 안 해(악의적인 파일도 안정적인 다이제스트를 갖지), 품질에 대해서도, 그리고 — 결정적으로 — 그 자체로는 진위에 대해서도 아무 말 없어. 다이제스트는 비교를 닻 내릴 뿐이야. 비교의 참조 쪽은 네가 신뢰하는 어딘가에서 와야 해: 허브가 그 파일에 대해 공개한 LFS 다이제스트, 메이커의 릴리스 노트, 독립 미러의 기록. 무결성은 네 사본을 참조에 묶어. 출처가 그 참조가 신뢰를 받을 자격이 있는지 결정해. 둘은 짝으로 일하고, 어느 쪽도 다른 쪽을 대신하지 않아.

이래서 소유의 네 조건(트랙 1)이 둘을 따로 놨던 거야. 다이제스트 검증은 명령으로 점검하는 조건이고, 메이커 검증은 트랙 3의 리뷰 데스크로 점검하는 조건이야.

64 문자의 증명이 40 GB의 바이트보다 무겁다. 다이제스트는 아티팩트의 신분증이야 — 들고 다니기 싸고, 거꾸로 위조가 불가능하고, 저장한 곳이면 어디서나 유효해.

두 명령 습관

실용 스킬은 민망할 만큼 작아: 계산하고 비교하기. 두 순간에 붙인 반사작용으로 만들어 — 수집 시점에(전송이 끝나자마자, 다른 게 주의를 흩기 전에 계산) 그리고 정지 상태에(주기적으로, 또는 저장소 이전 뒤에 언제나, 재계산해서 기록된 줄과 비교). 이 습관은 파일당 몇 초들이고, 미래의 모든 "아직도 올바른 파일이야?"를 고고학에서 산수로 바꿔.

Code

계산, 기록, 비교 — 스킬 전체·bash
# 계산 (macOS: shasum -a 256; Linux: sha256sum)
shasum -a 256 model-00001-of-00003.safetensors
# 3f2a...  model-00001-of-00003.safetensors   <- 16진 64 문자

# 기록 — 바이트 옆에, 아티팩트당 한 줄
shasum -a 256 model-*.safetensors > SHA256SUMS
cat SHA256SUMS

# 비교 — 나중에, 어디서나 (복사 뒤, 이전 뒤, 몇 년 뒤에):
shasum -a 256 -c SHA256SUMS
# model-00001-of-00003.safetensors: OK
# model-00002-of-00003.safetensors: OK
# model-00003-of-00003.safetensors: FAILED  <- 이 순간이
#   계약이 제 몫을 하는 순간이야.

External links

Exercise

실제 파일에 두 명령 습관을 들여 봐: 100 MB 넘는 파일 세 개를 골라 SHA-256 다이제스트를 계산하고, 옆에 SHA256SUMS 파일을 적어. 그다음 하나를 다른 곳으로 복사하고 사본에 대해 점검 명령을 돌려. 점검이 증명한 것과 증명하지 않은 것을 적어.
Hint
'증명하지 않은' 절반: 점검은 사본이 기록된 다이제스트와 일치함을 증명해 — 기록된 다이제스트가 저자가 공개한 것과 일치하는지는 말 안 해. 그 간극이 다음 레슨이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.