Журнал аудита использования Защищенной лицензии на программное обеспечение

StackOverflow https://stackoverflow.com/questions/2130043

  •  22-09-2019
  •  | 
  •  

Вопрос

Люди,

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

В частности, TickZoom продает торговую платформу альфа-поколения для хедж-фондов, лицензия на которую, включая поддержку, в настоящее время стоит 2000 долларов в месяц (скоро увеличится более чем вдвое).Это прекрасно для учреждений, но слишком дорого для частных лиц.Частные лица часто просят более низкую цену в обмен на определенный процент от прибыли, полученной с помощью программного обеспечения, до тех пор, пока они не смогут позволить себе платить фиксированные сборы.

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

Это приложение написано на C #, и эта часть системы запутана, что, по крайней мере, затрудняет расшифровку кода.

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

Конечно, предполагается, что файл будет зашифрован.

Но есть какие-нибудь идеи о том, как сделать его "защищенным от несанкционированного доступа"?Особенно против простой попытки удаления?

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

Затем, когда мы поставляем программное обеспечение, оно упаковывается с "пустым" файлом аудита, но который, на самом деле, имеет своего рода проверку на предмет несанкционированного доступа.

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

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

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

С уважением, Вайнек

Это было полезно?

Решение

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

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

Не совсем надежный, но был бы довольно надежным.

Также, ознакомьтесь с этим вопросом

Другие советы

Формулировка вашей проблемы такова:

  • мы не доверяем клиенту;клиент может быть настроен враждебно.
  • мы хотим, чтобы клиент отправлял нам данные, которым мы можем доверять.

У этой проблемы нет решения.С таким же успехом вы могли бы сказать: "Я хочу найти двух парней, одного по имени Боб, другого по имени Билл, таких, чтобы Боб был на фут выше Билла, а Билл на фут выше Боба".Вы не найдете двух парней с такой собственностью.

Вы абсолютно точно не можете доверять чему-либо, что поступает с компьютера, который вам не принадлежит и который может принадлежать враждебно настроенному клиенту.Мой совет таков: не тратьте свое драгоценное время на попытки решить невыполнимую проблему;потратьте это время на то, чтобы сделать ваш сервер, которым вы владеете и которому доверяете, устойчивым к враждебным клиентам.

Нет, я не верю, что вы можете что-то сделать, кроме как сообщать обо всех доходах в режиме реального времени на свои серверы, но даже с этим есть проблемы.

-- Редактировать:

У вас есть только варианты, как я это вижу,:

  • Перевести систему на веб-интерфейс (или, по крайней мере, на тонкий клиент), тем самым производя все транзакции на сервере

Очевидно, что это, вероятно, довольно непрактично, если вы уже разработали целую локальную систему

  • Придумайте какую-нибудь сложную схему, которую "трудно" нарушить, и надейтесь, что люди ее не нарушат

И объедините в рамках этого метода своего рода профилирование, которое показывает, зарабатывают ли магазины X, и внезапно X-sigificantAmount, вы можете определить, что они даже больше не приносят прибыли, таким образом, вероятно, обманывая систему (или выходя из бизнеса :) Но это граничит с настоящим вторжением в частную жизнь и, возможно, совсем неуместно.

Практически, я думаю, вам нужно будет сопоставить риски с возможной прибылью или найти другой подход к тому, как продавать этим людям (т.е.только позвольте самому интерфейсу / приложению управлять X в total funds, если это произойдет, запросите pro версию или что-то еще).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top