Сеть для распределенной компиляции (Генту-коммунизм, есть ли такое?)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

joebraker писал(а):
29.06.2009 23:38
Сама программа проверяет саму себя на наличие лажи (mp5 сумма например). То же она делает и исходниками: сверяет их с суммой, отосланной клиентом. Затем считает сумму для бинарника и высылает клиенту, и он уже сравнивает то что ему пришло с искомой суммой. Если не совпадает - тогда этот файл отвергается.

Это имхо бред получается. В первом случае поверх того патча накладывается другой, когда программа НЕ проверяет, но выдает как будто проверила - банально, правда? У меня друг был крякером, он подобным занимался. Чем сложнее защита, тем просто сложнее ее ОДИН РАЗ сломать, а дальше, когда принцип понят все делает один единственный патч. Тем более процедура облегчается - distcc собирается из исходников - их править легче, чем ASM, да и вся защита налицо!

Вот сравнивать с суммой (кстати, mp5 это пистолет-пулемет такой ;) ) не получится, ибо сумма в КАЖДОМ отдельном случае заранее не известна. Под core2 она может быть одна, под pentium будет другой, одна банальная асм-вставка изменяет контрольную сумму. Просчитывать все варианты - не вариант. Почему? Возьмем n=количество оптимизаций вставками+количество архитектур тогда количество компиляций и контрольных сумм для каждого пакета = n! (n факториал).

В качестве решения можно в эту сеть принимать проверенных людей с LinuxForum'а. Это слабая защита, но эффективней, чем никакая. Но тоже бредовая, т.к придется делать ручной отбор и сократится количество участников. Хотя программная защита ломаема всегда.
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

/dev/random писал(а):
30.06.2009 00:34
joebraker писал(а):
29.06.2009 23:38
Затем считает сумму для бинарника и высылает клиенту, и он уже сравнивает то что ему пришло с искомой суммой.

Извините, это уже идиотизм. При компиляции никак не может быть заранее известна КС - разве что эта компиляция уже проводилась на компе клиента. А если она проводилась, то зачем ему проводить её ещё раз, да ещё удалённо?

Нет, не совсем так. distcc, которая сама проверила сеья на вшивость, считает сумму своего же бинарника и высылает ее таким образом, чтобы пользователь - владелец компа, где находится эта прога не мог ничего сделать с этой суммой. Потом она высылает бинарник. В этом случае, если пользователь несанкционированно изменит содержание программы, инициатор компиляции об этом узнает. Конечно, сам компилить он ничего не будет, просто проверит, является ли то, что скомпилино, тем что ему пришло.
Тут главное понять, нельзя ли впихнуть в бинарник нечто в процессе компиляции,то есть до завершения работы distcc.
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

Xaktyc писал(а):
30.06.2009 00:43
joebraker писал(а):
29.06.2009 23:38
Сама программа проверяет саму себя на наличие лажи (mp5 сумма например). То же она делает и исходниками: сверяет их с суммой, отосланной клиентом. Затем считает сумму для бинарника и высылает клиенту, и он уже сравнивает то что ему пришло с искомой суммой. Если не совпадает - тогда этот файл отвергается.

Это имхо бред получается. В первом случае поверх того патча накладывается другой, когда программа НЕ проверяет, но выдает как будто проверила - банально, правда? У меня друг был крякером, он подобным занимался. Чем сложнее защита, тем просто сложнее ее ОДИН РАЗ сломать, а дальше, когда принцип понят все делает один единственный патч. Тем более процедура облегчается - distcc собирается из исходников - их править легче, чем ASM, да и вся защита налицо!

Вот сравнивать с суммой (кстати, mp5 это пистолет-пулемет такой ;) ) не получится, ибо сумма в КАЖДОМ отдельном случае заранее не известна. Под core2 она может быть одна, под pentium будет другой, одна банальная асм-вставка изменяет контрольную сумму. Просчитывать все варианты - не вариант. Почему? Возьмем n=количество оптимизаций вставками+количество архитектур тогда количество компиляций и контрольных сумм для каждого пакета = n! (n факториал).

В качестве решения можно в эту сеть принимать проверенных людей с LinuxForum'а. Это слабая защита, но эффективней, чем никакая. Но тоже бредовая, т.к придется делать ручной отбор и сократится количество участников. Хотя программная защита ломаема всегда.

Насколько я понял, можно компилировать под чужую архитектуру и с чужими настройками, т.е. полностью сэмулировать поведение чужого компьютера. В этом случае проблем быть не должно.

Видимо, чтобы решить проблему безопасности, нужно использовать закрытый модуль, который бы подлинковывался к distcc и содержал бы в себе неизвестные алгоритмы шифрования.
Тогда происходит следующее.
1. Клиент и сервер скачивают два файла с сайта, например, mask1 и mask2. Далее модуль получает контрольное выражение для mask1 + бинарники distcc. Отсылает ее в зашифрованном виде серверу. Сервер в это время получает контрольное выражение для mask2 + бинарники distcc. Получает другое контрольное выражение, отсылает его партнеру. Затем они сами проверяют, то ли им пришло, и говорят пользователю, нормальная ли там версия бинарников. Если да, то можно начинать компиляцию. Ну и потом сам distcc считает md5 сумму полученного obj-файла и пересылает ее клиенту, а тот проверяет, не добавлено ли туда лажи какой-то.

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

PS. Ну это все мысли вслух, конечно. На окончательное решение проблемы не претендует.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5426
ОС: Gentoo

Re: Сеть для распределенной компиляции

Сообщение /dev/random »

joebraker писал(а):
30.06.2009 11:14
считает сумму своего же бинарника и высылает ее

А кто помешает злоумышленнику изменить её таким образом, чтобы она высылала не сумму своего бинарника, а число, которое клиент ожидает в качестве этой суммы?

Любая защита, расположенная на стороне потенциального злоумышленника - бред сивой кобылы. Без вариантов.
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Сеть для распределенной компиляции

Сообщение abs-o-lut »

Вариант системы с парными ключами. Все участники сети при регистрации генерят пару, открытые ключи в свободном доступе, закрытый у участника. У каждого своя подпись. Всё придумано до нас.
Посылая запрос на компиляцию, пакет подписывается. Тот кто компилит в случает удачной проверки подписи выполняет запрос и шифрует его для отправителя используя его открытый ключ.
Вопрос стоит только в удостоверяющем центре, чтобы сертификаты раздавать.
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

abs-o-lut писал(а):
30.06.2009 13:24
Вариант системы с парными ключами. Все участники сети при регистрации генерят пару, открытые ключи в свободном доступе, закрытый у участника. У каждого своя подпись. Всё придумано до нас.
Посылая запрос на компиляцию, пакет подписывается. Тот кто компилит в случает удачной проверки подписи выполняет запрос и шифрует его для отправителя используя его открытый ключ.
Вопрос стоит только в удостоверяющем центре, чтобы сертификаты раздавать.

Не совсем понял. Я так понял это схема защиты двух доверяющих друг другу людей от всякой ерунды. А тут проблема защиты друга от своего друга :) Это уже сложнее.
Если я неправильно понял, объясните, плз, по-подробнее.
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Сеть для распределенной компиляции

Сообщение abs-o-lut »

Есть Вася, Петя и Дима. И есть УЦ (удостоверяющий центр), который знает, что Вася - Васильев Василий (паспортные данные, адрес регистрации), Петя - Петров Пётр (тоже все данные о нём), Дима - Дмитриев Дмитрий, и о нём тоже всё известно.
И они хотят построить свою сеть.
Каждый из них генерирует ключевую пару - открытый и закрытый ключ.
УЦ на сонове открытых ключей формирует сертификаты, т.е. он гарантирует, что вот этот открытый ключ принадлежит именно Пете, а вот этот именно Васе, а этот Диме.
Участники сети обмениваются открытыми ключами (сертификатами).
Также, открытый ключ можно использовать как ЭЦП.
Теперь, участники сети должны обмениваться информацией.
Петя хочет, чтобы Вася ему скомпилил модуль.
Петя формирует пакет из исходников, параметров компиляции и подписывает его своей ЭЦП.
Вася получает пакет, проверят ЭЦП - ОК сертификат присутствует в системе и он именно Петин. Поэтому Вася выполняет запрос, компилит модуль и используя открытый ключ Пети шифрует бинарник, подписывает и отправляет его Пете назад. Этот пакет может расшифровать только Петя, и ЭЦП можно использовать как проверку целостности пакета.

Не факт, что Вася - не хакер. Но если он что-то подсунул в бинарник, то это вычисляется на раз и Петя с битой идёт к Васе.
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

Единственное - на шифрование тоже придется затрачивать процессорное время... Вместе с замедлением сети надо еще посмотреть как будет оправдываться эта сеть...
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Сеть для распределенной компиляции

Сообщение abs-o-lut »

Не шифровать, просто ЭЦП для идентификации и проверки целостности.
Если по дороге от Васи к Пете были внесены изменения в пакет, то проверка ЭЦП будет отрицательной.
А так, данные же не секретные и не персональные пересылаются, шифровать их нет причины.
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

Xaktyc писал(а):
30.06.2009 14:35
Единственное - на шифрование тоже придется затрачивать процессорное время... Вместе с замедлением сети надо еще посмотреть как будет оправдываться эта сеть...

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

Тогда мне, кажется, разумно сделать прокат бейсбольных бит на сервисе :)
Я правильно понимаю, что Петя должен лично прийти в центр и показать паспорт? Если так, то это тот еще геморрой.
Кроме того: если Вася очень умный хакер, такой умный, что Петя никогда об этом не узнает?
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Сеть для распределенной компиляции

Сообщение abs-o-lut »

Есть удостоверяющий центр, который гарантирует, что данный сертификат принадлежит тому-то или тому то.
Как он это гарантирует - организационный вопрос, технически всё просто.
Можно просто на доверии, сделать привязку сертификата к мылу, либо к IP-адресу, либо к ещё какому-то постоянному реквизиту, типа никнейма.
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

abs-o-lut писал(а):
30.06.2009 15:00
Есть удостоверяющий центр, который гарантирует, что данный сертификат принадлежит тому-то или тому то.
Как он это гарантирует - организационный вопрос, технически всё просто.
Можно просто на доверии, сделать привязку сертификата к мылу, либо к IP-адресу, либо к ещё какому-то постоянному реквизиту, типа никнейма.

Да вот с мылом или с ip-адресом идея неплохая. Это все-таки внесет небольшой порядок. Все-таки сеть задумывается для обычных пользователей, компы которых ничего суперинтересного не представляют. Так что и суперзащита не нужна. Если нужна 100% сохранность данных, человек в любом случае не будет пользоваться такой сетью, даже если она суперзащищена. Можно подождать денек-другой, чтобы иметь гарантированно неуязвимую систему. А если кто-то получит с вероятностью 0.1% доступ к моему компу, я переживу.
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

По защите дискутировать не хочу, ибо не разбираюсь в её методах.
В принципе, если я сам смогу выбирать, кто будет участвовать - сделать бы такую возможность - тогда я бы мог еще и частично сам обеспечивать свою безопасность. К примеру, я полностью доверяю некоторым членам форума. Такая возможность была бы очень удобной!
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

Xaktyc писал(а):
30.06.2009 16:21
По защите дискутировать не хочу, ибо не разбираюсь в её методах.
В принципе, если я сам смогу выбирать, кто будет участвовать - сделать бы такую возможность - тогда я бы мог еще и частично сам обеспечивать свою безопасность. К примеру, я полностью доверяю некоторым членам форума. Такая возможность была бы очень удобной!

Да, это разумно! Идея неплохая. Мне кажется, если все высказанное совместить, получится вполне приемлимо.

Форум превратиться с соц. сеть. Кнопка "Добавить в друзья". Кто может участвовать в компиляции: только я, мои друзья, друзья мои друзей, все пользователи :)
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

Мне кажется, прикручивать это к этому форуму не очень разумно... Разве что юзать с этого форума таблицу юзеров и хешей паролей для идентификации и то с позволения админов:)
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

Xaktyc писал(а):
30.06.2009 18:36
Мне кажется, прикручивать это к этому форуму не очень разумно... Разве что юзать с этого форума таблицу юзеров и хешей паролей для идентификации и то с позволения админов:)

Да я пошутил на счет форума.:) Просто уж больно это напомнило вконтакте для гентушников. www.vportage.ru
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

Жалко, что ее нет)
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Сеть для распределенной компиляции

Сообщение abs-o-lut »

Информация о домене VPORTAGE.RU

Доменное имя свободно! Вы можете его зарегистрировать.


Цена вопроса: 600 руб. первый год, 450 каждый следующий.
Спасибо сказали:
Аватара пользователя
Nightwolf_ng
Сообщения: 1483
Статус: Участнег
ОС: Женько и семёрко

Re: Сеть для распределенной компиляции

Сообщение Nightwolf_ng »

vemerge.ru лучше, имхо :)
Спасибо сказали:
abs-o-lut
Сообщения: 420

Re: Сеть для распределенной компиляции

Сообщение abs-o-lut »

co-emerge.ru
v-ebuild.ru
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Сеть для распределенной компиляции

Сообщение allez »

abs-o-lut писал(а):
30.06.2009 21:33
v-ebuild.ru
Представил, как это будет звучать с английским и русским акцентом. :)
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

Мне больше нравиться emergeit.net из свободных
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

abs-o-lut писал(а):
30.06.2009 21:26
Цена вопроса: 600 руб. первый год, 450 каждый следующий.

Мне гораздо дешевле домены продают :) Могу и зарегать, кто-нить поставит на сервер ExPlay. И у гентушников будет свой Хабр с блекджеком и шлюхами.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Сеть для распределенной компиляции

Сообщение serzh-z »

iУведомление от модератора
Предлагаю обсудить название сети в другом, более подходящем, месте. )
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

joebraker
Ты если будешь че-то делать, пиши мне, я попробую по мере возможности поучаствовать)

serzh-z писал(а):
30.06.2009 23:19
Предлагаю обсудить название сети в другом, более подходящем, месте. )

serzh-z, тебя боятся:) Ты как это сказал - сразу все замолчали на несколько дней)
Спасибо сказали:
different
Сообщения: 94
ОС: Leenooks

Re: Сеть для распределенной компиляции

Сообщение different »

Вы уже придумали, как обойти конфликты версий distcc, gcc, glibc, binutils на нодах, разницу архитектур, библиотек, CFLAGS-ов? Или так, пустой
треп? :)

/для справки - отличие любых из этих параметров на клиентах distcc приводит к облому компиляции\сегфолту при запуске./

у гентушников будет свой Хабр с блекджеком и шлюхами.


Если Хабр - то не ExPlay, а LiveStreet.

p.s. появится такая сеть - вступлю.
Laptop: Sony Vaio VGN-FZ31ER [Gentoo 2008.0, kernel 2.6.30 x86_64 with BFQ, BFS, reiser4, gentoo patchset, fbcondecor]
Desktop: AMD Athlon 64 x2, 4GB RAM, nVidia 9600GT, 160GB HDD [Windows XP]
Downloader: AMD Athlon 64, 1GB RAM, 1TB HDD [Gentoo 2008.0, kernel 2.6.29, rTorrent + wTorrent]
Спасибо сказали:
Аватара пользователя
Maximus_V
Сообщения: 432
ОС: Gentoo, FreeBSD

Re: Сеть для распределенной компиляции

Сообщение Maximus_V »

different писал(а):
03.07.2009 15:57
Вы уже придумали, как обойти конфликты версий distcc, gcc, glibc, binutils на нодах, разницу архитектур, библиотек, CFLAGS-ов?

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

Но позволю себе добавить ложку дегтя. ИМХО. Чтобы такая сеть работала и имела смысл, в ней должно быть порядка нескольких тысяч участников, может, десятки или сотни тысяч. Необходимо для того, чтобы в случайно выбранный момент времени кто-нибудь что-нибудь компилировал бы. А если будет пара-тройка десятков человек, то большую часть времени сеть будет простаивать - гентушники будут компилить большие пакеты по мере выхода соответствующих портежей. Выйдет так в день Х опеноффис - и все кинутся друг у друга его компилировать. А так как компилировать будут все - то пользы от сети компиляции не будет.
Спасибо сказали:
wzor
Сообщения: 124
ОС: gentoo

Re: Сеть для распределенной компиляции

Сообщение wzor »

ну я например генерил нормальный код на amd64 для intel x86 в distcc. Не помню уже точно ибо это было давно, но там делались кое какие предварительные манипуляции, с помощью даже вроде eselect собирался компилятор под целевую платформу, так что разницу архитектур побороть можно, но версии как минимум gcc и glibc должны совпадать это однозначно...
Спасибо сказали:
Аватара пользователя
Xaktyc
Сообщения: 604
ОС: Gentoo 2008.0, WinXP

Re: Сеть для распределенной компиляции

Сообщение Xaktyc »

Ну ды, будем вежливо просить обновляться народ))
Спасибо сказали:
Аватара пользователя
joebraker
Сообщения: 98
ОС: OpenSuse 10.3

Re: Сеть для распределенной компиляции

Сообщение joebraker »

Xaktyc писал(а):
03.07.2009 15:17
joebraker
Ты если будешь че-то делать, пиши мне, я попробую по мере возможности поучаствовать)

serzh-z писал(а):
30.06.2009 23:19
Предлагаю обсудить название сети в другом, более подходящем, месте. )

serzh-z, тебя боятся:) Ты как это сказал - сразу все замолчали на несколько дней)

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

PS;serzh-z я так испугался, что удрал в Баварию на 5 днй от греха подальше!

wzor писал(а):
04.07.2009 17:07
ну я например генерил нормальный код на amd64 для intel x86 в distcc. Не помню уже точно ибо это было давно, но там делались кое какие предварительные манипуляции, с помощью даже вроде eselect собирался компилятор под целевую платформу, так что разницу архитектур побороть можно, но версии как минимум gcc и glibc должны совпадать это однозначно...

+1
Должны совпадать версии, а архитектуры и все прочее должно быть решаемо. distcc - компилятор, а не линковщик, так что библиотеки ему ввобще неинтересны, насколько я понял. Ему дают отпрепроцессированный исходник - он выдает obj файл. Все остальное делается на главном компе.
Спасибо сказали: