«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > За пределами AES — современное шифрование для Laravel с XChaCha20

За пределами AES — современное шифрование для Laravel с XChaCha20

Опубликовано 8 ноября 2024 г.
Просматривать:263

Beyond AES — Modern Encryption for Laravel with XChaCha20

В сегодняшней цифровой среде шифрование данных является важной частью каждого веб-приложения. В этой статье рассказывается, почему я разработал пакет, который использует возможности шифрования XChaCha20-Poly1305 от Libsodium и как он может повысить безопасность вашего приложения Laravel, минимизируя при этом накладные расходы.

Мотивация и требования

Фреймворк Crypt Facade от Laravel предоставляет удобный интерфейс для шифрования и дешифрования конфиденциальных данных, таких как токены аутентификации без сохранения состояния или кадры межсервисной связи.

Реализация шифрования платформы по умолчанию, основанная на AES-256-CBC через OpenSSL, в целом представляет собой надежную надежную основу, но всегда есть возможности для улучшения, особенно когда производительность и удобство использования имеют решающее значение.

Современный алгоритм и шифр

Хотя AES-256-CBC через OpenSSL по-прежнему считается безопасным, он становится устаревшим. Более того, его зависимость от 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-адресом

Встроенная библиотека использует исходный вариант Base64. По этой причине использование токена как части URL-адреса или в качестве одного из параметров GET требует дополнительного преобразования из Base64 в Base64URLSafe.
Непосредственное кодирование зашифрованного текста в Base64URLSafe не имеет недостатков и позволяет безопасно передавать токены в любой среде.

Начиная

1) Установить пакет через композитор

composer require blu3blaze/laravel-xchacha20-encrypter

2) Изменить список поставщиков услуг в bootstrap/providers.php

3) Наслаждайтесь фасадом Crypt с алгоритмом XChaCha20-Poly1305

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. Это означает более быстрое время отклика, снижение нагрузки на сервер и более безопасную среду для данных ваших пользователей. Попробуйте и сами увидите разницу!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/blu3blaze/beyond-aes-modern-encryption-for-laravel-with-xchacha20-2d4g?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3