【PHP8.x】sodium_crypto_kx_seed_keypair関数の使い方

作成日: 更新日:

sodium_crypto_kx_seed_keypair関数は、鍵交換プロトコルで使用される公開鍵と秘密鍵のペアを、与えられたシード(種)から決定論的に生成する関数です。この関数は、PHPの暗号ライブラリであるSodium拡張の一部として提供されています。

通常、暗号化に利用する鍵ペアは、予測不可能な乱数を用いてランダムに生成されます。しかし、このsodium_crypto_kx_seed_keypair関数では、ユーザーが指定した固定の32バイトのシード値を用いることで、常に同じ鍵ペアを再現して生成することができます。これは、例えばテスト環境で同じ鍵ペアを繰り返し使用したい場合や、特定のプロトコル設計上、シードから鍵ペアを派生させる必要がある場合などに役立ちます。

引数として32バイトの文字列形式のシードを受け取ります。そして、戻り値として、秘密鍵と公開鍵が連結された64バイトの文字列を返します。この64バイトのうち、最初の32バイトが秘密鍵、続く32バイトが公開鍵となります。シードが外部に漏れると、同じシードから誰でも同じ鍵ペアを生成できてしまうため、シードの管理には十分な注意が必要です。セキュリティ要件の高い本番環境では、通常はランダムな鍵生成関数であるsodium_crypto_kx_keypairの利用が推奨されます。

基本的な使い方

構文(syntax)

1sodium_crypto_kx_seed_keypair(string $seed): string

引数(parameters)

string $seed

  • string $seed: 鍵ペア生成に使用するシード値(バイト列)を指定する文字列

戻り値(return)

string

この関数は、暗号化通信の鍵ペア(公開鍵と秘密鍵)を生成します。生成された鍵ペアは、バイナリ形式の文字列として返されます。

【PHP8.x】sodium_crypto_kx_seed_keypair関数の使い方 | いっしー@Webエンジニア