практическое использование cryptico.js - PullRequest
0 голосов
/ 05 января 2012

Cryptico выглядит как супер гладкая библиотека шифрования RSA.

cryptico.wwwtyro.net

Что касается приложений JavaScript, предположим, что я хочу отправить данные клиенту, попросить их что-то сделать с данными и передать обратно. Как я могу использовать RSA, чтобы гарантировать, что клиенты, отправляющие данные обратно на сервер, не будут подделаны? Поскольку JavaScript легко реверс-инжиниринг, есть ли какое-либо практическое применение cryptico на стороне клиента?

Ответы [ 2 ]

0 голосов
/ 12 мая 2013

Существует решение для того, что вы ищете (я уверен, что есть более одного).Мой ответ требует двух нетрадиционных подходов к тому, что мы называем «безопасным соединением» и как вы получаете «код клиента».

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

  2. Физически предварительно поделитесь своимкод клиента аналогичным образом, т. е. загрузите код с компакт-диска в журнале или с карты предоплаты, продаваемой на рынке.Это мешает MITM отправлять вам взломанных и эксплуатируемых клиентов, что позволяет ssl.Когда известно, что клиент защищен, и установлено реальное защищенное соединение, упомянутое в (1), код клиента может быть обновлен.

С помощью комбинации предварительно общего доступаКлюч, который разрабатывает безопасное соединение и клиентский код, который может пройти контрольную сумму, вы можете достичь того, что вы ищете.

В идеале, у нас должны быть предварительные общие ключи безопасного соединения, доступные на рынке, но мы этого не делаем.Таким образом, для того, чтобы вы делали это в одиночку, потребовалось бы внедрить нечто подобное для вашего веб-сайта, в частности, до тех пор, пока люди в этой стране не соберутся с реальной безопасностью.Вам нужно будет передать им ключи по телефону, по почте и т. Д. И код вашего клиента, скорее всего, должен быть расширением браузера для его установки из-за проблем с междоменной безопасностью.

0 голосов
/ 05 января 2012

Вы - своим примером - имеете в виду, что хотите скрыть от пользователя, что его клиент делает с данными?Если так - это невозможно.Вы никогда не должны доверять никаким данным, которые приходят от клиента.Если вы отправляете зашифрованные данные клиенту для обработки - вы должны предположить, что пользователь знает (или узнает, хочет ли он) ключ шифрования, иначе его невозможно будет обработать.Другими словами, нет безопасного способа скрыть от пользователя то, что обрабатывает его клиент.Запутывание - как вы заметили, всегда можно взломать, независимо от того, какой язык вы используете.

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

...