訂閱以接收新文章的通知:

透過將內容憑證整合到 Cloudflare Images 中來保留內容溯源記錄

2025-02-03

閱讀時間:7 分鐘
本貼文還提供以下語言版本:English简体中文

今天,我們很高興地宣佈將內容溯源和真實性聯盟(Coalition for Content Provenance and Authenticity,C2PA)溯源標準整合到 Cloudflare Images 中。內容創作者和發佈者可以透過 Cloudflare 網路無縫保存整個溯源鏈——從影像的建立方式和建立者,到後續的每次編輯。

什麼是 C2PA 和內容真實性計畫 (Content Authenticity Initiative)?

當您聽到「溯源」這個詞時,您可能會回想起高中的藝術史課程。在這個背景下,這意味著您在紐約大都會藝術博物館看到的藝術品確實出自相關藝術家之手,而不是贗品。其溯源記錄是指這件實體藝術品如何隨著時間的推移而改變擁有權,從原始藝術家一路流轉到博物館。

數位內容溯源建立在這個概念之上。它可以幫助您瞭解數位媒體(影像、影片、PDF 等)的建立和後續編輯情況。我發佈在 Instagram 上的相片的溯源記錄可能是這樣的:我用 iPhone 拍攝相片;使用 Apple Photos 的編輯工具進行自動魔法編輯;將其上傳到 Instagram;使用 Instagram 的編輯工具進行裁切;然後發佈。

數位內容溯源為何如此重要?從根本上來說,這是對內容創作者進行表彰的重要方式。許多攝影師都有過這樣的經歷:他們的相片或影片在網路上瘋傳,但姓名和歸屬卻被抹去。在這種情況下,創作者因作品被世界看到而原本可以獲得的機會將無法實現。如果您幫助確保藝術家或內容創作者因其作品而獲得讚譽,那麼這種曝光可能會帶來更多的職業機會。

數位內容的溯源記錄也是瞭解我們周圍世界的重要工具。如果您看到某個有新聞價值的事件的影片或相片,您會想知道這張相片是確實在特定地點拍攝的,還是幾年前在其他地點拍攝的。如果您看到一張在紐澤西上空飛行的 UFO 的模糊圖片,瞭解該相片的拍攝時間和地點將有助於瞭解實際發生的情況。

C2PA 是非營利聯合發展基金會 (Joint Development Foundation) 的一個專案,制定了將數位內容溯源記錄附加到媒體的技術規範。這些標準還指定如何以加密方式簽署該清單,從而允許任何人驗證該清單未被竄改。JSON 清單和相關簽章統稱為內容憑證 (Content Credentials)

Adobe 主導的內容真實性計畫,在各個產業擁有數千名成員,旨在推動內容憑證的全球採用。

為什麼要將內容憑證整合到 Cloudflare Images 中?

Cloudflare Images 可讓您輕鬆構建可擴展且具有成本效益的影像管線。透過我們全新的內容憑證整合,您現在可以保留現有的內容憑證,確保它們從建立到交付給終端使用者期間一直保持完整。

包括 BBC、New York Times 和 Dow Jones 在內的全球許多媒體組織都是內容真實性計畫的成員。想像一下,其中一個新聞機構想要包含其攝影記者相片的內容憑證,並允許任何人驗證該影像的溯源記錄。在此之前,即使新聞機構使用符合 C2PA 標準的相機編輯流程,如果影像被其 CDN 轉換,這些憑證也經常會被抹去。

如果您使用 Cloudflare,這個問題現在已經不復存在。在 Cloudflare Images 中,您現在可以在轉換來自遠端來源的影像時保留內容憑證。啟用此整合將保留影像中內嵌的任何現有內容憑證。

當您使用 Images 來調整影像大小或變更影像的檔案格式時,這些轉換將由 Cloudflare 進行加密簽名。例如,這可確保終端使用者在您的網站上看到相片時可以使用開放原始碼驗證服務(例如 contentcredentials.org/verify)來驗證完整的溯源鏈。

運作方式

假設您是一名攝影記者,使用具有符合 C2PA 簽名的 Nikon 相機。您可以選擇將內容憑證附加自己的相片上,以識別相片的關鍵元素,例如相機型號、原始影像尺寸和光圈設定。

以下是一個簡化的範例,展示了使用 Nikon 相機拍攝的相片符合 C2PA 的內容憑證。

內容憑證使用 JUMBF (JPEG Universal Metadata Box Format) 格式儲存,這是在檔案中嵌入中繼資料的標準化容器格式。您可以將其視為一個信封系統,它將有關數位內容來源及其變更情況的資料以及可用於驗證該資料的加密簽章打包在一起。

為了提供更好的開發人員體驗,判定或有關內容溯源的事實通常以 JSON 撰寫。請注意,此範例特意簡化了 JUMBF 盒巢套,並新增了註解以使其更容易理解。

{
  "jumbf": {
    "c2pa.manifest": {
      "claim_generator": "Nikon Z9 Firmware v1.2",
      "assertions": [
        {
          "label": "c2pa.actions",
          "data": {
            "actions": [
              {
                "action": "c2pa.captured",
                "when": "2025-01-10T12:00:00Z",
                "softwareAgent": "Nikon Z9",
                "parameters": {
                  "captureDevice": "NIKON Z9",
                  "serialNumber": "7DX12345",
                  "exposure": "1/250",
                  "aperture": "f/2.8",
                  "iso": 100,
                  "focalLength": "70mm"
                }
              }
            ]
          }
        }
      ],
      "signature_info": {
        "issuer": "Nikon",
        "time": "2025-01-10T12:00:00Z",
        "cert_fingerprint": "01234567890abcdef"
      },
      "claim_metadata": {
        "claim_id": "nikon_z9_123"
      }
    }
  }
}

現在假設您想在網站上使用這張相片。

如果您已啟用 Cloudflare 中的「保留內容憑證」設定,則該中繼資料現在會保留在 Cloudflare Images 中。

如果您使用 Cloudflare Images 來動態調整影像大小或轉換影像,則 Cloudflare 會自動在同一清單中附加任何其他動作並以加密方式進行簽署。下面,我們展示一下新的內容憑證的樣子。

{
  "jumbf": {
    // Original Nikon manifest
    "c2pa.manifest.nikon": {
  /*unchanged*/      
},

    // New Cloudflare manifest
    "c2pa.manifest.cloudflare": {
      "claim_generator": "Cloudflare Images",
      "assertions": [
        {
          "label": "c2pa.actions",
          "data": {
            "actions": [
              {
                "action": "c2pa.resized",
                "when": "2025-01-10T12:05:00Z",
                "softwareAgent": "Cloudflare Images",
                "parameters": {
                  "originalDimensions": {
                    "width": 8256,
                    "height": 5504
                  },
                  "newDimensions": {
                    "width": 800,
                    "height": 533
                  }
                }
              }
            ]
          }
        }
      ],
      "signature_info": {
        "issuer": "Cloudflare, Inc",
        "time": "2025-01-10T12:05:00Z",
        "cert_fingerprint": "fedcba9876543210"
      },
      "claim_metadata": {
        "claim_id": "cf_resize_123",
        "parent_claim_id": "nikon_z9_123"
      }
    }
  }
}

在此範例中,c2pa.action.resized 項目描述了從一組尺寸到另一組尺寸的非破壞性轉換。這是關於這張特定照片的單獨、獨立的判定。

請注意,此清單中有兩個加密簽章,每個簽章都由 signature_info 引用。因為此範例影像涉及兩個實體:Nikon 負責建立影像,Cloudflare 負責調整影像大小。Nikon 和 Cloudflare 都獨立簽署了各自關於內容溯源的判定。

在此範例中,簽章引用如下所示:

"signature_info": {
        "issuer": "Cloudflare, Inc",
        "time": "2025-01-10T12:05:00Z",
        "cert_fingerprint": "fedcba9876543210"

在數位內容的建立、編輯和調整大小的過程中,系統會為每個動作建立一個唯一的中繼資料雜湊,然後使用私密金鑰進行簽署。簽章以及簽署者的公共憑證或對它的引用都包含在本 JSON 所引用的 JUMBF 容器中。

這些雜湊值和簽章允許任何開放原始碼驗證工具重新計算雜湊值、根據簽章進行驗證並檢查憑證鏈,以確保對影像執行的每個動作的可信度。這就是內容憑證防竄改的含義:如果任何雜湊和簽章驗證失敗,則表示中繼資料已被竄改。

每個加密簽章都是信任清單的一部分,允許任何人驗證各種實體的溯源鏈,例如從相機製造商到相片編輯軟體,再到 Cloudflare 中的發佈。來自內容真實性計畫的更多內容

信任清單將簽署清單的最終實體憑證連接回原始根 CA。這是透過提供形成信任鏈(公用 X.509 憑證鏈)的從屬公用 X.509 憑證來實現的。

為了讓 Cloudflare 能夠將內容憑證附加到任何轉換中,我們需要擁有一個公開可用的最終實體憑證並加入此信任清單。在這裡,我們使用 DigiCert 作為最終實體憑證,並在我們正在生產中建立的 JSON 清單中引用此憑證:

"signature_info": {
        "alg": "sha256",
        "issuer": "Cloudflare, Inc",
        "cert_serial_number": "073E9F61ADE599BE128B02EDC5BD2BDE",
        "time": "2024-01-06T22:42:36+00:00"
      },

最終結果是,新聞機構、記者和內容公司現在可以建立可稽核的數位溯源鏈,可以使用公開金鑰加密技術對其聲明進行驗證。

我們來看一個範例

今年早些時候,OpenAI 宣佈支援在 DALL-E 中加入內容憑證。我最近在 DALL-E 中建立了一個關於雪季的影像。

Cloudflare Images 可讓您透過 URL 轉換任何影像。您只需使用以下語法變更 URL 結構即可實現此目的:

https://<ZONE>/cdn-cgi/image/<OPTIONS>/<SOURCE-IMAGE>

我們可以分解以下每個參數:

  • ZONE 是您的特定網域。

  • cdn-cgi/image 是一個固定首碼,標識這是一個由內建 Worker 處理的特殊路徑。

  • 然後,您可以使用 OPTIONS 參數轉換影像:旋轉影像、變更寬度、壓縮影像等。

  • SOURCE-IMAGE 是目前託管影像的 URL。

將這些參數結合在一起,我有了一個新的 URL 結構,我想在其中變更我在 DALL-E 中所建立影像的寬度和品質,並將其顯示在我的個人網站上。將影像從 DALL-E 上傳到我的一個 R2 儲存桶後,我可以建立以下 URL:

https://williamallen.com/cdn-cgi/image/width=1000,quality=75,format=webp/https://pub-3d2658f6f7004dc38a4dd6be147b6a86.r2.dev/dalle.webp

現在,任何人都可以使用內容憑證驗證工具來驗證其溯源記錄以查看結果。即使在使用上面顯示的 Cloudflare Images 轉換來調整影像大小之後,溯源鏈仍然完整無缺。

有許多開放原始碼命令列工具可用來探索內容憑證的完整詳細資料。C2PA 工具由內容真實性計畫建立和維護。您可以在此處閱讀有關該工具的更多資訊,並在 GitHub 上檢視其原始程式碼。

有兩種安裝該工具的方法:透過預先建置的二進位可執行檔,或者使用 Cargo Binstall(如果您已經安裝了 Rust)。安裝後,C2PA 工具會在您的命令列中使用以下語法:

c2patool [OPTIONS] <PATH> [COMMAND]

如果我在瀏覽器中導覽到影像的連結並將其儲存到 Mac 上的下載資料夾中,那麼我只需使用命令 -d(-detailed 的縮寫)即可查看 JSON 清單的完整詳細資料。當然,您應該將 yourusername 變更為您實際的 Mac 使用者名稱。

c2patool /Users/yourusername/Downloads/dalle.webp -d

如果您想要將其輸出為 JSON 檔案以便在 VSCode 或 Cursor 中查看,請改用以下命令:

c2patool /Users/yourusername/Downloads/dalle.webp -d > manifest.json

這樣一來,您不僅可以信任影像轉換的詳細資料,還可親自驗證。

如何開始使用帶有內容憑證的 Cloudflare Images

可以直接開始保留內容憑證。登入您的 Cloudflare 儀表板並在儀表板中導覽至 Images。從該處選擇「轉換」,選擇您要啟用此功能的區域,然後將此選項切換為開啟:

如果您要轉換的影像不包含任何內容憑證,則不會採取任何動作。但如果包含,我們會保留這些內容憑證並為任何轉換提供證明。

展望未來

我們很高興能繼續與 Adobe 和許多其他組織合作,在我們的產品和服務中延伸對保存內容憑證的支援。如果您有興趣瞭解更多資訊,我們很樂意聽取您的意見:我的 X 和 LinkedIn 帳號為 @williamallen

我們保護整個企業網路,協助客戶有效地建置網際網路規模的應用程式,加速任何網站或網際網路應用程式抵禦 DDoS 攻擊,阻止駭客入侵,並且可以協助您實現 Zero Trust

從任何裝置造訪 1.1.1.1,即可開始使用我們的免費應用程式,讓您的網際網路更快速、更安全。

若要進一步瞭解我們協助打造更好的網際網路的使命,請從這裡開始。如果您正在尋找新的職業方向,請查看我們的職缺
Cloudflare Images影像大小調整Image Storage

在 X 上進行關注

Will Allen|@williamallen
Cloudflare|@cloudflare

相關貼文