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.
- Geração do segredo;
- Divisão de partes (shares) do segredo utilizando o algoritmo de Shamir (Shamir's secret sharing);
- 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.
-
C/C++