Como gerar uma chave pré-compartilhada forte

Uma chave pré-compartilhada (também chamada de senha secreta ou PSK, na sigla em inglês) é usada para autenticar o túnel do Cloud VPN no gateway de VPN de peering. A prática recomendada de segurança é gerar uma senha secreta forte de 32 caracteres.

Gerado para você

A string aleatória abaixo foi gerada pelo navegador usando o snippet do JavaScript na parte inferior desta página. São 24 bytes de Crypto.getRandomValues, codificados em base64 para criar um PSK de 32 caracteres.

Com esse snippet, a chave privada permanece segura no navegador. Se você quiser gerá-lo no seu próprio sistema, use um dos métodos de geração abaixo.

Clique no botão Gerar novamente para gerar um novo PSK aleatório.

Métodos de geração

Use os métodos a seguir para gerar uma senha secreta forte de 32 caracteres.

Como usar o OpenSSL para gerar uma senha secreta

Execute o seguinte comando OpenSSL em um sistema Linux ou macOS para gerar uma chave secreta compartilhada:

openssl rand -base64 24

Como usar /dev/urandom para gerar uma senha secreta

No Linux ou no macOS, é possível usar /dev/urandom como fonte pseudoaleatória para gerar uma senha secreta:

  • No Linux ou no macOS, é possível enviar a entrada aleatória para base64:
    head -c 24 /dev/urandom | base64
    
  • É possível passar a entrada aleatória por meio de uma função de hash, como sha256:
    • No Linux:
      head -c 4096 /dev/urandom | sha256sum | cut -b1-32
      
    • No macOS:
      head -c 4096 /dev/urandom | openssl sha256 | cut -b1-32
      

Como usar JavaScript para gerar uma chave pré-compartilhada

Também é possível gerar a chave pré-compartilhada diretamente em uma página de documentação usando JavaScript com a API W3C Web Cryptography. Essa API usa o método Crypto.getRandomValues(), que fornece uma maneira segura quanto à criptografia de gerar uma chave pré-compartilhada.

O código abaixo cria uma matriz de 24 bytes aleatórios e, em seguida, codifica esses bytes em base64 para produzir uma string aleatória de 32 caracteres.


  var a = new Uint8Array(24);
  window.crypto.getRandomValues(a);

  console.log(btoa(String.fromCharCode.apply(null, a)));

A seguir