Azure Key Vault? Posso confiar e colocar minhas chaves nesse serviço?

Recentemente um cliente me perguntou sobre o serviço Azure Key Vault. A dúvida era a seguinte:

Uma vez que eu armazenei minhas chaves de criptografia no Azure Key Vault, a Microsoft pode ter acesso as mesmas?

Talvez nem todo mundo tenha clareza que todas as chaves armazenadas em um Vault tem um objetivo único que é ser acessada por algum sistema ou aplicação. Então, por “a Microsoft pode ter acesso a chave” eu imagino que os clientes estejam querendo dizer “Uma pessoa ou recurso não autorizado poderia exportar/copiar essa chave para um outro ambiente, e juntamente com uma cópia dos dados dos discos dos clientes, decriptografar o conteúdo e acessá-lo”. 

Assumindo que seja isso, começo explicando que para adicionar uma chave ao Key Vault o cliente (e só ele) deve criar um ‘secret’ (uma senha), como exemplificado:

clip_image002
clip_image004

Só o cliente tem acesso a esse senha, e somente é possível exportar as chaves usando esta senha. Esse é um primeiro nível de segurança, mas adicionalmente o cliente pode escolher entre armazenar esta chave no Azure Key Vault usando um armazenamento ‘em Software’ ou ‘em Hardware  HSM’.

Embora pouco provável, em teoria ao armazenar a chave em Software seria possível invadir um Datacenter do Azure burlando todas as medidas de segurança, alarmes, controle de acesso físico, etc e identificar num pool de milhares de servidores quais rodam o serviço do Azure Key Vault, colocá-lo debaixo do braço e levá-lo embora.

Depois, inicializar os servidores usando algum outro sistema (ex: Linux) e via software e tentar quebrar bitlocker, criptografia, etc para conseguir extrair/exportar as chaves dos clientes. E usando métodos de força bruta, após alguns anos, se conseguiria descobrir a senha que o cliente usou para finalmente ter acesso a chave.

Mesmo assim, imaginando que existam clientes que precisem de um nível de segurança acima do que já expliquei, também é possível armazenar as chaves dos clientes em hardware (via Thales HSM, na SKU Premium); estas chaves uma vez armazenadas nesses HSMs *não podem mais ser exportadas* (nem pelo próprio cliente, já que isso está garantido no hardware HSM).

Finalmente, o cliente pode ter o próprio HSM e usá-lo para gerar suas próprias chaves on-premises. Então, usando um pacote BYOK (bring your own key), armazenar as chaves nos HSMs do Azure Key Vault. Com este cenário, as chaves são virtualmente inviolávies (a não ser que se descubra algum método de hackear os HSMs e se consiga ter acesso físico aos mesmos). Este cenário está detalhado aqui: https://azure.microsoft.com/en-us/documentation/articles/key-vault-hsm-protected-keys/

Assim (e finalmente), respondendo efetivamente a pergunta:

Só o cliente tem a chave ou a Microsoft tem condições de ter acesso a essa chave ?

R: Não. A Microsoft não tem como ter acesso as chaves. Todavia, as chaves estão armazenadas no serviço Key Vault e portanto podem (e devem) ser acessadas por aplicações na plataforma Azure (ou fora dela) de acordo com as regras que o cliente estabelece (através de policies por ele definidas).

A Microsoft não possui mecanismos para exportar estas chaves do Azure Key Vault e reutilizá-las em outros ambientes para ter acesso à dados de clientes; somente o cliente conseguirá exportar as suas chaves (e se ele perder as senhas, então nem ele, nem a Microsoft conseguirão exportá-las). O cliente pode optar por armazenar suas chaves em HSMs do Azure Key Vault que acrescentam uma camada extra de proteção e não permitem que as chaves sejam exportadas;

Por último, além de todo o tequiniquês sobre HSMs, criptografia, chaves, etc, o cliente também tem a Garantia Legal pela certificação FIPS 140-2, dentre outras.

Para mais informações, vejam https://azure.microsoft.com/en-us/documentation/services/key-vault/  e https://azure.microsoft.com/en-us/documentation/articles/key-vault-get-started/

Abraços,

PT