Skip to content

feat: Register WritersLogic CPOP ZWC text watermark (ID 29)#45

Open
dcondrey wants to merge 1 commit intoc2pa-org:mainfrom
dcondrey:add-writerslogic-zwc-watermark
Open

feat: Register WritersLogic CPOP ZWC text watermark (ID 29)#45
dcondrey wants to merge 1 commit intoc2pa-org:mainfrom
dcondrey:add-writerslogic-zwc-watermark

Conversation

@dcondrey
Copy link
Member

@dcondrey dcondrey commented Mar 18, 2026

Summary

Registering a zero-width character (ZWC) watermark algorithm for text content on behalf of WritersLogic.

  • Algorithm: com.writerslogic.zwc-watermark.1
  • Type: watermark
  • Media types: text/plain, text/markdown, text/html
  • Identifier: 29

Algorithm Description

Embeds a truncated HMAC-SHA256 tag as invisible zero-width Unicode characters (U+200B, U+200C, U+200D, U+FEFF) at deterministic word-boundary positions selected via HMAC-seeded Fisher-Yates shuffle. Each ZWC encodes 2 bits; 32 ZWCs produce a 64-bit tag that binds the document content hash and Merkle Mountain Range root to the authorship evidence chain.

The watermark enables blind extraction (no original required), survives copy-paste and re-encoding, and is intentionally invalidated by content modification — content changes require re-attestation under the CPOP proof-of-process protocol.

This is the first text-only soft binding algorithm in the registry, complementing the existing image/audio/video watermarks.

Context

Part of the CPOP (Cryptographic Proof-of-Process) protocol implementing draft-condrey-cpop-protocol. The algorithm is open-source under AGPL-3.0 at writerslogic/cpop.

Checklist

  • Entry follows schema (softbinding-algorithm-list.schema.json)
  • alg uses entity-specific namespace (com.writerslogic.*)
  • identifier is next sequential (29)
  • contact email provided
  • informationalUrl provided
  • JSON is valid

@dcondrey dcondrey force-pushed the add-writerslogic-zwc-watermark branch from 3b521a4 to 3aae5e4 Compare March 18, 2026 23:54
Add zero-width character (ZWC) watermark algorithm for text content
(text/plain, text/markdown, text/html). Embeds HMAC-SHA256 tags as
invisible Unicode characters at deterministic word-boundary positions,
binding document content to CPOP proof-of-process authorship evidence.

Part of the CPOP protocol (draft-condrey-cpop-protocol).
@dcondrey dcondrey force-pushed the add-writerslogic-zwc-watermark branch from 3aae5e4 to f68662e Compare March 19, 2026 00:42
@dcondrey dcondrey self-assigned this Mar 19, 2026
@dcondrey
Copy link
Member Author

The ZWC watermark registration in PR #45 is the content binding layer for CPOP — it complements the process evidence work in #2009. Now that crJSON is merged, the soft binding results from this watermark have a standardized JSON representation too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant