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 do JCE SDK for AWS CloudHSM
Os problemas a seguir afetam o JCE SDK for AWS CloudHSM.
Tópicos
- Problema: ao trabalhar com pares de chaves assimétricas, você vê a capacidade de chaves ocupada mesmo quando não está explicitamente criando ou importando chaves
- Problema: O JCE KeyStore é somente para leitura
- Problema: buffers para AES - a GCM criptografia não pode exceder 16.000 bytes
- Problema: a derivação da chave de curva elíptica Diffie-Hellman () é executada parcialmente dentro do ECDH HSM
- Problema: KeyGenerator e interpreta KeyAttribute incorretamente o parâmetro de tamanho da chave como número de bytes em vez de bits
- Problema: o cliente SDK 5 emite o aviso “Ocorreu uma operação ilegal de acesso reflexivo”
- Problema: o pool de JCE sessões está esgotado
- Problema: vazamento de memória do cliente SDK 5 com operações getKey
Problema: ao trabalhar com pares de chaves assimétricas, você vê a capacidade de chaves ocupada mesmo quando não está explicitamente criando ou importando chaves
-
Impacto: esse problema pode fazer HSMs com que você fique sem espaço de chave inesperadamente e ocorre quando seu aplicativo usa um objeto de JCE chave padrão para operações de criptografia em vez de um
CaviumKey
objeto. Quando você usa um objeto de JCE chave padrão, importaCaviumProvider
implicitamente essa chave para o HSM como uma chave de sessão e não exclui essa chave até que o aplicativo saia. Como resultado, as chaves se acumulam enquanto o aplicativo está em execução e podem fazer HSMs com que você fique sem espaço livre na chave, congelando o aplicativo. -
Solução alternativa: ao usar a
CaviumSignature
classe, aCaviumCipher
classe, aCaviumMac
classe ou aCaviumKeyAgreement
classe, você deve fornecer a chave como um objeto chaveCaviumKey
em vez de um objeto de JCE chave padrão.É possível converter manualmente uma chave normal em um
CaviumKey
usando a classeImportKey
e depois excluir manualmente a chave após a conclusão da operação. -
Status da resolução: estamos atualizando o
CaviumProvider
para gerenciar corretamente as importações implícitas. A correção será anunciada na página de histórico de versões quando estiver disponível.
Problema: O JCE KeyStore é somente para leitura
-
Impacto: você não pode armazenar um tipo de objeto que não seja suportado pelo HSM no JCE keystore atualmente. Sobretudo, você não pode armazenar certificados no repositório de chaves. Isso impede a interoperabilidade com ferramentas como jarsigner, que espera encontrar o certificado no repositório de chaves.
-
Solução alternativa: você pode reprocessar seu código para carregar certificados de arquivos locais ou de um local do bucket do S3 em vez de carregá-los do repositório de chaves.
-
Status da resolução: estamos adicionando suporte ao armazenamento de certificados no repositório de chaves. Esse recurso será anunciado na página de histórico de versões, quando estiver disponível.
Problema: buffers para AES - a GCM criptografia não pode exceder 16.000 bytes
A GCM criptografia em várias partes AES não é suportada.
-
Impacto: você não pode usar AES - GCM para criptografar dados maiores que 16.000 bytes.
-
Solução alternativa: você pode usar um mecanismo alternativo, como AES -CBC, ou dividir seus dados em partes e criptografar cada parte individualmente. Se você dividir os dados, gerencie o texto cifrado dividido e sua descriptografia. Como FIPS requer que o vetor de inicialização (IV) para AES - GCM seja gerado noHSM, o IV para cada AES-GCM-encrypted dado será diferente.
-
Status da resolução: estamos corrigindo SDK a falha explicitamente se o buffer de dados for muito grande. Estamos avaliando alternativas para oferecer suporte a buffers maiores sem depender da criptografia em 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: a derivação da chave de curva elíptica Diffie-Hellman () é executada parcialmente dentro do ECDH HSM
Sua chave privada EC permanece sempre dentro doHSM, mas o processo de derivação da chave é executado em várias etapas. Consequentemente, os resultados intermediários de cada etapa estão disponíveis no cliente. Uma amostra de derivação de ECDH chave está disponível nas amostras de código Java.
-
Impacto: o cliente SDK 3 adiciona ECDH funcionalidade aoJCE. Quando você usa a
KeyAgreement
classe para derivar uma SecretKey, ela está disponível primeiro no cliente e depois é importada para o. HSM Um identificador de chave é retornado ao aplicativo. -
Solução alternativa: se você estiver implementando SSL TLS /Offload in AWS CloudHSM, essa limitação pode não ser um problema. Se seu aplicativo exigir que sua chave permaneça sempre dentro de um FIPS limite, considere usar um protocolo alternativo que não dependa da derivação de ECDH chaves.
-
Status da resolução: Estamos desenvolvendo a opção de realizar a derivação de ECDH chaves inteiramente dentro doHSM. Quando disponível, anunciaremos a implementação atualizada na página de histórico de versões.
Problema: KeyGenerator e interpreta KeyAttribute incorretamente o parâmetro de tamanho da chave como número de bytes em vez de bits
Ao gerar uma chave usando a init
função da KeyGenerator classeSIZE
atributo do AWS CloudHSM KeyAttribute enum, ele espera API incorretamente que o argumento seja o número de bytes da chave, quando deveria ser o número de bits da chave.
-
Impacto: SDK as versões 5.4.0 a 5.4.2 do cliente esperam incorretamente que o tamanho da chave seja fornecido ao especificado APIs em bytes.
-
Solução alternativa: converta o tamanho da chave de bits em bytes antes de usar a KeyGenerator classe ou KeyAttribute enum para gerar chaves usando o AWS CloudHSM JCE provedor se estiver usando as SDK versões 5.4.0 a 5.4.2 do cliente.
-
Status da resolução: atualize sua SDK versão do cliente para 5.5.0 ou posterior, o que inclui uma correção para esperar corretamente os tamanhos das chaves em bits ao usar a KeyGenerator classe ou o KeyAttribute enum para gerar chaves.
Problema: o cliente SDK 5 emite o aviso “Ocorreu uma operação ilegal de acesso reflexivo”
Ao usar o Client SDK 5 com o Java 11, o Cloud HSM emite o seguinte aviso de Java:
``` WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore (file:/opt/cloudhsm/java/cloudhsm-jce-5.6.0.jar) to field java.security .KeyStore.keyStoreSpi WARNING: Please consider reporting this to the maintainers of com.amazonaws.cloudhsm.jce.provider.CloudHsmKeyStore WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release ```
Esses avisos não têm impacto. Estamos cientes desse problema e estamos trabalhando para resolvê-lo. Nenhuma resolução nem solução alternativa é necessária.
Problema: o pool de JCE sessões está esgotado
Impacto: talvez você não consiga realizar operações JCE depois de ver a seguinte mensagem:
com.amazonaws.cloudhsm.jce.jni.exception.InternalException: There are too many operations happening at the same time: Reached max number of sessions in session pool: 1000
Soluções alternativas:
Reinicie seu JCE aplicativo se você estiver sofrendo um impacto.
Ao realizar uma operação, talvez seja necessário concluí-la JCE antes de perder a referência à operação.
nota
Dependendo da operação, pode ser necessário um método de preenchimento.
Operation Método(s) de preenchimento Cifra doFinal()
no modo criptografar ou descriptografarwrap()
no modo encapsularunwrap()
no modo desencapsularKeyAgreement generateSecret()
ougenerateSecret(String)
KeyPairGenerator generateKeyPair()
,genKeyPair()
, oureset()
KeyStore Nenhum método é necessário MAC doFinal()
oureset()
MessageDigest digest()
oureset()
SecretKeyFactory Nenhum método é necessário SecureRandom Nenhum método é necessário Assinatura sign()
no modo de sinalverify()
no modo de verificação
Status da resolução: resolvemos esse problema no Client SDK 5.9.0 e versões posteriores. Para corrigir esse problema, atualize seu cliente SDK para uma dessas versões.
Problema: vazamento de memória do cliente SDK 5 com operações getKey
-
Impacto: a API
getKey
operação tem um vazamento de memória JCE nas SDK versões 5.10.0 e anteriores do Client. Se você estiver usandogetKey
API várias vezes em seu aplicativo, isso aumentará o crescimento da memória e, consequentemente, aumentará o espaço ocupado pela memória em seu aplicativo. Com o tempo, isso pode causar erros de limitação ou exigir que o aplicativo seja reiniciado. -
Solução alternativa: recomendamos a atualização para o Client SDK 5.11.0. Se isso não puder ser feito, recomendamos não ligar
getKey
API várias vezes em seu aplicativo. Em vez disso, reutilize a chave retornada anteriormente dagetKey
operação anterior, tanto quanto possível. -
Status da resolução: atualize sua SDK versão do cliente para 5.11.0 ou posterior, o que inclui uma correção para esse problema.