У меня есть проект, в котором мне нужно совершать безопасные транзакции на веб-сервере HTTP.Я полностью контролирую клиента (мобильное приложение) и управляю сервером.Я хочу разработать систему, в которой клиент может добавить или вычесть значение, хранящееся в базе данных сервера.Сохраненное значение основано на валюте, поэтому важно, чтобы число было точным.Мой вопрос заключается в том, как я могу запретить кому-либо воспроизводить HTTP-трафик и удалять или добавлять значения по желанию.Кто-то может взять захват пакета от клиента, просмотреть параметры HTTP POST, необходимые для изменения значения валюты сервера, и просто воспроизводить эти пакеты, когда они захотят.
Первой моей мыслью было, чтобы клиент зашифровал новую валютузначение с открытым ключом, а затем сделать так, чтобы сервер расшифровал его с помощью закрытого ключа.Я также вставил бы временную метку и их имя пользователя вместе с новым значением валюты, прежде чем она будет зашифрована, поэтому запрос всегда будет другим.Затем сервер проверяет временную метку и отклоняет ее, если она прошла более 10 секунд.Одна из проблем этого подхода заключается в том, что клиент или сервер не синхронизированы по времени.Сервер будет синхронизирован с NTP, но нет никакой гарантии, что клиент будет правильным
Будут признательны за любые другие идеи.Я не ищу детали реализации низкого уровня, просто обзор высокого уровня.В идеале решение не будет слишком обременительным как для клиента, так и для сервера, поскольку скорость транзакций будет высокой.