- Visão geral de serviço
-
Guia de usuário
- Serviço de gerenciamento de chaves
- Serviço de gerenciamento de segredo em nuvem
- Serviço de par de chaves
- HSM dedicado
- Registros de auditoria
- Controle de permissão
-
Referência de API
- Antes de começar
- Chamada das APIs
- Visão geral de API
-
APIs
- APIs de gerenciamento de chaves
- APIs de gerenciamento de pares de chaves
- APIs de gerenciamento de segredo
- APIs históricas
- Exemplos de aplicação
- Políticas de permissões e ações suportadas
- Apêndice
- Histórico de mudanças
-
Melhores práticas
-
Serviço de gerenciamento de chaves
- Uso do KMS para criptografar dados off-line
- Uso do KMS para criptografar e descriptografar dados para serviços em nuvem
- Uso do SDK de criptografia para criptografar e descriptografar arquivos locais
- Criptografia e descriptografia de dados por meio de DR entre regiões
- Uso do KMS para proteger a integridade dos arquivos
- Serviço de gerenciamento de segredo em nuvem
- Geral
- Histórico de alterações
-
Serviço de gerenciamento de chaves
- Primeiros passos
-
Perguntas frequentes
- Serviço de gerenciamento de chaves
- Serviço de gerenciamento de segredo em nuvem
- Serviço de par de chaves
- HSM dedicado
- Registros de auditoria
- Controle de permissão
-
Perguntas frequentes
-
Relacionado ao KMS
- O que é o serviço de gerenciamento de chaves?
- O que é uma Chave principal do cliente?
- O que é uma chave padrão?
- Quais são as diferenças entre uma chave personalizada e uma chave padrão?
- O que é uma chave de criptografia de dados?
- Por que não consigo excluir uma CMK imediatamente?
- Quais serviços de nuvem podem usar o KMS para criptografia?
- Como os serviços da Huawei Cloud usam o KMS para criptografar dados?
- Quais são os benefícios da criptografia de envelope?
- Existe um limite para o número de chaves personalizadas que posso criar no KMS?
- Posso exportar uma CMK do KMS?
- Posso descriptografar meus dados se eu excluir permanentemente minha chave personalizada?
- Como usar a ferramenta on-line para criptografar ou descriptografar pequenos volumes de dados?
- Posso atualizar CMKs criadas por materiais de chave gerados por KMS?
- Quando devo usar uma CMK criada com materiais de chaves importados?
- O que devo fazer quando excluir acidentalmente materiais de chaves?
- Como as chaves padrão são geradas?
- O que devo fazer se não tiver as permissões para realizar operações no KMS?
- Por que não posso encapsular chaves assimétricas usando -id-aes256-wrap-pad no OpenSSL?
- Algoritmos de chave suportados pelo KMS
- O que devo fazer se o KMS não for solicitado e o código de erro 401 for exibido?
- Qual é a relação entre o texto cifrado e o texto não criptografado retornado pela API de dados de criptografia?
- Como o KMS protege minhas chaves?
- Como usar uma chave assimétrica para verificar o resultado da assinatura de um par de chaves públicas?
- Uma chave importada suporta rotação?
- Relacionado a credenciais
-
Relacionado ao KPS
- Como criar um par de chaves?
- O que são um par de chaves privadas e um par de chaves de contas?
- Como lidar com uma falha de importação de um par de chaves criado usando o PuTTYgen?
- O que devo fazer quando não consigo importar um par de chaves usando o Internet Explorer 9?
- Como fazer logon em um ECS de Linux com uma chave privada?
- Como usar uma chave privada para obter a senha para fazer logon em um ECS do Windows?
- Como lidar com a falha na vinculação de um par de chaves?
- Como lidar com a falha na substituição de um par de chaves?
- Como lidar com a falha na redefinição de um par de chaves?
- Como lidar com a falha na desvinculação de um par de chaves?
- Preciso reiniciar os servidores depois de substituir seu par de chaves?
- Como ativar o modo de logon com senha para um ECS?
- Como lidar com a falha no logon no ECS após desvincular o par de chaves?
- O que devo fazer se minha chave privada for perdida?
- Como converter o formato de um arquivo de chave privada?
- Posso alterar o par de chaves de um servidor?
- Um par de chaves pode ser compartilhado por vários usuários?
- Como obter o arquivo de chave pública ou privada de um par de chaves?
- O que posso fazer se um erro for relatado quando uma chave de conta for criada ou atualizada pela primeira vez?
- A cota de par de chaves de conta será ocupada depois que um par de chaves privadas for atualizado para um par de chaves de conta?
-
Relacionado ao HSM dedicado
- O que é o HSM dedicado?
- Como o HSM dedicado garante a segurança para a geração de chaves?
- O pessoal da sala de equipamentos tem a função de superadministrador para roubar informações usando um UKey privilegiado?
- Quais HSMs são usados para HSM dedicado?
- Quais APIs o HSM dedicado suporta?
- Como ativar o acesso público a uma instância do HSM dedicado?
- Preços
- Geral
-
Relacionado ao KMS
- No momento, o conteúdo não está disponível no seu idioma selecionado. Consulte a versão em inglês.
- What's New
- Function Overview
- Billing
- SDK Reference
- Videos
-
More Documents
- User Guide (ME-Abu Dhabi Region)
- User Guide (Paris and Amsterdam Regions)
-
User Guide (Kuala Lumpur Region)
- Service Overview
-
User Guide
- Key Management Service
- Cloud Secret Management Service
- Auditing Logs
- Permission Control
-
FAQs
-
KMS Related
- What Is Key Management Service?
- What Is a Customer Master Key?
- What Is a Default Key?
- What Are the Differences Between a Custom Key and a Default Key?
- What Is a Data Encryption Key?
- Why Cannot I Delete a CMK Immediately?
- Which Cloud Services Can Use KMS for Encryption?
- How Do Cloud Services Use KMS to Encrypt Data?
- What Are the Benefits of Envelope Encryption?
- Is There a Limit on the Number of Custom Keys That I Can Create on KMS?
- Can I Export a CMK from KMS?
- Can I Decrypt My Data if I Permanently Delete My Custom Key?
- How Do I Use the Online Tool to Encrypt or Decrypt Small Volumes of Data?
- Can I Update CMKs Created by KMS-Generated Key Materials?
- When Should I Use a CMK Created with Imported Key Materials?
- What Types of Keys Can I Import?
- What Should I Do When I Accidentally Delete Key Materials?
- How Are Default Keys Generated?
- What Should I Do If I Do Not Have the Permissions to Perform Operations on KMS?
- Why Can't I Wrap Asymmetric Keys by Using -id-aes256-wrap-pad in OpenSSL?
- Key Algorithms Supported by KMS
- What Should I Do If KMS Failed to Be Requested and Error Code 401 Is Displayed?
- What Is the Relationship Between the Ciphertext and Plaintext Returned by the encrypt-data API?
- How Does KMS Protect My Keys?
- Credential Related
-
KMS Related
- Change History
-
API Reference (ME-Abu Dhabi Region)
- Before You Start
- Calling APIs
- API Overview
-
APIs
- Creating a CMK
- Enabling a CMK
- Disabling a CMK
- Scheduling the Deletion of a CMK
- Canceling the Scheduled Deletion of a CMK
- Querying the List of CMKs
- Querying the Information About a CMK
- Creating a Random Number
- Creating a DEK
- Creating a Plaintext-Free DEK
- Encrypting a DEK
- Decrypting a DEK
- Querying the Number of Instances
- Querying the Quota of a User
- Changing the Alias of a CMK
- Changing the Description of a CMK
- Encrypting Data
- Decrypting Data
- Obtaining CMK Import Parameters
- Importing CMK Material
- Deleting CMK Material
- Querying CMK Instances
- Querying CMK Tags
- Querying Project Tags
- Adding or Deleting CMK Tags in Batches
- Adding a CMK Tag
- Deleting a CMK Tag
- Permissions Policies and Supported Actions
- Appendix
- Change History
-
API Reference (Paris and Amsterdam Regions)
- Before You Start
- Calling APIs
- API Overview
-
APIs
- Creating a CMK
- Enabling a CMK
- Disabling a CMK
- Scheduling the Deletion of a CMK
- Canceling the Scheduled Deletion of a CMK
- Querying the List of CMKs
- Querying the Information About a CMK
- Creating a Random Number
- Creating a DEK
- Creating a Plaintext-Free DEK
- Encrypting a DEK
- Decrypting a DEK
- Querying the Number of Instances
- Querying the Quota of a User
- Changing the Alias of a CMK
- Changing the Description of a CMK
- Creating a Grant
- Revoking a Grant
- Retiring a Grant
- Querying Grants on a CMK
- Querying Grants That Can Be Retired
- Encrypting Data
- Decrypting Data
- Obtaining CMK Import Parameters
- Importing CMK Material
- Deleting CMK Material
- Enabling Rotation for a CMK
- Changing the Rotation Interval for a CMK
- Disabling Rotation for a CMK
- Querying the Rotation Status of a CMK
- Appendix
- Change History
-
API Reference (Kuala Lumpur Region)
- Before You Start
- Calling APIs
- API Overview
-
APIs
- Creating a CMK
- Enabling a CMK
- Disabling a CMK
- Scheduling the Deletion of a CMK
- Canceling the Scheduled Deletion of a CMK
- Querying the List of CMKs
- Querying the Information About a CMK
- Creating a Random Number
- Creating a DEK
- Creating a Plaintext-Free DEK
- Encrypting a DEK
- Decrypting a DEK
- Querying the Number of Instances
- Querying the Quota of a User
- Changing the Alias of a CMK
- Changing the Description of a CMK
- Creating a Grant
- Revoking a Grant
- Retiring a Grant
- Querying Grants on a CMK
- Querying Grants That Can Be Retired
- Encrypting Data
- Decrypting Data
- Obtaining CMK Import Parameters
- Importing CMK Material
- Deleting CMK Material
- Enabling Rotation for a CMK
- Changing the Rotation Interval for a CMK
- Disabling Rotation for a CMK
- Querying the Rotation Status of a CMK
- Appendix
- Change History
Mostrar todos
Copiado.
Uso do SDK de criptografia para criptografar e descriptografar arquivos locais
Você pode usar certos algoritmos para criptografar seus arquivos, protegendo-os contra violação ou adulteração.
O SDK de criptografia é uma biblioteca de senhas de cliente que pode criptografar e descriptografar fluxos de dados e arquivos. Você pode facilmente criptografar e descriptografar grandes quantidades de dados simplesmente chamando APIs. Ele permite que você se concentre no desenvolvimento das principais funções de suas aplicações sem se distrair com os processos de criptografia e descriptografia de dados.
Cenário
Se arquivos e imagens grandes forem enviados ao KMS por meio de HTTPS para criptografia, um grande número de recursos de rede será consumido e a criptografia será lenta. Esta seção descreve como criptografar rapidamente uma grande quantidade de dados.
Solução
O SDK de criptografia executa a criptografia de envelope em fluxos de arquivos, segmento por segmento.
Os dados são criptografados no SDK usando a DEK gerada pelo KMS. A criptografia segmentada de arquivos na memória garante a segurança e a correção da criptografia de arquivos, porque não requer transferência de arquivos pela rede.
O SDK carrega um arquivo na memória e o processa segmento por segmento. O próximo segmento não será lido antes que a criptografia ou descriptografia do segmento atual seja concluída.
Processo
Procedimento
- Obtenha o AK e a SK.
- ACCESS_KEY: chave de acesso da conta da Huawei. Para obter detalhes, consulte Como obter uma chave de acesso (AK/SK)?
- SECRET_ACCESS_KEY: chave de acesso de segredo da conta da Huawei. Para obter detalhes, consulte Como obter uma chave de acesso (AK/SK)?
- Haverá riscos de segurança se a AK/SK usada para autenticação for gravada diretamente no código. Criptografe a AK/SK no arquivo de configuração ou nas variáveis de ambiente para armazenamento.
- Neste exemplo, a AK/SK armazenada nas variáveis de ambiente é usada para autenticação de identidade. Configure as variáveis de ambiente HUAWEICLOUD_SDK_AK e HUAWEICLOUD_SDK_SK primeiro no ambiente local.
- Obtenha informações da região.
- Faça logon no console de gerenciamento.
- Passe o mouse sobre o nome de usuário no canto superior direito e escolha My Credentials na lista suspensa.
- Obtenha o Project ID e o Project Name.
Figura 1 Obtenção do ID e do nome do projeto
- Clique em
. Escolha Security & Compliance > Data Encryption Workshop.
- Obtenha o ID da CMK (KEYID) a ser usado na região atual.
Figura 2 Obtenção do ID da CMK
- Obtenha o ponto de extremidade (ENDPOINT) exigido pela região atual.
Um ponto de extremidade é o request address para chamar uma API. Os pontos de extremidade variam de acordo com os serviços e as regiões. Para obter os pontos de extremidade de todos os serviços, consulte Regiões e pontos de extremidade.
Figura 3 Obtenção de um ponto de extremidade
- Criptografe e descriptografe um arquivo.
public class KmsEncryptFileExample { private static final String ACCESS_KEY = System.getenv("HUAWEICLOUD_SDK_AK"); private static final String SECRET_ACCESS_KEY = System.getenv("HUAWEICLOUD_SDK_SK"); private static final String PROJECT_ID = "<projectId>"; private static final String REGION = "<region>"; private static final String KEYID = "<keyId>"; public static final String ENDPOINT = "<endpoint>"; public static void main(String[] args) throws IOException { // Source file path String encryptFileInPutPath = args[0]; // Path of the encrypted ciphertext file String encryptFileOutPutPath = args[1]; // Path of the decrypted file String decryptFileOutPutPath = args[2]; // Encryption context Map<String, String> encryptContextMap = new HashMap<>(); encryptContextMap.put("encryption", "context"); encryptContextMap.put("simple", "test"); encryptContextMap.put("caching", "encrypt"); // Construct the encryption configuration HuaweiConfig config = HuaweiConfig.builder().buildSk(SECRET_ACCESS_KEY) .buildAk(ACCESS_KEY) .buildKmsConfig(Collections.singletonList(new KMSConfig(REGION, KEYID, PROJECT_ID, ENDPOINT))) .buildCryptoAlgorithm(CryptoAlgorithm.AES_256_GCM_NOPADDING) .build(); HuaweiCrypto huaweiCrypto = new HuaweiCrypto(config); // Set the key ring. huaweiCrypto.withKeyring(new KmsKeyringFactory().getKeyring(KeyringTypeEnum.KMS_MULTI_REGION.getType())); // Encrypt the file. encryptFile(encryptContextMap, huaweiCrypto, encryptFileInPutPath, encryptFileOutPutPath); // Decrypt the file. decryptFile(huaweiCrypto, encryptFileOutPutPath, decryptFileOutPutPath); } private static void encryptFile(Map<String, String> encryptContextMap, HuaweiCrypto huaweiCrypto, String encryptFileInPutPath, String encryptFileOutPutPath) throws IOException { // fileInputStream: input stream corresponding to the encrypted file FileInputStream fileInputStream = new FileInputStream(encryptFileInPutPath); // fileOutputStream: output stream corresponding to the source file FileOutputStream fileOutputStream = new FileOutputStream(encryptFileOutPutPath); // Encryption huaweiCrypto.encrypt(fileInputStream, fileOutputStream, encryptContextMap); fileInputStream.close(); fileOutputStream.close(); } private static void decryptFile(HuaweiCrypto huaweiCrypto, String decryptFileInPutPath, String decryptFileOutPutPath) throws IOException { // in: input stream corresponding to the source file FileInputStream fileInputStream = new FileInputStream(decryptFileInPutPath); // out: output stream corresponding to the encrypted file FileOutputStream fileOutputStream = new FileOutputStream(decryptFileOutPutPath); // Decryption huaweiCrypto.decrypt(fileInputStream, fileOutputStream); fileInputStream.close(); fileOutputStream.close(); } }