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.

Para gerar um novo PSK aleatório, clique no botão Gerar novamente.

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 senha secreta:

    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