Signatur
Beschreibung
sodium_crypto_aead_aegis256_keygen() generiert einen zufälligen 256-Bit-Schlüssel (32 Bytes), der für die Verwendung mit den AEGIS-256-Funktionen wie sodium_crypto_aead_aegis256_encrypt() und sodium_crypto_aead_aegis256_decrypt() vorgesehen ist.
AEGIS-256 ist ein moderner, hochperformanter Authenticated Encryption with Associated Data (AEAD)-Algorithmus. Er bietet sowohl Vertraulichkeit als auch Integrität/Authentizität der verschlüsselten Daten. Gegenüber älteren Algorithmen wie AES-GCM bietet AEGIS-256 in vielen Szenarien eine höhere Durchsatzrate.
Die Funktion nutzt intern den sicheren Zufallszahlengenerator von libsodium, sodass der erzeugte Schlüssel für den kryptografischen Einsatz geeignet ist. Der zurückgegebene Schlüssel sollte sicher gespeichert und niemals im Klartext übertragen werden.
Diese Funktion ist der empfohlene Weg, um neue Schlüssel für AEGIS-256 zu erzeugen, da sie die korrekte Schlüssellänge (SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES) sicherstellt und keine manuelle Schlüsselgenerierung erforderlich macht.
Rückgabewert
SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES (32 Bytes) zurück, der als Schlüssel für AEGIS-256-Operationen verwendet werden kann.Beispiele
Schlüssel erzeugen und AEGIS-256-Nachricht verschlüsseln
<?php
// Neuen zufälligen AEGIS-256-Schlüssel erzeugen
$key = sodium_crypto_aead_aegis256_keygen();
// Nonce (muss für jede Nachricht einzigartig sein)
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_AEGIS256_NPUBBYTES);
$plaintext = 'Geheime Nachricht';
$additionalData = 'öffentlicher Kontext'; // Wird authentifiziert, aber nicht verschlüsselt
// Verschlüsseln
$ciphertext = sodium_crypto_aead_aegis256_encrypt($plaintext, $additionalData, $nonce, $key);
// Entschlüsseln
$decrypted = sodium_crypto_aead_aegis256_decrypt($ciphertext, $additionalData, $nonce, $key);
echo $decrypted;
// Schlüssel aus dem Speicher löschen
sodium_memzero($key);
Schlüssel erzeugen und sicher als Hex-String speichern
<?php
// Schlüssel erzeugen
$key = sodium_crypto_aead_aegis256_keygen();
// Länge prüfen
echo 'Schlüssellänge: ' . strlen($key) . ' Bytes' . PHP_EOL;
echo 'Erwartet: ' . SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES . ' Bytes' . PHP_EOL;
// Zur Speicherung als Hex codieren (z. B. in Konfigurationsdatei oder Datenbank)
$keyHex = sodium_bin2hex($key);
echo 'Hex-Schlüssel: ' . $keyHex . PHP_EOL;
// Zur Verwendung zurück in Binär konvertieren
$keyRestored = sodium_hex2bin($keyHex);
// Originalen Schlüssel aus dem Speicher löschen
sodium_memzero($key);
// Wichtig · Fallstricke
Sicherheitshinweise:
- Der erzeugte Schlüssel ist ein hochsensibler kryptografischer Wert. Speichere ihn niemals im Klartext in Logs, Fehlermeldungen oder unsicheren Konfigurationsdateien.
- Verwende
sodium_memzero(), um den Schlüssel nach der Verwendung sicher aus dem Arbeitsspeicher zu löschen und das Risiko eines Speicher-Leaks zu minimieren. - Die Nonce (number used once) muss für jede Verschlüsselung mit demselben Schlüssel einzigartig sein. Eine Wiederverwendung der Nonce kann die Sicherheit vollständig kompromittieren.
- AEGIS-256 ist ab PHP 8.4 verfügbar und setzt libsodium 1.0.19 oder neuer voraus. Prüfe die Verfügbarkeit mit
defined('SODIUM_CRYPTO_AEAD_AEGIS256_KEYBYTES').