強力な事前共有キーの生成

事前共有キー(共有シークレットや PSK とも呼ばれます)は、ピア VPN ゲートウェイに対して Cloud VPN トンネルを認証する際に使用されます。セキュリティのベスト プラクティスとして、強力な 32 文字の共有シークレットを生成することをおすすめします。

自動での生成

次のランダム文字列は、このページの最後にある JavaScript スニペットを使用してブラウザで生成されたものです。 これは、Crypto.getRandomValues から取得した 24 バイトの配列を base64 でエンコードして 32 文字の PSK にしたものです。

このスニペットを使用すると、秘密鍵はブラウザ内で安全に維持されます。ご使用のシステムで PSK を生成する場合は、次のいずれかの生成方法を使用してください。

[再生成] ボタンをクリックすると、新しいランダムの PSK が生成されます。

生成方法

強力な 32 文字の共有シークレットは、次の方法で生成します。

OpenSSL を使用して共有シークレットを生成する

Linux または macOS システムで次の OpenSSL コマンドを実行して、共有シークレットを生成します。

openssl rand -base64 24

/dev/urandom を使用して共有シークレットを生成する

Linux または macOS で /dev/urandom を疑似乱数のソースとして使用して、/dev/urandom を生成することもできます。

  • Linux や macOS で、ランダムな入力を base64 に送信できます。
    head -c 24 /dev/urandom | base64
    
  • sha256 などのハッシュ関数によってランダムな入力を渡せます。
    • Linux の場合:
      head -c 4096 /dev/urandom | sha256sum | cut -b1-32
      
    • macOS 上:
      head -c 4096 /dev/urandom | openssl sha256 | cut -b1-32
      

JavaScript を使用して事前共有キーを生成する

JavaScript を使用し、W3C Web Cryptography API によって doc ページ内に事前共有キーを直接生成することもできます。この API では Crypto.getRandomValues() メソッドを使用します。このメソッドを使用することによって、暗号的に適切な方法で事前共有キーを生成できます。

次のコードでは、ランダムな 24 バイトの配列を作成し、作成したバイト配列を base64 でエンコードしてランダムな 32 文字の文字列を生成します。


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

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

次のステップ