2011-01-20 7 views
1

Вот мой сценарий: мне нужно распространять дополнительные пакеты контента для приложения Android безопасным/защищенным способом, то есть предотвращать загрузку содержимого извне приложения. Содержимое состоит из файлов архивации базы данных SQLite размером до 4 мегабайт. Пакеты будут обновляться 4 раза в год. В настоящее время у меня около 1000 активных установок. Это означает, что в пиковые времена трафик для загрузки обновлений пакета контента может составлять около 4 ГБ в день. Инсталляционная база приложения растет примерно на 100 пользователей в день.Безопасное/защищенное распространение контента для Android-приложения

Основываясь на сценарии, я задаюсь вопросом, как решить следующие вопросы:

  1. Что бы быть лучшим способом распространять контент? HTTPS транспорт? Каким будет рекомендуемый способ аутентификации (например, пароли, сертификаты)? Должен ли я использовать защищенные паролем файлы Zip?

  2. Какая инфраструктура должна быть использована для доставки контента, который соответствует следующим критериям:

    • поддержка механизма защиты от 1) из коробки
    • проста в установке и обслуживании
    • масштабируемой и загрузочные узлы в Европе и США
    • относительно недорогой (не более 30 $ в месяц). В идеале плата за пропускную способность.

Я рассматривал CDNs как SoftLayer, Amazon CloudFront, и т.д. Любые рекомендации?

+0

«Мне нужно распространять дополнительные пакеты контента для приложения Android защищенным способом/защищенным способом, то есть предотвращать загрузку содержимого извне приложения». - по определению это невозможно. Независимо от того, какие средства вы используете, можно использовать обратное преобразование из приложения и использовать его в другом месте. Вы можете использовать обфускацию кода, чтобы попытаться сделать это немного сложнее, но это в значительной степени. – CommonsWare

+0

Я знаю, что получить 100% -ное безопасное решение невозможно. Тем не менее я не хочу, чтобы кто-то захватывал данные, просто просматривая URL-адрес загрузки. Поэтому было бы здорово использовать хотя бы защиту паролем и скрыть пароль в приложении, чтобы сделать все сложнее. Любые рекомендации, как я мог это сделать? – Philipp

+1

100 пользователей в день и есть 1000 пользователей? Я не думаю, что вы можете получить значимую статистику. – Falmarri

ответ

2

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

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

+0

Спасибо за ваш ответ. Где вы будете хранить криптографический ключ внутри приложения? Не могли бы вы порекомендовать любую библиотеку для этой цели? Достаточно ли пароля zip-файла? – Philipp

+0

Все, что вам нужно, кроме ключа, должно быть в Android.Посмотрите javax.crypto под Android. Ключ должен храниться в приложении, возможно, в виде строки. – Andrew

+0

Я не уверен, какая поддержка существует в Android для защищенных паролем zip-файлов, но они обычно считаются менее безопасными. Оба решения - это только базовый уровень защиты честных людей. – Andrew

Смежные вопросы