Utilizar o seu OVHcloud Key Management Service (KMS)
Encripte ou assine os seus dados com a API REST regional do Key Management Service (KMS) da OVHcloud
Objetivo
O objetivo deste guia é apresentar as diferentes etapas para interagir com o KMS OVHcloud a fim de encriptar ou assinar os seus dados.
Requisitos
- Dispor de uma conta de cliente OVHcloud.
- Ter encomendado um KMS OVHcloud.
- Ter configurado um método de autenticação para o plano de dados OKMS (token de acesso pessoal, conta de serviço ou certificado de acesso).
Instruções
Comunicar com o KMS
A comunicação com o KMS para as ações de encriptação e de assinatura é feita através das API.
Uma vez que o KMS é regionalizado, o acesso à API é feito diretamente na sua região: https://my-region.okms.ovh.net.
Por exemplo, para um KMS criado na região eu-west-rbx: https://eu-west-rbx.okms.ovh.net
É possível comunicar com o KMS utilizando:
- A interface de utilizador Swagger
- A CLI OKMS: https://github.com/ovh/okms-cli
- O SDK Golang: https://pkg.go.dev/github.com/ovh/okms-sdk-go
Autentique-se através de um token de acesso pessoal, uma conta de serviço ou um certificado de acesso. Para a utilização da API REST, recomenda-se um token de acesso pessoal (PAT) ou uma conta de serviço. Os certificados de acesso são obrigatórios para as integrações KMIP.
Para testar as chamadas à API de forma interativa, utilize a interface Swagger OKMS no endereço https://<region>.okms.ovh.net/swagger/.
Criar uma chave de encriptação através da API
A criação de uma chave pode ser feita através da ou nas API específicas do KMS OVHcloud. Não há diferenças no resultado consoante o método de criação.
As rotas seguintes utilizam o identificador do seu domínio OKMS. É devolvido pela seguinte chamada à API:
Também é apresentado, juntamente com o endpoint regional, no separador Informações gerais do .
No caso das API específicas do KMS OVHcloud, a criação de uma chave é feita através da seguinte API:
A API espera os seguintes valores:
Exemplo de criação de uma chave simétrica:
Exemplo de criação de uma chave assimétrica:
Exemplo de criação de uma chave EC:
Os tamanhos e as operações possíveis em função do tipo de chave são os seguintes:
- oct:
- tamanho: 128, 192, 256
- operações:
- encrypt, decrypt
- wrapKey, unwrapKey
- RSA:
- tamanho: 2048, 3072, 4096
- operações:
- sign, verify
- wrapKey, unwrapKey
- EC:
- tamanho: não especificar
- curve: P-256, P-384, P-521
- operações: sign, verify
Nas chaves RSA, wrapKey / unwrapKey são mutuamente exclusivas com sign / verify.
Importar uma chave de encriptação
Ao criar uma chave, é possível importar uma chave existente em texto claro no formato JWK.
A importação de material de chave em texto claro não é recomendada para as chaves que devem permanecer de confiança. Prefira o BYOK seguro com encapsulamento RSA assimétrico.
Para isso, pode adicionar um campo complementar keys no corpo do pedido:
A chave deve estar no formato JSON Web Key (JWK). O valor dos campos contidos na tabela segue a documentação da RFC 7518.
Gerir as chaves de encriptação
Para gerir as chaves de encriptação, estão disponíveis várias API:
A desativação de uma chave de encriptação implica que esta deixará de poder ser utilizada, embora a chave permaneça presente no KMS.
A eliminação de uma chave de encriptação só é possível numa chave previamente desativada.
A eliminação de uma chave de encriptação é definitiva. Todos os dados encriptados com ela ficarão definitivamente inacessíveis.
Atributos de sensibilidade das chaves de serviço
Quando cria ou obtém uma chave de serviço, os indicadores de sensibilidade e extraibilidade são devolvidos no objeto attributes da resposta GET (a par de outros metadados como state). Apenas extractable é definível pelo utilizador (na criação ou via PATCH). Os outros indicadores são definidos pelo KMS. Definir extractable como true fixa definitivamente never_extractable como false.
Exemplo de resposta GET (campos abreviados):
Para extrair uma chave em segurança, defina extractable como true apenas para a operação de exportação, exporte-a com encapsulamento RSA e volte a defini-lo como false. Consulte Exportar uma chave encapsulada.
Encriptar dados com o KMS
Encriptação no KMS
O KMS OVHcloud dispõe de uma API de encriptação dedicada para a encriptação de pequenos volumes de dados (menos de 4 kB).
Trata-se do método mais simples, mas que não apresenta o melhor desempenho.
A API espera os seguintes valores:
Exemplo de encriptação
A API devolve em seguida o dado encriptado num campo ciphertext:
A desencriptação do dado é feita de forma inversa através da API:
A API espera os seguintes valores:
O campo context deve ter o mesmo valor que o indicado durante a encriptação.
Encriptação com uma Data Key (DK)
Para obter mais desempenho, é possível gerar uma Data Key (DK) a partir de uma chave simétrica (AES) para a utilizar a partir da sua aplicação.
A chave AES utilizada deve ter sido gerada com as operações wrapKey e unwrapKey.
A geração de uma DK é feita através da seguinte API:
A API espera os seguintes valores:
Exemplo de geração de uma Data Key:
A API devolverá em seguida a Data Key:
- key: chave encriptada codificada em base64. Esta informação deve ser armazenada com o dado encriptado e será utilizada para a desencriptação pelo KMS.
- plaintext: chave em texto simples codificada em base64. Esta informação deve ser eliminada assim que a encriptação estiver concluída e não deve ser guardada numa cópia de segurança.
A utilização da Data Key é feita em seguida através de algoritmos de encriptação como o AES-GCM, que não é abordado nesta documentação.
Inversamente, é possível recuperar a versão desencriptada de uma Data Key através da seguinte API:
A API espera os seguintes valores:
E devolve a Data Key desencriptada num campo plaintext.
Assinar com o KMS
A assinatura de um ficheiro é feita através da chave privada de um par de chaves assimétricas.
Algoritmos suportados
O KMS OVHcloud suporta a seguinte lista de algoritmos de assinatura:
- RSASSA-PKCS1 v1.5
Segundo a documentação da RFC 7518.
- ECDSA
Segundo a documentação da RFC 7518.
- RSASSA-PSS
Segundo a documentação da RFC 7518.
Assinatura de uma mensagem
Dado que a chave privada não pode ser extraída em texto claro do KMS, a assinatura só pode ser feita diretamente no KMS.
A API espera os seguintes valores:
Exemplo de assinatura:
A API devolverá em seguida a assinatura do ficheiro:
Verificação de um ficheiro
A verificação de um ficheiro pode ser feita diretamente no KMS ou utilizando a chave pública.
No KMS, é possível utilizar a seguinte API:
A API espera os seguintes valores:
Exemplo de verificação
A API devolverá em seguida o resultado da verificação:
Quer saber mais?
Importar e exportar chaves no OVHcloud KMS com BYOK
Como ligar um produto compatível utilizando o protocolo KMIP
Fale com a nossa comunidade de utilizadores.