Pular para conteúdo

Safe Keeping

Introdução

As APIs do módulo Safe Keeping visam facilitar as operações de gerenciamento dos segredos custodiados, também conhecidos como Critical Security Parameter (CSP).

Dentro do módulo Safe Keeping, é possível realizar a custódia compartilhada de segredos armazenados no HSM. Esses segredos são gerados com alta segurança, em hardware homologado, garantindo alta entropia e proteção contra uma variedade de ataques, inclusive ataques de side channel.

Arquitetura

O módulo Safe Keeping opera em 3 etapas.

  1. Geração do segredo;
  2. Divisão de partes (shares) do segredo utilizando o algoritmo de Shamir (Shamir's secret sharing);
  3. Recuperação do segredo a partir das partes geradas no passo anterior.

Geração do segredo

Nesta etapa o segredo é gerado em uma partição (usuário) do HSM, de forma segura e com alta entropia e existe apenas no HSM.

Cada partição possui autenticação de credencial com usuário e senha e opcionalmente pode ser configurada autenticação adicional, como:

  • M de N de partição;
  • 2fA com tokens OTP (One Time Password) no formato OATH;
  • 2fA com certificados X.509;

É possível combinar um ou mais tipos de autenticação de partição, conforme a necessidade.

O segredo pode ser gerado de acordo com vários níveis de segurança e com a necessidade do projeto. Ele deve ser escolhido com cuidado para que o nível de segurança seja equivalente nos outros pontos do projeto. Um nível de segurança muito baixo pode fragilizar a segurança dos dados que serão protegidos, já um nível de segurança muito além do necessário pode tornar as operações lentas desnecessariamente.

Veja a tabela a seguir para ter uma ideia.

Nível de segurança Tamanho em bytes Grandeza Física Correspondente
64 bits 8 Grãos de areia na Terra.
96 bits 12 Átomos no corpo humano.
112 bits 14 Diâmetro do universo observável em milésimos de milímetros.
128 bits 16 Átomos de oxigênio na atmosfera terrestre.
160 bits 20 Átomos na Terra.

Divisão dop segredo

Nesta etapa é feita a divisão das partes (shares) do segredo, utilizando o algoritmo de Shamir (Shamir Shared Secret) no esquema M de N.

O esquema M de N permite que de um grupo de N partes, sejam necessárias M partes para recompor o segredo.

As partes, também conhecidas como share ou shadow, são geradas de uma forma que seja impossível recompor o segredo com menos do que M partes.

A geração das partes geralmente é feita em uma cerimônia, onde cada parte é distribuída para um membro da organização, e guardada de forma segura. Esta forma evita o conluio de membros da organização. A maneira de distribuir as partes, escolha dos membros e outros detalhes da cerimônia são definidas de acordo com cada negócio.

As partes têm tamanho ligeiramente maior que o nível de segurança por conterem metadados do esquema M de N. Cada parte é disponibilizada no formato Base62 para facilitar a anotação.

Note

É recomendado que se gere checksums para cada parte, neste momento. Isto facilita a verificação da digitação das partes no momento da recuperação.

Recuperação do segredo

A recomposição do segredo é feita utilizando M das N partes geradas no passo anterior.

Neste caso é feita uma cerimônia de recuperação de segredo. É necessário que cada custodiante (portador de uma parte) insira a sua parte para a recomposição do segredo. Esta cerimônia é definida de acordo com cada negócio.

O segredo tem tamanho variável dependendo do nível de segurança utilizado, e é disponibilizado no formato Base62 para facilitar a anotação.

Note

É recomendado que se verifique os checksums de cada parte, neste momento. Desta forma, evita-se os erros de digitação em um momento crítico.

API Safe Keeping

Documentação específica da API para o módulo Safe Keeping, com funções, classes e exemplos.