身份验证 - 安全包装程序和编码器密钥交换 API 规范

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

身份验证

SPEKE 要求对本地产品以及在 AWS 云中运行的服务和功能进行身份验证。

AWS 云实施的身份验证

SPEKE 要求通过 IAM 角色进行 AWS 身份验证才能与加密器一起使用。IAM 角色由 DRM 提供商或在 AWS 账户中拥有 DRM 终端节点的操作员创建。每个角色都分配有一个 Amazon 资源名称 (ARN),AWS Elemental 服务运营商在请求加密时在服务控制台上提供该名称。必须将角色的策略权限配置为授予访问密钥提供商 API 的权限,不允许其他 AWS 资源访问权限。当加密程序联系 DRM 密钥提供程序时,它使用角色 ARN 代入密钥提供程序账户持有人的角色,从而返回临时凭证以供加密程序用于访问密钥提供程序。

一种常见的实现是运营商或 DRM 平台供应商在密钥提供商面前使用 Amazon API Gateway,然后在 API Gateway 资源上启用 AWS Identity and Access Management (AWS IAM) 授权。您可以使用以下策略定义示例并将其附加到新角色以向相应资源授予权限。在这种情况下,权限适用于所有 API Gateway 资源:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-west-2:*:*/*/GET/*" ] } ] }

最后,该角色需要添加信任关系,并且操作人员必须能够选择服务。

以下示例显示为访问 DRM 密钥提供程序而创建的角色 ARN:

arn:aws:iam::2949266363526:role/DRMKeyServer

有关创建角色的更多信息,请参阅 AWS AssumeRole。有关签署请求的更多信息,请参阅 AWS Sigv4

本地产品认证

对于本地产品,我们建议您使用 SSL/TLS 和摘要身份验证以获得最佳安全性,但至少应使用基于 HTTPS 的基本身份验证。

这两种身份验证都使用 HTTP 请求中的 Authorization 标头:

  • 摘要式身份验证 — 授权标头由Digest标识符和一系列用于验证请求的值组成。具体而言,响应值是通过一系列 MD5 哈希函数生成的,这些函数包括来自服务器的唯一随机数,用于确保密码安全传输。 one-time-use

  • 基本身份验证 — 授权标头由标识符Basic和一个 base-64 编码的字符串组成,该字符串表示用户名和密码,用冒号分隔。

有关基本身份验证和摘要式身份验证的信息(包括有关标头的详细信息),请参阅 Internet Engineering Task Force (IETF) 规范 RFC 2617 - HTTP 身份验证:基本身份验证和摘要式访问身份验证