JPEG · PNG · WebP · GIF · TIFF · AVIF · HEIC · SVG · MP4 · MOV · M4A · MP3 · WAV · FLAC · PDF 안의 JUMBF 기록, 서명 · 클레임 · 단정 해시 · 파일 결합(데이터 · BMFF)을 읽고 무결성을 먼저 봅니다.
원본은 기기에, 판단과 서명은 서버에
파일 원본은 사용자 기기를 떠나지 않습니다. 서버는 특징값과 서명 검증에 필요한 출처 기록 조각만 받아 판정하고, 결과를 서명해 돌려줍니다.
- 판독기aim-extract · 기기 안 · 공개
- 신뢰 목록C2PA 공식 · 임시 목록 · 7일마다 갱신
- 판정 엔진 AMP서명 재검증 · 도구 지문 · 판정 규칙 · 서버 전용
- 발급기근거 맞춤 발급 · 전자서명(Ed25519)
- 원장해시 기록 · 하루치 사슬 · 공개 타임스탬프
- 등록 색인SHA-256 · 표시본 해시 · 지각 해시
- 확인마크 확인 쪽 · 공개키 · 누구나
15가지 넘는 형식에서 출처 기록을 찾습니다
공개 라이브러리입니다. 브라우저 · Node 에서 같은 코드로 돌고, 의존성이 없습니다. 판단은 하지 않고 읽기만 합니다.
디지털 소스 유형, 사용한 AI 시스템, 편집 이력, 촬영 기기 정보를 읽습니다.
Stable Diffusion · ComfyUI · NovelAI · Midjourney 같은 도구가 PNG · EXIF 에 남기는 설정값을 찾습니다(프롬프트 내용은 서버로 보내지 않음).
서버에는 특징값 · 해시 · 서명 검증에 필요한 조각(196KB 이하)만 보냅니다. 썸네일 · 위치 정보 · 작성자 정보는 빼고 보냅니다.
서명을 다시 검증하고, 근거의 세기까지 판정합니다
판정 규칙과 AI 도구 지문 DB는 서버에만 있습니다. 공개 코드만으로는 같은 판정을 만들 수 없게 나눠 두었습니다.
서명 재검증
클라이언트를 믿지 않음기기에서 보낸 판독 결과를 그대로 믿지 않고, 서버가 서명 · 클레임 · 단정 해시를 처음부터 다시 계산합니다. ECDSA(P-256 · P-384 · P-521) · RSA-PSS · Ed25519 의 7가지 서명 방식을 직접 구현했습니다.
인증서 사슬 · 신뢰 목록
누가 서명했는지서명 인증서 사슬을 C2PA 공식 신뢰 목록과 임시 신뢰 목록에 대어 보고, 용도(EKU) · 기간 · 타임스탬프까지 확인합니다. 목록은 7일마다 자동으로 새로 받습니다.
도구 지문 · 서명자 분류
무엇으로 만들었는지생성 도구 · 편집기 · 카메라 · 플랫폼을 나눠 아는 지문 DB로, AI 생성 · 편집 · 합성 · 보정 · 촬영 원본을 가릅니다. 이름만 맞는 약한 단서는 판정을 좁히지 않습니다.
충돌 규칙 · 오염 막기
틀린 표시를 막는 규칙AI 흔적이 하나라도 있으면 'AI 미사용'을 막고, 신뢰된 촬영 원본 서명이 있으면 AI 표시를 막습니다. 남이 등록한 표시본 해시나 비슷한 이미지의 마크는 참고로만 써, 등록 기록으로 다른 사람의 표시를 막을 수 없게 했습니다.
AIMarker 가 낸 마크인지, 누구나 서버 없이 확인
마크를 발급할 때 표시 · 근거 · 파일 지문 · 원장 번호를 표준 형식(JWS · EdDSA)으로 서명합니다. 서명 키는 서버가 스스로 만들어 서버 밖으로 내보내지 않고, 공개키만 공개합니다.
- 공개키/.well-known/aimarker-keys.json · API am.pubkey
- 어디서나 확인마크 확인 쪽은 이 기기에서 서명을 확인합니다. 표준 JWT 도구로도 확인할 수 있습니다.
- 파일 속에도마크를 넣은 이미지는 XMP 안에 서명을 함께 담아, 파일만 있어도 확인됩니다.
- 흉내 낸 마크서명이 없거나 맞지 않으면 마크 확인 쪽이 바로 알려 줍니다.
AIMarker 도 지난 기록을 몰래 고칠 수 없게
발급 · 변경 · 철회는 원장에 해시와 서버 시각으로 남습니다. 날마다 그날 원장 줄을 한 편의 글로 묶어 앞날 뿌리 해시와 이어 붙이고, 그 글의 SHA-256 을 공개 타임스탬프 서비스(OpenTimestamps)에 올려 비트코인 블록체인 시각에 고정합니다.
- 1 기록원장 번호 · 시각 · 해시 · 종류
- 2 하루 묶기그날 줄 + 앞날 뿌리 해시로 사슬
- 3 고정뿌리 해시를 공개 달력 서버 셋에 보냄
- 4 확인그날 원장 글 · .ots 증명을 받아 누구나 확인
하루치 원장은 다음 날 0시 10분 뒤 첫 시간 작업에서 묶입니다. 마크 확인 쪽과 원장 확인에서 그날 글과 증명 파일을 받을 수 있습니다.
표시가 지워진 사본도 원래 마크를 찾습니다
정확히 같은 파일은 SHA-256 으로, 마크를 넣은 파일은 표시본 해시로, 크기 · 화질만 바뀐 이미지는 지각 해시로 찾습니다. 아래 값은 이 브라우저가 방금 계산한 것입니다.



이미지를 9 × 8 회색조로 줄여 이웃 밝기 차이로 64비트 지문(dHash)을 만들고, 다른 비트 수로 가까움을 잽니다. 이 브라우저에서 방금 계산한 값입니다. 이 단순 지문은 크게 자르거나 뒤집은 파일을 놓칠 수 있어, 마크 등록 색인은 정확 일치(SHA-256) · 표시본 해시 · 지각 해시를 함께 씁니다.
지금 확인한 것만 적습니다
목표치가 아니라 개발 중 실제로 돌려 본 시험 결과입니다. 정확도를 과장하지 않기 위해 시험 범위도 함께 적습니다.
C2PA 판정 일치
50 / 50
C2PA 공개 시험 파일과 자체로 만든 정상 · 변조 파일 50개에서 기준 구현(c2pa-rs)과 같은 서명 · 무결성 판정.
서명 방식
7가지
ES256 · ES384 · ES512 · PS256 · PS384 · PS512 · Ed25519 를 서버에서 다시 검증. 실제 신뢰 목록 인증서(Truepic · Adobe)로 사슬 확인.
변조 찾기
클레임 · 단정 · 픽셀
서명 뒤 클레임 · 단정 · 픽셀을 바꾼 시험 파일을 모두 '바뀜'으로 판정.
마크 서명
표준과 일치
마크 서명은 표준 Ed25519 구현과 같은 값을 내고, 일반 JWT 도구로 확인됩니다.
한계
- 화면 캡처 · 다시 촬영 · 저장 과정에서 출처 기록이 지워지면 AI 사용을 기술로 확인할 수 없습니다. 이때는 '발급자 신고'로 표시합니다.
- 글의 AI 사용은 기술로 판정하지 않습니다. 'AI로 작성' 같은 표현이 있으면 확인을 한 번 더 묻습니다.
- 서명 없는 메타데이터는 누구나 고칠 수 있습니다. 그래서 '파일 기록'은 '서명 검증'보다 낮은 근거로 표시합니다.
- 지각 해시는 크게 자르거나 뒤집은 이미지를 놓칠 수 있습니다.
- 신뢰 목록은 C2PA 가 정하며 바뀔 수 있습니다. 목록 밖 서명은 '서명은 맞지만 신뢰 목록 밖'으로 따로 적습니다.
원칙
- 근거가 없으면 추측하지 않고, 근거의 세기를 숨기지 않습니다.
- 원본 파일 · 글 · 프롬프트는 받지 않습니다.
- 판정 규칙은 공개하지 않지만, 판정 결과의 근거는 마크마다 공개합니다.
- 마크는 표시와 근거의 기록이며 법적 적합성을 보증하지 않습니다.
베끼기 어려운 부분을 권리로
아래는 출원 준비 중인 내용입니다. 출원 · 등록이 끝난 것처럼 쓰지 않습니다.
출처 기록의 검증 수준에 따라 발급할 수 있는 AI 표시를 정하고 충돌 표시를 막는 방법(출원 준비)
전자서명 마크와 정확 · 지각 지문, 표시본 해시를 함께 써 사본을 원래 마크에 잇는 방법(출원 준비)
하루치 표시 원장을 사슬로 잇고 공개 타임스탬프에 고정하는 방법(출원 준비)
'AIMarker' 상표 출원 준비, 보이지 않는 워터마크 연구