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

作成日: 更新日:

sodium_crypto_sign_open関数は、デジタル署名が施されたメッセージを検証し、元のメッセージを安全に復元する関数です。この関数は、受け取ったメッセージが途中で改ざんされていないこと、そして特定の送信者(公開鍵の持ち主)によって署名されたものであることを確認するために使用されます。

具体的には、署名付きのメッセージと、その署名を作成した送信者の公開鍵の2つを引数として受け取ります。内部で署名を検証し、メッセージが公開鍵に対応する秘密鍵で正しく署名されており、かつメッセージの内容が検証時から変更されていないことを確認します。

検証に成功した場合、つまりメッセージが真正であり改ざんされていないと判断された場合のみ、元の(署名される前の)メッセージのデータが返されます。もし署名が無効である、あるいはメッセージが改ざんされていると検出された場合は、検証が失敗し、安全なメッセージの復元は行われません。

この機能は、セキュアな通信やデータ保存において、情報の信頼性(インテグリティ)と認証(オーセンティケーション)を保証するための重要な要素となります。特に、信頼できない環境下でデータを受け取る際に、そのデータの正当性を確認する場面で不可欠です。

基本的な使い方

構文(syntax)

1<?php
2
3$original_message = sodium_crypto_sign_open($signed_message, $public_key);
4
5?>

引数(parameters)

string $signed_message, string $public_key

  • string $signed_message: 署名されたメッセージ本体と署名が含まれる文字列。
  • string $public_key: 検証に使用する公開鍵の文字列。

戻り値(return)

string|false

指定された署名を検証し、元のメッセージ(平文)を返します。検証に失敗した場合は false を返します。

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