[user] писал(а):С учетом того, что у проекта не будет централизованного сервера, требуется безопасно и автоматически обновлять само приложение.
Это легко, используем RSA, сами обновления распространять можно также по p2p.
PS: я предполагаю что все представляют как работает RSA или хотя-бы имеют представление о системах шифрования с открытыми ключами. Если пойдут вопросы - я объясню общую идею, и почему это нам поможет.
[user] писал(а):Далее. Поиск распространяемого контента. Варианты:
Фиксированный список, загружаемый при старте приложения. (по аналогии с CDR Steam). Кому-то его нужно будет поддерживать а актуальном состоянии.
Или же автоматический поиск раздач контента. Здесь есть потенциальная уязвимость: теоретически возможно захламление списка, что приведет к его долгому получению и анализу на подлинность. Да и вообще тут какая-то неопределенность получается...
Оба варианта неэффективны. Достаточно иметь манифест файлов и, при необходимости, соответствующие плагины. Плагины можно распространять также через саму p2p, при этом у каждого плагина будет свой ключ (опять же RSA, только уже не шифрование, а подпись), который можно будет указать как депенсити в манифесте. От версии к версии ключ меняться не будет, но будет отдельное поле с версией (можно будет указать минимальную версию).
+ надо будет сделать список мастер пиров - это будут просто обыкновенные пиры, но с постоянными адресами и известные всем другим пирам, один, например, который будет содержать все плагины всех версий, и пару больших - с файлами из манифестов - вместо отдельных http или ftp - что-бы файлы были всегда доступны.
Добавлено спустя 8 минут 58 секунд:
[user] писал(а):Возможен такой неоднозначный момент по P2P.
Предположим, что все пиры из предустановленного доверенного списка недоступны, а из обычных пиров - есть доступные.
Предположим, что новый клиент выбрал пир (из предустановленного списка обычных пиров) с устаревшей (сильно) информацией (допустим, о контенте). Это может произойти как случайно (глюк или еще что-то...) или же намеренно (фейковый пир).
При использовании системы манифестов такой ситуации вообще никогда не возникнет. То есть совсем никогда. Для обновления, клиенту нужен будет манифест новой версии, все файлы докачаются сами. Нету манифеста, нету обновления. Манифесты можно распространять не только через пиры, но и на сайте выложить например.
Такая штука очень похожа на торрент, но есть одно, очень существенное, отличие: торрент умеет качать только конкретную раздачу, даже если файлы из этой раздачи есть в других раздачах - они не будут использоваться. В системе манифестов наоборот, есть только список файлов, и выкачиваются сами файлы. Манифест можно собрать на лету, не имея у себя самих файлов, но зная, какие они бывают (хеши), и при этом успешно выкачать его из сети.
Таким образом, мы можем легко бороться с фейковыми пирами, а также довольно защищённо обновляться, через саму же p2p сеть.
Добавлено спустя 16 минут 52 секунды:
Кстати, для стартового поиска пиров (в том случае, если мастер-пиры внезапно упадут или недоступны из определённого сегмента сети), программу-клиент можно научить гуглить %) Гугль всегда доступен, а распарсить наиденные страницы и вычленить из них адреса (можно придумать, как из записать так, чтобы проще было распарсить) - раз плюнуть. Ну, и конечно, банальные броадкасты в лан + скан родной подсети, да да...