Как сделать файл, который пользователь может читать, но не писать? - PullRequest
0 голосов
/ 22 ноября 2010

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

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

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


Разве я не могу просто дать пользователю один ключ и сохранить другой? ОН может читать, а я могу писать

Ответы [ 5 ]

2 голосов
/ 22 ноября 2010

Вы можете использовать лицензию, такую ​​как Система лицензий FlexNet Publisher .

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

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

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

Конечно, выПридется заплатить лицензионный сбор за использование программного обеспечения Flexera Software.И, возможно, даже существует какая-то реализация схемы лицензирования FlexNet с «открытым исходным кодом», хотя я ее не знаю.

Я никогда не использовал ее, потому что полностью верю в философию открытого программного обеспечения.,Это и тот факт, что никто не заплатит ни цента за все, что я написал.

2 голосов
/ 22 ноября 2010

Если у вас есть файл с надписью «Да, возможно, программное обеспечение запущено», вы, конечно, не можете помешать ему скопировать этот файл.

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

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

1 голос
/ 25 ноября 2010

Звучит так, будто вы ищете цифровую подпись.

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

Очевидно, что пользователь может просто пропатчить код проверки лицензии сам- либо заменить ваш открытый ключ своим собственным, либо просто избежать проверки лицензии altogther - но на самом деле вы ничего не можете с этим поделать.

1 голос
/ 22 ноября 2010

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

Лучший вопрос: «Сколько работы я готов потратить на то, чтобы моему клиенту было сложно получить мой код?» Как бы то ни было, язык и метод в конечном итоге запускаются, а когда запускаются, их можно прочитать.

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

0 голосов
/ 22 ноября 2010

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

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

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

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