Возможно ли принудительное выполнение вызовов веб-службы только от известного клиента? - PullRequest
1 голос
/ 22 августа 2009

Сценарий:

Общедоступный веб-сервис, который я полностью контролирую. Но я только хочу, чтобы это конкретное настольное приложение (мое опубликованное приложение) имело доступ к веб-службе. Я мог бы сохранить секретный пароль в клиенте рабочего стола, но его было бы легко взломать.

Есть ли известная реализация, которая обеспечивает это? PKI, ассиметричные ключи?

Ответы [ 3 ]

3 голосов
/ 22 августа 2009

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

Задача криптографии - защитить данные во время их передачи от хакеров "среднего звена", но если у вас есть доступ к любому из пиров, вы можете легко взломать его.

Ваш сервер никогда не должен доверять тому, что исходит со стороны клиента.

[редактировать резюме]

Несмотря на то, что вы не можете на 100% гарантировать, что предполагаемый клиент для вашего сервера является или не является вашим Приложением или каким-либо «эмулятором», созданным сторонними разработчиками, вы можете усложнить им задачу. Обычная практика в игровых античитах - иногда случайным образом превращать клиентское приложение в хитрый вопрос типа «какой хеш вашего main.exe из смещения A в смещение B?» или «с этого момента свопы типа 0x07 с типом пакета 0x5f». Как только подделка обнаружена, сервер входит в «глупый режим», действует неправильно и в течение нескольких часов помещает в черный список свои IP / учетные записи, чтобы они не могли быть уверены в том, что их программа делает неправильно.

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

1 голос
/ 22 августа 2009

WS-Security обеспечивает шифрование X509.

Часть этой реализации включает возможность предоставления только определенным клиентам сгенерированного открытого ключа. Таким образом, только выбранные клиенты могут подключаться к услуге.

0 голосов
/ 22 августа 2009

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

Если вы используете IIS для размещения службы, клиентские сертификаты, использующие SSL, являются еще одним вариантом.

Ссылка MSDN на WCF Security .

...