

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# API SPEKE v1: Criptografia de chave de conteúdo
<a name="content-key-encryption"></a>

Também é possível adicionar a criptografia de chaves de conteúdo à sua implementação do SPEKE. A criptografia da chave de conteúdo garante end-to-end proteção total ao criptografar as chaves de conteúdo para trânsito, além de criptografar o próprio conteúdo. Se não a implementar no seu provedor de chaves, dependerá apenas da criptografia de camada de transporte e da forte autenticação para segurança.

Para usar a criptografia de chave de conteúdo para criptografadores executados na Nuvem AWS, os clientes importam certificados para o AWS Certificate Manager e, em seguida, usam o certificado resultante ARNs para suas atividades de criptografia. O criptografador usa o certificado ARNs e o serviço ACM para fornecer chaves de conteúdo criptografadas ao provedor da chave DRM.

**Restrições**  
O SPEKE oferece suporte à criptografia de chaves de conteúdo, conforme detalhado na especificação CPIX do DASH-IF, com as seguintes restrições:
+ O SPEKE não oferece suporte à verificação de assinatura digital (XMLDSIG) para cargas de solicitação ou resposta.
+ O SPEKE exige 2048 certificados baseados em RSA.

Essas restrições também estão listadas em [Personalizações e restrições à especificação DASH-IF](speke-constraints.md).

**Implementar a criptografia de chaves de conteúdo**  
Para oferecer a criptografia de chaves de conteúdo, inclua o seguinte em suas implementações do provedor de chaves DRM:
+ Gerencie o elemento `<cpix:DeliveryDataList>` nas cargas de solicitação e de resposta.
+ Forneça valores criptografados em `<cpix:ContentKeyList>` das cargas de resposta.

Para obter mais informações sobre esses elementos, consulte a [Especificação do DASH-IF CPIX 2.0](https://dashif.org/docs/DASH-IF-CPIX-v2-0.pdf).

 *Exemplo de elemento de criptografia de chaves de conteúdo ` <cpix:DeliveryDataList> ` na carga de solicitação* 

O exemplo a seguir destaca em negrito o elemento `<cpix:DeliveryDataList>` adicionado:

```
<?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>
```

 *Exemplo de elemento de criptografia de chaves de conteúdo ` <cpix:DeliveryDataList> ` na carga de resposta* 

O exemplo a seguir destaca em negrito o elemento `<cpix:DeliveryDataList>` adicionado:

```
<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>
```

 *Exemplo de elemento de criptografia de chaves de conteúdo ` <cpix:ContentKeyList> ` na carga de resposta* 

O exemplo a seguir mostra o tratamento das chaves de conteúdo criptografadas no elemento `<cpix:ContentKeyList>` da carga de resposta. O elemento `<pskc:EncryptedValue>` é usado:

```
   <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>
```

Por comparação, o exemplo a seguir mostra uma carga de resposta semelhante à chave de conteúdo entregue sem criptografia, como uma chave em branco. O elemento `<pskc:PlainValue>` é usado:

```
    <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>
```