在當今的數位環境中,資料加密是每個 Web 應用程式的重要組成部分。本文探討了我為什麼開發一個利用 Libsodium 的 XChaCha20-Poly1305 加密功能的包,以及它如何增強 Laravel 應用程式的安全性,同時最大限度地減少開銷。
Laravel 的框架 Crypt Facade 為敏感資料的加密和解密提供了方便的接口,例如無狀態身份驗證令牌或服務間通訊框架。
預設框架的加密實作是基於透過 OpenSSL 的 AES-256-CBC,通常是安全的堅實基礎,但總有改進的空間,特別是在效能和可用性至關重要的情況下。
雖然透過 OpenSSL 的 AES-256-CBC 仍然被認為是安全的,但已經過時了。此外,它對 OpenSSL 的依賴可能會引入潛在的漏洞,具體取決於特定版本和配置。
從 PHP 7.2 開始,Sodium 擴充與 PHP Core 捆綁在一起。 Libsodium 優先考慮現代、經過嚴格審查的加密原語,例如 XChaCha20-Poly1305 和 Ed25519。雖然 AES 透過硬體加速可以很快,但 XChaCha20-Poly1305 作為軟體實現,在沒有特殊硬體指令的情況下優於它。
// 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
內建加密將密文、初始化向量和標籤值編碼為 JSON 物件的 Base64 表示形式,這顯著增加了令牌的長度。
切換到XChaCha20演算法無需編碼JSON,nonce可以作為二進位字串添加到密文中。
// 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 變體。因此,使用令牌作為 URL 的一部分或作為 GET 參數之一需要從 Base64 到 Base64URLSafe 的額外轉換。
立即在 Base64URLSafe 中對密文進行編碼沒有任何缺點,並且允許在任何環境中進行安全的令牌傳輸。
1) 透過composer安裝套件
composer require blu3blaze/laravel-xchacha20-encrypter
2) 修改bootstrap/providers.php中的服務提供者清單
3) 使用 XChaCha20-Poly1305 演算法享受 Crypt 外觀
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'] */結論
透過採用 blu3code/laravel-xchacha20-encrypter 套件,您可以利用現代加密演算法的優勢,並在 Laravel 應用程式中實現顯著的效能改進。這意味著更快的回應時間、更少的伺服器負載以及更安全的用戶資料環境。試試一下,親自看看有何不同!
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3