Зашифруйте пароль пользователя с помощью jquery и расшифруйте его с помощью C # - PullRequest
7 голосов
/ 07 сентября 2010
  • Я не хочу использовать SSL для шифрования форм регистрации и входа на веб-сайт, который я создаю.
    • У меня нет денег, чтобы заплатить за сертификат.
    • Мне нужно использовать шифрование с помощью jquery и расшифровку с помощью C # на моем сайте asp.net.

Есть ли у кого-нибудь пример и насколько безопасно применять этот метод?

Ответы [ 7 ]

15 голосов
/ 07 сентября 2010

Если вы не используете SSL, значит, вы не в безопасности, но это не единственная причина.

SSL защищает реальную связь, тогда как шифрование защищает данные, которыми вы являетесьобщения.Вы даже не должны шифровать пароли вообще.Вы должны сделать усиленный хэш информации. хеш является односторонней функцией (не может быть отменено), тогда как шифрование является двусторонней функцией (может быть обращено).Усиление и использование хэша включает в себя:

  • Итерации по хешу, построенному для скорости, например SHA512 пару тысяч раз или использование чего-то вроде BCrypt .
  • Использовать соль - что-то вроде 64-битного массива беспорядка на пользователя, сохраненного в базе данных, сделает это
  • Шифрование ключей и солей в БДиспользование ключа на прикладном уровне - это означает, что если ваша база данных занята, им все равно потребуется ключ от прикладного уровня для доступа к необработанной хэш-информации, а также к солям.

У вас естьпомнить, что безопасность строится в слоях.Пропуская SSL, вы пропускаете большую его часть.По крайней мере, вы можете использовать makecert до для создания самозаверяющего сертификата .Все, что произойдет, это то, что пользователь будет предупрежден об этом.Хороший SSL-сертификат может стоить всего $ 12,99 на GoDaddy .Я рекомендую получить один, а также реализовать выше.

6 голосов
/ 07 сентября 2010

Вы можете использовать SSL без оплаты сертификата, и этот метод обеспечивает вам безопасность только в браузере; информация о вашем сертификате не соответствует действительности.

Подробнее об этом http://www.akadia.com/services/ssh_test_certificate.html

3 голосов
/ 07 сентября 2010

Это, вероятно, совсем не безопасно. SSL действительно путь; если вы не можете позволить себе сертификат, вы всегда можете сделать свой собственный. Очевидно, что они не проверят до одного из доверенных корневых органов, но они так же безопасны - личность вашего сайта не будет подтверждена доверенной третьей стороной, но само соединение будет также надежно зашифровано. *

0 голосов
/ 07 сентября 2010

Вы можете использовать HMAC для аутентификации. Это не обеспечит конфиденциальность, но сниффер (парень, изучающий сетевой трафик) не сможет ни получить пароли, ни войти в систему, выдавая себя за подлинного пользователя. Когда я не предоставляю конфиденциальность, я имею в виду, что сниффер будет видеть весь переданный контент, но не пароль.

SSL, конечно, очень безопасен, но излишним для многих приложений.

0 голосов
/ 07 сентября 2010

Вы можете зашифровать данные формы с помощью Javascript. Это можно сделать, см. http://www.movable -type.co.uk / scripts / aes.html . Если данные зашифрованы с помощью ключа, вам придется хранить этот ключ в коде JavaScript, а также в коде на стороне сервера. Поскольку код javascript будет на стороне клиента, а ключ будет открытым, это вообще не безопасно :). То же самое относится и к асимметричному шифрованию. Различные данные могут быть зашифрованы одним и тем же ключом и отправлены на сервер.

SSL разработан для преодоления проблем безопасности в Интернете с использованием методов криптографии с открытым ключом и симметричного шифрования. Атака среднего человека предотвращена. Используя SSL, вы можете быть уверены, что ваши данные в безопасности, не изменены, и есть сторонний центр сертификации, который говорит, что вы тот человек, на которого вы претендуете.

Если вы скажете, что я могу поместить ключ или код шифрования в апплет или объект active-x или flash swf и использовать обфускацию для защиты кода, это может быть способом. Но опять же этот подход открыт для атак и не является безопасным. Запутывание не гарантирует, что ваш ключ или алгоритм безопасен, просто усложняет работу взломщика, чтобы получить ключ.

Надеюсь, это поможет.

0 голосов
/ 07 сентября 2010

Я согласен с соображениями безопасности других людей, если вы так одержимы этим, вы можете попытаться использовать пользовательский интерфейс PKI. Вам нужно будет немного глубже исследовать код, необходимый для этого, но вот ссылка для описания структуры открытого ключа:

Криптография с открытым ключом

Так что, если вам удастся закодировать алгоритм RSA с открытым ключом в jquery, вы должны без труда сопоставить его расшифровку с закрытым ключом в C #. Это не рекомендация, потому что на самом деле это только «безопасность через запутывание» (что вовсе не безопасность).

0 голосов
/ 07 сентября 2010

Не используя SSL, вы открываете свой код для атак со стороны сети.Шифрование на стороне клиента также не принесет пользы.

К сожалению, не существует безопасного пути обхода без получения действующего сертификата.Такой подход был бы небезопасным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...