Аутентификация клиента сервером - PullRequest
3 голосов
/ 01 октября 2010

У меня есть Java-приложение, которое должно подключаться к серверу. Достаточно просто убедиться, что сервер не подделан с использованием SSL, но я не могу понять, как сервер будет аутентифицировать клиента, чтобы гарантировать, что запрос поступает только от доверенной стороны. Только первое сообщение должно быть аутентифицировано. На этом этапе связи клиент и сервер будут обмениваться некоторой информацией, которая будет использоваться для последующей аутентификации клиента.

Один из подходов, который я могу придумать, - это подписать приложение цифровой подписью, а затем отправить цифровую подпись приложения на сервер. Сервер проверяет цифровую подпись для аутентификации клиента. Теперь у меня есть пара вопросов по этому поводу:

  1. Можно ли получить цифровая подпись приложения от внутри себя. Если это так, то как? (Я пытался найти это на Интернет, но не мог найти способ сделать это)
  2. Можно ли извлечь эту подпись другими способами, такими как HEX редактор. Если это известно, то любой может просто отправить эту подпись на сервер и подделать клиента.

Кроме того, пожалуйста, дайте мне знать, если я совершенно не в том направлении:)

РЕДАКТИРОВАТЬ: Под «доверенной стороной» я подразумеваю «неизмененного клиента»

1 Ответ

4 голосов
/ 01 октября 2010

Также, пожалуйста, дайте мне знать, если я совершенно не на том пути здесь:)

Вы:)

Ваша цель - «обеспечить, чтобы запрос поступал только от доверенной стороны» - если «доверенная сторона» интерпретируется как «доверенный пользователь», это стандартная проблема аутентификации, которую ежедневно решают миллионы веб-сайтов по всему миру с помощью простая аутентификация по паролю. Если вы хотите выглядеть модно (и неудобно / дорого), вы можете использовать клиентские сертификаты SSL или токены RSA .

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

Хорошо, забудь об этом. Это невозможно, если вы не позволите пользователю использовать только физически защищенное оборудование, предоставленное вами. Просто невозможно защитить программное обеспечение от произвольного манипулирования кем-либо, кто контролирует его среду выполнения. Киноиндустрия потратила миллиарды, заставила новые стандарты усложнять и дороже внедрять из-за требований к шифрованию и лицензиям, и оттолкнула многих своих клиентов, пытающихся это сделать, и потерпела неудачу (неоднократно).

Edit: Кажется, что речь идет даже не о клиенте (как в защите от модификации, обычно это означает меры по борьбе с пиратством), а, очевидно, о контроле доступа к серверу. В этом случае перестаньте тратить время на мысли о клиенте. Это не твоя проблема. Доступ к серверу есть. Итак, начните думать о протоколе, как он аутентифицирует клиентов и какие запросы он будет принимать. Исправьте протокол так, чтобы «притворяться клиентом» не было проблемой, потому что запросы, отличные от тех, которые может отправлять законный клиент, просто не будут приниматься.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...