drm Key Management

1、RSAES-KEM-KWS
      接收方公钥 P = (m, e);  需要传输的对称密码:K;  mLen 是m的长度(octets);  kekLen是希望KEK的长度;
      a、在0到(m-1)之间选择一个数Z,生成key-encryption key: KEK = KDF(I2OSP(Z,mLen) NULL, kekLen);
      b、用WRAP方法对 K 进行包装: C2 = WRAP(KEK, K);
      c、用 P 对 Z 进行加密: c1 = RSA.ENCRYPT(P, Z),     C1 = I2OSP(c1, mLen);
      d、连接C1、C2得到结果: C = C1 | C2;
      解密过程:the recipient recovers Z from C1 using the recipient’s private key, converts Z to KEK, and then unwraps C2 to recover K;

 

2、Distributing KMAC and KREK under a Device Public Key
      Kmac 和 Krek,是128-bit的由发送端产生的随机值,两者拼接起来,就是上面说到的对称密码K;
      Krek is the wrapping key for the content-encryption key KCEK in Rights Objects;
      KEK的长度为128bits,WRAP需要改为AES-WRAP方法,其他步骤跟上面1是一样的;

 

3、Distributing KD and KMAC under a Device Public Key
      Kd is the symmetric key-wrapping key used when protecting KREK and KMAC in a Rights Object issued to a omain D;
      除了将Krek改为Kd之外,其他步骤跟上面2是一样的;

 

4、Distributing KMAC and KREK under a Domain Key KD
      This section applies when protecting a Rights Object for a Domain;
      Kd是收发双方都知道的一个key;
      加密过程: C = AES-WRAP(KD, KMAC | KREK);
      解密过程: Kmac | Krek = AES-UNWRAP(KD, C);

 

5、Distributing KMAC and KMEK under an RI Public Key
      This section applies when protecting a Metering Report for an RI;
      Kmek ("Metering Encryption Key") is the encryption key used to encrypt Metering Reports;
      除了将Krek改为Kmek,其他步骤与上面2是一样的;

### Android 平台上的数字版权管理 (DRM) 技术 #### DRM 的基本概念 数字版权管理(Digital Rights Management, DRM)是一种用于保护数字媒体内容的技术。通过加密、访问控制和其他安全机制来防止未经授权的复制和分发。 #### Android 中的 DRM 架构 Android 提供了一个完整的 DRM 框架,允许应用程序开发者集成并利用各种 DRM 方案。该框架支持多种标准协议和技术,如 Widevine、PlayReady 和 FairPlay 等[^1]。 #### 主要组件 - **MediaDrm 类**: 这是应用层与底层 DRM 引擎之间的桥梁。它提供了 API 来处理密钥请求、会话管理和状态查询等功能。 - **Widevine Modular DRM**: Google 推荐的一种广泛使用的 DRM 解决方案,在许多设备上预装。其模块化设计使得可以灵活适应不同的硬件环境和支持多样的内容保护需求。 - **ExoPlayer 支持**: ExoPlayer 是一个开源播放器库,内置了对多个 DRM 方案的支持,简化了开发者的集成工作流程。 ```java // 创建 MediaDrm 实例并与特定的 DRM 方案关联 MediaDrm mediaDrm = new MediaDrm(UUID.fromString("edef8ba9-79d6-4ace-a3c8-27dcd51d21ed")); // Widevine UUID ``` #### 使用示例 为了展示如何在一个简单的视频播放程序中启用 DRM 功能: 1. 初始化 `MediaDrm` 对象; 2. 获取许可并通过网络下载许可证文件; 3. 将解码后的帧传递给渲染管道完成播放过程。 ```java try { byte[] keyRequestData = mediaDrm.getKeyRequest( null, mKeySetId, widevineLicenseUrl.getBytes(), MediaDrm.KEY_TYPE_STREAMING); String licenseUrl = "https://example.com/license"; URLConnection connection = new URL(licenseUrl).openConnection(); HttpURLConnection httpConn = (HttpURLConnection)connection; httpConn.setRequestMethod("POST"); httpConn.setDoOutput(true); OutputStream os = httpConn.getOutputStream(); os.write(keyRequestData); InputStream is = httpConn.getInputStream(); byte[] response = readFully(is); mediaDrm.provideKeyResponse(mKeySetId,response); } catch (Exception e){ Log.e(TAG,"Error obtaining keys",e); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值