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

事前共有キー(共有シークレットや 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 を疑似乱数のソースとして使用して、共有シークレットを生成します。

  • 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
      

JaveScript

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)));

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...