사람을 확인할 때 지문을 찍는 것은, 얼굴은 닮을 수 있어도 지문은 사람마다 다르다고 여기기 때문입니다. 파일에도 이런 지문을 만들 수 있습니다. 파일을 이루는 바이트 전체를 정해진 계산에 넣으면 길이가 일정한 문자열 하나가 나옵니다. 이 값을 해시라고 하고, DataPD는 파일의 지문이라고 부릅니다.

DataPD가 쓰는 계산은 SHA-256입니다. 미국 국립표준기술연구소(NIST)가 표준 문서 FIPS 180-4에 정의한 해시 함수로, 무엇을 넣든 256비트짜리 값을 돌려줍니다. 16진수로 적으면 숫자와 a부터 f까지의 영문자로 이루어진 64자입니다. 사진 한 장을 넣든 긴 영상 파일을 넣든 지문의 길이는 같습니다.

지문의 네 가지 성질

이 글에서 기억해 둘 성질은 네 가지입니다.

  1. 같은 파일은 언제 어디서 계산해도 같은 지문이 나옵니다. 오늘 계산하든 몇 년 뒤에 계산하든, 휴대폰으로 하든 다른 회사의 프로그램으로 하든 바이트가 같으면 지문도 같습니다. 계산법이 공개 표준이어서 누구나 직접 다시 계산해 볼 수 있습니다.
  2. 1바이트만 달라져도 전혀 다른 지문이 나옵니다. 조금 바뀐 파일에서 조금 바뀐 지문이 나오는 것이 아닙니다. 표준 문서는 이를 ‘내용이 조금이라도 바뀌면 아주 높은 확률로 다른 지문이 나온다’고 설명합니다. 그리고 새 지문은 원래 지문과 닮은 데가 없습니다.
  3. 지문으로 파일을 되돌릴 수 없습니다. 계산은 한 방향으로만 갑니다. 64자에는 사진을 다시 그려 낼 만큼의 정보가 담겨 있지 않습니다. 그래서 지문만 공개해도 사진이나 얼굴은 드러나지 않습니다. 다만 짧은 문장처럼 내용을 짐작할 수 있는 데이터라면, 후보를 하나씩 계산해 같은 지문이 나오는지 맞춰 볼 수 있습니다. 지문이 내용을 비밀로 지켜 주는 장치는 아니라는 뜻입니다. 사진처럼 경우의 수가 엄청나게 많은 파일은 이런 방법으로 현실적으로 알아낼 수 없습니다.
  4. 같은 지문을 가진 다른 파일을 일부러 만드는 것은, 현재 알려진 방법으로는 현실적으로 불가능하다고 여겨집니다. 파일의 가짓수는 64자 지문의 가짓수(2의 256제곱)보다 훨씬 많으니, 지문이 같은 서로 다른 파일은 이론상 존재합니다. 다만 그런 짝을 찾아내거나 원하는 지문에 맞춰 파일을 지어내는 현실적인 방법은 지금까지 알려져 있지 않습니다. FIPS 180-4도 이 함수들을 ‘안전하다’고 부르는 이유를 이렇게 설명합니다. 주어진 지문에 맞는 파일을 찾는 일도, 지문이 같은 서로 다른 두 파일을 찾는 일도 계산으로는 사실상 해낼 수 없다(computationally infeasible)는 것입니다.

눈으로는 같은 사진, 지문은 남남

최박사사진관이 원본 확인 체험용으로 공개한 샘플 두 장입니다. 하나는 원본이고, 다른 하나는 같은 사진의 밝기만 4% 올려 다시 저장한 파일입니다.

원본 샘플: 세이지색 배경 앞, 나무 스툴 위에 흰 화병과 마른 나뭇가지를 놓은 정물 이미지

원본sample-original.jpg

JPEG · 1200×900 · 23,543바이트

원본의 SHA-256 지문: 2e58e77648954e67ce51a77b2913064a0d4dc9454fb92d81c8e6ff3321178a60

보정본 샘플: 같은 정물 이미지를 4% 밝게 보정한 파일로, 눈으로는 원본과 거의 구별되지 않음

밝기 +4%sample-edited.jpg

JPEG · 1200×900 · 24,143바이트

보정본의 SHA-256 지문: 6aa4bf01c4ecf889d8108c9561db0fbafa7190704e6f9f6f35e52b495bd7c3d5

나란히 놓아도 눈으로는 거의 구별되지 않지만, 두 지문은 비슷한 구석이 없습니다. 64자 가운데 우연히 같은 자리에 같은 글자가 온 곳이 몇 군데 있을 뿐, 규칙은 없습니다.

원본의 지문은 사진관이 시범 운영 중인 공개 레지스트리에 체험용 인증서 DRC-2026-000001로 등록돼 있습니다. 두 파일을 원본 확인 도구에 넣으면 원본만 이 인증서와 일치하고, 보정본은 어느 인증서와도 일치하지 않습니다. 보정본이 잘못된 파일이라는 뜻은 아닙니다. 등록된 원본과 같은 파일이 아니라는 뜻일 뿐입니다.

한 글자만 바꿔 보세요

아래 칸의 문장을 이 브라우저가 바로 SHA-256으로 계산합니다. 마침표를 지우거나 띄어쓰기를 하나 더해 보세요. 지문 전체가 새 값으로 바뀝니다. 원래 문장으로 되돌리면 처음 지문이 그대로 돌아옵니다.

글자는 UTF-8 바이트로 바꿔 계산합니다. 입력한 글은 이 페이지 밖으로 나가지 않습니다.

SHA-256 지문50바이트

33545ab5267d36dd21c79e4697f9309668b866896f12a0b087d17dbaeeac444f

처음 문장의 지문입니다. 같은 문장이면 언제 계산해도 이 값이 나옵니다.

계산 칸이 작동하지 않는 환경이라면 이 예를 보세요. ‘복제는 무한하고, 원본은 하나입니다.’의 지문은 33545ab5로 시작합니다. 마지막 마침표를 느낌표로 바꾸면 4b8041de로 시작하는 전혀 다른 지문이 나옵니다. 50바이트 가운데 바뀐 것은 1바이트뿐입니다.

무엇이 지문을 바꾸나

지문은 눈에 보이는 모습이 아니라 파일의 바이트를 따릅니다. 사진이 똑같아 보여도 바이트가 달라지면 지문이 달라집니다. 일상에서 흔히 일어나는 경우는 이렇습니다.

  • 다시 저장하기. 편집 앱에서 열었다가 아무것도 고치지 않고 저장해도, 압축을 새로 하거나 파일 안의 정보를 다시 쓰면서 바이트가 바뀔 수 있습니다.
  • 크기 조절·자르기. 해상도를 줄이거나 가장자리를 잘라 내면 바이트가 달라져 지문도 바뀝니다.
  • 메신저·SNS 전송. 많은 서비스가 용량을 줄이려고 사진을 다시 압축해 전달합니다. 받은 사람의 파일은 보낸 사람의 원본과 지문이 다를 가능성이 큽니다.
  • 메타데이터 편집. 사진 파일에는 촬영 일시나 위치 같은 정보가 함께 담기곤 합니다. 사진은 그대로여도 이 정보를 고치거나 지우면 지문이 바뀝니다.
  • 스크린샷. 화면을 찍는 것은 원본 파일을 옮기는 것이 아니라, 화면에 보이는 모습으로 새 이미지를 만드는 일입니다.

반대로 파일 이름을 바꾸는 것은 지문에 영향을 주지 않습니다. 이름은 파일 내용 바깥에 따로 붙는 정보이기 때문입니다. 원본 파일을 그대로 복사했거나, 변환이나 재압축 없이 파일 그대로 옮긴 경우에도 지문은 같습니다. 다만 옮기는 과정에서 HEIC 사진을 JPEG로 바꾸는 식으로 형식을 자동 변환하거나 메타데이터를 지우는 기기와 서비스도 있습니다. 옮긴 뒤에는 지문을 다시 계산해 원본과 같은지 확인해 보세요.

그래서 원본을 증명하는 데 가장 중요한 일은 단순합니다. 원본 파일을 원본 그대로 보관하는 것입니다. 보정은 복사본으로 하고, 원본은 손대지 않는 폴더와 백업에 한 벌씩 두세요. 지문이 일치하지 않는다고 해서 누군가 조작했다는 뜻은 아니라는 점도 기억해 주세요. 평범한 재압축만으로도 지문은 달라집니다.

지문이 증명하는 것, 증명하지 않는 것

지문이 일치한다는 것은 한 가지를 말해 줍니다. 지금 확인한 파일이 등록된 원본 파일과 바이트 단위로 같다는 것입니다.

여기서 짚어 둘 점이 있습니다. 원본을 바이트 하나 바꾸지 않고 복사한 파일은 원본과 지문이 같습니다. 그런 복사본을 원본 확인에 넣어도 일치로 나옵니다. 지문은 파일이 어떤 바이트로 이루어져 있는지 알려 줄 뿐, 같은 바이트를 가진 파일 가운데 어느 것이 먼저 만들어졌는지는 알지 못합니다.

그렇다면 원본을 원본으로 만드는 것은 무엇일까요. 바이트가 아니라 출생 기록입니다. 누가, 언제, 어떤 인증서 번호로 그 지문을 먼저 등록했는가. 샘플 원본의 출생 기록은 최박사사진관이 2026년 9월 25일 15시(한국 시간)에 체험용으로 발급한 인증서 DRC-2026-000001입니다. 파일은 얼마든지 복제될 수 있어도 이 기록은 하나입니다. DataPD가 말하는 희소성은 이렇게 원본이 하나라는 사실을 누구나 확인할 수 있게 하는 것입니다. 이 이야기는 이야기 01에서 더 자세히 다룹니다.

증명하는 것

  • 확인한 파일이 등록된 원본 파일과 바이트 단위로 같다는 것.
  • 그 지문이 공개 레지스트리에 어떤 인증서 번호와 발급 일시로 올라 있는지. 다만 발급자가 직접 운영하는 레지스트리라면 발급 일시도 발급자가 적은 값입니다. 발급자와 별개로 시각을 확인할 수 있는 기록이 무엇을 더하는지는 이야기 03에서 다룹니다.

증명하지 않는 것

  • 사진에 담긴 장면이나 내용이 사실이라는 것.
  • 사진 속 인물이 누구인지. 원본 확인은 신원 확인이 아닙니다.
  • 저작권이 누구에게 있는지.
  • 법적 증거로서의 효력.
  • 지문이 같은 여러 파일 가운데 어느 것이 처음 만들어진 파일인지.
  • 일치하지 않는 파일이 조작됐다는 것. 재저장이나 메신저 전송만으로도 지문은 바뀝니다.

왜 파일을 올리지 않아도 되나

원본인지 확인하려면 사진을 어딘가에 올려야 할 것 같지만, 그럴 필요가 없습니다. 비교에 필요한 것은 사진이 아니라 64자 지문이고, 지문은 사진이 있는 기기에서 직접 계산할 수 있기 때문입니다.

최박사사진관의 원본 확인 도구는 고른 파일의 지문을 지금 쓰고 있는 브라우저 안에서 계산한 뒤, 공개 레지스트리에 적힌 지문과 비교합니다. 사진 파일은 서버로 전송되지 않습니다. 위의 체험 칸도 같은 방식으로, 브라우저에 들어 있는 암호화 기능(Web Crypto)으로 계산합니다.

꼭 이 도구를 거칠 필요도 없습니다. SHA-256은 공개 표준이라 운영체제에 들어 있는 명령으로도 같은 값을 얻을 수 있습니다. Windows의 PowerShell에서는 Get-FileHash, macOS에서는 shasum -a 256, Linux에서는 sha256sum으로 샘플 원본의 지문을 계산하면 위와 같은 값이 나옵니다. PowerShell은 영문자를 대문자로 보여 줄 뿐 같은 값입니다.

사진은 내 기기에 두고, 내 브라우저에서 계산한 지문을 공개된 기록과 맞춰 봅니다. 원본 확인 도구는 비교도 브라우저 안에서 하므로 지문조차 서버로 보내지 않습니다. 지문으로는 사진을 되돌릴 수 없으니 지문을 공개해도 사진은 드러나지 않습니다. 원본을 확인하는 일과 사진을 지키는 일이 서로 부딪치지 않는 이유입니다.