„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Jenseits von AES – Moderne Verschlüsselung für Laravel mit XChaCha20

Jenseits von AES – Moderne Verschlüsselung für Laravel mit XChaCha20

Veröffentlicht am 08.11.2024
Durchsuche:139

Beyond AES — Modern Encryption for Laravel with XChaCha20

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.

Motivation und Anforderungen

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.

Moderner Algorithmus und Chiffre

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

Deutliche Optimierung der Tokenlänge

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

Base64 im URL-Problem

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.

Erste Schritte

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!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/blu3blaze/beyond-aes-modern-encryption-for-laravel-with-xchacha20-2d4g?1 Bei Verstößen wenden Sie sich zum Löschen bitte an [email protected] Es
Neuestes Tutorial Mehr>

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