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

作成日: 更新日:

sodium_crypto_aead_xchacha20poly1305_ietf_encrypt関数は、XChaCha20-Poly1305アルゴリズムを使用して、データを認証付きで安全に暗号化を実行する関数です。この関数は、単にデータを秘密にするだけでなく、暗号化されたデータが通信中に改ざんされていないかを確認する「認証」の機能も提供します。これにより、データの機密性(秘密にすること)と完全性(改ざんされていないこと)の両方を強力に保証し、セキュリティを大幅に向上させます。

XChaCha20-Poly1305は、現代において推奨される強力な暗号化方式の一つであり、高速な処理能力と高いセキュリティレベルを兼ね備えています。特に、XChaCha20は一般的なChaCha20と比較して、暗号化に使用される一度きりの値(nonce)のサイズが拡張されており、これによりnonceの重複によるセキュリティリスクを低減し、より幅広い用途で安全に利用できる点が特徴です。

この関数を使用する際は、暗号化したい元のデータ(平文)、秘密鍵、そしてnonceと呼ばれる一度だけ使用する値を引数として指定します。さらに、オプションとして、認証の対象としたいが暗号化はしない追加のデータ(associated data)を指定することも可能です。これにより、例えば通信ヘッダ情報などが改ざんされていないことも認証で確認できるようになります。関数の戻り値は、暗号化されたデータと認証タグを含んだ文字列です。インターネットを介した機密データの通信や、データベースに保存する重要な情報の保護など、多岐にわたる場面で安全なシステムを構築するために不可欠な機能を提供します。

基本的な使い方

構文(syntax)

1<?php
2
3$message = '暗号化するメッセージ';
4$additionalData = '追加の認証データ(オプション)';
5$nonce = random_bytes(SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES); // 24バイトのノンスを生成
6$key = random_bytes(SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES);     // 32バイトの鍵を生成
7
8$encryptedMessage = sodium_crypto_aead_xchacha20poly1305_ietf_encrypt(
9    $message,
10    $additionalData,
11    $nonce,
12    $key
13);
14
15?>

引数(parameters)

string $message, string $additional_data, string $nonce, string $key

  • string $message: 暗号化する平文データを指定する文字列
  • string $additional_data: 認証のみを行う追加データを指定する文字列
  • string $nonce: ナンス(一度だけ使用する乱数)を指定する文字列
  • string $key: 鍵を指定する文字列

戻り値(return)

string

XChaCha20-Poly1305-IETFアルゴリズムを用いて、指定されたメッセージを暗号化し、認証タグを付加したバイナリ文字列を返します。

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