Нет идеального пути, но вызов / ответ лучше, чем ключ.
Сертификат ДОЛЖЕН использовать запрос / ответ. Вы отправляете случайную строку, она шифрует ее с помощью закрытого ключа сертификата, затем вы возвращаете ее и расшифровываете с помощью открытого ключа.
В зависимости от того, насколько хорошо материал поддерживается на iPhone, реализация будет между тривиальной и сложной задачей.
Хорошая средняя дорога, которую я использую, это xor. Он немного более безопасен, чем пароль, прост в реализации и требует не менее часа или двух усилий для взлома.
- Ваше приложение поставляется со встроенным номером (ключ).
- Когда приложение подключается к вам, вы генерируете случайное число (с тем же количеством битов, что и ключ) и отправляете его на телефон
- Приложение получает номер, возвращает его с помощью ключа и отправляет результат обратно.
- На сервере вы сохраняете возвращенный результат с помощью ключа, который должен привести к исходному случайному числу.
Это лишь немного устойчиво к хакерским атакам, но вы можете использовать другие методы, чтобы сделать его лучше, например, менять ключ при каждом обновлении программного обеспечения, скрывать случайное число с другим случайным числом и т. Д. Есть много хитростей, чтобы скрывая это, но в конце концов хакеры найдут это. Изменение методологии с каждым обновлением может помочь.
В любом случае, xor - это взлом, но он работает в случаях, когда отправка пароля немного взломана.
Разница между xor и открытым ключом заключается в том, что xor ЛЕГКО обратим, просто следя за успешным разговором, открытый ключ (теоретически) необратим без значительных ресурсов и времени.