Маркировка нечувствительных данных, чтобы предотвратить отправку из внешних источников, вместо полного шифрования? (отправка мобильного приложения на сервер)
Я хочу отправить нечувствительные данные из мобильного приложения на сервер. Но я не хочу, чтобы внешние источники могли предоставлять данные.
Я хотел бы высказать мнение о том, достаточно ли пометить запросы формулой хэша.
Например:
MD5(MD5(message)+secretString)
Сообщения будут уникальными, и между отправками из одного источника будет минимальный интервал в 10 минут (если запрос поступит из того же источника до этого времени, он будет отклонен). Вот почему я думаю, что не стоит прилагать усилия для полного шифрования запросов, но, поскольку у меня нет опыта в этой области, я решил посоветоваться с сообществом.
Заранее спасибо.
2 ответа
Подход выглядит хорошо, хотя несколько соображений:
secretString
может быть извлечено довольно легко для приложения. Единственным фактором здесь является мотивация атакующего.- рассмотрите возможность замены MD5 на SHA-1. Хотя в MD5 нет фатальной уязвимости, изменение является тривиальным и более безопасным.
- не используйте IP-адреса для защиты "одного источника". Мобильные устройства проходят через операторские сети и совместно используют небольшой IP-блок.
- рассмотрите возможность добавления уникального увеличивающегося числа в запрос, чтобы избежать повторных атак.
Вы говорите, что хотите отправить данные на сервер, но если вы сделаете хеш, данные больше не будут восстановлены сервером. Не только злоумышленник, но даже сервер не будет знать, что это за данные. Использование шифрования - лучший способ решить эту проблему, если вы хотите добиться конфиденциальности. Как уже упоминал другой пользователь, наличие фиксированной секретной строки в приложении не приносит вам никакой пользы, так как ее можно легко восстановить. Вы не можете полагаться на то, что кто-то не знает, что "формула" обращения приложения проще, чем думают люди. Так что безопасность через неизвестность - определенно не тот путь. Если вы хотите использовать солт, используйте безопасный генератор случайных чисел, но тогда у вас есть дополнительная задача, чтобы иметь ту же соль на сервере для проверки (и серверу нужно заранее получить сообщение).