Как заставить PHP и IOS Iphone общаться вместе с шифрованием? - PullRequest
1 голос
/ 08 июня 2011

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

Какое решение я могу использовать, которое будет работать как на iphone, android, так и на php?

Я искал openssl, но на Android это совершенно невозможно.

Меня интересует крипто-библиотека ... Кто-нибудь знает что-нибудь или есть идея?

спасибо.


Но что, если вы не хотите использовать SSL?

Хорошо, теперь попробуем лучше объяснить, что мы хотим защитить.У нас есть программное обеспечение на Android и iPhone, которое использует некоторые веб-сервисы нашего php-сервера.Мы не хотим, чтобы кто-то еще использовал наши веб-сервисы.Мы могли бы использовать SSL для связи между программным обеспечением и php-сервером, но, например, на Android очень легко разобрать программное обеспечение Android и затем получить доступ к хорошему коду ... Итак, мы ищем, как мы можем лучше защитить такое программное обеспечение, какшифрование разговоров .. или любая другая идея ...

Ответы [ 3 ]

2 голосов
/ 08 июня 2011

Просто запустите соединение по SSL.

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

На Android см. Этот предыдущий поток SO

UPDATE;

Причины, по которым изобретатель не изобретает велосипед, включают в себя

  • SSL проверен и испытан в промышленности. Зачем пытаться делать что-то еще?Он встроен в устройства, которые вы хотите использовать, он работает и в основном идеально подходит для шифрования трафика с мобильного устройства на сервер.Если вы не работаете в иностранном правительстве, я действительно не вижу ни одного действительного случая, чтобы избежать проверенного, проверенного, «это просто работает» SSL.

  • Вы, вероятно, не криптографэксперт.Удивительно просто по-настоящему испортить подобные вещи, развернув собственное решение, даже если для этого нужны какие-то другие стандартные компоненты.Вы, скорее всего, сделаете его смехотворно простым для взлома, чем сделав его «лучше», чем SSL.

  • Экспортные головные боли соответствия - как только вы начнете использовать нестандартное шифрование, у вас будетзарегистрироваться в правительстве США для криптографического экспорта.Технически вы должны это сделать, даже если вы используете SSL, но, используя что-то нестандартное, вы внезапно обнаружите, что не можете использовать какие-либо исключения из более строгого лицензирования экспорта, и ваши головные боли администратора умножатся.

1 голос
/ 09 июня 2011

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

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

0 голосов
/ 08 июня 2011

ОК, в свете новой информации, я отвечу на это снова.

То, что вы описываете, это контроль доступа.Это не имеет ничего общего с шифрованием, за исключением того, что имеет смысл передавать учетные данные пользователя по SSL; -)

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

Чтобы установить действительность пользователя / устройства, в первую очередь, для доступа к услуге, вам, вероятно, понадобится какая-то процедура регистрации на основе электронной почты или SMS, которая позволяет вашему серверуубедитесь, что запрашивающая сторона уполномочена делать будущие запросы.

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