Подход, обсуждаемый в посте, по-видимому, не обеспечивает какого-либо асимметричного обмена ключами (как это делает TLS). Вместо этого он опирается на симметричный ключ, который генерируется на основе некоторых метаданных сборки. Смотрите последний абзац статьи:
В заключение позвольте мне решить пару вопросов: во-первых, нигде здесь я не говорю, что это "лучше", чем SSL. Я предоставляю это только в качестве альтернативы. Во-вторых, тот факт, что пароль или другой компонент сгенерированного криптографического ключа может быть показан в виде открытого текста в коде, бесполезен для хакера, поскольку требуются как пароль, так и хеш (оба из которых могут быть сгенерированы только во время выполнения) для действующего ключа. Загрузка отражает изменение в использовании свойства FullName сборки для генерации солт-значения и ManifestModule.Name.GetHashCode () для пароля, как обсуждалось ранее.
Это не очень сильный механизм генерации ключей, так как злоумышленник может просто загрузить то же приложение Silverlight, запустить отладчик и получить ключ. Однако он защитит любые атаки «человек посередине», когда злоумышленник имеет доступ только к вашему HTTP-трафику.
Лично я бы придерживался SSL и самозаверяющего сертификата, если целью является бесплатное решение.