Общие/Введение.
Я работаю над проектом, в котором у нас есть две части программного обеспечения. Существует клиентское приложение, которое запускается на компьютере пользователя, и веб-приложение, которое управляет многими вещами, связанными с этим проектом.
Клиентское приложение считывает множество различных значений через IPC из другой программы, исходного кода которой у меня нет, и у меня нет возможности что-либо изменить в той другой программе, из которой я читаю.
Итак, мое приложение собирает эти значения и сохраняет их локально, поскольку оно не всегда подключено к веб-приложению.
Поскольку веб-приложение строит статистику и многое другое из этих значений, и поскольку собранные значения очень важны для всего проекта, пользователь не должен иметь возможности их изменить (или, по крайней мере, это должно быть очень сложно - я почти уверен вы не можете обеспечить 100% безопасность данных на клиенте).
Просто для полной информации: клиентское приложение написано на C#, а веб-приложение основано на Laravel Framework (PHP). Но этот вопрос больше о теории, чем о том, как это закодировать.
Мои мысли
Я думал об асимметричном шифровании. Клиент шифрует данные открытым ключом сервера веб-приложений. Теперь данные хранятся в зашифрованном виде. Но, конечно, у клиента есть этот открытый ключ. Следовательно, злоумышленник может просто зашифровать свои измененные значения и сохранить их в файле.
Еще одна мысль, основанная на шифровании, заключалась в том, что я мог бы зашифровать не только данные, но и весь файл, и использовать формат, который не слишком очевиден. Но это больше похоже на безопасность через неизвестность, и, насколько мне известно, этого следует избегать. Кроме того, можно просто декомпилировать клиентское приложение и мгновенно получить формат, который я использую.
Мой вопрос:
Могу ли я каким-либо образом обеспечить достойный уровень целостности при отправке этих данных на сервер? Если да, то как это можно сделать?
signing
. Однако здесь это довольно бессмысленно, потому что, если ваше клиентское приложение читает исходные данные «сырыми», вы ничего не можете с этим поделать. если вам нужно защитить данные от случайного редактирования, подумайте о том, чтобы хранить их таким образом, чтобы конечный пользователь не мог получить к ним доступ. Если это необходимо для защиты от реальных злонамеренных манипуляций, вам необходимо связаться с производителем приложения, которое создает дату, чтобы узнать, какой безопасный интерфейс они могут добавить. - person zaitsman   schedule 13.12.2017