In der heutigen digitalen Landschaft ist Datenverschlüsselung ein wichtiger Bestandteil jeder Webanwendung. In diesem Artikel erfahren Sie, warum ich ein Paket entwickelt habe, das die Leistungsfähigkeit der XChaCha20-Poly1305-Verschlüsselung von Libsodium nutzt, und wie es die Sicherheit Ihrer Laravel-Anwendung steigern und gleichzeitig den Overhead minimieren kann.
Laravels Framework Crypt Facade bietet eine praktische Schnittstelle für die Ver- und Entschlüsselung sensibler Daten, wie z. B. zustandslose Authentifizierungstoken oder Kommunikationsrahmen zwischen Diensten.
Die Verschlüsselungsimplementierung des Standard-Frameworks, die auf AES-256-CBC über OpenSSL basiert, ist eine allgemein sichere, solide Grundlage, aber es gibt immer Raum für Verbesserungen, insbesondere wenn Leistung und Benutzerfreundlichkeit entscheidend sind.
Während AES-256-CBC über OpenSSL immer noch als sicher gilt, ist es veraltet. Darüber hinaus kann die Abhängigkeit von OpenSSL je nach Version und Konfiguration potenzielle Schwachstellen mit sich bringen.
Ab PHP 7.2 ist die Sodium-Erweiterung mit PHP Core gebündelt. Libsodium priorisiert moderne, gut geprüfte kryptografische Primitive wie XChaCha20-Poly1305 und Ed25519. Während AES mit Hardwarebeschleunigung schnell sein kann, übertrifft XChaCha20-Poly1305 als Softwareimplementierung es ohne spezielle Hardwareanweisungen.
// Default AES-256-CBC Encrypter $encrypter = new Illuminate\Encryption\Encrypter($key, 'aes-256-cbc'); $start = microtime(true); $results = []; for ($i = 0; $i encrypt(['user_id' => $i]); } $elapsed = microtime(true) - $start; // 4.08 seconds
// Custom XChaCha20-Poly1305 Encrypter $encrypter = new Blu3blaze\Encrypter\Encrypter($key); $start = microtime(true); $results = []; for ($i = 0; $i encrypt(['user_id' => $i]); } $elapsed = microtime(true) - $start; // 1.79 seconds
Die integrierte Verschlüsselung kodiert Chiffretext, Initialisierungsvektor und Tag-Wert als Base64-Darstellung des JSON-Objekts, was die Länge des Tokens erheblich erhöht.
Durch den Wechsel zum XChaCha20-Algorithmus entfällt die Notwendigkeit, JSON zu kodieren, Nonce kann als Binärzeichenfolge zum Chiffretext hinzugefügt werden.
// Default AES-256-CBC Encrypter $encrypter = new Illuminate\Encryption\Encrypter($key, 'aes-256-cbc'); $token = $encrypter->encrypt([ 'user_id' => '10296ab5-88b8-4dff-b7cf-2840b879e6dc' ]); // 312 characters
// Custom XChaCha20-Poly1305 Encrypter $encrypter = new Blu3blaze\Encrypter\Encrypter($key); $token = $encrypter->encrypt([ 'user_id' => '10296ab5-88b8-4dff-b7cf-2840b879e6dc' ]); // 139 characters
Die eingebettete Bibliothek verwendet die ursprüngliche Base64-Variante. Aus diesem Grund erfordert die Verwendung eines Tokens als Teil der URL oder als einer der GET-Parameter eine zusätzliche Transformation von Base64 zu Base64URLSafe.
Die sofortige Codierung von Chiffretext in Base64URLSafe hat keine Nachteile und ermöglicht eine sichere Token-Übertragung in jeder Umgebung.
1) Paket über Composer installieren
composer require blu3blaze/laravel-xchacha20-encrypter
2) Dienstanbieterliste in bootstrap/providers.php ändern
3) Genießen Sie die Crypt-Fassade mit dem XChaCha20-Poly1305-Algorithmus
use Illuminate\Support\Facades\Crypt; $token = Crypt::encrypt([ 'user_id' => '73d430f0-d39e-4642-a37e-9ef791b90d11' ]); /* TAl1Sz4DTspE8ZzTOC6Q.....Ug5t4XcWqoiB6CWRak9Y */ $tokenData = Crypt::decrypt($token); /* ['user_id' => '73d430f0-d39e-4642-a37e-9ef791b90d11'] */Abschluss
Durch die Einführung des Pakets blu3code/laravel-xchacha20-encrypter können Sie die Vorteile moderner Verschlüsselungsalgorithmen nutzen und erhebliche Leistungsverbesserungen in Ihren Laravel-Anwendungen erzielen. Dies führt zu schnelleren Reaktionszeiten, geringerer Serverlast und einer sichereren Umgebung für die Daten Ihrer Benutzer. Probieren Sie es aus und überzeugen Sie sich selbst vom Unterschied!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3