Здравствуйте! Недавно копаясь в интернете я нашел статьи о создании клиентов и серверов через Socket. Для примера привел ссылки конкретных примеров которые хотелось использовать.
Так вот проблема в том что передаваемые данные не шифруются, как это сделать?
Достаточно будет использовать зашифрованный протокол или еще доп. шифровать данные?
А так же я думаю что можно будет увидеть команды передаваемые серверу и использовать их в корыстных целях...
Поэтому еще один вопрос: как лучше хранить пароли в приложении?
05.11.11 21:48: Перенесено модератором из '.NET' — kochetkov.vladimir
Здравствуйте, Ivan240393, Вы писали:
I>Здравствуйте! Недавно копаясь в интернете я нашел статьи о создании клиентов и серверов через Socket. I> Для примера привел ссылки конкретных примеров которые хотелось использовать.
Для чего использовать то? Опишите вашу задачу.
I>Так вот проблема в том что передаваемые данные не шифруются, как это сделать?
А что вам мешает данные шифровать?
I>Достаточно будет использовать зашифрованный протокол или еще доп. шифровать данные?
"Зашифрованные протоколы" тоже разные бывают. Вы задачу опишите конкретнее.
I>А так же я думаю что можно будет увидеть команды передаваемые серверу и использовать их в корыстных целях...
Так опишите чего именно вы боитесь.
I>Поэтому еще один вопрос: как лучше хранить пароли в приложении?
Вы от кого хотите защищать пароли? От пользователя? админа? трояна?
Здравствуйте, acDev.
Я пишу сетевую онлайн игру, так вот каждое списание очков со счета противника производится отправкой сообщения на сервер.
Т.е клиент например выйграл.. На сервер отправляется команда в виде текстовой строки, которая переводит очки с одного счета на счет другого игрока.
Так вот проблема в том, что набор команд будет храниться в самом exe файле.. И я не знаю как сделать так что бы кто-нибудь не стал отправлять нужные команды мне на сервер. Что бы воровства не было..
Идея с шифрованием хорошая, но если я буду использовать один и тот же пароль для всех пользователей, то вскоре его кто-нибудь узнает и всем расскажет.
Но с другой стороны если у каждого пользователя свой пароль, то сервер не сможет определить как расшифровывать команду.. Вот такая проблема.
В итоге получается что я опасаюсь взлома приложения, подмены данных при передаче, и мне не хватает идей как создать систему что бы никто не смог использовать мой сервер.
К тому же программирую в среде .NET, а там хранить текстовые строки в exe файле опасно, поэтому не знаю как защитить пароль которым буду шифровать команды.
Здравствуйте, Ivan240393, Вы писали:
I>Так вот проблема в том, что набор команд будет храниться в самом exe файле.. И я не знаю как сделать так что бы кто-нибудь не стал отправлять нужные команды мне на сервер. Что бы воровства не было..
Советую почитать вам о ассиметричном шифровании (RSA). А так же придумать способ обмена сессионными ключами.
ЗЫ. А вообще сначала попробуйте написать клиент-сервер без шифрования. Если у вас это получится и сервак будет выдерживать нагрузки, тогда и прикручивайте шифрование (правда его не очень эффективно прикручивать на последнем этапе разработки).
Здравствуйте, Ivan240393, Вы писали:
I>Здравствуйте, acDev. I>Я пишу сетевую онлайн игру, так вот каждое списание очков со счета противника производится отправкой сообщения на сервер.
error — каждое списание должен делать сервер I>Т.е клиент например выйграл.. На сервер отправляется команда в виде текстовой строки, которая переводит очки с одного счета на счет другого игрока. I>Так вот проблема в том, что набор команд будет храниться в самом exe файле..
нет, проблема в том, что кто угодно может послать серверу команду на списание. I>И я не знаю как сделать так что бы кто-нибудь не стал отправлять нужные команды мне на сервер. Что бы воровства не было..
нужно чтобы не было таких команд. все подобные расчеты делает сервер — воровать нечего.
I>Идея с шифрованием хорошая, но если я буду использовать один и тот же пароль для всех пользователей, то вскоре его кто-нибудь узнает и всем расскажет. I>Но с другой стороны если у каждого пользователя свой пароль, то сервер не сможет определить как расшифровывать команду.. Вот такая проблема.
идея с шифрованием бесполезная поскольку:
1. незначительно усложнит действия для взлома
2. с такими знаниями криптографии вероятность реализовать надёжную систему мала
3. как я заметил выше любого рода шифрование здесь в общем случае бесполезно
3.1 в частном случае, к примеру, если клиент сам с себя списывает ресурсы & использует эцп, то злой ворюга сможет как максимум получить режим бога. А своровать ничего не сможет.
Здравствуйте, SSDD, Вы писали:
SSD>1. SSL/TLS — стндарнтый набор библиотек, включем и работаем.(не думаю что .NET настолько убог и не поддерживает данную фичу)
SSD>2. Все ключевые решения должны приниматься на стороне сервера.