

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# C2PA 清单的内容真实性
<a name="c2pa-manifest"></a>

使用创建 MP4 输出时 AWS Elemental MediaConvert，您可以选择嵌入 C2PA 清单，为媒体提供内容来源和真实性。C2PA（内容来源和真实性联盟）是一种标准化方法，用于提供有关数字内容起源和历史的可验证信息。

C2PA 清单通过将可验证的信息嵌入到媒体文件中来帮助解决日益严重的错误信息和深度伪造问题。这些信息创建了内容来源和修改的可追溯记录。

在工作流程中包含 C2PA 清单的一些原因可能包括：
+ 提供有关媒体文件转码历史记录的可验证信息。
+ 允许下游系统验证您的内容的真实性。
+ Support 支持数字媒体的透明度计划。

[有关内容真实性和 C2PA 的更多信息，请参阅：[内容真实性计划](https://contentauthenticity.org/)和 C2PA 规范](https://c2pa.org/specifications/specifications/2.2/index.html)

**Topics**
+ [使用 C2PA 清单配置作业](c2pa-manifest-use.md)
+ [C2PA 清单要求](c2pa-manifest-requirements.md)
+ [C2PA 清单结构](c2pa-manifest-structure.md)
+ [验证 C2PA 清单](c2pa-manifest-verification.md)

# 使用 C2PA 清单配置作业
<a name="c2pa-manifest-use"></a>

要在 MP4 输出中包含 C2PA 清单，您需要使用签名和嵌入清单所需的参数来配置任务设置。

## MediaConvert 控制台
<a name="collapsible-section-1"></a>

要使用控制台在 MP4 输出中包含 C2PA 清单，请执行 MediaConvert 以下操作：

1. 在**输出组**部分，添加**文件**输出组。

1. 在 **“输出设置”** 中，将 “**容器**” 设置为 **MPEG-4 容器**。

1. 展开 **MPEG-4 容器设置**。

1. **对于 **C2PA 清单**，请选择包含。**

1. 对于**证书密钥**，请输入包含 PEM 格式的 C2PA 公共证书链的 Secrets Manager 密钥的名称或 ARN。

1. 要**签署 KMS 密钥**，请输入用于签署 C2PA 清单的 AWS KMS 密钥的 ID 或 ARN。

## API、SDK 或 AWS Command Line Interface (AWS CLI)
<a name="collapsible-section-2"></a>

要使用 API、SDK 或 AWS Command Line Interface (AWS CLI) 包含 C2PA 清单，请在 MP4 容器设置中包含以下内容。将**证书密钥和签名 KMS 密****钥**的示例 ARNs 替换 ARNs为：

```
...
    "OutputGroups": [{
        "Name": "File Group",
        "OutputGroupSettings": {
            "Type": "FILE_GROUP_SETTINGS",
            "FileGroupSettings": {}
        },
        "Outputs": [{
            "VideoDescription": {...},
            "AudioDescriptions": [...],
            "ContainerSettings": {
                "Container": "MP4",
                "Mp4Settings": {
                    "C2paManifest": "INCLUDE",
                    "CertificateSecret": "arn:aws:secretsmanager:us-west-2:111122223333:secret:c2pa-certificate-abc123",
                    "SigningKmsKey": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
                }
            }
        }]
    }]
...
```

# C2PA 清单要求
<a name="c2pa-manifest-requirements"></a>

要在 MediaConvert 输出中包含 C2PA 清单，您需要满足以下条件：

**MP4 容器**  
仅输出支持 C2PA 清单。 MP4 

**C2PA 证书**  
存储在 Secrets Manager 中的 PEM 格式的公共证书链。证书链应包括签名者的证书和所有中间证书，但不包括根证书。  
[有关获取兼容 C2PA 的证书的信息，请参阅 https://opensource.contentauthenticity。 org/docs/signing/get-证书](https://opensource.contentauthenticity.org/docs/signing/get-cert)  
有关 Secrets Manager 的信息，请参阅 S [ecrets Manager 用户指南](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)。

**AWS KMS 钥匙**  
具有 ECDSA\$1SHA\$1256 签名功能的 AWS KMS 密钥。此密钥用于签署 C2PA 清单。目前， MediaConvert 仅支持 ES256 （带有 SHA-256 的 ECDSA）签名算法。  
有关的信息 AWS KMS，请参阅[AWS KMS 用户指南](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)。

**IAM 权限**  
您的 MediaConvert 服务角色必须有权访问指定的 Secrets Manager 密 AWS KMS 钥和密钥。向您的服务角色添加以下权限：    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "kms:Sign",
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        },
        {
            "Effect": "Allow",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:us-west-2:111122223333:secret:c2pa-certificate-abc123"
        }
    ]
}
```

**大小限制**  
C2PA 清单的大小限制为 32KB。如果您的证书链或其他清单组件超过此限制，则任务将失败并显示错误。

# C2PA 清单结构
<a name="c2pa-manifest-structure"></a>

在 MP4 输出中嵌入 C2PA 清单时， MediaConvert 会生成包含以下组件的清单：

**索赔生成器信息**  
标识 MediaConvert 为生成清单的服务。

**Format**  
指定媒体格式（视频/mp4）。

**断言**  
包括有关对内容执行的操作的声明，例如：  
+ `c2pa.opened`: 表示内容已打开进行处理
+ `c2pa.transcoded`: 表示内容已转码

**资产哈希**  
媒体内容的加密哈希值，用于验证其完整性。 MediaConvert 使用 SHA-256 哈希算法进行资产验证。

**数字签名**  
使用您的 KMS 密钥创建的签名，用于验证清单的真实性。该签名包括来自 DigiCert的时间戳颁发机构 (http://timestamp.digicert.com) 的时间戳令牌，以确保长期的签名验证。

清单使用标准的 C2PA UUID 框嵌入到 MP4 文件中，该框放在 FTYP 框之后和 MOOV 框之前。

**注意**  
如果您的输入文件已经包含 C2PA 清单， MediaConvert 则不要将其保留在输出中。相反，它会生成一个新的清单。

# 验证 C2PA 清单
<a name="c2pa-manifest-verification"></a>

使用 C2PA 清单创建 MP4 输出后，您可以使用兼容 C2PA 的工具验证清单。这些工具可以提取和验证清单，包括检查数字签名和资产哈希。

经过适当验证的 C2PA 清单证实：
+ 舱单由指定证书签署
+ 自清单创建以来，内容未被修改
+ 清单中的动作和断言完好无损

有关 C2PA 和可用验证工具的更多信息，请访问 [C](https://c2pa.org) 2PA 网站。您可以使用开源 [c2patool](https://github.com/contentauth/c2pa-rs/tree/main/cli) 来验证媒体文件中的 C2PA 清单。例如：

```
c2patool example.mp4 --info
```

成功的验证将显示类似于以下内容的输出：

```
$ c2patool example.mp4 --info
Information for example.mp4
Manifest store size = 32000 (0.56% of file size 5705967)
Validated
One manifest
```

有关清单内容的更多详细信息，请使用以下`--detailed`标志：

```
c2patool example.mp4 --detailed
```

以下是 c2patool 的输出示例：

```
$ c2patool example.mp4 --detailed
{
 "active_manifest": "urn:uuid:0b3bd0b6-9783-4adc-9609-fb29fff858da",
 "manifests": {
  "urn:uuid:0b3bd0b6-9783-4adc-9609-fb29fff858da": {
   "claim": {
    "dc:title": "example.mp4",
    "dc:format": "video/mp4",
    "instanceID": "xmp:iid:190fb451-7dc4-4878-b0d2-512d9b1c5dab",
    "claim_generator": "mediaconvert/1.0",
    "claim_generator_info": [
     {
      "name": "MediaConvert",
      "version": "1.0",
      "org.cai.c2pa_rs": "0.39.0"
     }
    ],
    "signature": "self#jumbf=/c2pa/urn:uuid:0b3bd0b6-9783-4adc-9609-fb29fff858da/c2pa.signature",
    "assertions": [
     {
      "url": "self#jumbf=c2pa.assertions/c2pa.actions",
      "hash": "P2+zrSTu2U5aGo4mNC35EWEM7vjfLho/2tTKmZ+ls+k="
     },
     {
      "url": "self#jumbf=c2pa.assertions/c2pa.hash.bmff",
      "hash": "majeRA6voTIMvHShWBR5Vqg7e4c7dVFsfTbezIzn63o="
     }
    ],
    "alg": "sha256"
   },
   "assertion_store": {
    "c2pa.actions": {
     "actions": [
      {
       "action": "c2pa.opened"
      },
      {
       "action": "c2pa.transcoded"
      }
     ]
    },
    "c2pa.hash.bmff": {
     "alg": "sha256",
     "hash": "BHZI6ml1LqBf2xLaKAzYS8uOYwWo5/Wsc30wRYmnr4M=",
     "name": "jumbf manifest",
     "exclusions": [
      {
       "data": null,
       "exact": null,
       "flags": null,
       "xpath": "/ftyp",
       "length": null,
       "subset": null,
       "version": null
      },
      {
       "data": null,
       "exact": null,
       "flags": null,
       "xpath": "/uuid",
       "length": null,
       "subset": null,
       "version": null
      },
      {
       "data": null,
       "exact": null,
       "flags": null,
       "xpath": "/free",
       "length": null,
       "subset": null,
       "version": null
      },
      {
       "data": null,
       "exact": null,
       "flags": null,
       "xpath": "/mdat",
       "length": null,
       "subset": [
        {
         "length": 8,
         "offset": 0
        }
       ],
       "version": null
      },
      {
       "data": null,
       "exact": null,
       "flags": null,
       "xpath": "/moov",
       "length": null,
       "subset": null,
       "version": null
      },
      {
       "data": null,
       "exact": null,
       "flags": null,
       "xpath": "/mfra",
       "length": null,
       "subset": null,
       "version": null
      }
     ]
    }
   },
   "signature": {
    "alg": "es256",
    "issuer": "Test Organization",
    "time": "2025-04-11T23:17:33+00:00"
   }
  }
 },
 "validation_status": [
  {
   "code": "claimSignature.validated",
   "url": "self#jumbf=/c2pa/urn:uuid:0b3bd0b6-9783-4adc-9609-fb29fff858da/c2pa.signature",
   "explanation": "claim signature valid"
  },
  {
   "code": "assertion.hashedURI.match",
   "url": "self#jumbf=/c2pa/urn:uuid:0b3bd0b6-9783-4adc-9609-fb29fff858da/c2pa.assertions/c2pa.actions",
   "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.actions"
  },
  {
   "code": "assertion.hashedURI.match",
   "url": "self#jumbf=/c2pa/urn:uuid:0b3bd0b6-9783-4adc-9609-fb29fff858da/c2pa.assertions/c2pa.hash.bmff",
   "explanation": "hashed uri matched: self#jumbf=c2pa.assertions/c2pa.hash.bmff"
  },
  {
   "code": "assertion.bmffHash.match",
   "url": "self#jumbf=/c2pa/urn:uuid:0b3bd0b6-9783-4adc-9609-fb29fff858da/c2pa.assertions/c2pa.hash.bmff",
   "explanation": "data hash valid"
  }
 ]
}
```