Поскольку этот вопрос довольно популярен, я подумал, что полезно обновить его.
Позвольте мне подчеркнуть правильный ответ , заданный AviD на этот вопрос:
Вы не должны хранить какие-либо данные, требующие шифрования, в вашем файле cookie. Вместо этого, сохраните случайный ключ хорошего размера (128 бит / 16 байт) в файле cookie и сохраните информацию, которую хотите сохранить в безопасности. сервер, идентифицируемый ключом cookie.
Я ищу информацию о «лучшем» алгоритме шифрования для шифрования файлов cookie.
У меня есть следующие требования:
Должно быть быстро
шифрование и дешифрование данных будут выполняться для (почти) каждого запроса
Он будет работать с небольшими наборами данных, обычно со строками длиной около 100 символов или менее
Это должно быть безопасно, но мы не защищаем банковские операции
Мы должны иметь возможность расшифровать информацию, чтобы SHA1 и т. П. Вышли.
Теперь я прочитал, что Blowfish быстр и безопасен, и я прочитал, что AES быстр и безопасен.
С Blowfish, имеющим меньший размер блока.
Я думаю, что оба алгоритма обеспечивают более чем достаточную безопасность? таким образом, скорость станет решающим фактором.
Но я действительно понятия не имею, подходят ли эти алгоритмы для маленькой строки символов и, возможно, есть более подходящий алгоритм для шифрования файлов cookie.
Итак, мой вопрос:
Какой алгоритм шифрования лучше всего подходит для шифрования данных cookie?
Обновление
Точнее, мы хотим зашифровать 2 куки: один с информацией о сеансе, а другой с информацией «запомни меня».
Платформа представляет собой PHP как модуль apache в Linux на VPS.
Обновление 2
Я согласен с cletus , что хранение любой информации в cookie-файле небезопасно.
Однако у нас есть требование для реализации функции «запомни меня». Принятый способ сделать это - установить cookie. Если клиент представляет этот файл cookie, ему или ей разрешается доступ к системе с (почти) равными правами, как если бы он представил действительную комбинацию пароля пользователя.
Итак, мы по крайней мере хотим зашифровать все данные в куки, чтобы они:
a) злоумышленники не могут прочитать его содержимое,
b) злоумышленники не могут изготовить свой собственный файл cookie или вмешаться в него.
(Все данные из файлов cookie очищаются и проверяются на достоверность, прежде чем мы что-то с ними делаем, но это уже другая история)
Файл cookie сеанса содержит больше идентификатор сессии / метку времени. Возможно, его можно использовать без шифрования, но я не вижу вреда в его шифровании? (кроме времени вычислений).
Итак, учитывая, что нам необходимо сохранить некоторые данные в файле cookie, как лучше всего их зашифровать?
Обновление 3
Ответы на этот вопрос заставили меня пересмотреть выбранный подход. Я действительно могу сделать то же самое без необходимости шифрования. Вместо того, чтобы шифровать данные, я должен отправлять только те данные, которые не имеют смысла без контекста и не могут быть угаданы .
Однако я тоже в растерянности:
Я думал, что шифрование позволяет нам отправлять данные в BigBadWorld & trade; и все еще быть (достаточно) уверенным, что никто не сможет их прочитать или подделать ...
Разве это не весь смысл шифрования?
Но реакция ниже подталкивает к: Не доверяйте шифрованию для обеспечения безопасности.
Чего мне не хватает ??