#security #gps #distance
#Безопасность #gps #расстояние
Вопрос:
В настоящее время я создаю мобильное приложение, в котором серверу необходимо вычислять расстояние между клиентами. Если возможно, я хотел бы уважать конфиденциальность пользователей и не передавать точное исправление GPS на сервер.
Могу ли я каким-либо образом изменить исправления GPS, чтобы сервер не знал, где находятся клиенты, но все равно мог вычислить точное расстояние между двумя из них?
Ответ №1:
Если клиенты не могут напрямую общаться друг с другом, тогда нет, не напрямую.
Чтобы рассчитать расстояние между двумя точками, вам нужно знать, где находятся эти две точки по отношению друг к другу. Координаты дают вам это понять. Вместо этого вы могли бы отправить обратно относительные позиции чему-то другому, но серверу все равно нужно было бы знать, что это за что-то еще.
Вы могли бы размыть данные, но тогда вы повредите точности.
Возможно ли вместо этого, чтобы два устройства использовали какой-то предварительно разделяемый ключ для разблокировки / декодирования / расшифровки местоположений? Затем сервер будет просто передавать данные между клиентами, но только клиенты смогут декодировать координаты от другого и самостоятельно вычислять расстояние. Я думаю, это ваш лучший выбор.
Кроме того, 1 за то, что вы действительно хотите сохранить конфиденциальность пользователей!
Комментарии:
1. Спасибо. Я вроде как понял, что то, чего я хотел, невозможно, мне просто нужно было доказать это самому себе. Мое собственное доказательство заключается в том, что если бы существовала какая-то магическая функция, которая обеспечивала нужные мне свойства, т. е. точное местоположение неизвестно, но расстояние до любого другого местоположения известно, сервер мог бы просто указать несколько известных местоположений и использовать расстояния для триангуляции неизвестного местоположения.
Ответ №2:
Мне кажется, что оба клина, отправляющие свои точные координаты на сервер и рассчитывающие там расстояние, были бы лучшим вариантом для обеспечения конфиденциальности (и, возможно, также производительности)
т.е. Клиент A и клиент B отправляют свои координаты на сервер. Сервер вычисляет расстояние между двумя точками и отправляет обратно расстояние обоим клиентам.