Как защитить вызовы веб-сервисов от видимости

я использую Silverlight 5 и WCF .. и сайт защищен HTTPS. однако, если я использую fiddler, я вижу это в заголовках: GET /ClientBin/XXXX-Web-MyService.svc/binary/GetUsers

если я поставлю это сразу после своего домена: https://www.mydom.com/ClientBin/XXXX-Web-MyService.svc/binary/GetUsers

он будет загружать все данные от пользователей таблицы. как я могу скрыть и защитить эту информацию от просмотра!! недостаточно использует SSL? почему это все равно видно, если я использую https !?

Спасибо.

РЕДАКТИРОВАТЬ: мой первоначальный вопрос был своего рода «необразованным», и за это я извиняюсь,

я нашел больше информации по этому вопросу и сделал больше исследований. в этом вопросе о SO есть объяснение, почему fiddler может расшифровывать и просматривать запросы и ответы, отправленные через https.
В чем смысл SSL, если fiddler 2 может расшифровывать все вызовы через HTTPS?

и чтобы еще больше усложнить ситуацию, распространенным решением этой проблемы является использование "Закрепление сертификата", для которого требуется использование System.Net.ServicePointManager, который не включен в реализацию Silverlight пространства имен System.Net.

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


person Osama    schedule 25.02.2013    source источник
comment
https/SSL предназначен только для защиты информации в пути. Очевидно, что пользователь должен иметь возможность читать данные на другом конце. Но это предотвращает перехват или подделку данных в пути. Каковы именно ваши требования к транспорту данных? Похоже, у вас проблема с ненадежной платформой.   -  person Aron    schedule 25.02.2013
comment
спасибо за ваш комментарий @Aron, я обновил свой вопрос, добавив больше информации по этому вопросу.   -  person Osama    schedule 09.03.2013
comment
Опять таки. От чего вы пытаетесь защититься?   -  person Aron    schedule 10.03.2013
comment
fiddler и другие прокси-серверы для веб-отладки.   -  person Osama    schedule 10.03.2013
comment
PS вы понимаете, что единственная причина, по которой Fiddler работает, заключается в том, что вы, как администратор компьютера, сообщаете компьютеру, что Fiddler делает то, что мне нужно. И что Fiddler НЕ БУДЕТ работать на чужом компьютере?   -  person Aron    schedule 10.03.2013


Ответы (1)


С чисто теоретической точки зрения информатики то, о чем вы просите, почти невозможно или фактически невозможно. Вам потребуется внедрить доверенную платформу для защиты от атаки.

Теперь немного о науке. Сконцентрируйтесь

Итак, давайте начнем с базовой теории. SSL и, таким образом, HTTPS, решает очень специфическую проблему. Как вы передаете информацию через незащищенную конфиденциальную информацию СЕТИ со стороной, с которой вы никогда раньше не общались. В данном случае упор делается на СЕТЬ. Это достигается путем решения двух задач,

  1. Аутентификация сервера (сервер тот, за кого себя выдает)
  2. Асимметричное шифрование обмена ключами

Есть некоторое совпадение, чтобы убедиться, что это один шаг. Я сосредоточусь на первом, так как именно здесь скрипач «атакует» вашу систему.

Аутентификация SSL работает на концепции сети доверия. На вашем компьютере есть список ДОВЕРЕННЫХ верификаторов. Это такие компании, как Verisign, Thawte, Geotrust и т. д. Эти компании проверяют сертификаты, подписывая их (сложный термин асимметричного шифрования, но он очень похож на рукописную подпись, которую трудно подделать, легко проверить).

Fiddler работает, вставляя новый доверенный ЦС (верификатор) на ваш компьютер. С этого момента, когда вы посещаете HTTPS-сайт, он будет отправлять запросы от вашего имени, читать их, а затем пересылать обратно вам со своей СОБСТВЕННОЙ ПОДПИСЬЮ. Поскольку ваш компьютер полностью доверяет этой подписи, он считает, что все в порядке.

Теперь вы хотите реализовать закрепление сертификата. Это ИМХО "чертовски ужасно". Он работает, говоря вашему программному обеспечению ожидать определенный сертификат SSL. Две причины, почему это плохо.

  1. Если я могу работать с Fiddler, я могу работать с dotPeek и перекомпилировать БЕЗ закрепления сертификата.
  2. Когда ваш сертификат будет отозван, ваши клиенты не смогут подключиться.

Почему ваш сертификат может быть отозван? Если ваш центр сертификации потеряет свои закрытые ключи, они будут обязаны убедиться, что он отозван и вам отправлена ​​замена. Кроме того, у каждого сертификата есть дата продажи, и его необходимо заменить, прежде чем он начнет пахнуть.

Итак, наконец, что вы можете сделать?

SSL НЕ предназначен для защиты от того, что вы делаете на своем компьютере. Самый простой способ сделать то, что вы просите, — это просто обернуть ваши вызовы WCF дополнительным уровнем симметричного (или даже асимметричного) шифрования. Но еще раз. Ключи должны где-то жить, поэтому ваш клиент сможет получить ключи от простого дизассемблирования ваших двоичных файлов и сможет создать свой собственный прокси.

В заключение

Это почти то же самое, что и проблема DRM. Вы хотите предоставить своим клиентам доступ к чему-либо на их компьютере, но не показывать им, как это работает. Если вам удастся решить эту проблему, опубликуйте продолжение, поскольку Sony, Nintendo и Microsoft (и многие другие) будут очень заинтересованы в ваших выводах.

person Aron    schedule 10.03.2013