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

作成日: 更新日:

sodium_crypto_secretstream_xchacha20poly1305_rekey関数は、既存のシークレットストリーム暗号化の状態から、新しい暗号鍵を明示的に導出してコンテキストを更新する処理を実行する関数です。この関数は、大量のデータや長時間の通信を単一の共通鍵で暗号化し続けることによるセキュリティリスクを軽減するために使用されます。シークレットストリーム通信では、最初にinit_pushまたはinit_pull関数で初期化された状態オブジェクトを使い、一連のメッセージを暗号化・復号します。その通信の途中で本関数を呼び出すことにより、ストリームの内部状態が更新され、以降のメッセージは新しい鍵で暗号化されるようになります。これにより、たとえ将来的に鍵が漏洩したとしても、rekeyより前に暗号化されたメッセージの機密性が保たれる前方秘匿性を実現できます。最も重要な注意点として、暗号化を行う側と復号を行う側は、必ず同じタイミングでこのrekey処理を呼び出す必要があります。もし片方だけが実行した場合、鍵の同期が失われ、それ以降のデータは正しく復号できなくなります。

基本的な使い方

構文(syntax)

1<?php
2$state_variable = '';
3sodium_crypto_secretstream_xchacha20poly1305_rekey($state_variable);
4?>

引数(parameters)

string &$state

  • string &$state: 状態(state)を保持する変数を参照渡しで指定します。この関数は、この状態を更新して再鍵付けを行います。

戻り値(return)

void

この関数は、暗号化されたストリームの再キーイングを行います。再キーイングとは、暗号化に使用される鍵を定期的に更新することで、セキュリティを向上させる操作です。この操作は、既存の暗号化セッションの鍵を更新するために使用され、更新された鍵は以降の暗号化・復号化に使用されます。 戻り値はありません。

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