Я создаю веб-сайт, и мои способы оплаты будут Google Checkout и Paypal. Там будут ссылки / кнопки, которые будут перенаправлять пользователя на защищенные сайты Google / Paypal для обработки платежей. Это означает, что мне не нужны дополнительные затраты в размере 150 долларов США в год и сложность установки SSL-сертификатов для моего сайта.
Однако я хотел бы зашифровать пароли пользователей при их входе в систему, чтобы, если они находятся в сети, злоумышленник, использующий FireSheep и т. Д., Не мог прочитать действительный пароль пользователя во время его отправки на сервер. Остальная часть сайта не нуждается в шифровании, так как это не очень важные данные и, вероятно, значительно замедлит работу пользователя.
Я думаю, это можно реализовать с помощью криптографии с открытым ключом. Допустим, процесс идет примерно так:
- Открытый ключ находится во внешнем файле JavaScript, закрытый ключ в PHP на сервере
- Пользователь вводит свое имя пользователя и пароль в форму и нажимает кнопку "Отправить"
- JavaScript запускается и шифрует пароль, сохраняя его обратно в текстовом поле
- Форма отправляется на сервер, а пароль расшифровывается с помощью PHP
- Простой текстовый пароль в PHP солится и затем хэшируется по сравнению с хэшем в базе данных.
- Возможен аналогичный процесс для функций регистрации / смены пароля.
Я думаю, что-то вроде RSA поможет. Но я охотился по сети за рабочей библиотекой JavaScript, чтобы сделать это, но ни одна не кажется совместимой с доступными библиотеками PHP. В любом случае, он должен генерировать набор ключей, совместимых с JavaScript и PHP.
Кто-нибудь знает реальное рабочее решение для этого? Если нет, как насчет того, чтобы написать что-то одно, то с открытым исходным кодом. К сожалению, написание кода шифрования / дешифрования довольно сложно, поэтому я не знаю точно, что делают существующие библиотеки и как их модифицировать, чтобы он работал. У меня уже есть защита для фиксации / захвата сессии, поэтому я не заинтересован в этом. Просто интересно зашифровать данные перед тем, как они попадут на веб-сервер.
NB. Пожалуйста, не публикуйте несколько ссылок на автономные библиотеки шифрования Javascript или PHP, я нашел их уже в Google. Это на самом деле не полезно. Что мне нужно, так это код для шифрования JavaScript и расшифровки PHP, который на самом деле гармонично работает для получения желаемого результата, описанного выше.
Также, если вы можете воздерживаться от публикации комментариев типа «просто используйте SSL». Я бы на самом деле хотел бы решить эту проблему, даже если это не лучшая практика, но, тем не менее, это было бы интересно.
Большое спасибо!