Добрый день.
Все никак не могу определиться, как реализовать защиту своего сервиса от посторонних программ .
Суть такова: на сервере имеется скрипт, который предлагает эксклюзивные данные. Имеется бесплатная программа, написанная мной, которая передает этому скрипту некоторые параметры, а взамен получает заветные данные. Проблема в том, что я крайне не хотел, чтобы кто-то другой, не пользующийся моей программой, мог пользоваться этим скриптом. Поэтому нужно данные шифровать. Но какой алгоритм лучше выбрать? Мне бы подошел RSA в чистом виде, но ведь программу могут декомпилировать и вытащить оттуда зашитый в нее секретный ключ . Использовать для этого алгоритм Диффи-Хеллмана? Но ведь другой человек может написать свой клиент, и сервер будет с ним исправно сотрудничать. В общем, что-то я окончательно запутался. Какие предложения?
Здравствуйте, mindsesoft, Вы писали:
M>Добрый день. M>Все никак не могу определиться, как реализовать защиту своего сервиса от посторонних программ .
M>Суть такова: на сервере имеется скрипт, который предлагает эксклюзивные данные. Имеется бесплатная программа, написанная мной, которая передает этому скрипту некоторые параметры, а взамен получает заветные данные. Проблема в том, что я крайне не хотел, чтобы кто-то другой, не пользующийся моей программой, мог пользоваться этим скриптом. Поэтому нужно данные шифровать. Но какой алгоритм лучше выбрать? Мне бы подошел RSA в чистом виде, но ведь программу могут декомпилировать и вытащить оттуда зашитый в нее секретный ключ . Использовать для этого алгоритм Диффи-Хеллмана? Но ведь другой человек может написать свой клиент, и сервер будет с ним исправно сотрудничать. В общем, что-то я окончательно запутался. Какие предложения?
Всё упирается в то, где хранить данные о том, что программа легальная, а не подставная. Сама программа для этого не подходит по означенным Вами причинам. Значит, нужно хранить эту информацию где-то ещё.
Обычно для этого используют секретный ключ, хранимый где — то в защищённом месте, например, в protected storage. Или на USB — флешке. Или в специальном брелке (типа eToken какой-нибудь)
Здравствуйте, mindsesoft, Вы писали:
M>Добрый день. M>Все никак не могу определиться, как реализовать защиту своего сервиса от посторонних программ .
M>Суть такова: на сервере имеется скрипт, который предлагает эксклюзивные данные. Имеется бесплатная программа, написанная мной, которая передает этому скрипту некоторые параметры, а взамен получает заветные данные. Проблема в том, что я крайне не хотел, чтобы кто-то другой, не пользующийся моей программой, мог пользоваться этим скриптом. Поэтому нужно данные шифровать. Но какой алгоритм лучше выбрать? Мне бы подошел RSA в чистом виде, но ведь программу могут декомпилировать и вытащить оттуда зашитый в нее секретный ключ . Использовать для этого алгоритм Диффи-Хеллмана? Но ведь другой человек может написать свой клиент, и сервер будет с ним исправно сотрудничать. В общем, что-то я окончательно запутался. M>Какие предложения?
Предложение простое — не заморачиваться и сделать открытый доступ
Программа то ведь всё равно бесплатная — какая разница, с помощью неё будут данные получать или с помощью другой самописной программы.
По существу вопроса: поскольку у вас нет контроля над удалённой системой, то абсолютно любая защита (включая криптографические брелки) не поможет серверу отличить "свой" код от "чужого". Другими словами, если я скачал/купил "вашу" программу, то ничто не помешает мне написать свою программу, которая с точки зрения сервера будет неотличима от оригинала. Было бы желание! (впоминается анекдот про Неуловимого Джо)
Re[2]: Какой алгоритм шифрования (защиты) выбрать?
Здравствуйте, andy1618, Вы писали: A>По существу вопроса: поскольку у вас нет контроля над удалённой системой, то абсолютно любая защита (включая криптографические брелки) не поможет серверу отличить "свой" код от "чужого". Другими словами, если я скачал/купил "вашу" программу, то ничто не помешает мне написать свою программу, которая с точки зрения сервера будет неотличима от оригинала. Было бы желание! (впоминается анекдот про Неуловимого Джо)
Я вот подумал еще немного, и, действительно, так оно и есть. Поэтому с защитой особо сильно пока не стал заморачиваться, а просто "как следует" защитил код программы от декомпиляции (хотя, конечно, при желании могут и восстановить — это я понимаю). Пусть будет так . Может быть, попозже реализую в навес к этому алгоритм шифрования любой наиболее понравившийся .
Почему не хочу, чтобы другие пользовались? Да потому, что за аналогичную по функциональности программу другие люди и так просят денег, пытаются заработать. Дай им мой уникальный скрипт — будут и за него деньги с народа трясти. А моя программа предлагает все это бесплатно. Вот почему . Тем более, я не собираюсь платить за сервер, тратить свое время на разработку скрипта, улучшать его возможности, чтобы потом кто-то другой легко к нему подключился, добавил в список обновлений своего платного софта жирную надпись, а потом за мои бесплатные наработки с народа начал требовать деньги. Как-то так .
Здравствуйте, mindsesoft, Вы писали:
M>вытащить оттуда зашитый в нее секретный ключ .
Вообще то секретный ключ на то и секретный, чтоб его хранить в надёжном месте, а не "зашивать" в программу.
M>Какие предложения?
В теории на 100% защититься нельзя никак.
Можно лишь как можно сильнее усложнить взломщику жизнь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: Какой алгоритм шифрования (защиты) выбрать?
Здравствуйте, mindsesoft, Вы писали:
M>Почему не хочу, чтобы другие пользовались? Да потому, что за аналогичную по функциональности программу другие люди и так просят денег, пытаются заработать. Дай им мой уникальный скрипт — будут и за него деньги с народа трясти. А моя программа предлагает все это бесплатно. Вот почему . Тем более, я не собираюсь платить за сервер, тратить свое время на разработку скрипта, улучшать его возможности, чтобы потом кто-то другой легко к нему подключился, добавил в список обновлений своего платного софта жирную надпись, а потом за мои бесплатные наработки с народа начал требовать деньги. Как-то так .
Тогда продавай аккаунты на сервере.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, mindsesoft, Вы писали:
M>Добрый день. M>Все никак не могу определиться, как реализовать защиту своего сервиса от посторонних программ .
M>Суть такова: на сервере имеется скрипт, который предлагает эксклюзивные данные. Имеется бесплатная программа, написанная мной, которая передает этому скрипту некоторые параметры, а взамен получает заветные данные. Проблема в том, что я крайне не хотел, чтобы кто-то другой, не пользующийся моей программой, мог пользоваться этим скриптом. Поэтому нужно данные шифровать. Но какой алгоритм лучше выбрать? Мне бы подошел RSA в чистом виде, но ведь программу могут декомпилировать и вытащить оттуда зашитый в нее секретный ключ . Использовать для этого алгоритм Диффи-Хеллмана? Но ведь другой человек может написать свой клиент, и сервер будет с ним исправно сотрудничать. В общем, что-то я окончательно запутался. Какие предложения?
M>Спасибо.
если прямо __очень__ хочется, то можно сделать так — выпускайте каждую неделю новую версию в которой меняйте ключ. программа по прошествии недели пусть требует апдейт, который осуществляется автоматически при первом запросе. при всем желании люди задолбаются каждую неделю расковыривать вашу версию (а можно сделать так, чтобы это было достаточно трудоемко) и выпускать по обновленной версии "другой программы" или же запутаются в различных уже устаревших версиях с уже неправильными ключами.
Re[2]: Какой алгоритм шифрования (защиты) выбрать?
__>если прямо __очень__ хочется, то можно сделать так — выпускайте каждую неделю новую версию в которой меняйте ключ. программа по прошествии недели пусть требует апдейт, который осуществляется автоматически при первом запросе. при всем желании люди задолбаются каждую неделю расковыривать вашу версию (а можно сделать так, чтобы это было достаточно трудоемко) и выпускать по обновленной версии "другой программы" или же запутаются в различных уже устаревших версиях с уже неправильными ключами.
В таком случае и сам разработчик задолбается программу каждую неделю править. Если программа бесплатная, а данные достаточно нужные, то никак не защифруешься. Самое просто — просто менять URL, по которому отдаются данные.
Т.е. ваша программа запрашивает данные и если возвращзется код 404, то она просто просит скачать новую версию.
Re[3]: Какой алгоритм шифрования (защиты) выбрать?
Хотя, самое надежное — это просто ввести обязательную регистрацию на вашем сервере. Тогда пользователям сторонних програм придётся в любом случае заходить на ваш сайт. И в этом случае, возможно, большинство перейдет на вашу программу, так как она "родная" для ваших данных.