Я разрабатываю продукт, который должен работать в качестве сервера через локальную сеть для подключения других клиентских приложений при следующих ограничениях:
- Обмен данными является очень ценным, и мы не можем гарантировать безопасность сети пользователей или компьютера, выполняющего роль сервера. Поэтому любой SSL-сертификат потенциально может попасть в «чужие руки».
- Чтобы свести к минимуму нарушение пользовательского интерфейса, любые неэлектронные средства идентификации сервера для клиента должны быть ограничены информацией, которая может быть записана на post-it (т.е. IP-адрес, пароль, а не обмен файлами ключей).
Учитывая это, наша текущая стратегия SSL:
- Не устанавливайте SSL-сертификаты в доверенные хранилища и не подписывайте сертификаты сертификатом CA. Это может дать потенциальному злоумышленнику ключ от входной двери ко всем клиентским машинам
- Сертификаты SSL, следовательно, будут самозаверяющими. Это не дает человеку в средней защите, потому что у нас нет возможности проверить сервер. Однако он обеспечивает защиту от перехвата для тех пользователей, которые имеют небезопасные сети, но защищенные серверы.
- Внедрите систему «паролей» поверх симуляции с использованием симметричного шифрования Rijndael, поэтому даже если сертификат скомпрометирован, существует некоторая защита от перехвата перехвата (я знаю, много негерметичных областей памяти - но лучше, чем ничего) , Этот пароль может регулярно обновляться с минимальным вмешательством в пользовательский опыт клиентов.
В пределах этих ограничений существует ли более безопасная стратегия взаимодействия клиента и сервера?