Я подумываю о том, чтобы переключить на хранение данных сеанса в зашифрованных файлах cookie, а не на моем сервере. Хотя это приведет к увеличению полосы пропускания, используемой для каждого запроса, это позволит сэкономить дополнительную нагрузку на базу данных и пространство для хранения.Безопасно ли шифрование RIJNDAEL для использования с небольшим количеством текста, предоставленного пользователям?
Во всяком случае, я планирую шифрования содержимого печенья с использованием RIJNDAEL 256.
function encrypt($text, $key)
{
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256,$key,$text,MCRYPT_MODE_ECB,mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB),MCRYPT_RAND));
}
, который при использовании будет производить что-то вроде этого (в кодировке base64 для отображения)
print base64_encode(encrypt('text', 'key'));
7s6RyMaYd4yAibXZJ3C8EuBtB4F0qfJ31xu1tXm8Xvw=
Я не беспокоюсь о том, что один файл cookie пользователей взломан, насколько я обеспокоен тем, что злоумышленник обнаружит key
и сможет построить любую сессию для любого пользователя, поскольку они знают, что Я использую для подписи данных.
Есть ли способ проверить оценочные времена крекинга по отношению к используемым параметрам? Или существует стандартная мера времени по отношению к размеру используемого текста или ключа?
Я слышал, как кто-то сказал, что ключи должны превышать 256 бит, чтобы быть достаточно безопасными для использования с RIJNDAEL. Мне также интересно, должна ли длина зашифрованного текста быть определенной длиной, чтобы не раздавать ключ.
Данные, как правило, около 200 символов
a:3{s:7:"user_id";i:345;s:5:"token";s:32:"0c4a14547ad221a5d877c2509b887ee6";s:4:"lang";s:2:"en";}
Так это безопасно?
После создания IV я приложил его к зашифрованному тексту. Затем я создал SHA256 HMAC (из того же ключа, который использовался для шифрования текста + зашифрованный текст). Поэтому, когда я получаю данные, я теперь проверяю HMAC - и, если они действительны, переходите к расшифровке данных. Кроме того, внутри данных у меня есть метка времени, поэтому я могу проверить, что данные не только * правильно и отправлены мной * - она отправляется своевременно. – Xeoncross