Несколько схожих вопросов было задано ранее на SO, но мне еще предстоит найти тот, который точно определяет, что я пытаюсь сделать.
У меня есть приложение для iOS, для которого я пытаюсь создать достаточно безопасную систему лицензирования.
Будет центральный сервер (на основе PHP) с внешним интерфейсом, где люди могут покупать лицензии на использование программного обеспечения, и внутренняя база данных, в которой хранится вся информация о лицензировании.
Из приложения для iOS пользователи смогут ввести лицензионный ключ, который затем будет отправлен на сервер, сверен с базой данных, а сервер ответит информацией, относящейся к этой лицензии (например, срок действия), или ответит сообщением «сбой аутентификации», если такой лицензии не существует.
Вопрос в том, как лучше всего это реализовать, и какие технологии следует развернуть, чтобы это работало.
Моим первым инстинктом было бы сделать шифрование RSA с открытым ключом, чтобы сервер мог подписать все лицензионные ключи, а приложение могло их проверить. Но это перебор?
Будет ли достаточным использование SSL на уровне сокетов для обеспечения законности лицензионного ключа? (или могут ли злоумышленники создавать поддельные записи DNS и выдавать себя за сервер лицензий и всегда отправлять действительные лицензии?)
Я пытаюсь найти довольно аккуратное и простое решение, которое также хорошо работает между Objective-C / iOS и PHP.