Как сохранить конфиденциальную информацию в Client-Side-Binary? - PullRequest
6 голосов
/ 02 января 2012

Я с нетерпением жду разработки приложения для Android / iPhone, в котором будет использоваться частный API (Non-Free) со встроенным клиентским ключом.

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

Как это сделать? Можете ли вы дать ссылки на статьи, обсуждающие такие ситуации?

Учитывая, что у меня есть доступ для разработки к частному API, какой механизм я могу встроить в него, чтобы сохранить конфиденциальность всей системы.

1 Ответ

0 голосов
/ 02 января 2012

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

1) если это не «ваш» API, не помещайте ключ в приложение, а на сервер, на котором вы работаете, чтобы служить прокси длясторонняя служба (вы, вероятно, все еще хотите, чтобы другой ключ для вашего сервера входил в приложение)

2) зашифровывает / шифрует ключ, чтобы его было нелегко захватить:

  • простопример для шифрования: поместите ключ в файл;генерировать случайный файл одинаковой длины;xor файл ключа со случайным файлом (и снова запишите его на диск);всякий раз, когда вам нужно, чтобы ключ прочитал оба файла и снова зарезервировал их (подойдет любая обратимая операция вместо xor - более сложная операция, разбросанная по вашему коду, усложнит для обратного инженера)
  • зашифруйте ваш ключ, используяпарольная фраза распространяется на ваше приложение (при развертывании приложения для Android все равно запутываются, поэтому найти его становится немного сложнее)

3), если это ваш сервис или у вас настроен прокси, ограничьте количество использованийдля каждого клиента / IP-адреса или предлагать только части службы через прокси-сервер

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

...