LINUX.ORG.RU

Как защитить программу, привязать к ПК

 , , , ,


0

1

Тема не решаемая на 100%. Но опишу как получается на данный момент. Программа запускается на ПК и работает с сервером в интернете, соединяется с личным кабинетом и тогда проблем с защитой нет. Часть функционала мы отдаем с сервера. Но как быть если интернета нет?..

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

Но в чем вопрос? Работа без интернета допустима, но не поощряется (нужен просто аварийный вариант на 1,2,3,4 дня вдруг сервак накроется и т.д.). Таким образом :

  1. хотелось бы, чтобы программа начала подтормаживать без интернета и в какой-то момент вставала колом. Потом перезагрузка опять поработали и хватит. Но тут хотелось бы как-то в логику конфигурации базы данных такой алгоритм заложить.

Надо сказать, что обе базы данных шифруются без проблем через sqleet. Более того есть вариант с шифрацией прямо в оперативной памяти через эмуляцию файловой системы (vfs + sqleet). Но речь о другом: пароль от расшифровки базы данных надо хранить на ПК локально, т.к. когда интернета нет - базу расшифровывать при запуске по любому как-то надо.

Думаю пароль от базы как-то привязать к паспорту компьютера, то есть к id процессора (правда их может быть не один) и/или к номеру материнки и/или RAM. И тогда не хранить пароль в явном виде ни где не надо…

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

Заранее благодарен за любые варианты.



Последнее исправление: kkmspb (всего исправлений: 1)

Хочу добавить, все решалось бы если ЭЦП могла иметь физически органиченное например количество раз использования. Но такого не бывает…

Срок действия ЭЦП также не отменяет ее работоспособность после истечения срока действия сертификата.

kkmspb
() автор топика

Думаю пароль от базы как-то привязать к паспорту компьютера, то есть к id процессора (правда их может быть не один) и/или к номеру материнки и/или RAM. И тогда не хранить пароль в явном виде ни где не надо…

делай сразу dmidecode | sha512 вот тебе готовый ключ рабочего места, на остальные вопросы тоже есть решения - вопрос один - сколько денег у тебя есть?

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)
Ответ на: комментарий от cobold

Авторизация происходит при подключении пользователя к программе один раз, то есть идёт подключение к лк на сервере и далее в второй базе добляется пользователь.

Почему просто при запуске не писать сообщение, что для дальнейшей работы нужна авторизация на сервере?

Авторизация получается уже была. А писать сообщение - упростить работу ломатору.

kkmspb
() автор топика
Ответ на: комментарий от bigbit

Когда нет подключения к Интернету, шифруй потихоньку данные на диске пользователя. А когда есть подключение к Интернету - расшифровывай.

Тут надо понимать, какие данные шифровать. Если зашифровать некоторые колонки таблиц базы данных, то клиент не сможет потребить эти данные, то есть ограничение функционала произойдет.

Хотя да - это логично, частично можно ограничить функционал.

kkmspb
() автор топика

не изобретайте фигни..

для корпоративного софта и баз есть домены. Оттуда-же берутся юзеры, их права и ключи с экспирацией на случай «нет сети». Проверку железа и реквизитов пользователя сделают за вас и гораздо надёжнее.

а если просто ларёк с sqlite и «личным кабинетом» на хостинге, то и работайте исключительно через интернет.

MKuznetsov ★★★★★
()
Ответ на: комментарий от etwrq

hashicorp

похоже это очередной платный сервис для защиты данных? Я думаю их услуги не окупятся.

Мы не планируем много зарабатывать на своем софте.

kkmspb
() автор топика
Последнее исправление: kkmspb (всего исправлений: 1)

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

Есть онлайн при запуске - «функциональность1» пишем, и увеличиваем ++. Нет онлайна делаем просто ++ и считаем до «функциональность10» после которой не запускаемся. А находим там слово «функционал» - вообще форматируем все диски в ноль.

Toxo2 ★★★★
()
Последнее исправление: Toxo2 (всего исправлений: 1)
Ответ на: комментарий от MKuznetsov

а если просто ларёк с sqlite и «личным кабинетом» на хостинге, то и работайте исключительно через интернет.

Если через Вэб морду работать, то плохо оборудование подключается, точнее браузеры изолируют доступ к ресурсам компьютера, например к сом портам, и надо велосипедить. Оборудование в ларьках это гемморой. Тут ещё такой момент, что приложение под ОС на С++ это скорость не сравнимая ни с какой Вэб мордой.

kkmspb
() автор топика
Последнее исправление: kkmspb (всего исправлений: 2)

хотелось бы, чтобы программа начала подтормаживать без интернета и в какой-то момент вставала колом. Потом перезагрузка опять поработали и хватит. Но тут хотелось бы как-то в логику конфигурации базы данных такой алгоритм заложить.

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

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от kkmspb

Это все локально легко находится и эмулируется. Просто перезаписываешь файл с рабочим вариантом каждый раз - правильно?

Если еще накрутить - то можно каждый раз при наличии онлайна еще и новую соль к паролю подмешивать.

Toxo2 ★★★★
()

хотелось бы, чтобы программа начала подтормаживать без интернета и в какой-то момент вставала колом. Потом перезагрузка опять поработали и хватит.

За такое «погромирование» следует поставить отдельный котел в аду. Если не заявлена работа в оффлайне - пусть ее не будет совсем, зачем такой ужас «на полшишечки можно»?

X-Quark
()

по опыту: ты очень сильно тратишь время на вещи, которые не приводят к созданию нового.

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

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

Основная масса между ними, причем надо понимать, что чем больше сил ты тратишь на защиту ПО от взлома, тем чаще оно ломается у белых клиентов (которые тебе честно платят) и тем меньше ты пишешь полезного кода для них.

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

По делу: тебе помогут USB ключи гарданта, но с ними есть пара ньюансов:

  1. они иногда ломаются
  2. их не запустить в облаках

Лучше все эти усилия вложи в качество продукта, маркетинг и просто заработай больше.

max_lapshin ★★★★★
()

Гуглите про аппаратные ключи - такая шня которая втыкается в USB и без которой программа не работает. Есть готовые решения (контор не помню) но стоят довольно дорого - там сразу и ключ и библиотека для его привязки к коду.

Для тех кому это не нравится - есть узкоспециальный софт, который пишется для узкоспециальных контор а не для физлиц, разработка которого стоит больших денег и который в стиле опен-сорс не раздается а продается опять таки за большие деньги. Это нормально.

AntonI ★★★★
()

хотелось бы, чтобы программа начала подтормаживать и в какой-то момент вставала колом. Потом перезагрузка опять поработали и хватит.

Просто пиши прогу на электроне или питоне

alex1101
()
Ответ на: комментарий от AntonI

и библиотека для его привязки к коду

Я знаю как минимум одну такую библиотеку, от которой софт запускается через раз

Для тех кому это не нравится - есть узкоспециальный софт, который пишется для узкоспециальных контор а не для физлиц, разработка которого стоит больших денег и который в стиле опен-сорс не раздается а продается опять таки за большие деньги. Это нормально.

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

evgeny_aa ★★☆
()
Ответ на: комментарий от evgeny_aa

Зависит от кода. Есть вполне готовые отчуждаемые решения которые работают без тех кто их написал, с себестоимостью разработки (ЗП) дцать лямов.

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)

В типичном договоре на разработку ПО в РФ обязательно будет пункт про пеню и штрафы за «ухудшение качества». Вещи вроде Denuvo работают в первую очередь из-за массовости, когда потенциальные убытки от исков недовольных клиентов меньше потерь от пиратских продаж. И в странах где все очень жестко с интеллектуальной собственностью. Вообщем точно не ваш случай.

Еще это выглядит как промышленный терроризм - когда работодатель или заказчик вам чем-то насолил и вы решили вот так отомстить.

Плавали, знаем.

В этом случае обращаются к опытным товарищам (вроде меня) и вся эта «самопальная защита» улетает в голубые дали.

alex0x08 ★★★
()