【PHP8.x】sodium_crypto_aead_chacha20poly1305_ietf_encrypt関数の使い方
sodium_crypto_aead_chacha20poly1305_ietf_encrypt関数は、ChaCha20-Poly1305アルゴリズム(IETF仕様)を用いて、指定されたメッセージを認証付き暗号化する関数です。この関数は、単にデータを秘密に保つ「暗号化」だけでなく、データが第三者によって改ざんされていないかを確認する「認証」の機能も兼ね備えているため、高いセキュリティを提供します。
具体的には、平文のメッセージ、オプションの関連データ(Associated Data: AD)、使い捨ての数値(Nonce: ナンス)、そして秘密鍵を入力として受け取ります。関連データは暗号化されませんが、暗号文と一緒に認証されるため、例えばヘッダー情報などの付随情報が改ざんされていないことを保証できます。ナンスは、同じ秘密鍵で複数のメッセージを暗号化する際に、毎回異なるユニークな値である必要があります。ナンスの再利用はセキュリティ上の脆弱性につながるため、厳重に管理することが重要です。
この関数は、暗号化されたメッセージと認証タグを結合した文字列を返します。これにより、データの盗聴や改ざんから情報を保護し、安全なデータ通信や保存を実現します。例えば、インターネットを介して機密情報を送受信する際や、データベースに重要な情報を格納する際などに利用されます。処理に失敗した場合や、無効な引数が渡された場合は、false
を返します。この機能はPHPの拡張機能として提供され、セキュアなアプリケーション開発を支援します。
基本的な使い方
構文(syntax)
1<?php 2$message = '暗号化するメッセージ'; 3$additionalData = '認証されるが暗号化されない追加データ'; 4$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES); 5$key = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES); 6 7$encryptedMessage = sodium_crypto_aead_chacha20poly1305_ietf_encrypt( 8 $message, 9 $additionalData, 10 $nonce, 11 $key 12); 13?>
引数(parameters)
string $message, string $additional_data, string $nonce, string $key
- string $message: 暗号化したい平文データを指定する文字列
- string $additional_data: 認証のみを行い、暗号化しない追加データを指定する文字列
- string $nonce: ナンス(nonce)を指定する文字列。一意であることが重要です
- string $key: 秘密鍵を指定する文字列
戻り値(return)
string
この関数は、ChaCha20-Poly1305-IETFアルゴリズムを使用してデータを暗号化し、その結果として暗号化されたバイナリ文字列を返します。