C2PA Soft Binding Algorithm List · ID 29

ZWC Text Watermark

C2PA Soft Binding Algorithm — com.writerslogic.zwc-watermark.1

A zero-width character watermark for text documents, providing invisible content-bound attestation as part of the WritersProof proof-of-process protocol. Embeds a cryptographic tag directly into document text using Unicode zero-width characters — invisible to readers, verifiable by anyone.

Algorithm Flow

How It Works

From document content to an invisible, verifiable watermark in four steps.

AS RENDEREDA human wrote every single word of this.Looks like ordinary text. The watermark is invisible.REVEALEDAhumanwroteeverysinglewordofthis.01110010010010U+FEFF · hidden between words32 zero-width characters carry a 64-bit HMAC-SHA256 tag — 2 bits each.U+200B = 00U+200C = 01U+200D = 10U+FEFF = 11
STEP 1
Hash
STEP 2
Encode
STEP 3
Place
STEP 4
Verify
1. Hash

HMAC-SHA256 computed from the signing key, MMR root, and document content hash. The content hash is SHA-256 over NFC-normalized document text.

2. Encode

Tag truncated to 64 bits, encoded as 32 zero-width Unicode characters at 2 bits each: U+200B = 00, U+200C = 01, U+200D = 10, U+FEFF = 11.

3. Place

Characters placed at deterministic word-boundary positions via HMAC-seeded Fisher-Yates shuffle. Positions are reproducible given the same key material.

4. Verify

Blind extraction requires no access to the original unwatermarked document. The tag is verified against the evidence chain.

Technical Details

Technical Specification

Algorithm ID
com.writerslogic.zwc-watermark.1
C2PA Soft Binding ID
29
Type
Watermark (invisible)
Media types
text/plain, text/markdown, text/html
ZWC Alphabet
U+200B (ZWSP), U+200C (ZWNJ), U+200D (ZWJ), U+FEFF (BOM)
Tag size
64 bits (32 ZWC characters × 2 bits)
Hash
HMAC-SHA256
Position selection
Fisher-Yates shuffle seeded by HMAC
Content binding
SHA-256 hash of NFC-normalized document text
Integrity
Merkle Mountain Range root
C2PA soft binding
com.writerslogic.zwc-watermark.1
License
AGPL-3.0-only
Guarantees

Properties

Robust

Survives copy-paste, re-encoding, and format conversion. Zero-width characters persist across text editors, word processors, and web platforms.

Content-Bound

Any modification to the document text invalidates the watermark. Content changes require re-attestation — this is by design, not a limitation.

Blind Extraction

Verification requires no access to the original unwatermarked document. Extract, verify against the evidence chain, done.

Interoperability

C2PA Integration

Soft Binding per C2PA v2.3 Section 12.3

This algorithm is registered as a soft binding in the C2PA specification. Soft bindings provide a content-to-manifest association that survives transformations where hard bindings (like c2pa.hash.data) would break. For text documents, hard bindings fail on copy-paste, re-encoding, and format conversion — exactly the operations ZWC watermarks are designed to survive.

ZWC watermarks can be used alongside hard bindings. When the hard binding is intact, it provides byte-exact verification. When the hard binding breaks (e.g., after copy-paste), the soft binding still associates the content with its provenance manifest.

Assertion Details

Assertion labelcom.writerslogic.pop-attestation.v1
Soft binding ID29
Algorithm IDcom.writerslogic.zwc-watermark.1