Существует множество причин, по которым вы не можете использовать свое собственное шифрование.
- SSL дает пользователю уверенность в том, что сайт безопасен и что перехватчики не могут просматривать пароль по проводам.Если вы не используете SSL, то обычные указания браузера о том, что сайт безопасен, не будут отображаться.
- Это действительно трудно получить правильный RSA (или любой криптоалгоритм в этом отношении),Во-первых, использование необработанного RSA небезопасно, и вам необходимо иметь соответствующий механизм заполнения и не делать его действительно безопасным.RSA также может шифровать только
n-1
байтов данных, где n
- это размер ключа. - Оставлять шифрование криптографам.Первая проблема с предложенной вами системой заключается в том, что вы упускаете смысл использования безопасного транспорта: вам не нужно делать какое-либо специальное кодирование ваших данных (преобразование в ascii и умножение / суммирование или любую другую часть), потому что безопасныйтранспорт означает, что подслушивающие не могут видеть, что происходит.
- Ваше предложение не защищает от атак "человек посередине".Это (своего рода) предотвращает подслушивание, что является другой проблемой.
Тем не менее, вы, безусловно, можете реализовать RSA в Javascript с небольшими усилиями, но просто знайте, что он вряд ли будет безопасным доу вас была куча криптоаналитиков, которые смотрели на это и пытались сломать.Вы совершите ошибку где-то в очереди, даже если вы лучший программист в мире.
Пользовательский опыт также пострадает, потому что пользователю будет очень трудно проверитьчто они на самом деле общаются с вашим сервером.
SSL - это хорошо известный, хорошо проанализированный, еще не сломанный протокол, который может быть бесплатным, если вы используете самозаверяющий сертификат (еще один плохой пользовательский опыт)., но по крайней мере это все еще довольно безопасно).Подумайте очень , прежде чем вы решите удешевить криптографию, и убедитесь, что вы сравниваете стоимость сертификата с временем разработки (на внедрение RSA у вас уйдет много часов) и потенциальной стоимостьюутечка важной информации о клиенте (их пароль).Стоимость сертификата, вероятно, будет незначительной по сравнению с остальной частью стоимости проекта.