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

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

Cloud VPN について詳しくは、Cloud VPN の概要をご覧ください。

このページで使用している用語の定義については、主な用語をご覧ください。

自動での生成

ブラウザは、このページの最後にある JavaScript スニペットを使用して、次のランダムな文字列を生成します。これは、Crypto.getRandomValues からの 24 バイトで、32 文字の事前共有キーを作成するために base64 エンコードされています。

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

新しいランダムな事前共有キーを生成するには、[再生成] ボタンをクリックします。

生成方法

次の方法で、強力な 32 文字の事前共有キーを生成します。

OpenSSL

Linux または macOS システムでは、次の OpenSSL コマンドを実行します。

openssl rand -base64 24

/dev/urandom

Linux または macOS システムでは、/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)));

次のステップ

  • 高可用性と高スループットのシナリオ、または複数のサブネット シナリオを使用する。高度な構成をご覧ください。
  • Cloud VPN の使用時に発生する可能性のある一般的な問題を解決する。トラブルシューティングをご覧ください。