2013-04-06 2 views
2

ОТВЕТ: Я использую взаимную аутентификацию SSL. Теперь нет никаких проблем :)Проверка подлинности сокета с SSL

Я работаю над проектом сервера. Я попробовал аутентификацию клиента с помощью метода XOR encrypt-decypt, но это недостаточно безопасно. Я решил использовать SSL с моими сокетами, но я не могу этого сделать. У меня есть соединение на основе System.Net.Sockets.Socket. А именно, я хочу: если соединение Tcp является входящим, аутентифицируйте это соединение сокета нашего клиента. (каждый сокет не может подключить наш серверный сокет из нашего порта). Может ли кто-нибудь дать мне начальную точку или несколько примеров? (Это мертвая точка моего сервера, если я не могу это сделать, это будет отменено.!)

EDIT1: Моя система в настоящее время работает так:

  • Client подключен к серверу.

  • Сервер создан 16byte долго случайный ключ и шифрованный его serverKey (XOR), послал его клиент

  • Client расшифрованы данные с serverKey и шифрованный его clientKey и отправил его обратно

  • сервер расшифрованного данные и проверили там же

    (При подключении клиента, таймер начал для Идент тайм-аут)

EDIT2: Теперь я использую другую криптологию. Когда клиент подключится, он будет отправлен, и клиент расшифрует его и отправит обратно. Криптология работает следующим образом:

Шифровать байт [] специальным методом (не профессиональный). После этого получите хэш-код байта []. Этот хэш-алгоритм написан мной, и, если кто-то этого не знает, никогда не пойму наш зашифрованный байт []. (уже хэш-выходы не могут вернуться). И, наконец, он объединяет хеш и зашифрованный (например, XOR, специальный метод).

С помощью этого метода никто не получает дешифрованные/треснутые данные. В противном случае существует асимметричный метод шифрования/дешифрования (http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange). Я могу обновить свою систему auth с помощью (жесткой) асимметричной криптологии позже (если этого недостаточно).

+0

Итак, вы хотите убедиться, что только * ваш * клиент может подключиться к вашему серверу, но ни один другой клиент, который говорит по тому же протоколу? – dtb

+0

См. Ответ здесь для некоторых соображений: http://stackoverflow.com/questions/12356785 –

+0

@dtb yes, true. –

ответ

0

Я использую Взаимная аутентификация SSL. Это лучший способ сделать это. (Извините за другие проблемы, такие как «SSL не работает с моими системами»)

0

Ответ на ваш вопрос заключается в использовании SSL с взаимной аутентификацией. Вы отметили свой вопрос «SSL», поэтому предположительно это допустимое решение.

Вам нужно будет объяснить, что вы подразумеваете под «Я не могу этого сделать».

+0

есть, плохой название. Я обновил его. –

+0

Итак, почему вы не можете использовать SSL? Это ответ. Люди продолжают говорить вам. – EJP

1

Я думаю, что хороший подход для вас - использовать SSL с сертификатами клиента для аутентификации.

Вы должны использовать Центр сертификации и выдавать серверный сертификат для своего сервера. Вы также выдавали бы клиентский сертификат для каждого клиента. Затем на сервере вы ограничиваете соединения только теми, которые подписаны вашим ЦС.

Это стандартный подход и должен работать в основном с любой реализацией SSL. Есть ли причина, почему это неприемлемо для вашей ситуации?

+0

Хмм Попробую! спасибо .. –

+0

и является взаимным ssl подлинным способом? –

Смежные вопросы