среда, 8 июня 2011 г.

FlylinkDC++ цифровая подпись

В FlylinkDC++ r500 была реализована возможность автоматического обновления программы и компонентов. Эта возможность позволяет самой программе автоматически получать обновления и устанавливать их, практически с минимальными действиями со стороны пользователя.

Данный процесс автоматизации вносит определенный риск (возможность подмены оригинальных обновлений, адресов серверов обновлений и т.д.). Часть этой проблемы была решена за счет подписи самого файла обновления 1024-битным RSA ключом. Публичная часть ключа находится в самом FlylinkDC++ r500, а приватная часть является собственностью разработчиков проекта и недоступна для общего пользования по понятиям безопасности.

Следующим шагом защиты должно стать введение цифровой подписи самого приложения. На данном этапе при обновлении FlyUpdate’ом мы видим следующую картину:

FlyUpdateUnknown

Publisher в нашем случае – это производитель программы, подлинность которого  и самого приложения устанавливается общеизвестным сертификационным центром. Для этого необходимо получить сертификат, но у нашей команды отсутствует опыт общения с сертификационными центрами, начиная от выбора (а исходя из того, что проект у нас не коммерческий и выбор должен ограничиваться нашими скромными финансовыми возможностями (хотя мы не против спонсорства со стороны пользователей :) ), и заканчивая перечнем необходимой документации, которую необходимо предоставить сертификационному центу для получения сертификата.

Если Вы сталкивались с этим и можете поделится информацией – мы будем очень признательны.

c уважением, команда разработчиков FlylinkDC++

29 комментариев:

Анонимный комментирует...

ОТЛИЧНО!!!

Анонимный комментирует...

проверьте свою версию GPL. последние версии GPL запрещают распространять подписанную программу, если секретный ключ не предоставляется

-Алекс- комментирует...

а причём здесь UAC ? на ХР его вообще нету,а на вин 7 UAC можно с лёгкостью отключить вообще..
ну а то,что обновления развиваются в правильном русле- это похвально! :) молодцы!

Евгений комментирует...

куда то вас понесло совсем не туда... :( ИМХО

eXpRoD комментирует...

шаг в сторону безопасности, молодцы ИМХО, клиент должен быть функциональным и безопасным и стабильным

NightOrion комментирует...

проверьте свою версию GPL. последние версии GPL запрещают распространять подписанную программу, если секретный ключ не предоставляется

FlylinkDC++ лицензируется по GPLv2 там о подписи бинарника ни слова. В целом лицензия обязывает нас предоставлять программу в виде, удобном для внесения изменений (читать как программный код на C++), что мы и делаем (код выложен на code.google.com) и выкладывается с каждой новой версией программы архивом исходников. Безусловно подписывание самой программы ключом наложит некоторое ограничение на её изменение resourse hacker и прочими подобными программами, но я надеюсь это подстигнёт многих интузиастов всётаки поставитьVS2010 и начать изучать программирование, а не тупо пользоваться сторонними прикладными тулсами :)

P.S. Набор програмистов, знающих C++ и готовых помочь проекту не словом а делом всё ещё ведётся

ssa комментирует...

Безусловно подписывание самой программы ключом наложит некоторое ограничение на её изменение resourse hacker и прочими подобными программами

На самом деле никаких ограничений на распространение и взламывание программы мы не накладываем. Фактически мы только хотим установить подлинность того, что программа создана FlylinkDC++ Team и все. Этот же код без ключей и прочего будет отлично компилироваться и работать. А желающие делать свои автоматические обновления всегда могут создать свои ключи и с ними распространять программу (за исключением того, что эти ветки с веткой от FlylinkDC++ Team не пересекутся - т.е. программа созданная нами не будет устанавливать не наши обновления).
А подпись исполняемого файла это вообще к исходному коду не относится.

NightOrion комментирует...

В общем говорим об одном и том-же разными словами

GriNDeR комментирует...

А какой смысл делать обновление безопасным?
Кстати если есть открытый ключ, можно получить и закрытый, они вроде мультипликативно обратные.

birkoff.anarchist комментирует...

Чтобы гарантировать что скачивается именно официальное обновление.

Нельзя, читайте про асинхронное шифрование.

GriNDeR комментирует...

ecА зачем гарантировать официальность обновления? Есть такие люди, которые засунут во флай, что-то "злое" и свое? Взламывают такую защиту подменой открытого ключа или заменой условного перехода после проверки.
Смысл был бы канеш, только не с opensource. Насчет получения закрытого ключа вы товарищ не правы, он получается, но это займет довольно долгое время. Хотя я бы будучи "плохим человеком" постарался бы, для создания бот-нета.

birkoff.anarchist комментирует...

Много, ага.
С таким же успехом можно говорить, что любой пароль можно подобрать.

Анонимный комментирует...
Этот комментарий был удален администратором блога.
Анонимный комментирует...
Этот комментарий был удален администратором блога.
ssa комментирует...

Есть такие люди, которые засунут во флай, что-то "злое" и свое? Взламывают такую защиту подменой открытого ключа или заменой условного перехода после проверки.


"Лучше перебдеть, чем недобдеть" (с)
В пределах одного компа взломать не проблема, а вот поставить всем пользователям свое ПО вместо флая, пользуясь автообновлением - это будет очень плохо. Но инет большой и придурков-школьников больше, чем хотелось бы - поэтому нужно защищаться.

ssa комментирует...

НАРОД - действительно никто не получал сертификаты на подпись исполняемых файлов?

Если есть опыт - отпишитесь в e-mail - мы будем очень признательны!

Анонимный комментирует...

ниче не знаю. если поставить смайл и через пробел url то смайл не отобразится. вместо него будет текстовое сочетание символов

Анонимный комментирует...

ниче не знаю. если поставить смайл и через пробел url то смайл не отобразится. вместо него будет текстовое сочетание символов

GriNDeR комментирует...

RSA ну никак не поможет от школьников =) Кстати насчет взлома любого пароля, эт тоже реально. Вопрос в другом, во времени

GriNDeR комментирует...

Может быть насчет подписи поможет http://ssl.ru/ Там даже от разных контор есть сертификаты.
Помоему, то что нужно это
http://ssl.ru/ru/certificates/codesigning/ ,а именно Thawte Code Signing.

Анонимный комментирует...

Сделайте плиз тулзу, чтоб можно было свои темы оформления без геморроя собирать. Или напишите подробную инструкцию как без неё собрать свою тему. А то вроде возможность менять внешний вид есть, но лишний раз браться не захочешь. А уж обычные юзеры вобще не знают с какого боку подойти.

GriNDeR комментирует...

а зачем это надо обычным юзерам, хочешь делать свои темы, разберись да делай.

Slippery Jim комментирует...

@ssa - я не понял, в чем реально у вас сложности (ну, кроме денег) в code-signing. Куда обратиться? Так самые дешевые сертификаты для кода у Comodo http://www.instantssl.com/code-signing/

Прочие детали - спрашивайте лично, вроденесовсем памятьпотерял

Анонимный комментирует...

хочешь делать свои темы, разберись да делай.

Еще раз. Для чего геморрой? Если разработчики не хотят чтоб кто-то делал свои темы не через Ж. Пусть просто здесь отпишутся, что не будут этого делать и всё. Никто ведь не настаивает.

NightOrion комментирует...

По поводу создания тем, будет либо тулса, либо мануал, по которому обладатель прямых рук сделаем всё сам без всяких проблем.

Анонимный комментирует...

NightOrion
По поводу создания тем, будет либо тулса, либо мануал, по которому обладатель прямых рук сделаем всё сам без всяких проблем.

Спасибо на добром слове.

ssa комментирует...

- я не понял, в чем реально у вас сложности (ну, кроме денег) в code-signing. Куда обратиться


https://author.tucows.com
-75$ за год,
https://secure.ksoftware.net/code_signing.html
-99$ за год
http://www.instantssl.com/code-signing/ - 180 евро в год

Как бы все одинаковые от комода - но непонятно, чем отличаются и почему дешевле (не хотелось бы попасть на деньги)

Во вторых хотелось бы знать, какие документы нужны.

GriNDeR комментирует...

SSA, блин возьмите на http://ssl.ru/ru/certificates/codesigning/ и не парьтесь

Анонимный комментирует...

Давно пора получить подпись.....