당신의 AI가 개인 데이터로 학습되지 않았음을 증명하는 방법
요약
AI 학습 데이터에서 특정 데이터의 부재(non-membership)를 암호학적으로 증명할 수 있는 Python 라이브러리 CompletenessManifest를 소개합니다. 정렬된 머클 트리(Sorted Merkle trees)를 활용하여 저작권 및 개인정보 보호 문제를 해결할 수 있는 기술적 방안을 제시합니다.
핵심 포인트
- 정렬된 머클 트리를 이용한 비멤버십(non-membership) 증명 구현
- SHA-256 기반 리프 해시로 위조된 인덱스 공격 방지
- 하트비트 체인을 통해 학습 시점의 데이터 부재를 시간적으로 증명
- 데이터 매니페스트를 통한 투명한 학습 데이터 관리 가능
NYT는 OpenAI를 고소했습니다. Getty는 Stability AI를 고소했습니다. 저작권 문제를 겪고 있는 모든 AI 기업들은 이제 동일한 질문을 던지고 있습니다: 우리의 학습 세트(training set)에 무엇이 포함되었고 무엇이 포함되지 않았는지 증명할 수 있는가?
지금까지 정직한 답변은 '아니오'였습니다. 학습 실행(Training runs)은 단방향 작업입니다. "우리는 Common Crawl을 사용했습니다"라고 말할 수는 있지만, 특정 문서가 제외되었다는 암호학적 증명(cryptographic proof)을 발행할 수는 없습니다.
CompletenessManifest는 이를 변화시키는 Python 라이브러리입니다. 이는 Cathedral-Constraint-Field의 일부이며, 부재(absence)가 단순히 주장되는 것이 아니라 증명 가능한 학습 데이터 매니페스트(manifests)를 구축할 수 있게 해줍니다.
핵심 아이디어: 부정(negative)을 증명하기
표준 머클 트리(Merkle trees)는 멤버십(membership)을 증명합니다 — "이 항목은 세트에 포함되어 있다"는 식입니다. _비멤버십(non-membership)_을 증명하려면 보통 다른 구조가 필요합니다.
**정렬된 머클 트리 (Sorted Merkle trees)**는 인접성(adjacency)을 통해 이 문제를 해결합니다. 만약 트리가 정렬된 항목 리스트를 기반으로 구축되었고, 당신이 "private_diary.txt" ∉ corpus임을 증명하고 싶다면, 해당 항목을 감싸는 정렬 순서상의 인접한 두 항목 — 예를 들어 "press_release_2024.pdf"와 "quarterly_report.pdf" — 을 루트(root)까지의 머클 경로(Merkle path)와 함께 제시하면 됩니다. 만약 그 항목들이 정렬된 트리 내에서 실제로 인접해 있다면, "private_diary.txt"가 숨어들 수 있는 틈은 없습니다.
리프 해시(leaf hash) 공식은 이 세 가지를 결합합니다: SHA-256(json({"item": item, "index": i, "total": n})). 이는 위조된 인덱스 공격(forged-index attacks)을 방지합니다 — 항목을 재배열하여 거짓된 인접성을 만들어낼 수 없습니다.
코드 보기
pip install cathedral-constraint-field
from cathedral_constraint_field import CompletenessManifest, SortedMerkle
# 학습 데이터 수집 중
...
이제 몇 달 또는 몇 년 후 미래의 어느 시점에도 비멤버십 증명(non-membership proof)을 발행할 수 있습니다:
# 누군가가 자신의 개인 메시지가 당신의 학습 세트에 포함되었다고 주장할 때
proof = manifest.prove_non_membership("user_dm_archive_2024.jsonl")
...
증명은 일반적인 JSON입니다. 이를 검증하기 위해 매니페스트가 필요하지 않습니다. 루트(root)를 가진 사람이라면 누구나 확인할 수 있습니다.
하트비트(Heartbeats): 시간적 출처(temporal provenance)
더 어려운 문제는 '지금' 부재함을 증명하는 것이 아니라, '학습 시점(training time)'에 부재했음을 증명하는 것입니다. 나중에 문서를 추가했나요? 사후에 매니페스트(manifest)를 수정했나요?
CompletenessManifest는 하트비트 체인(heartbeat chain)을 통해 이 문제를 해결합니다:
# 각 하트비트는 현재의 머클 루트(Merkle root) + 체인 팁(chain tip)을 타임스탬프에 고정합니다
hb = manifest.heartbeat()
print(f"Epoch {hb.epoch}: root={hb.commitment_root[:16]}..., chain_tip={hb.chain_tip[:16]}...")
하트비트는 서로 해시 체인(hash-chained)으로 연결되어 있습니다 (엔트리 체인과 동일한 패턴). 체인을 깨뜨리지 않고서는 소급하여 하트비트를 삽입할 수 없습니다. 검증자는 다음을 확인할 수 있습니다:
- 엔트리 체인(entry chain)이 검증되는가? (변조 방지 기능이 있는 추가 전용 로그)
- 하트비트 체인(heartbeat chain)이 검증되는가?
- 하트비트 에포크(epoch) N에서
X가 증명 가능하게 부재했는가?
Cathedral 통합: BCH 온체인 앵커링(anchoring)
Cathedral memory API를 사용 중이라면, CathedralBridge가 이제 이를 Bitcoin Cash(BCH) 앵커링에 직접 연결합니다:
from cathedral_constraint_field import CathedralBridge
bridge = CathedralBridge(api_key="cathedral_...", agent_id="my-training-pipeline")
...
스냅샷 호출은 매니페스트 루트(manifest root)를 Cathedral의 스냅샷 노트(snapshot note)에 기록하며, Cathedral은 이를 OP_RETURN을 통해 BCH에 앵커링합니다. 이제 여러분은 코퍼스 루트(corpus root)에 대한 블록체인 타임스탬프 기록을 보유하게 됩니다. 이는 자체 서명된 것이 아니라 외부에서 검증 가능합니다.
이것이 지금 중요한 이유
세 가지 압박 요인이 수렴하고 있습니다:
GDPR 제17조 (삭제권/right to erasure): 데이터 주체가 삭제를 요청할 경우, 해당 데이터가 학습 세트에 포함되지 않았음을 증명할 수 있습니까? 혹은 데이터를 완전히 제거했음을 증명할 수 있습니까? 현재 대부분의 기업은 그저 "노력하겠습니다"라고 말할 뿐입니다. 매니페스트를 사용하면 "여기 암호학적 증명이 있습니다"라고 말할 수 있습니다.
EU AI Act (제53조): 고위험 AI 시스템은 학습 데이터 출처에 대한 문서를 유지해야 합니다. 여기서 사용된 단어는 "포괄적인(Comprehensive)"입니다. 검증 가능한 매니페스트는 단순한 규정 준수 체크박스와 감사 가능한 기록 사이의 차이를 만듭니다.
NYT v. OpenAI 패턴: 법적 이론은 저작권이 있는 저작물이 암기(memorised)되었다는 것입니다. 비멤버십 증명(non-membership proof)이 소송에서 승소하게 해주는 것은 아니지만, 대화의 흐름을 "그렇지 않다고 생각합니다"에서 "거기에 없었다는 것을 증명할 수 있습니다"로 전환시킵니다.
이것이 해결하지 못하는 것
한계점에 대해 솔직해져야 합니다:
- 항목 해싱 (Hashing items): 매니페스트는 문서 ID 또는 콘텐츠 해시를 해싱하며, 의미론적 콘텐츠 (semantic content)를 해싱하는 것이 아닙니다. 파일 이름은 제외할 수 있지만, 다른 이름 아래에 동일한 내용을 그대로 포함할 수도 있습니다. 매니페스트는 귀하의 데이터 수집 파이프라인 (ingestion pipeline)만큼만 정직합니다.
- 봉인 시점 (Seal timing): 가치는 언제 봉인했는지에 따라 달라집니다. 봉인되지 않은 매니페스트에는 여전히 항목이 추가될 수 있습니다. 빈번한 하트비트 (heartbeats) + 외부 앵커링 (external anchoring)은 이 간극을 좁혀줍니다.
- 법적 의견이 아님: 이것은 암호학적 도구 (cryptographic tool)입니다. 이것이 법정에서 어떤 의미를 갖는지는 관할권, 판사, 그리고 귀하의 데이터 수집 파이프라인의 구체적인 내용에 따라 달라집니다.
라이브러리
pip install cathedral-constraint-field # v0.3.1
- 순수 표준 라이브러리 암호화 (SHA-256, 매니페스트 모듈을 위한 외부 의존성 없음)
- O(log n) 비멤버십 증명 (non-membership proofs)을 지원하는 정렬된 머클 트리 (Sorted Merkle tree)
- 추가 전용 엔트리 체인 (Append-only entry chain) + 하트비트 체인 (둘 다 독립적으로 검증 가능)
- 전체 내보내기/다시 불러오기 라운드트립 (Full export/reload round-trip)
- 67개의 테스트
만약 귀하가 학습 파이프라인 (training pipelines)을 구축 중이며 컴플라이언스 도구 (compliance tooling)에 대해 논의하고 싶다면, 초기 도입자(early adopters)분들의 연락을 기다립니다. 댓글을 남기거나 이슈(issue)를 생성해 주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기