Шифрование данных на прикладном уровне поверх ssl

Я занимаюсь разработкой веб-сайта и приложения (iOS и Android), которые должны передавать данные через https. Я не хочу, чтобы клиенты приложения перехватывали эти сообщения сервера, но я хотел бы расшифровать эти данные внутри самого приложения. Итак: после запроса зашифруйте сообщение (скажем, сообщение размером до 400 КБ) (1-е шифрование), отправьте через https (шифрование SSL) (2-е шифрование). после получения расшифровать ssl, на уровне клиента расшифровать зашифрованное сообщение. (Я не хочу, чтобы некоторые боты нюхали мою базу данных через https, замаскировав мое приложение). Как вы думаете, как мне обойти эту проблему?

Я имею в виду, что с https все в порядке, но если кто-то отправляет запросы вместо приложения, все это будет бесполезно, поскольку я хочу защитить данные БД.

Какие-либо предложения ? идеи?

Спасибо


person Ted    schedule 22.10.2011    source источник


Ответы (3)


Все, что вам нужно здесь, это HTTPS/SSL с аутентификацией клиента. Добавление второго уровня шифрования фактически не повышает безопасность. PKI аутентификация клиента делает.

person user207421    schedule 22.10.2011

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

Это не то, что вы можете решить полностью: ваш сервер не может надежно отличить настоящее клиентское приложение от поддельного, созданного кем-то, кто реконструировал настоящее, чтобы имитировать его.

В зависимости от приложения вы можете перенести часть работы на сервер. Другими словами, не предоставляйте приложению необработанные данные, а просто раскрывайте те их части, которые приложению разрешено отображать. Таким образом, злоумышленник не сможет получить ничего, подделав приложение, чего он не мог бы получить, просто используя настоящее.

person Wyzard    schedule 22.10.2011

На самом деле мне пришла в голову идея зашифровать запрос, а не ответ. таким образом пользователь не может подделывать и отправлять запросы в БД. Я просто подумал, что повторное шифрование может быть слишком много для слишком мало.

person Ted    schedule 23.10.2011