【PHP8.x】sodium_crypto_aead_chacha20poly1305_encrypt関数の使い方
sodium_crypto_aead_chacha20poly1305_encrypt関数は、指定されたデータをChaCha20-Poly1305という強力な暗号化アルゴリズムを用いて暗号化し、同時にそのデータの認証を行う関数です。この関数は、データの機密性(内容を秘密にすること)だけでなく、データの完全性(データが改ざんされていないこと)と真正性(データが正しい送信元から来たこと)を同時に保証する「認証付き暗号」(AEAD: Authenticated Encryption with Associated Data)と呼ばれる仕組みを提供します。
具体的には、暗号化したいメッセージ(平文)と、秘密鍵、そして一度だけ使用する使い捨ての数値(ノンス)を引数として受け取ります。さらに、暗号化はしないが認証の対象としたい付加データ(例えば、データの送信元情報など)も指定できます。これらの情報を基に、メッセージを安全な暗号文に変換し、同時に認証タグを生成して暗号文と連結した結果を返します。この戻り値は、後でsodium_crypto_aead_chacha20poly1305_decrypt
関数で復号する際に使用されます。
特に重要なのは、ノンスと呼ばれる値を同じ鍵で二度と再利用してはならない点です。これを誤るとセキュリティ上の脆弱性が発生し、暗号化されたデータが解読される危険性が高まります。秘密鍵も厳重に管理する必要があり、これらの要素を適切に扱うことで、インターネット上での通信やデータベースでの保存など、さまざまな場面でデータを安全に保護することが可能になります。
基本的な使い方
構文(syntax)
1<?php 2 3$key = sodium_crypto_aead_chacha20poly1305_keygen(); 4$nonce = random_bytes(SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES); 5$message = "Secret data to encrypt."; 6$additional_data = "Associated data, authenticated but not encrypted."; 7 8$ciphertext = sodium_crypto_aead_chacha20poly1305_encrypt( 9 $message, 10 $additional_data, 11 $nonce, 12 $key 13);
引数(parameters)
string $message, string $additional_data, string $nonce, string $key
- string $message: 暗号化する元のデータ(平文)を指定します。
- string $additional_data: 認証のみを行い、暗号化はしない追加データ(AAD)を指定します。
- string $nonce: ナンス(Nonce: Number used once)を指定します。これは、同じ鍵とメッセージの組み合わせで暗号化を行う際に、必ず一意でなければならない値です。
- string $key: 暗号化および復号化に使用する鍵を指定します。
戻り値(return)
string
認証付き暗号化されたデータと、それを認証するための認証タグの連結された文字列を返します。