Какие решения для обеспечения безопасности связи на стороне сервера и мобильного клиента? - PullRequest
2 голосов
/ 03 апреля 2012

Мои требования следующие:

  1. ограничить запросы только с мобильного устройства (iphone или android), то есть запросы из программы или браузера запрещены.
  2. сеансоснованный на разговоре.
  3. серверная сторона может восстановить данные почты, не измененные другими прокси или другими способами.
  4. Следует учитывать ситуацию, когда мобильное устройство может быть взломано.

Некоторые из моих мыслей по поводу моих требований:

  • соответствует 1: я хочу использовать RSA, я генерирую ключ и секрет, клиент использует ключ для шифрования данных, сервер использует свой секрет длярасшифруйте и проверьте ключ.Но как же ключ известен другим, когда взломан мобильный телефон.
  • , соответствующий 3: я хочу использовать алгоритм hmac и секретный ключ для генерации подписи для каждого запроса.

Есть ли проблемы с безопасностью в моих решениях?какие у тебя?

Обновлено : Я сожалею, что забыл упомянуть, что все требования обсуждаются на основе логина пользователя.

Ответы [ 3 ]

3 голосов
/ 03 апреля 2012
  1. Вы вообще не можете. Вам необходимо каким-либо образом аутентифицировать ваши мобильные приложения на сервере (личная учетная запись, учетная запись Google, сертификат клиента SSL и т. Д.)
  2. Используйте регулярные сеансы на основе файлов cookie. Используйте решение, которое предоставляет действительно случайные идентификаторы сеансов и защищено с помощью SSL для защиты от перехвата сеансов и т. Д.
  3. Использовать SSL (HTTPS)
  4. Не уверен, что это значит. Если вы выполняете аутентификацию для конкретного устройства, вам нужен способ отзыва учетных записей, чтобы не использовать украденный и т. Д. Телефон.

Последнее, но не менее важное: Не пытайтесь изобрести безопасный протокол. Используйте HTTPS и не думайте, что вы можете создать безопасное решение, просто потому что вы читаете книгу / блог / статью / учебник о Это.

Еще раз: Пожалуйста, используйте HTTPS .

0 голосов
/ 03 апреля 2012

Подумайте об использовании ASIHTTPRequest api и используйте SSL для большей защиты.Для взломанного мобильного телефона логин пользователя - это удобный способ добиться этого, и каждый раз, когда пользователь отправляет запрос POST, вы можете запросить пропуск.

0 голосов
/ 03 апреля 2012

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

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

Это сложная проблема. Я продолжу думать об этом и сообщу, если что-то придет в голову.

2) Для шифрования на основе сеанса вы можете использовать алгоритм обмена ключами Diffie-Hellman для согласования ключа сеанса, а затем использовать его для блокировки запросов к сеансу.

3) звучит хорошо.

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

...