Как безопасно общаться с моей собственной службой Windows - PullRequest
4 голосов
/ 06 февраля 2012

У меня есть .NET application и .NET Windows Service. Как я могу установить безопасный канал связи между этими двумя?

Большинство людей в Интернете рекомендуют общаться с Windows Services, используя Именованные каналы . Но, похоже, это может создать большую дыру в безопасности системы. Если какой-то чувак перепроектирует мое приложение, он узнает имя канала и протокол, который я использую, и это позволяет ему подключаться к моему сервису и делать все, что он захочет.

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

Так как спроектировать безопасный канал связи? Может ли служба каким-то образом получить доступ к программе, которая только что подключилась к своему каналу (чтобы я мог сравнить ее хеш при условии, что служба была установлена ​​в безопасном месте)? Или, может быть, использовать другой IPC ? Как Microsoft защищает свои собственные службы от этой дыры в безопасности?

Ответы [ 2 ]

7 голосов
/ 06 февраля 2012

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

Подробности здесь:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365600%28v=vs.85%29.aspx

0 голосов
/ 06 февраля 2012

Я бы взглянул на протокол шифрования, например, с помощью алгоритма шифрования RSA.И не имеет значения, какой протокол передачи вы используете (каналы, TCP / IP, сообщения и т. Д.).Любой из них может быть каким-то образом «прочитан».В вашем случае я бы использовал некоторый сетевой протокол (TCP / IP, UDP), чтобы иметь возможность масштабируемости бесплатно в будущем.Таким образом, клиент и сервер могут находиться на разных компьютерах / платформах.Но многое зависит от требований.Зачем вам на самом деле нужно защищать эти вещи, какие данные должны быть защищены (возможно, существуют более простые способы получить их для других), количество данных, другие?

...