Шифрование сообщений WCF без аутентификации / авторизации или сертификатов - PullRequest
1 голос
/ 06 июня 2011

У меня есть проект .NET 4.0 с двумя модулями, которые будут взаимодействовать через службы WCF, и я хотел бы реализовать специальный механизм шифрования.

Мой сценарий:

  • Я управляю обеими конечными точками (клиентом и сервером), но не связью между ними

  • Проверка подлинности Windows не обсуждается, поскольку на данный момент я не знаю, где будут развернуты модулии, скорее всего, они будут в разных доменах

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

  • Я бы хотел обмениваться данными с помощью двоичной сериализации

  • Я не хочу иметь дело с настройкой сертификатов на стороне клиента или сервера

Может кто-нибудь указать, что было бы наиболее очевидным решением дляреализовать этот сценарий с помощью WCF?

1 Ответ

2 голосов
/ 06 июня 2011

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

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

  • Шифрование всего сообщения - для этого потребуется специальный кодировщик сообщений, который может быть довольно сложным для записи.
  • Шифрование тела сообщения - вы можете написать пользовательский IMessageInspector, который будет заниматься шифрованием и дешифрованием тела сообщения. Заголовки будут по-прежнему в виде простого текста, что необходимо, если только вы не захотите изменить многие другие вещи в обработке WCF. Вы можете обернуть инспектор в пользовательский IEndpointBehavior и использовать его обязательно в коде или декларативно в конфигурации (вам также понадобится реализовать пользовательский BehaviorExtenxionElement).
  • Шифрование только некоторых операций, помеченных пользовательским IOperationBehavior или некоторых данных, помеченных поведением IContractBehavior, и использование IParameterInspector для расшифровки и шифрования значения.

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

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