Como proteger a chave privada da sua CA?


24

Estou prestes a implementar minha própria Autoridade de Certificação (CA) apenas para uso interal.

Agora há um problema, que o CA privado nunca deve ser explorado. Então, neste momento, a chave privada está criptografada.

O que mais poderia ser feito para aumentar a segurança da chave privada?


Podemos obter o sistema operacional em que você está executando o servidor da web? Você provavelmente pode definir as permissões no arquivo para que não seja legível por ninguém, exceto pelo aplicativo e pelo superusuário.
Rilindo

estamos executando RHEL
JMW

Respostas:


25

Eu trabalhei em uma empresa onde a segurança da chave da CA era crítica para o sucesso contínuo dos negócios. Para esse fim, a chave foi criptografada usando um protocolo personalizado que exigia que pelo menos 2 pessoas estivessem presentes com tokens físicos conectados aos terminais para descriptografá-la (havia pelo menos 5 desses tokens, quaisquer 2 combinados funcionariam). Os terminais foram fisicamente separados da máquina real com a chave CA. A interface que os usuários tinham que descriptografaram foi um terminal VT220 que permitiu a entrada dos tokens de descriptografia e, em seguida, selecionou o que eles queriam 'assinar' com a chave (nunca dando a eles acesso à chave descriptografada). Esse sistema significava que pelo menos quatro pessoas teriam que trabalhar juntas para comprometer a chave, dois detentores de tokens, o cara que tinha acesso ao data center,

Se você estiver interessado em mais detalhes sobre esse tipo de configuração, Bruce Schneier possui um ótimo site que cobre o design e a implementação da segurança do computador:

http://www.schneier.com/

Ele também publicou um livro realmente bom que foi encontrado para me ajudar a entender os fundamentos de sistemas como esse e como arquitetar infraestruturas mais seguras (legíveis por pessoas que não usam protetores de bolso):

http://www.schneier.com/book-applied.html


2
E a operação com duas teclas (ou qualquer n de m, m> = n, n> 1) é outra excelente precaução - mas, para o meu dinheiro, gaste primeiro o espaço aéreo e adicione refinamentos como este segundo, dependendo do seu grau de paranóia (ou seja, o custo da falha).
MadHatter apoia Monica

1
Por que a pessoa com acesso root não pode despejar o conteúdo da memória em um arquivo enquanto duas pessoas autorizadas estão realizando seu trabalho? Isso significa que o usuário root pode obter a chave apenas com os recursos adicionais necessários para obter o despejo de memória da máquina.
Slartibartfast

O controle de acesso físico auditado é tão importante para esse tipo de segurança quanto o controle de acesso lógico auditado. A operação de assinatura não deve exigir privilégios na caixa (que o controle é tratado pela exigência qualquer-n-de-m), então titular da senha de root não deveria estar lá em tudo quando assinatura de chaves está acontecendo. (S) ele será necessário para as atividades de manutenção do sistema, mas elas devem ser executadas de acordo com um script pré-escrito preciso, por alguém que não seja o autor do roteiro, e auditadas em tempo real por uma terceira pessoa com conhecimento.
MadHatter suporta Monica

16

Um grande ganho é manter a chave CA privada em um computador dedicado completamente isolado da rede. Você assinaria e possivelmente também geraria novos certificados nesta máquina e usaria uma mídia física para transferir os novos certificados da máquina CA.

Como a configuração, é claro, também incluiria considerações sobre a disponibilidade física da máquina, bem como restrições às mídias permitidas. Um pen drive bem-viajado provavelmente não é a melhor opção ...

(Este é, a propósito, um exemplo muito claro da troca entre segurança e conveniência.)


O Airgap é uma excelente precaução de segurança, e o risco de mídia removível pode ser atenuado configurando a caixa de assinatura para não executar automaticamente nada, permitir binários SUID ou de qualquer outra maneira confiar em executáveis nessas mídias.
MadHatter apoia Monica

Isso pode ser otimizado ainda mais usando um cartão inteligente para gerar, armazenar e usar a chave. Pense em um cartão inteligente como uma máquina dedicada que possui algumas proteções contra adulterações (basicamente, o chip prefere quebrar do que abrir mão da chave, o que é difícil de ser feito em um sistema mais complexo) e que possui uma interface simples o suficiente para que o A pilha de protocolos poderia ter sido auditada corretamente.
Simon Richter

Eu apóio a sugestão de cartão inteligente, mas há um risco lá. Quando a chave só pode estar em um lugar, apenas uma peça de hardware precisa falhar para fazer com que a chave fique inacessível. Eu acho que um ou mais cartões inteligentes podem formar uma parte importante de uma prática segura de geração e armazenamento de chaves.
Slartibartfast

Em relação ao problema de execução automática. No caso de um gerenciador de arquivos da GUI, também pode ser aconselhável ser explícito sobre o fato de não tentar fazer nenhuma visualização / miniatura inteligente dos arquivos listados. Embora não seja um perigo em si, pode ser um vetor de ataque às vulnerabilidades existentes.
andol

Se a segurança é realmente importante, eu usaria um monte de CD-R de gravação única.
Lie Ryan

15

Votou as outras duas respostas e comentei sobre ela, porque acho que as duas são excelentes. Se você decidir optar por ambos, e isso pode ser apropriado, aconselho vivamente o cuidado na geração inicial da chave, pois o melhor momento para comprometer uma chave não está em uso (onde muitas precauções padrão e repetíveis podem ser aplicada), mas no tempo de geração, que é muito mais fácil subverter.

Este excelente guia para a realização de uma cerimônia de geração de chaves descreve alguns dos protocolos padrão que podem ajudar a proteger a geração de chaves, embora na maioria se resumam a (a) ter tudo testemunhado por vários auditores qualificados, que estão (b) fazendo registros contemporâneos de tudo o que é feito (c) de acordo com um protocolo pré-determinado, escrito por alguém que não seja o executor.


Sim, bom argumento sobre a geração inicial da chave.
andol

7

Dependendo de sua seriedade, considere usar o hardware FIPS 140-2 ( http://en.wikipedia.org/wiki/FIPS_140#Security_levels ) para armazenar chaves CA e backups dessas chaves. Você deve ter uma CA raiz e uma CA intermediária para manter sua CA raiz offline e protegida fisicamente. A raiz é necessária apenas para renovar ou assinar novas CAs intermediárias, enquanto as CAs intermediárias permanecem on-line para operações diárias. Como outros sugeriram, a geração segura de chaves e o gerenciamento de chaves com controle n de m são importantes.

O CPS da VeriSign (agora Symantec) é uma boa referência de como uma CA comercial gera e protege suas chaves. Veja os capítulos 5 e 6, especificamente: http://www.verisign.com/repository/cps/ . (Trabalhei na VeriSign por vários anos)

Além disso, o NIST tem várias boas publicações sobre gerenciamento de chaves ( http://csrc.nist.gov/publications/drafts/800-57/Draft_SP800-57-Part1-Rev3_May2011.pdf ) e geração, e sua empresa também deve ter um CPS que especifica as políticas e práticas usadas para gerenciar sua CA. O IETF fornece um bom modelo: http://www.ietf.org/rfc/rfc2527.txt


1

Ótima pergunta e ótimas respostas também.

Lembre-se de que você está 90% à frente da maioria das outras pessoas simplesmente considerando esse problema em vez de cobrar cegamente.

Tendo isso em mente e adotado os outros conselhos aqui, eu simplesmente acrescentaria: não descanse em seus louros; fique de olho nas notícias de segurança e criptografia para os problemas gerais relacionados à emissão, revogação, quebra de certificados etc., e mais especificamente sobre vulnerabilidades e problemas com os produtos específicos que você usa para gerar e gerenciar suas chaves.

Por fim: segurança física. Fazer algo "à prova de hackers" não ajuda em nada se eu conseguir um emprego como faxineiro em seu prédio e colocar o disco que contém seu certificado raiz no meu bolso um dia. Você ficaria surpreso com quantas pessoas sentem falta dessa.


Fico feliz em ouvir isso @jmw - como eu disse, você já está à frente de 90% ou talvez 99% da maioria das pessoas, e parece que você tem tudo em mãos. Você ficaria chocado com a quantidade de pessoas que gastam semanas e toneladas de dinheiro olhando para o lado do software sem fazer nada para proteger fisicamente os dados.
Rob Moir 12/09

Obrigado, você está absolutamente certo: manter-se informado sobre novos riscos é obrigatório para todos os administradores. :-) sobre segurança física: o datacenter, onde estão nossos servidores, possui uma alta segurança física. portanto, há senhas de bios e& grub configuradas. a partição em que o material da CA está armazenada também é criptografada. além disso, a própria chave CA é criptografada. E os nagios acionariam alertas de "servidor inativo" em caso de roubo físico. Estou mais preocupado com explorações "não físicas". :-)
JMW
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.