Skip to content

Added caBX chunk for Content Credentials #542 - #544

Merged
svgeesus merged 7 commits into
mainfrom
C2PA
Oct 28, 2025
Merged

Added caBX chunk for Content Credentials #542#544
svgeesus merged 7 commits into
mainfrom
C2PA

Conversation

@svgeesus

@svgeesus svgeesus commented Oct 17, 2025

Copy link
Copy Markdown
Contributor

This intentionally brief chunk description does three things:

  1. Says what it is for, largely drawing language from the Introduction of the Content Credentials spec
  2. Justifies the chunk contents as "must be the same as C2PA CC in all other media", normatively references Content Credentials for the details
  3. Justifies why a private chunk is being standardized

I updated the chunk ordering table to add caBX, requiring that it be before IDAT (CC suggests but does not require before IDAT) and also to disallow multiple caBX. @lrosenthol are those correct?

I have not yet updated the chunk ordering diagrams, pending review of this PR.

@svgeesus svgeesus linked an issue Oct 17, 2025 that may be closed by this pull request

@ProgramMax ProgramMax left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Awaiting @lrosenthol 's input.

Comment thread index.html Outdated
@fintelia

Copy link
Copy Markdown

Should the document be repeating C2PA's security claims ("secure, tamper-evident ...") as-is? I've seen others dispute whether the chunk meets its security goals. For instance, this author has been quite vocal against it.

@svgeesus

Copy link
Copy Markdown
Contributor Author

Thanks for the link, those should certainly be added to the Security Considerations.

Dropping an entire caBX is trivial, and adding a new one also seems simple; it depends ultimately on who signs what.

@svgeesus

Copy link
Copy Markdown
Contributor Author

This analysis seems fairly worrying; in particular, a bunch of data was removed from a PNG image, other data added, and it still validates as unaltered.

@lrosenthol

Copy link
Copy Markdown
Contributor

I'll review the PR in sec, but let me comment on those specific blogs...

The author of those pages has a long history of "intermixing" implementations with specifications. All of the issues in those blogs were in specific implementations that long been fixed! They also all pre-date the C2PA's new Conformance Program (https://c2pa.org/conformance/) and refer to older versions of our specification.

We can certainly point to the security sections of the C2PA specification itself if you wish.

@lrosenthol lrosenthol left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few minor editorials

Comment thread index.html Outdated
Comment thread index.html Outdated
Comment thread index.html
Comment thread index.html Outdated
svgeesus and others added 4 commits October 26, 2025 21:49
Co-authored-by: Leonard Rosenthol <leonardr@lazerware.com>
Co-authored-by: Leonard Rosenthol <leonardr@lazerware.com>
Co-authored-by: Leonard Rosenthol <leonardr@lazerware.com>
Co-authored-by: Leonard Rosenthol <leonardr@lazerware.com>
@svgeesus
svgeesus requested a review from lrosenthol October 27, 2025 02:07
@svgeesus

Copy link
Copy Markdown
Contributor Author

@lrosenthol I accepted all your suggested changes, thanks for proposing them.

We already link to the security section.

@svgeesus

Copy link
Copy Markdown
Contributor Author

@lrosenthol could you re-review please, so this can be merged?

@ProgramMax ProgramMax left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review LGTM.
Although, I think we can relax requirements on it?

Comment thread index.html
@fintelia

Copy link
Copy Markdown

I tested the claim in this blog post from last month that sections of the provided C2PA protected JPEG can be edited without being detected. (I would have liked to poke around with a PNG, but I couldn't find any sample PNGs with v2.2 C2PA metadata.) The photo was produced on a device that passed the conformance program and was assigned assurance level 2.

To test, I downloaded the provided lamp image, used a hex editor to modify the EXIF data, and then confirmed with the official checker that the credential was still valid and there's no indication that the file was modified.

(The EXIF starts at byte 6, so you just have to open the file and look for ascii strings like "Pixel 10 Pro" or "2025:08:28" right at the start, and change them to whatever you want. I set the dates to January 1st, 1800 and checked with exiftool that the changes had worked.)

@lrosenthol

Copy link
Copy Markdown
Contributor

@fintelia That isn't a flaw - that is working as designed.

As described in that blog post, Google has chosen to NOT sign that EXIF data of the image - therefore, changes to that information do not invalidate the signature or the Content Credential. All as described in and permitted by the spec.

Now, we can debate whether Google should be doing that or not - but they are not doing anything wrong. They have followed the spec to the letter, and have received conformance for doing so.

@svgeesus

Copy link
Copy Markdown
Contributor Author

(I would have liked to poke around with a PNG, but I couldn't find any sample PNGs with v2.2 C2PA metadata.)

Yes, I reported that earlier

@svgeesus
svgeesus merged commit b7c4d77 into main Oct 28, 2025
1 check passed
@svgeesus
svgeesus deleted the C2PA branch October 28, 2025 12:56
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.

C2PA and PNG

4 participants