

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á.

# Problemas conhecidos da biblioteca PKCS \$111 para AWS CloudHSM
<a name="ki-pkcs11-sdk"></a>

Os problemas a seguir afetam a biblioteca PKCS \$111 para AWS CloudHSM.

**Topics**
+ [Problema: o encapsulamento de chave AES na versão 3.0.0 da biblioteca PKCS \$111 não é IVs validado antes do uso](#ki-pkcs11-1)
+ [Problema: o PKCS \$111 SDK 2.0.4 e versões anteriores sempre usaram o padrão IV de `0xA6A6A6A6A6A6A6A6` para o encapsulamento e o desencapsulamento de chaves do AES.](#ki-pkcs11-2)
+ [Problema: o atributo `CKA_DERIVE` não era compatível e, portanto, não era processado](#ki-pkcs11-3)
+ [Problema: o atributo `CKA_SENSITIVE` não era compatível e, portanto, não era processado](#ki-pkcs11-4)
+ [Problema: o hash e a assinatura em várias partes não são compatíveis.](#ki-pkcs11-5)
+ [Problema: `C_GenerateKeyPair` não lida com `CKA_MODULUS_BITS` ou `CKA_PUBLIC_EXPONENT` no modelo privado de uma forma a estar em conformidade com os padrões](#ki-pkcs11-6)
+ [Problema: os buffers das operações de API `C_Encrypt` e `C_Decrypt` não podem exceder 16 KB ao usar o mecanismo `CKM_AES_GCM`.](#ki-pkcs11-8)
+ [Problema: a derivação da chave Diffie-Hellman de curva elíptica (ECDH) é executada parcialmente dentro do HSM.](#ki-pkcs11-9)
+ [Problema: a verificação das assinaturas secp256k1 falha em EL6 plataformas como Cent e RHEL 6 OS6](#ki-pkcs11-10)
+ [Problema: a sequência incorreta de chamadas de função fornece resultados indefinidos em vez de falhar](#ki-pkcs11-11)
+ [Problema: a sessão somente leitura não é compatível com o SDK 5](#ki-pkcs11-13)
+ [Problema: o arquivo de cabeçalho `cryptoki.h` é somente para Windows](#ki-pkcs11-14)

## Problema: o encapsulamento de chave AES na versão 3.0.0 da biblioteca PKCS \$111 não é IVs validado antes do uso
<a name="ki-pkcs11-1"></a>

Se você especificar um IV com menos de 8 bytes de comprimento, ele será preenchido por bytes imprevisíveis antes de usar. 

**nota**  
Isso impacta ‭‬`C_WrapKey` somente com o mecanismo `CKM_AES_KEY_WRAP`‭.
+ **Impacto:** se fornecer um IV com menos de 8 bytes na versão 3.0.0 da biblioteca do PKCS \$111, você poderá não conseguir desencapsular a chave. 
+ **Soluções alternativas: **
  + é altamente recomendável que você atualize para a versão 3.0.1 ou posterior da biblioteca do PKCS \$111, o que aplica corretamente o comprimento do IV durante o encapsulamento de chaves do AES. Modifique o código de encapsulamento para transmitir um IV NULO ou especifique o padrão IV de `0xA6A6A6A6A6A6A6A6`. Para obter mais informações, consulte [Personalizado IVs com comprimento não compatível para AES Key Wrap](troubleshooting-aes-keys.md).
  + Se você encapsulou qualquer chave com a versão 3.0.0 da biblioteca do PKCS \$111 usando um IV menor que 8 bytes, entre em contato conosco para obter [suporte](https://aws.amazon.com/support).
+ **Status da resolução:** esse problema foi resolvido na versão 3.0.1 da biblioteca do PKCS \$111. Para encapsular chaves usando o encapsulamento de chaves do AES, especifique um IV que seja NULO ou de 8 bytes de comprimento.

## Problema: o PKCS \$111 SDK 2.0.4 e versões anteriores sempre usaram o padrão IV de `0xA6A6A6A6A6A6A6A6` para o encapsulamento e o desencapsulamento de chaves do AES.
<a name="ki-pkcs11-2"></a>

 IVs Os fornecidos pelo usuário foram ignorados silenciosamente.

**nota**  
Isso impacta ‭‬`C_WrapKey` somente com o mecanismo `CKM_AES_KEY_WRAP`‭.
+ **Impacto:** 
  + se você usou o PKCS\$111 SDK 2.0.4 ou uma versão anterior e um IV fornecido pelo usuário, as chaves serão encapsuladas com o IV padrão de `0xA6A6A6A6A6A6A6A6`.
  + Se você usou o PKCS\$111 SDK 3.0.0 ou posterior e um IV fornecido pelo usuário, as chaves serão encapsuladas com o IV fornecido pelo usuário.
+ **Soluções alternativas:**
  + para desencapsular chaves encapsuladas com o PKCS\$111 SDK 2.0.4 ou anterior, use o padrão IV de `0xA6A6A6A6A6A6A6A6`. 
  + Para desencapsular chaves encapsuladas com o PKCS\$111 SDK 3.0.0 ou posterior, use o IV fornecido pelo usuário.
+ **Status da resolução:** é altamente recomendável que você modifique o código de encapsulamento e desencapsulamento para transmitir um IV NULO, ou especifique o padrão IV de `0xA6A6A6A6A6A6A6A6`.

## Problema: o atributo `CKA_DERIVE` não era compatível e, portanto, não era processado
<a name="ki-pkcs11-3"></a>
+ **Status da resolução: **implementamos correções para aceitar `CKA_DERIVE` caso ele seja definido como `FALSE`. O atributo `CKA_DERIVE` definido como `TRUE` não será comportado enquanto não começarmos a acrescentar a função de derivação de chaves no AWS CloudHSM. Você deve atualizar seu cliente e SDK(s) para a versão 1.1.1 ou superior para se beneficiar da correção.

## Problema: o atributo `CKA_SENSITIVE` não era compatível e, portanto, não era processado
<a name="ki-pkcs11-4"></a>
+ **Status da resolução: **implementamos correções para aceitar e tratar adequadamente o atributo `CKA_SENSITIVE`. Você deve atualizar seu cliente e SDK(s) para a versão 1.1.1 ou superior para se beneficiar da correção.

## Problema: o hash e a assinatura em várias partes não são compatíveis.
<a name="ki-pkcs11-5"></a>
+ **Impacto: **`C_DigestUpdate` e `C_DigestFinal` não estão implementados. `C_SignFinal` também não é implementado e apresentará falha com `CKR_ARGUMENTS_BAD` para um buffer não `NULL`. 
+ **Solução alternativa: faça** o hash dos dados em seu aplicativo e use-os AWS CloudHSM somente para assinar o hash. 
+ **Status da resolução:** estamos corrigindo o cliente e implementando corretamente SDKs o hashing de várias partes. As atualizações serão anunciadas no fórum do AWS CloudHSM e na página de histórico de versões.

## Problema: `C_GenerateKeyPair` não lida com `CKA_MODULUS_BITS` ou `CKA_PUBLIC_EXPONENT` no modelo privado de uma forma a estar em conformidade com os padrões
<a name="ki-pkcs11-6"></a>
+ **Impacto: **`C_GenerateKeyPair` deve retornar `CKA_TEMPLATE_INCONSISTENT` quando o modelo privado contém `CKA_MODULUS_BITS` ou `CKA_PUBLIC_EXPONENT`. Em vez disso, ele gera uma chave privada para a qual todos os campos de uso são definidos como `FALSE`. A chave não pode ser usada. 
+ **Solução alternativa: **recomendamos que o seu aplicativo verifique os valores dos campos de uso, além do código de erros.
+ **Status da resolução: **estamos implementando correções para retornar a mensagem de erro adequada quando um modelo de chave privada incorreto é usado. A biblioteca PKCS\$111 atualizada será anunciada na página de histórico de versões. 

## Problema: os buffers das operações de API `C_Encrypt` e `C_Decrypt` não podem exceder 16 KB ao usar o mecanismo `CKM_AES_GCM`.
<a name="ki-pkcs11-8"></a>

AWS CloudHSM não suporta criptografia AES-GCM de várias partes.
+ **Impacto: **não é possível usar o mecanismo `CKM_AES_GCM` para criptografar dados maiores que 16 KB.
+ **Solução alternativa: **use um mecanismo alternativo como o `CKM_AES_CBC` , `CKM_AES_CBC_PAD` ou divida os dados em partes e criptografe cada parte usando `AES_GCM` individualmente. Se você estiver usando`AES_GCM`, deverá gerenciar a divisão de seus dados e a criptografia subsequente. AWS CloudHSM não executa criptografia AES-GCM em várias partes para você. Observe que o FIPS requer que o vetor de inicialização (IV) para `AES-GCM` seja gerado no HSM. Portanto, o IV para cada parte dos dados criptografados em AES-GCM será diferente. 
+ **Status da resolução: **vamos corrigir o SDK para falhar explicitamente se o buffer de dados for muito grande. Retornaremos `CKR_MECHANISM_INVALID` para as operações de API `C_EncryptUpdate` e `C_DecryptUpdate`. Estamos avaliando alternativas para oferecer suporte a buffers maiores sem depender da criptografia em várias partes. As atualizações serão anunciadas no AWS CloudHSM fórum e na página do histórico de versões.

## Problema: a derivação da chave Diffie-Hellman de curva elíptica (ECDH) é executada parcialmente dentro do HSM.
<a name="ki-pkcs11-9"></a>

Sua chave privada EC permanece no HSM em todos os momentos, mas o processo de derivação de chaves é realizado em várias etapas. Consequentemente, os resultados intermediários de cada etapa estão disponíveis no cliente.
+ **Impacto: **no Client SDK 3, a chave derivada por meio do mecanismo `CKM_ECDH1_DERIVE` fica disponível primeiro no cliente e, em seguida, é importada para o HSM. Um identificador de chave é retornado à aplicação.
+ **Solução alternativa:** se você estiver implementando o SSL/TLS Offload in AWS CloudHSM, essa limitação pode não ser um problema. Se a aplicação precisar da sua chave para permanecer continuamente em um limite FIPS, é recomendável o uso de um protocolo alternativo que não dependa da derivação de chaves ECDH.
+ **Status da resolução: **agora o SDK 5.16 é compatível com ECDH com derivação de chave, que é executada inteiramente dentro do HSM.

## Problema: a verificação das assinaturas secp256k1 falha em EL6 plataformas como Cent e RHEL 6 OS6
<a name="ki-pkcs11-10"></a>

 Isso ocorre porque a biblioteca PKCS \$111 do CloudHSM evita uma chamada de rede durante a inicialização da operação de verificação usando o OpenSSL para verificar dados da curva do EC. Como o SecP256k1 não é suportado pelo pacote OpenSSL padrão nas plataformas, a inicialização falha. EL6 
+ **Impacto:** a verificação da assinatura SECP256k1 falhará nas plataformas. EL6 Haverá falha na chamada para verificar com um erro `CKR_HOST_MEMORY`.
+ **Solução alternativa:** recomendamos usar o Amazon Linux 1 ou qualquer EL7 plataforma se seu aplicativo PKCS \$111 precisar verificar as assinaturas secp256k1. Como alternativa, atualize para uma versão do pacote OpenSSL que ofereça suporte à curva secp256k1.
+ **Status da resolução: **estamos implementando correções para voltar para o HSM se a validação da curva local não estiver disponível. A biblioteca PKCS\$111 atualizada será anunciada na página de [histórico de versões](client-history.md).

## Problema: a sequência incorreta de chamadas de função fornece resultados indefinidos em vez de falhar
<a name="ki-pkcs11-11"></a>
+ **Impacto**: se você chamar uma sequência incorreta de funções, o resultado final será incorreto, mesmo que as chamadas de função individuais retornem com sucesso. Por exemplo, os dados descriptografados podem não corresponder ao texto simples original ou as assinaturas podem falhar na verificação. Esse problema afeta as operações de parte única e de várias partes.

  Exemplos de sequências de funções incorretas:
  + `C_EncryptInit`/`C_EncryptUpdate`seguido por `C_Encrypt`
  + `C_DecryptInit`/`C_DecryptUpdate`seguido por `C_Decrypt`
  + `C_SignInit`/`C_SignUpdate`seguido por `C_Sign`
  + `C_VerifyInit`/`C_VerifyUpdate`seguido por `C_Verify`
  + `C_FindObjectsInit`seguido por `C_FindObjectsInit`
+  **Solução alternativa**: seu aplicativo deve, em conformidade com a especificação PKCS \$111, usar a sequência correta de chamadas de função para operações de uma e várias partes. Seu aplicativo não deve depender da biblioteca PKCS \$111 do CloudHSM para retornar um erro nessa circunstância. 

## Problema: a sessão somente leitura não é compatível com o SDK 5
<a name="ki-pkcs11-13"></a>
+ **Problema:** o SDK 5 não oferece suporte à abertura de sessões somente leitura com o `C_OpenSession`.
+ **Impacto:** se você tentar chamar `C_OpenSession` sem fornecer `CKF_RW_SESSION`, a chamada falhará com o erro `CKR_FUNCTION_FAILED`. 
+ **Solução alternativa:** ao abrir uma sessão, você deve passar os `CKF_SERIAL_SESSION | CKF_RW_SESSION` sinalizadores para a chamada da função `C_OpenSession`. 

## Problema: o arquivo de cabeçalho `cryptoki.h` é somente para Windows
<a name="ki-pkcs11-14"></a>
+ **Problema:** com as versões 5.0.0 a 5.4.0 do SDK do AWS CloudHSM Cliente 5 no Linux, o arquivo de cabeçalho só `/opt/cloudhsm/include/pkcs11/cryptoki.h` é compatível com sistemas operacionais Windows.
+ **Impacto:** você pode encontrar problemas ao tentar incluir esse arquivo de cabeçalho em seu aplicativo em sistemas operacionais baseados em Linux.
+ **Status da resolução:** atualize para o AWS CloudHSM Client SDK 5 versão 5.4.1 ou superior, que inclui uma versão compatível com Linux desse arquivo de cabeçalho.