iPhone: есть ли какой-либо безопасный способ установить двустороннюю SSL из приложения

StackOverflow https://stackoverflow.com/questions/2775138

Вопрос

Мне нужно создать HTTPS 2-Way SSL-соединение из моего приложения iPhone на сервер клиента. Однако я не вижу безопасного способа доставить сертификаты боковых клиентов в приложение (это приложение для электронного банка, поэтому безопасность действительно проблема). Из того, что я нашел до сих пор, единственный способ, которым приложение сможет получить доступ к сертификату, состоит в том, чтобы предоставить ему предварительно предусмотрено с собой приложение или выставить URL-адрес, из которого он может быть получен (Приложение для iPhone с CLECTS COMPLES SSL).

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

Весь протокол безопасности должен выглядеть так:
- HTTPS 2-Way SSL для аутентификации приложения
- ОТП (токен) На основании регистрации пользователя (паре клавиатуры для боковых клиентов, сгенерированные на этом этапе)
- SOAP / WSS XML-подпись (запросы, подписанные ключами, сгенерированными ранее)

Любая идея о том, как установить первый слой безопасности (HTTPS)?

Это было полезно?

Решение

Хорошо, чтобы ответить на мой вопрос ...

Оказалось, что безопасность не имеет фиксированной масштабы измерений. Требования к безопасности удовлетворены, пока цена для торможения система значительно выше приза, которую можно было бы сделать так.

В моей ситуации мы говорим о системе электронного банкинга, но с несколько низкими месячными ограничениями (пара тысяч долларов США). Как я уже упоминал в своем вопросе, был бы еще один слой безопасности выше HTTPS, которые будут включать WSS XML-подписи. Процесс регистрации пользователя и принятие своего открытого ключа также проводится на нескольких шагах. На первом этапе пользователь отправляет свой номер телефона вместе с помощью COD, полученного как-то от моего клиента. Затем SMS отправляется пользователю с кодом подтверждения. Пользователь вводит код подтверждения в калькулятор OTP, который бы создал бы код OTP, который будет идентифицировать пользователя. Затем открытый ключ отправляется на сервер вместе с кодом OTP. Отсюда на любой запрос будет подписан частным партнером открытого ключа, отправленного на сервер ранее.

Таким образом, самая большая слабость для всего процесса состоит в том, что кто-то обратный инженеров приложения и извлекает сертификат клиента, используемый для SLL. Единственная проблема, возникающая из этого, состоит в том, что кто-то может наблюдать за операциями пользователя. Однако для того, чтобы кто-то совершить транзакцию, ему понадобится закрытый ключ пользователя, который генерируется, зашифрован и хранится в брелок. И цена на торможение этого уровня безопасности очень высока.

Мы дополнительно подумаем о том, как защитить данные пользователей на более высоком уровне (например, с использованием шифрования WSS), но для начала я вещю мы хорошо с текущим решением.

Любое мнение?

С Уважением

Другие советы

HTTPS на самом деле не работает таким образом. В двух словах вы прикрепляете к безопасному серверу, где сертификаты подписаны хорошо известным органом.

Если вы используете классы яблок (iPhone) для этого, они будут принимать только «хорошие» сертификаты. Хорошо, я имею в виду, какое яблоко считает приемлемой. Если вы их не используете (в SDK есть альтернативы), вы не сможете подключиться (кроме, возможно, в случае, если у вас есть лицензия разработчиков предприятия - но я не могу сказать это с 100% уверенность в том, что я не выглядел достаточно по этой лицензии, чтобы быть уверенным)

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

Обратите внимание, что это означает, что ваше приложение придется запрашивать новые сертификаты в (каждое соединение / каждое x соединения / с каждым месяцем / приложением указанных интервалов), чтобы держать их в курсе. Затем вы можете использовать эти сертификаты для подключения к более безопасному серверу.

редактировать

Проверить это пост - может иметь дополнительную информацию о том, что вы просите сделать

/редактировать

edit2

Обратите внимание, что запрос является iPhone, а не OSX - Approw Approval Approval - это проблема

/ edit2

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top