powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / client<->WCF: как генернуть ключи?
12 сообщений из 12, страница 1 из 1
client<->WCF: как генернуть ключи?
    #36886829
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такая идея:
клиент передает сктроку идентифицирующую его в сервис, сейчас это гуид, он постоянный для типов приложений.
Сервис берет строку, проверяет ее в своей базе и просто говоря разрешает работать или не разрешает.
Для того, чтобы не передавать строку в открытом виде я кодирую ее в сервисе и в клиенте
так:

Code:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
     public string EncryptString(string _pwd, string _salt, string dataToEncrypt)
        {
            byte[] key = GetHashKey(_pwd, _salt);
            return Encrypt_(key, dataToEncrypt);
        }
        internal string Encrypt_(byte[] key, string dataToEncrypt)
        {
            AesManaged encryptor = new AesManaged();
            encryptor.Key = key;
            encryptor.IV = key;
            using (MemoryStream encryptionStream = new MemoryStream())
            {
                using (CryptoStream encrypt = new CryptoStream(encryptionStream, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    byte[] data = UTF8Encoding.UTF8.GetBytes(dataToEncrypt);
                    encrypt.Write(data,  0 , data.Length);
                    encrypt.FlushFinalBlock();
                    encrypt.Close();
                    return Convert.ToBase64String(encryptionStream.ToArray());
                }
            }
        }


Естественно используются на обоих концах одинаковые строки
string _pwd, string _salt

Вопрос: как можно генерировать на обоих концах эти строки динамически, но естественно, чтобы они совпадали?

Universal time?
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36889798
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем сертификаты не устроили для защиты канала
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36890839
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вполне понятно, как именно работает и что пытаемся сделать.

Я понял следующее:
1. Сервис реализует некий функционал, доступность которого (или доступность данных) зависит от типа клиента.
2. Тип клиента определяется по GUID, который хранится на клиенте, но при передаче серверу вы его шифруете, видимо, чтобы исключить перехват.
3. Вы хотите динамически генерировать ключи для шифрования ...

Вот собственно и вопрос - а для чего нужен п. 3?
Посколько схема мне не очень понятна, я рискну предложить свои варианты (и возможно они будут не вполне адекватны вашей ситуации) исходя из того, что вы не боитесь потери секрета на клиенте, но вас беспокоит передача части данных скрыто по сети:

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

2. Использовать шифрование на уровне пакетов или канала (SSL). Единственное возражение здесь: будет некоторый overhead, а все за ради одного поля.

3. Шифровать поле, при этом обмениваться ключами в рамках сессии. Самый известный из подобных способов, это схема Диффи-Хеллмана . На сколько я смотрел, в стандартном .Net реализации этого алгоритма нет, но вроде бы он поддерживается CryptoAPI + есть свободные реализации в сети.

Но повторюсь еще раз: не зная до конца ваших условий трудно что-либо советовать.
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36892793
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Михаил Р
Не вполне понятно, как именно работает и что пытаемся сделать.

Я понял следующее:
1. Сервис реализует некий функционал, доступность которого (или доступность данных) зависит от типа клиента.
2. Тип клиента определяется по GUID, который хранится на клиенте, но при передаче серверу вы его шифруете, видимо, чтобы исключить перехват.
3. Вы хотите динамически генерировать ключи для шифрования ...


1. да, сервис реализует общий функционал, которым ползуются несколько разных типов клиентов
2. да, сейчас клиент передает свой гуид сервису, а он передает его дальше отдельно стоящему серверу лицензий и получает\не получает лицензию на работу именно этого приложения. Т.е.
юзер купил сервис, и 5 лицензий для приложения типа А, 3 для приложения типа Б, 20 для типа С.
3. да, ну как пример: чтобы юзер не мог склёпать свое приложение и пользоваться сервисом, используя известный гуид для существующего типа приложения, купленного честно.

Ну и чтобы минимально "завуалировать" открытый гуид хотелось бы чего-то эдакого
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36892801
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продолжу: хотелось бы хоть как-то минимально скрыть, и поудмалось о динамической генерации\шифровании гуидов, ежечасной смене, чтобы клиент слал, а сервер был в состоянии сшифровать...
а враг чтобы не мог легко подсунуться
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36893268
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно...

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

Все что вы можете сделать - максимально усложнить это повторение.
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36893329
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРПонятно...

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

Все что вы можете сделать - максимально усложнить это повторение .

да, понимаю
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36893350
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh,

вам уже barrabas ответил на впорос.

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

ЗЫ выше описан метод, как работают сертификаты, но если их использовать надо клиентам их делать трастед.
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36893382
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stimpi,

увы, это не решит описанной задачи - защиты от подлога клиентского ПО.
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36893483
Фотография barrabas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРstimpi,

увы, это не решит описанной задачи - защиты от подлога клиентского ПО.
почему вы не можете занести серийники сертификатов в БД?
Проводить другую проверку помимо защиты канала сертификатами?
У меня пользователи авторизаются по сертификатам, я в базе присваиваю сертификат пользователям и когда на сервис кто то ломится я знаю кто это.
для этого делается custom авторизация унаследовавшись от X509CertificateValidator
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36893532
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
barrabas,

Во-первых, не я, а автор топика.
Во-вторых, если вы перечитаете вот это сообщение, то поймете, что суть проблемы вовсе не в защите канала.
...
Рейтинг: 0 / 0
client<->WCF: как генернуть ключи?
    #36982404
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
было бы здорово увидеть реализацию авторизации как у WebMoney для light версии, где в браузер устанавливается сертификат и дальнейшая работа проходит прозрачно для клиента.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / client<->WCF: как генернуть ключи?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]