오늘날의 디지털 환경에서 데이터 암호화는 모든 웹 애플리케이션의 중요한 부분입니다. 이 기사에서는 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는 소프트웨어 구현으로서 특별한 하드웨어 지침 없이도 AES보다 성능이 뛰어납니다.
// 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 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