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

作成日: 更新日:

sodium_crypto_auth関数は、メッセージ認証コード(MAC)を生成する関数です。この関数は、特定のメッセージが通信中に改ざんされていないこと、そしてメッセージの送信元が信頼できるものであることを確認するために使われます。具体的には、認証したいデータであるメッセージと、あらかじめ送信者と受信者の間で共有されている秘密鍵の二つの情報を受け取ります。そして、これら二つの情報をもとに、固定長の短い「認証タグ」と呼ばれる文字列を生成して返します。

この認証タグは、メッセージの「指紋」のような役割を果たします。メッセージを受信した側では、受け取ったメッセージと、送信者と同じ秘密鍵を使って、もう一度sodium_crypto_auth関数を実行します。そこで生成された新しい認証タグと、メッセージと一緒に受け取った認証タグを比較することで、メッセージが途中で不正に変更されていないか、また、メッセージを送ってきた人が本物であるかを確実に検証できます。

この関数は、高度な暗号技術を提供するLibsodiumライブラリの一部であり、データの信頼性を保証する上で非常に重要です。ただし、この関数自体はメッセージの内容を秘密にする「暗号化」を行うわけではありません。メッセージの内容を隠したい場合は、別途暗号化のための関数と組み合わせて使用する必要があります。また、使用する秘密鍵は誰にも知られないように厳重に管理することが、この認証システムのセキュリティを保つ上で最も重要です。

基本的な使い方

構文(syntax)

1<?php
2$message = 'データ本体';
3$key = random_bytes(SODIUM_CRYPTO_AUTH_KEYBYTES);
4
5$authentication_tag = sodium_crypto_auth($message, $key);
6?>

引数(parameters)

string $message, string $key

  • string $message: 認証するメッセージを指定する文字列
  • string $key: 認証に使用する秘密鍵を指定する文字列

戻り値(return)

string

指定されたデータに対して生成された認証タグ(MAC)をバイナリ文字列として返します。

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