Como gerar uma chave pré-compartilhada forte

Uma chave pré-compartilhada, também chamada de chave secreta compartilhada ou PSK, é usada para autenticar o túnel do Cloud VPN no gateway da VPN local. Como prática recomendada de segurança, o ideal é que você gere uma chave 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 este 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 chave secreta compartilhada forte de 32 caracteres.

OpenSSL

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

openssl rand -base64 24

/dev/urandom

No Linux ou no macOS, use /dev/urandom como uma origem pseudo-aleatória para gerar uma chave secreta compartilhada:

  • No Linux ou no macOS, você pode enviar a entrada aleatória para base64:
    head -c 24 /dev/urandom | base64
    
  • Você pode 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
      

JavaScript

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

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…