Первый вопрос: почему вы не можете получить сертификат SSL? Я думаю, по двум причинам:
- SSL сертификаты являются слишком дорогими
- Вы не хотите иметь сертификат, выданный третьей стороной
Если ваша проблема # 1, StartSSL обеспечивает бесплатные сертификаты с 1-летним сроком действия или 50 долларов США за неограниченные сертификаты, действительные в течение 2 лет (включая подстановочные знаки). Они распознаются как Mozilla, так и доверительным хранилищем Microsoft.
Если проблема № 2, почему бы не выдавать самозаверяющий сертификат и не использовать его в своем приложении? Это не ставит под угрозу безопасность системы вообще (только ваш конкретный сертификат будет принят приложением), но устраняет необходимость «получить» сертификат SSL из другого места.
Если вы действительно не можете использовать SSL, посмотрите на системы реакции на запрос, такие как Kerberos или анонимные генераторы ключевых материалов, такие как Diffie-Helman (с асимметричным ключом для проверки подлинности сервера). Существует много методов для безопасной двухсторонней аутентификации по небезопасной линии. Ключ состоит в том, что шаг проверки идентификатора должен быть challenge-response вместо схемы «Отправить мне секрет».
Независимо от того, что вы делаете, пожалуйста, воздержитесь от качки самостоятельно (http://stackoverflow.com/questions/3604582/which-attacks-are-possible-concerning-my-security-layer-concept/3604619#3604619) – NullUserException