Signatur
Beschreibung
radius_salt_encrypt_attr() verschlüsselt einen Attribut-Wert mithilfe des RADIUS-Salt-Verschlüsselungsverfahrens (gemäß RFC 2868). Diese Methode wird typischerweise für Tunnel-Passwörter und ähnliche sensible Attribute verwendet, die über RADIUS übertragen werden sollen.
Im Unterschied zur einfachen radius_encrypt_attr()-Funktion wird hier zusätzlich ein zufälliger Salt-Wert in die Verschlüsselung einbezogen, was die Sicherheit gegenüber Replay-Angriffen erhöht. Das resultierende, verschlüsselte Attribut kann anschließend mit radius_put_attr() oder radius_put_vendor_attr() zum RADIUS-Paket hinzugefügt werden.
Die Funktion benötigt einen gültigen RADIUS-Handle, der zuvor mit radius_auth_open() oder radius_acct_open() erstellt wurde, da für die Verschlüsselung das gemeinsame Geheimnis (Shared Secret) des jeweiligen Servers aus dem Handle bezogen wird.
Diese Funktion ist Teil der PECL-Erweiterung radius und steht nur zur Verfügung, wenn diese Erweiterung installiert und aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $radius_handle Pflicht | resource | Ein gültiger RADIUS-Handle, erstellt mit radius_auth_open() oder radius_acct_open(). Er enthält das Shared Secret und weitere Verbindungsdaten, die für die Verschlüsselung benötigt werden. |
|
| $data Pflicht | string | Der Klartext-Attributwert, der mit Salt verschlüsselt werden soll, z. B. ein Tunnel-Passwort. |
Rückgabewert
false zurückgegeben.Beispiele
Tunnel-Passwort mit Salt verschlüsseln und als RADIUS-Attribut setzen
<?php
// RADIUS-Handle öffnen
$radius = radius_auth_open();
if (!radius_add_server($radius, '192.168.1.10', 1812, 'shared_secret', 3, 3)) {
die('Fehler beim Hinzufügen des Servers: ' . radius_strerror($radius));
}
if (!radius_create_request($radius, RADIUS_ACCESS_REQUEST)) {
die('Fehler beim Erstellen der Anfrage: ' . radius_strerror($radius));
}
// Tunnel-Passwort mit Salt verschlüsseln
$tunnelPassword = 'mein_geheimes_passwort';
$encrypted = radius_salt_encrypt_attr($radius, $tunnelPassword);
if ($encrypted === false) {
die('Verschlüsselung fehlgeschlagen: ' . radius_strerror($radius));
}
// Verschlüsseltes Attribut zum Paket hinzufügen (z. B. Tunnel-Password, Typ 69)
if (!radius_put_attr($radius, 69, $encrypted)) {
die('Fehler beim Setzen des Attributs: ' . radius_strerror($radius));
}
echo 'Attribut erfolgreich verschlüsselt und gesetzt.' . PHP_EOL;
Fehlerbehandlung bei misslungenem Verschlüsselungsversuch
<?php
$radius = radius_auth_open();
// Kein Server hinzugefügt – Verschlüsselung wird fehlschlagen
$result = radius_salt_encrypt_attr($radius, 'testwert');
if ($result === false) {
echo 'Verschlüsselung fehlgeschlagen: ' . radius_strerror($radius) . PHP_EOL;
} else {
echo 'Verschlüsselung erfolgreich.' . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: Das Shared Secret zwischen RADIUS-Client und -Server sollte ausreichend lang und komplex sein, da es die Basis der Verschlüsselung bildet. Ein schwaches Shared Secret kann die Salt-Verschlüsselung aushebeln.
Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung radius installiert ist. Unter modernen PHP-Versionen kann die Verfügbarkeit eingeschränkt sein. Alternativ sollten modernere RADIUS-Bibliotheken oder Implementierungen geprüft werden.
Da die Salt-Verschlüsselung einen Zufallswert verwendet, erzeugt jeder Aufruf mit denselben Eingaben einen anderen verschlüsselten Wert – dies ist beabsichtigt und erhöht die Sicherheit.