Совместимые библиотеки шифрования между клиентом и сервером (Javascript -> C# или Java)
Иногда HTTPS недостаточно. Особенно, когда мы говорим о защите пользовательских данных от троянов с доступом на уровне winsock32, где они могут прослушивать https в виде простого текста или объекты BHO, которые уже имеют доступ к расшифрованным опубликованным данным в памяти браузера.
В этом сценарии я разработал подпрограмму javascript -> classic для клиентского сервера asp, в которой javascript шифрует и отправляет данные, полученные и расшифрованные ASP. Это работает очень хорошо.
Это решение было построено с использованием шифрования xICE, которое обеспечивает хорошую совместимость между JavaScript и PHP или ASP. Но сейчас я перехожу на ASP.NET или Java, и в XICE нет порта для этих сред.
Любое предложение?
3 ответа
В зависимости от библиотеки JavaScript, может быть достаточно легко портировать на C#, хотя вам, вероятно, захочется пробежаться и немного его реорганизовать. Один из лучших способов выучить язык - это перенести на него библиотеку. Иначе, в JS есть множество реализаций для AES и других. Многие из них оптимизированы для ActionScript и JavaScript (некоторые незначительные отличия от собственно EcmaScript).
Я никогда не слышал о xICE, поэтому я попытался найти дополнительную информацию. Все, что я нашел, это информация, опубликованная компанией, и статья об алгоритме под названием "ICE", который явно не связан. Я не смог найти информацию об алгоритмах, используемых xICE. Информация, которую я нашел, была от 4 до 5 лет.
Все эти признаки соответствуют криптографии "змеиного масла". Вы вряд ли найдете авторитетного поставщика совместимой библиотеки для другой платформы.
Я бы рекомендовал использовать известный алгоритм, такой как AES. Доступны бесплатные реализации JavaScript для поддержки криптографии на стороне клиента. Лично мне нравится прозрачность JavaScrypt (а также кредо его автора), но есть и другие реализации, которые могут быть быстрее.
Такое решение обеспечивает лучшую криптографию и упрощает интеграцию с другими платформами - бесплатно.
По сути, SSL достаточно. Или, скорее, так хорошо, как вы можете получить.
Все, что клиент может увидеть, с помощью JavaScript или иным образом, может быть замечено троянами и тому подобным на клиенте.
Любое JavaScript-шифрование - это безопасность по неясности.