|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
есть такая идея: клиент передает сктроку идентифицирующую его в сервис, сейчас это гуид, он постоянный для типов приложений. Сервис берет строку, проверяет ее в своей базе и просто говоря разрешает работать или не разрешает. Для того, чтобы не передавать строку в открытом виде я кодирую ее в сервисе и в клиенте так: Code: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Естественно используются на обоих концах одинаковые строки string _pwd, string _salt Вопрос: как можно генерировать на обоих концах эти строки динамически, но естественно, чтобы они совпадали? Universal time? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2010, 12:54 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
а чем сертификаты не устроили для защиты канала ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2010, 16:01 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
Не вполне понятно, как именно работает и что пытаемся сделать. Я понял следующее: 1. Сервис реализует некий функционал, доступность которого (или доступность данных) зависит от типа клиента. 2. Тип клиента определяется по GUID, который хранится на клиенте, но при передаче серверу вы его шифруете, видимо, чтобы исключить перехват. 3. Вы хотите динамически генерировать ключи для шифрования ... Вот собственно и вопрос - а для чего нужен п. 3? Посколько схема мне не очень понятна, я рискну предложить свои варианты (и возможно они будут не вполне адекватны вашей ситуации) исходя из того, что вы не боитесь потери секрета на клиенте, но вас беспокоит передача части данных скрыто по сети: 1. Просто использовать авторизацию (хоть на основе сертификатов, хоть на основе пароля). Т.е. в клиенте хранятся аутентификационные данные, клиента и при обращении к сервису каждый клиент аутентифифицируется у сервиса. Схема не работает, если нужно и аутентифицировать сервисы и делить по клиентам. Потенциально, можно еще иметь несколько учеток для одного пользователя (на каждый клиент, который доступен пользователю) - но я бы от такого решения был бы не в восторге сам. 2. Использовать шифрование на уровне пакетов или канала (SSL). Единственное возражение здесь: будет некоторый overhead, а все за ради одного поля. 3. Шифровать поле, при этом обмениваться ключами в рамках сессии. Самый известный из подобных способов, это схема Диффи-Хеллмана . На сколько я смотрел, в стандартном .Net реализации этого алгоритма нет, но вроде бы он поддерживается CryptoAPI + есть свободные реализации в сети. Но повторюсь еще раз: не зная до конца ваших условий трудно что-либо советовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2010, 15:18 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
2 Михаил Р Не вполне понятно, как именно работает и что пытаемся сделать. Я понял следующее: 1. Сервис реализует некий функционал, доступность которого (или доступность данных) зависит от типа клиента. 2. Тип клиента определяется по GUID, который хранится на клиенте, но при передаче серверу вы его шифруете, видимо, чтобы исключить перехват. 3. Вы хотите динамически генерировать ключи для шифрования ... 1. да, сервис реализует общий функционал, которым ползуются несколько разных типов клиентов 2. да, сейчас клиент передает свой гуид сервису, а он передает его дальше отдельно стоящему серверу лицензий и получает\не получает лицензию на работу именно этого приложения. Т.е. юзер купил сервис, и 5 лицензий для приложения типа А, 3 для приложения типа Б, 20 для типа С. 3. да, ну как пример: чтобы юзер не мог склёпать свое приложение и пользоваться сервисом, используя известный гуид для существующего типа приложения, купленного честно. Ну и чтобы минимально "завуалировать" открытый гуид хотелось бы чего-то эдакого ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 15:10 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
продолжу: хотелось бы хоть как-то минимально скрыть, и поудмалось о динамической генерации\шифровании гуидов, ежечасной смене, чтобы клиент слал, а сервер был в состоянии сшифровать... а враг чтобы не мог легко подсунуться ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 15:13 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
Понятно... Увы, именно на такой кейз я ничего предложить не могу. Т.к. у клиента всегда есть возможность реверсинжинеринга, т.е. не важно что у вас будет на клиенте - конкретный ключ или некоторый хитрый алгоритм ответов на вопросы сервера (т.е. динамичсеские ключи), это всегда можно повторить. Все что вы можете сделать - максимально усложнить это повторение. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 18:16 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
МихаилРПонятно... Увы, именно на такой кейз я ничего предложить не могу. Т.к. у клиента всегда есть возможность реверсинжинеринга, т.е. не важно что у вас будет на клиенте - конкретный ключ или некоторый хитрый алгоритм ответов на вопросы сервера (т.е. динамичсеские ключи), это всегда можно повторить. Все что вы можете сделать - максимально усложнить это повторение . да, понимаю ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 18:53 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
Winnipuh, вам уже barrabas ответил на впорос. если эе не хотите с ssl париться, реализуйте свое шифрование открытым-закрытым ключами. на сервере свой ключ держите, клиент просит публичный ключ у сервера, сервер ему его дает, клиент шифрует гуид этим ключем и только сервер его закрытым ключем может расшифровать. Дальше обшаются используя обычное симметричное шифрование гуидом сгенеренным на клиенте. ЗЫ выше описан метод, как работают сертификаты, но если их использовать надо клиентам их делать трастед. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 19:04 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
stimpi, увы, это не решит описанной задачи - защиты от подлога клиентского ПО. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 19:19 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
МихаилРstimpi, увы, это не решит описанной задачи - защиты от подлога клиентского ПО. почему вы не можете занести серийники сертификатов в БД? Проводить другую проверку помимо защиты канала сертификатами? У меня пользователи авторизаются по сертификатам, я в базе присваиваю сертификат пользователям и когда на сервис кто то ломится я знаю кто это. для этого делается custom авторизация унаследовавшись от X509CertificateValidator ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 20:23 |
|
client<->WCF: как генернуть ключи?
|
|||
---|---|---|---|
#18+
barrabas, Во-первых, не я, а автор топика. Во-вторых, если вы перечитаете вот это сообщение, то поймете, что суть проблемы вовсе не в защите канала. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2010, 21:05 |
|
|
start [/forum/topic.php?fid=19&fpage=23&tid=1397541]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 258ms |
total: | 424ms |
0 / 0 |