【PHP8.x】sodium_crypto_aead_aes256gcm_encrypt関数の使い方
sodium_crypto_aead_aes256gcm_encrypt関数は、Advanced Encryption Standard (AES) の256ビット鍵長とGalois/Counter Mode (GCM) を組み合わせた方式を用いて、データを安全に暗号化する処理を実行する関数です。この関数は、データの機密性(内容が第三者に漏れないこと)、完全性(データが途中で改ざんされていないこと)、そして認証(データが正規の送信元から送られたものであること)という3つのセキュリティ要素を同時に保証する、認証付き暗号化(AEAD: Authenticated Encryption with Associated Data)を提供します。
この関数を使用する際は、暗号化したいメッセージ(平文)と、秘密鍵、そして「ワンタイムナンス(Nonce)」と呼ばれる各暗号化処理ごとに異なる一意の値が必要です。Nonceは、同じ鍵で複数のデータを暗号化する際に、セキュリティ上の脆弱性を避けるために非常に重要な役割を果たし、決して再利用してはなりません。また、暗号化はされませんが、その改ざんを検知したい追加データ($additional_data
)も指定できます。これは、通信のヘッダー情報など、公開されても問題ないが、その整合性を保証したい場合に有効です。
処理が成功すると、暗号化されたデータと認証タグが結合された文字列が返されます。返されたデータは、対応する復号化関数でしか元に戻すことができません。データの安全性を確保するためには、秘密鍵の厳重な管理と、Nonceの適切な生成・使用が不可欠です。
基本的な使い方
構文(syntax)
1<?php 2$encrypted_data_string = sodium_crypto_aead_aes256gcm_encrypt( 3 $message_to_encrypt_string, 4 $additional_authenticated_data_string, 5 $unique_nonce_string, 6 $encryption_key_string 7);
引数(parameters)
string $message, string $additional_data, string $nonce, string $key
- string $message: 暗号化したい平文データを指定する文字列
- string $additional_data: 認証のみを行う追加データを指定する文字列
- string $nonce: 一度しか使用できないランダムな値を指定する文字列
- string $key: データの暗号化と復号に使用する鍵を指定する文字列
戻り値(return)
string|false
暗号化されたデータと認証タグを連結した文字列、または失敗した場合は false を返します。