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

作成日: 更新日:

sodium_crypto_stream_xchacha20_xor_ic関数は、XChaCha20ストリーム暗号アルゴリズムを用いて、指定されたデータストリームに対して排他的論理和(XOR)による暗号化または復号化を実行する関数です。

この関数は、主に大量のデータや、ネットワーク経由で送受信されるようなストリーミングデータを安全に扱うために設計されています。高いセキュリティと優れた処理速度を両立したXChaCha20アルゴリズムを利用することで、データの機密性を確実に保護します。特に、Nonce(ナンス:各暗号化操作で一度だけ使用するランダムな値)のサイズが大きいため、Nonceの重複によるセキュリティリスクが低減される点が特徴です。

関数名のxor_icは、データの暗号化・復号化が、鍵ストリームとメッセージとのビット単位のXOR演算によって行われること、そしてic(initial counter)として初期カウンタ値を指定できることを示しています。この初期カウンタを指定することで、同じ鍵とNonceを使用している場合でも、データの特定の部分だけを暗号化・復号化することが可能になります。これにより、ファイルの一部をランダムに読み書きするような、より柔軟なデータ処理が実現されます。

この関数は、処理対象のデータ(メッセージ)、共通鍵、一度だけ使用するNonce、そして初期カウンタを引数として受け取ります。そして、処理後のデータ(暗号化されたデータ、または復号化された平文)をバイナリ文字列として返します。データを安全に送受信・保存するシステムを構築する上で、非常に重要な役割を果たす関数であり、鍵とNonce、初期カウンタの適切な管理がセキュリティ上不可欠です。

基本的な使い方

構文(syntax)

1<?php
2function sodium_crypto_stream_xchacha20_xor_ic(
3    string $message,
4    string $nonce,
5    string $key,
6    int $initial_counter
7): string {}

引数(parameters)

string $message, string $nonce, int $counter, string $key

  • string $message: 暗号化または復号化するメッセージを指定する文字列
  • string $nonce: Nonce(使い捨ての乱数)を指定する文字列。一意であることが必須です。
  • int $counter: カウンター値を指定する整数。チャネル間での状態管理に使用します。
  • string $key: 暗号化または復号化に使用する鍵を指定する文字列。

戻り値(return)

string

指定されたキーと初期値(nonce)、追加データ(additional_data)を使用して、平文(plaintext)を暗号化または復号した結果の文字列を返します。

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