JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

Node.jsのcrypto.createDiffieHellmanGroup()メソッドとは?使い方を徹底解説

crypto.createDiffieHellmanGroup() メソッドは、Node.jsのcryptoモジュールにおいて、事前に定義されたDiffie-Hellman鍵交換グループ(DiffieHellmanGroup)オブジェクトを作成するために使用されます。このメソッドは crypto.getDiffieHellman() のエイリアス(別名)としても機能するため、どちらの名前で呼び出しても同じ動作になります。

構文

crypto.createDiffieHellmanGroup(name)

パラメータ

  • name ― 作成するグループ名を指定します。データ型は「string(文字列)」です。あらかじめ定義されているグループ名(modp1modp5modp14modp18など)を指定できます。

使用例①:modp1グループで鍵を生成する

まず、「diffieHellmanGroup.js」という名前のファイルを作成し、以下のコードスニペットをコピーしてください。ファイル作成後、次のコマンドでコードを実行します。

node diffieHellmanGroup.js

diffieHellmanGroup.js

// crypto.createDiffieHellmanGroup デモ用サンプル

// cryptoモジュールを読み込む
const crypto = require('crypto');

// グループ名を定義
const name = 'modp1';

// DiffieHellmanグループを作成
var diffieHellmanGroup = crypto.createDiffieHellmanGroup(name);

// 上記グループのエンコード済みキーを表示
console.log(diffieHellmanGroup.generateKeys('hex'));

実行結果

C:\home\node>> node diffieHellmanGroup.js
55963b8969c6b5d67dc7a2d80e6bcbea55bdb50000661c8d6e026be5366619edb9971755942fd8
fa5cba5d66a0326db9957d0ff412bfe22ee2431398206b97210b86c802e1be6777bce3d6cf735f
bb3c7cdee4016db9d252a66be82d58158a21

この例では、generateKeys('hex') を呼び出すことで、生成された公開鍵が16進数(hex)形式の文字列として出力されています。

使用例②:modp17グループでBase64形式の鍵を生成する

続いて、別のグループ名とエンコード形式を指定した例を見てみましょう。

// crypto.createDiffieHellmanGroup デモ用サンプル

// cryptoモジュールを読み込む
const crypto = require('crypto');

// グループ名を定義
const name = 'modp17';

// DiffieHellmanグループを作成
var diffieHellmanGroup = crypto.createDiffieHellmanGroup(name);

// 上記グループのエンコード済みキーを表示
console.log(diffieHellmanGroup.generateKeys('base64'));

実行結果

C:\home\node>> node diffieHellmanGroup.js
p3PwqFTpIqOIE3mP+iaMHEosAy8jPCdRDck1HtvbFaMMvJzlfihwzLZB0ZCoEzDRSnlHo+0NjOkNLM
0jM0usS8Ri5wwxw19qwjr00HvxGf0crQtd8ytIVLFX2WWXaT7d8XR/vtw1BUgUVg0mNhKGTLDcVy1A
7CRHzCrDqePaVqnU0QkR2t7S1BvmaMXvkToAdzZnJMPSjZWPVOHzMTOTnpI450TQMLFLv/YGUmKbAO
BaAVbuwfWOHVQrcxgThGGtMRJjjayh0Q77RmoqpKcMWceJPlQhFIMG/jFrNEaacbgb0Ctnm1/d1UgE
UTIg0phE4/1GXdnEDRPGVXURaxzPU+N48QVAB7Dyzpcq4k2f/mARLILPufEP/8FBawmMDoyAE4PS/Z
1RFwwuInhdbhgxTTRV+nkzSwTt0V51q+B9fek2xDfeWDqwibr+OWdU0DXs07mUsFVJdVJSZFM7txIg
UYH/6Tb+EnIt//JVR7hUrphWFhZCE1+7AcrHfNNX/lq8ukTNU+Bh6A9c1g9Ua2MjGXGLADAw7S7Hvq
OfVWy/f9JAbxt6bIz7LswioLGsaeKuEhGOxK8WRkeIbf1wbKF4kZQC8Q1V4XHFXI0wQ/Qhc7yyOZUc
/lwGsUnCqVR+Fqibd1YHk5vcaUfnQMIyvwAXtRBKz49PLc6/V4deDX/243zCe1UucxPodjuyYbRwx0
9Kqr8yT7fVkctF+eQNSOCABDpykwPxz/P2X6Tq9NW4KcOm0uZ+39AVWl7pMmLb8rf8VKJQLCGUoMYl
XEwG0XnERJk4AmxDWOICFDcgVrXhJn5OyJzysc9gYOlMrlEVpJzk55lz1JXld6mSk3YMrGZyDE2OHH
SzDx9EWpH8MJZpdPtDQ3/njptVM7m9i76fM7x5irqo+tonOy2myJPVBOl9gcMs556p7p0MRWVmi0AP
ulIONRicQeMjHxFR5Di8RDjfXrHz66CFJa9vEzhKNMZDQon2XdZlzgxr35cFdRIQNQq1zeGGzny7N4
03NGbPZP5b

まとめ

crypto.createDiffieHellmanGroup() を使うことで、RFC 3526などで標準化された既知の素数グループを利用したDiffie-Hellman鍵交換を簡単に実装できます。第2の例のように、より大きなグループ(modp17)を使用すると鍵長も長くなり、セキュリティ強度が向上します。用途に応じて適切なグループ名とエンコード方式(hex、base64など)を選択して活用しましょう。

  1. Node.jsのcrypto.privateDecrypt()メソッドの使い方を徹底解説

    crypto.privateDecrypt()メソッドは、crypto.publicEncrypt()メソッドを使って対応する公開鍵で事前に暗号化されたデータを、パラメータとして渡された秘密鍵を用いて復号するために使用されます。RSA暗号方式などの公開鍵暗号システムにおいて、安全なデータ復号を実現するための重要なAPIです。 構文 crypto.privateDecrypt(privateKey, buffer) パラメータ このメソッドが受け取る各パラメータの詳細は以下のとおりです。 privateKey(秘密鍵) – 復号に使用する秘密鍵を指定します。Object、String、Bu

  2. Node.jsのcrypto.getHashes()メソッドとは?使い方とサポートされるハッシュアルゴリズム一覧の取得方法

    crypto.getHashes()メソッドは、Node.jsでサポートされているすべてのハッシュアルゴリズムの名前を配列形式で返します。cryptoモジュールには非常に多くのハッシュアルゴリズムが用意されており、その中でも歴史的によく使われてきたのが「MD5(Message-Digest Algorithm 5)」です。ただし、MD5には衝突耐性の脆弱性があるため、現在ではセキュリティ用途にはSHA-256やSHA3系など、より強力なアルゴリズムを使うことが推奨されています。 構文 crypto.getHashes() 引数(パラメータ) このメソッドは、サポートされているハッシュアルゴ