SPEKEAPIv1-內容密鑰加密 - 安全封裝器和編碼器金鑰交換API規格

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SPEKEAPIv1-內容密鑰加密

您可以選擇性地將內容金鑰加密新增至您的SPEKE實作。內容金鑰加密除了加密內容本身之外,還會加密傳輸的內容金鑰,以確保完整的保 end-to-end 護。如果您沒有針對金鑰提供者實作此功能,您必須仰賴傳輸層加密加強式驗證來確保安全性。

若要對在 AWS Cloud 中執行的加密程式使用內容金鑰加密,客戶會將憑AWS證匯入 Certificate Manager,然後將產生的憑證用ARNs於其加密活動。加密程式會使用憑證ARNs和ACM服務,將加密的內容金鑰提供給金鑰提供者。DRM

限制

SPEKE支援 DASH-IF CPIX 規格中指定的內容金鑰加密,但有下列限制:

  • SPEKE不支援要求或回應承載的數位簽章驗證 (XMLDSIG)。

  • SPEKE需要以 2048 RSA 為基礎的憑證。

這些限制也會列在 [自訂] 和 [DASH-IF 規格的條件約束] 中。

實作內容金鑰加密

若要提供內容金鑰加密,請在金DRM鑰提供者實作中包含下列項目:

  • 處理請求和回應承載中的 <cpix:DeliveryDataList> 元素。

  • 在回應承載的 <cpix:ContentKeyList> 中提供加密值。

如需有關這些元素的詳細資訊,請參閱 DASH-IF CPIX 2.0 規格

請求承載中的 <cpix:DeliveryDataList> 範例內容金鑰加密元素

下列範例以粗體強調新增的 <cpix:DeliveryDataList> 元素:

<?xml version="1.0" encoding="UTF-8"?> <cpix:CPIX id="example-test-doc-encryption" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke"> <cpix:DeliveryDataList> <cpix:DeliveryData id="<ORIGIN SERVER ID>"> <cpix:DeliveryKey> <ds:X509Data> <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate> </ds:X509Data> </cpix:DeliveryKey> </cpix:DeliveryData> </cpix:DeliveryDataList> <cpix:ContentKeyList> ... </cpix:ContentKeyList> </cpix:CPIX>

回應承載中的 <cpix:DeliveryDataList> 範例內容金鑰加密元素

下列範例以粗體強調新增的 <cpix:DeliveryDataList> 元素:

<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:enc="http://www.w3.org/2001/04/xmlenc#" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke" id="hls_test_001"> <cpix:DeliveryDataList> <cpix:DeliveryData id="<ORIGIN SERVER ID>"> <cpix:DeliveryKey> <ds:X509Data> <ds:X509Certificate><X.509 CERTIFICATE, BASE-64 ENCODED></ds:X509Certificate> </ds:X509Data> </cpix:DeliveryKey> <cpix:DocumentKey Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"> <cpix:Data> <pskc:Secret> <pskc:EncryptedValue> <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" /> <enc:CipherData> <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue> </enc:CipherData> </pskc:EncryptedValue> <pskc:ValueMAC>qnei/5TsfUwDu+8bhsZrLjDRDngvmnUZD2eva7SfXWw=</pskc:ValueMAC> </pskc:Secret> </cpix:Data> </cpix:DocumentKey> <cpix:MACMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"> <cpix:Key> <pskc:EncryptedValue> <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" /> <enc:CipherData> <enc:CipherValue><RSA CIPHER VALUE></enc:CipherValue> </enc:CipherData> </pskc:EncryptedValue> <pskc:ValueMAC>DGqdpHUfFKxdsO9+EWrPjtdTCVfjPLwwtzEcFC/j0xY=</pskc:ValueMAC> </cpix:Key> </cpix:MACMethod> </cpix:DeliveryData> </cpix:DeliveryDataList> <cpix:ContentKeyList> ... </cpix:ContentKeyList> </cpix:CPIX>

回應承載中的 <cpix:ContentKeyList> 範例內容金鑰加密元素

下列範例說明回應承載 <cpix:ContentKeyList> 元素中的加密內容金鑰處理。其會使用 <pskc:EncryptedValue> 元素:

<cpix:ContentKeyList> <cpix:ContentKey kid="682681c8-69fa-4434-9f9f-1a7f5389ec02"> <cpix:Data> <pskc:Secret> <pskc:EncryptedValue> <enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /> <enc:CipherData> <enc:CipherValue>NJYebfvJ2TdMm3k6v+rLNVYb0NoTJoTLBBdbpe8nmilEfp82SKa7MkqTn2lmQBPB</enc:CipherValue> </enc:CipherData> </pskc:EncryptedValue> <pskc:ValueMAC>t9lW4WCebfS1GP+dh0IicMs+2+jnrAmfDa4WU6VGHc4=</pskc:ValueMAC> </pskc:Secret> </cpix:Data> </cpix:ContentKey> </cpix:ContentKeyList>

相比之下,下列範例會顯示類似的回應承載,包含未加密交付的內容金鑰 (做為清除金鑰)。其會使用 <pskc:PlainValue> 元素:

<cpix:ContentKeyList> <cpix:ContentKey explicitIV="OFj2IjCsPJFfMAxmQxLGPw==" kid="682681c8-69fa-4434-9f9f-1a7f5389ec02"> <cpix:Data> <pskc:Secret> <pskc:PlainValue>5dGAgwGuUYu4dHeHtNlxJw==</pskc:PlainValue> </pskc:Secret> </cpix:Data> </cpix:ContentKey> </cpix:ContentKeyList>