Примитивная криптография Диффи-Хеллмана для обмена серверами приложений

Работа над приложением, которое позволяет пользователю звонить кому-то, нажимая на него. После вызова запускается новое действие FeedbackActivity, где пользователь вводит отзыв о загруженном человеке, который загружается, а сервер с течением времени обрабатывает номера и выдает «рейтинг».

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

http://www.example.com/feedback.php?personICalled=334875634&feedback=blahblahblah

в браузер и просто перезагружать его снова и снова.

Итак, нам нужно убедиться, что люди могут давать отзывы только о тех, кто действительно звонил.

У меня была идея, что какой-то токен будет отправлен на сервер, когда пользователь нажимает кнопку «Позвонить». Затем сервер сохраняет этот токен.

тогда, когда они впоследствии загружают обратную связь, это будет выглядеть так:

http://www.example.com/feedback.php?personICalled=334875634&feedback=blahblahblah,&token=[same token sent prior]

Таким образом, сервер проверяет, был ли когда-либо сохранен такой токен, и если да, то сохраняет обратную связь, в противном случае — нет.

Или, что еще лучше, может существовать секретная формула, известная только серверу (и приложению), в соответствии с которой [токен проверяется после получения обратной связи] является (сложной математической) функцией [токена, загруженного во время телефонного звонка].

Но, очевидно, это не так сложно для кого-то выяснить, взглянув на исходный код приложения или наблюдая соотношение y = f (x) с течением времени и выяснив формулу … и должен быть лучший способ сделать это.

Я читал о Диффи-Хеллмана обмен ключами … и, как мне кажется, должен быть способ реализовать это для этой цели … но я не выпускник Гарварда, и прошло немало времени с дискретной математики … и я не особо осведомлен о криптографии … и страница вики заставляет меня ранить голову !!!!

Возьмите эту диаграмму, например, Можете ли вы объяснить ZAT?

Если бы кто-нибудь мог сказать мне, как термины «Общая краска», «Секретные цвета», «Общественный транспорт» и «Общий секрет» переводят в мой сценарий, я думаю, что я мог бы просто понять это.

Я предполагаю, что Общественный транспорт = Интернет … Я дошел до этого.

0

Решение

Во-первых, Диффи-Хеллман не решит вашу проблему. Есть множество вещей, которые могут пойти не так в крипто, так что не играйте с этим, если вы действительно не знаете, что вам это нужно, и не знаете, для чего вы этого хотите.

Каково ваше реальное требование? Пользователь должен иметь возможность вводить отзыв только один раз за звонок. Вам не нужно крипто, чтобы решить эту проблему.

Когда пользователь звонит, генерируйте токен. Отправьте этот токен пользователю и сохраните его в базе данных. После завершения вызова разрешите пользователю «потреблять» токен, предоставляя обратную связь, связанную с этим токеном. Сервер проверяет, что токен существует в базе данных (и еще не использовался). Предполагая, что он есть, примите обратную связь, а затем удалите токен из базы данных (он был использован). Если его там нет, не принимайте отзывы.

Вы можете улучшить ситуацию, также сохранив время с токеном (время, когда оно было сгенерировано). Не позволяйте им предоставлять обратную связь, если они пытаются использовать ее слишком рано. Срок действия жетонов истекает, если они не потребляются после некоторого максимального периода жизни. Это препятствует тому, чтобы люди неоднократно вызывали пользователя или токены, которые постоянно жили в вашей базе данных (DoS).

Вы также можете ограничить людей по IP-адресу. Разрешить пользователю получать только один рейтинг с IP-адреса в любой разумный период времени (один день). IP-адреса могут быть сохранены вместе с обратной связью в базе данных.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]