C2PA 快速入門指南
C2PA 快速入門指南
Section titled “C2PA 快速入門指南”5 分鐘開始使用 C2PA!本指南將協助您理解、驗證和建立 C2PA 簽署的內容。
理解 C2PA
Section titled “理解 C2PA”您需要知道的
Section titled “您需要知道的”C2PA 在您的媒體檔案中新增經過加密簽署的「manifest」,包含:
- 誰:創作者/編輯者身份
- 什麼:執行的動作(建立、編輯、AI 生成)
- 何時:時間戳記
- 如何:使用的工具和設定
- 從:來源素材(ingredients)
30 秒內掌握關鍵概念
Section titled “30 秒內掌握關鍵概念”原始照片 → [新增 C2PA Manifest] → 已簽署照片 ↓ 包含中繼資料: • 創作者:John Doe • 相機:Nikon Z9 • 日期:2025-11-21 • GPS:37.7749°N, 122.4194°W • 簽章:✓ 有效當您編輯時:
已簽署照片 → [在 Photoshop 中編輯] → 新的已簽署照片 ↓ 新 manifest 引用 原始照片為「ingredient」結果:從原始版本到目前版本的完整來源鏈。
驗證 C2PA 內容
Section titled “驗證 C2PA 內容”方法 1:線上工具(最簡單)
Section titled “方法 1:線上工具(最簡單)”無需安裝!
- 造訪 https://contentcredentials.org/verify
- 拖放任何圖片/影片/文件
- 檢視來源資訊:
- 創作者身份
- 編輯歷史
- 簽章狀態
- 原始內容(如果可用)
立即嘗試範例圖片:https://contentauthenticity.org/examples
方法 2:瀏覽器擴充功能
Section titled “方法 2:瀏覽器擴充功能”瀏覽時自動驗證:
- 安裝 Content Credentials Extension
- 適用於 Chrome、Edge、Brave
- 正常瀏覽
- 擴充功能自動偵測 C2PA 內容
- 點選圖示以檢視來源詳情
方法 3:命令列
Section titled “方法 3:命令列”適用於開發者和進階使用者:
安裝 c2patool
Section titled “安裝 c2patool”# macOS/Linux(使用 Cargo)cargo install c2patool
# macOS(使用 Homebrew)brew install c2patool
# Windows# 從以下位置下載:https://github.com/contentauth/c2patool/releases# 基本驗證c2patool photo.jpg
# 詳細 JSON 輸出c2patool photo.jpg --detailed
# 將 manifest 儲存到 JSON 檔案c2patool photo.jpg --output manifest.json
# 檢查多個檔案c2patool *.jpgFile: photo.jpgStatus: ✓ Valid C2PA signature
Creator: John Doe (john@example.com)Created: 2025-11-21T10:30:00ZCamera: Nikon Z9Signature: ValidCertificate: DigiCertActions: Captured方法 4:以程式方式
Section titled “方法 4:以程式方式”將驗證整合到您的應用程式:
JavaScript/Node.js
Section titled “JavaScript/Node.js”const c2pa = require('c2pa-node');
async function verify(imagePath) { const manifest = await c2pa.read(imagePath);
if (manifest) { console.log('Creator:', manifest.claim.creator); console.log('Created:', manifest.claim.created); console.log('Valid:', manifest.validation_status); } else { console.log('No C2PA data found'); }}
verify('photo.jpg');Python
Section titled “Python”from c2pa import Reader
reader = Reader('photo.jpg')manifest = reader.manifest()
if manifest: print(f"Creator: {manifest.creator}") print(f"Created: {manifest.created}") print(f"Valid: {manifest.is_valid}")else: print("No C2PA data found")建立 C2PA 內容
Section titled “建立 C2PA 內容”方法 1:使用支援的軟體
Section titled “方法 1:使用支援的軟體”無需編碼:
Adobe Photoshop/Lightroom
Section titled “Adobe Photoshop/Lightroom”- 在 Photoshop/Lightroom 中開啟圖片
- 前往編輯 → Content Credentials
- 填寫創作者資訊
- 儲存檔案 → 自動新增 C2PA manifest
內建 C2PA 的相機
Section titled “內建 C2PA 的相機”- Nikon Z9/Z8:在相機設定中啟用 → 拍攝時簽署照片
- Leica M11-P/SL3:已啟用自動簽署
- Sony Alpha 系列:透過韌體更新啟用
方法 2:命令列(c2patool)
Section titled “方法 2:命令列(c2patool)”您需要一個簽署憑證:
用於測試(自簽):
# 產生測試憑證(驗證者不信任)openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes用於生產:
- 從受信任的 CA 購買憑證(DigiCert、GlobalSign 等)
- 指定 C2PA 金鑰使用要求
建立 Manifest
Section titled “建立 Manifest”建立 manifest.json:
{ "claim_generator": "my-app/1.0", "assertions": [ { "label": "stds.schema-org.CreativeWork", "data": { "@context": "https://schema.org", "@type": "CreativeWork", "author": [ { "@type": "Person", "name": "John Doe" } ] } }, { "label": "c2pa.actions", "data": { "actions": [ { "action": "c2pa.created" } ] } } ]}# 使用您的憑證簽署c2patool photo.jpg \ --manifest manifest.json \ --signer-cert cert.pem \ --signer-key key.pem \ --output signed_photo.jpg
# 驗證它是否有效c2patool signed_photo.jpg方法 3:以程式方式
Section titled “方法 3:以程式方式”use c2pa::{Builder, SigningAlg};
fn main() -> Result<(), Box<dyn std::error::Error>> { let mut builder = Builder::from_file("input.jpg")?;
// 新增創作者 assertion builder.add_assertion("stds.schema-org.CreativeWork", r#"{"author": [{"name": "John Doe"}]}"#)?;
// 簽署並儲存 let signer = get_signer(); // 您的憑證/金鑰 builder.sign("output.jpg", signer)?;
Ok(())}JavaScript/Node.js
Section titled “JavaScript/Node.js”const c2pa = require('c2pa-node');
async function sign(inputPath, outputPath) { const manifest = { claim_generator: 'my-app/1.0', assertions: [ { label: 'stds.schema-org.CreativeWork', data: { author: [{ name: 'John Doe' }] } } ] };
const signer = { cert: 'path/to/cert.pem', key: 'path/to/key.pem' };
await c2pa.sign(inputPath, outputPath, manifest, signer); console.log('Signed successfully!');}
sign('input.jpg', 'output.jpg');Python
Section titled “Python”from c2pa import Builder, Signer
# 建立 builderbuilder = Builder.from_file('input.jpg')
# 新增 assertionsbuilder.add_assertion('stds.schema-org.CreativeWork', { 'author': [{'name': 'John Doe'}]})
# 簽署signer = Signer('cert.pem', 'key.pem')builder.sign('output.jpg', signer)
print('Signed successfully!')方法 4:編輯已簽署的內容(保留來源)
Section titled “方法 4:編輯已簽署的內容(保留來源)”編輯 C2PA 簽署的內容時,將原始內容引用為「ingredient」:
# 編輯並保留鏈c2patool edited_photo.jpg \ --parent original_photo.jpg \ --manifest edit_manifest.json \ --signer-cert cert.pem \ --signer-key key.pem \ --output final_photo.jpg新 manifest 將引用 original_photo.jpg 作為 ingredient,保留完整歷史。
理解規範:
探索工具:
常見問題:
- FAQ - 25+ 常見問題
- GitHub Discussions
教學課程與範例
Section titled “教學課程與範例”官方教學課程:
程式碼範例:
上線前:
-
取得生產憑證
- 從受信任的 CA 購買(DigiCert、GlobalSign 等)
- 確保 C2PA 相容的金鑰使用
- 費用:每年約 50-500 美元
-
安全金鑰儲存
- 對私密金鑰使用硬體安全模組(HSM)
- 或雲端 HSM(AWS CloudHSM、Azure Key Vault)
- 切勿將金鑰提交到原始碼控制
-
徹底測試
- 使用多個驗證器驗證簽章
- 測試不同的檔案格式
- 檢查跨平台相容性
-
監控與維護
- 實作憑證輪換
- 監控撤銷
- 保持 SDK 更新
與您的應用程式整合
Section titled “與您的應用程式整合”關鍵整合點:
您的應用程式工作流程:
1. 內容建立/上傳 ↓2. [新增 C2PA Manifest] ← 您的整合點 ↓3. 使用憑證簽署 ↓4. 儲存/發布已簽署的內容 ↓5. [選用]在顯示時驗證 ← 另一個整合點典型整合時間:
- 簡單驗證:1-2 天
- 基本簽署:3-5 天
- 完整生產部署:2-4 週
測試(免費):
- 自簽憑證
- 僅適用於開發
- 驗證者不信任
生產:
- DigiCert:https://www.digicert.com/
- GlobalSign:https://www.globalsign.com/
- Entrust:https://www.entrust.com/
- 請求具有 C2PA 金鑰使用擴充功能的憑證
取得協助:
- GitHub Issues - 錯誤回報
- GitHub Discussions - 問題
- C2PA 網站 - 官方資源
貢獻:
- awesome-c2pa - 新增資源、翻譯文件
- C2PA 實作 - 貢獻程式碼
- 內容真實性倡議 - 加入運動
c2patool image.jpgc2patool input.jpg \ --manifest manifest.json \ --signer-cert cert.pem \ --signer-key key.pem \ --output signed.jpghttps://contentcredentials.org/verify常見 Manifest 範本
Section titled “常見 Manifest 範本”{ "claim_generator": "app-name/version", "assertions": [ { "label": "stds.schema-org.CreativeWork", "data": { "author": [{"name": "Creator Name"}] } } ]}「找不到 C2PA 資料」
Section titled “「找不到 C2PA 資料」”- 檔案可能沒有 C2PA manifest
- 中繼資料可能已被剝離
- 嘗試不同的檔案格式
「簽章無效」
Section titled “「簽章無效」”- 簽署後檔案已修改
- 憑證已撤銷或過期
- 信任鏈中斷
「憑證不受信任」
Section titled “「憑證不受信任」”- 使用自簽憑證(測試預期)
- CA 不在信任清單中
- 如有需要,新增自訂信任錨點
- C2PA 每個 manifest 新增約 10-50KB(最少)
- 一般檔案簽署耗時 <1 秒
- 驗證幾乎是即時的
**準備好開始了嗎?**從上面選擇您的方法並深入探索!
最後更新:2025 年 11 月