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

作成日: 更新日:

sodium_crypto_sign_seed_keypair関数は、デジタル署名に使用する公開鍵と秘密鍵のペアを生成する関数です。この関数は、一般的な鍵生成とは異なり、与えられた「シード」(乱数の種)から決定論的に鍵ペアを生成します。つまり、同じシードを複数回入力として与えれば、常に全く同じ公開鍵と秘密鍵のペアが生成されるという特徴があります。

この機能は、特定の状況下で鍵の一貫性を保つ必要がある場合に非常に役立ちます。例えば、バックアップからシステムを復元する際に、過去に使用していたものと寸分違わない鍵ペアを再生成したい場合などに利用できます。

引数としては、SODIUM_CRYPTO_SIGN_SEEDBYTES定数で定義された長さのバイナリ文字列(シード)を一つ受け取ります。そして、戻り値として、生成された公開鍵と秘密鍵が連結されたバイナリ文字列を返します。

利用にあたっては、シードが外部に漏洩すると、誰でも同じ鍵ペアを生成できてしまうため、シードの厳重な管理と秘匿が極めて重要です。セキュリティを確保するため、シードは予測不能で十分に長い乱数から生成し、安全に保管してください。

基本的な使い方

構文(syntax)

1<?php
2$seed = random_bytes(SODIUM_CRYPTO_SIGN_SEEDBYTES);
3$keypair = sodium_crypto_sign_seed_keypair($seed);
4?>

引数(parameters)

string $seed

  • string $seed: 秘密鍵と公開鍵を生成するためのシードとなるバイト列を指定します。このシードは、暗号論的に安全な乱数生成器 (CSPRNG) によって生成される必要があります。

戻り値(return)

string

この関数は、指定されたシード(秘密の種)から生成された公開鍵と秘密鍵のペアを文字列として返します。

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