2013-09-14 2 views
2

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

У меня было несколько способов, но у каждого был свой улов.

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

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

Используйте сеть, чтобы проверить некоторые способы (??), которые я предпочитал не ограничивать пользователей этой потребностью.

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

Есть ли какой-либо другой способ сделать структуру для разработчика, но также позволить ей работать со всеми другими пользователями в AppStore, когда ее там?

Спасибо.

+1

Что делать, если вместо того, чтобы предоставлять каждому клиенту уникальный идентификатор, вы запрашиваете у них свой идентификатор компании (com.yourcompanyname. *) И зарываете это в свой код. Затем сделайте ваш код работать только в том случае, если идентификатор bundleID хост-приложения соответствует шаблону. Теперь они могут предоставить структуру всем, но другая сторона вынуждена использовать обратный домен вашего клиента (огромное раздражение?). –

+1

Это очень интересный способ! я должен проверить это, чтобы увидеть, не пропустили ли мы что-нибудь. большое спасибо . – Curnelious

ответ

1

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

Вы также можете подписать (с помощью инструмента codeign) каркас с уникальным сертификатом для каждого клиента.

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

+0

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

+1

Я не уверен, как это работает PSPDFKit, но, возможно, он проверяет код на сервере. Затем вы можете использовать черный список кодов, которые распространяются в Интернете. Вы никогда не найдете решение на 100% (или даже 90%), которое не будет раздражать ваших клиентов. – diederikh

3

@diederikh делает очень хорошие очки, и NicolasMiari также обеспечивает хорошее понимание. Лучший ответ ИМО - это комбинация этих двух. (Принимая во внимание превосходный совет умерших, ваша цель состоит в том, чтобы придумать что-то простое, что усложнит работу с законными клиентами.)

Вместо того, чтобы перекомпилировать всю структуру для каждого клиента, вы делаете свой лицензионный ключ зависеть от их идентификатор связки. Они отправляют вам свой идентификатор связки. Вы используете свой секретный ключ и подписываете свой идентификатор пакета. Это дает вам хэш, который вы отправляете им. Теперь во время выполнения ваша инфраструктура использует открытый ключ (который не чувствителен, вы можете публиковать его в любом месте), чтобы проверить свою подпись. См. SecKeyRawVerify() для этого в iOS.

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

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

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

Смежные вопросы