Як я можу підтвердити, що бінарні файли мого Ubuntu є вихідним кодом, з якого він повинен бути?


25

Як і 99% користувачів, я встановлюю Ubuntu з готових бінарних файлів.

Як я можу переконатися, що ці бінарні файли насправді є вихідним вихідним кодом від Ubuntu?

Було б добре переконатися, що NSA / хтось не співпрацював ні з Ubuntu, ні з Linode (мій постачальник VPS), щоб возитися з бінарними файлами. Якби ми могли перевірити бінарні файли, вони також навряд чи спробували б це зробити в першу чергу, оскільки було б легко зателефонувати на них.


Ви можете подивитися вихідний код, використовуючи apt-get sourceабо використовувати його для складання власного. Дивіться це запитання: askubuntu.com/questions/28372/…
Вільф

4
Можливо, корисно: Як перевірити, чи встановлені пакетом файли відповідають оригіналам? (Debian, але має бути досить близьким, щоб застосувати його до Ubuntu)
CVn

@ MichaelKjörling Я шукав нашу версію цього питання ...
Брайам

1
@Braiam Я думаю, що в цьому конкретному випадку Debian / Ubuntu не має великого значення. Що має значення - це мета питань; той, що пов'язаний вище, спрямований насамперед на виявлення пошкоджених файлів у якийсь момент після встановлення, тоді як цей, здається, спрямований на виявлення зловмисно замінених або змінених файлів або бінарних файлів, що не відповідають заявленому вихідному коду. Різні проблеми, через що я позначав посилання лише "можливо корисним".
CVn

3
Цікаво, що я думаю, що навіть Gentoo повністю уникає цього питання: там вам доведеться довіряти завантаженим архівам вихідного коду. Використовуйте криптографічні підписи все, що завгодно; якщо ви не можете повірити, що те, що підписано, є справжнім, і що саме так передбачається, насправді мало що робити.
CVn

Відповіді:


36

Ви можете завантажити вихідний код і скласти його самостійно. Але зачекайте - спочатку ви повинні перевірити цей вихідний код, адже якщо Canonical співпрацював з NSA, вони, ймовірно, десь ввели якийсь код, щоб створити кейлоггер або щось, що можна активувати віддалено.

Так...

  1. після завантаження вихідного коду,
  2. ви повинні перевірити весь код,
  3. а потім складіть його!

Але зачекайте - чи можете ви довіряти компілятору ?


15
"Чи можете ви довіряти компілятору?" Ось тоді ви виходите на дотичну і читаєте запитання Як скласти компілятор C з нуля, а потім скласти Unix / Linux з нуля (та пов'язані з ними відповіді).
CVn

17
Але чи можете ви довіряти своєму обладнання? Можливо, ви також повинні створити свій комп’ютер з нуля, і ось тут ви стикаєтесь з кількома проблемами ...
Томас

І чи можете ви довіряти гіпервізору, який управляє вашим VM?
Фернандо Коррея

1
Я не думаю, що може бути корисним при складанні джерела для кількох подібних компіляторів від різних авторів і перевірки результатів на відмінності. Але як ви знаєте, що автори насправді не є однаковою сутністю під псевдонімами? Або, швидше за все, що робити, якщо всі ці компілятори мають спільного корумпованого предка? І жодне з цього не допоможе вирішити питання довіри апаратних засобів.
Кін

6
Але зачекайте - чи можете ви довіряти, що askubuntu не фільтрується або повністю контролюється АНБ, щоб не розповісти вам про всі потенційно порушені райони?
TheZ

9

Якщо ви не готові прийняти "тому що Ubuntu так говорить", ви не можете.


2
Додам, що ви можете [спробувати] перевірити, чи двійкові файли вашої конкретної системи відповідають оригінальним бінарним файлам Ubuntu, порівнюючи контрольні суми. Звичайно, належний руткіт ні в якому разі не легко виявити всередині системи.
Peteris

2
Це працює лише в тому випадку, якщо ви довіряєте, що "оригінальні бінарні файли Ubuntu" не були підроблені. Іншими словами, якщо ви погоджуєтесь, що вони хороші, тому що Ubuntu так говорить. ;)
fkraiem

5

Ubuntu пропонує зручні засоби для складання пакету на власній машині. Однак немає можливості перевірити, чи виконуваний у двійковому пакеті, який ви завантажили, отриманий з цього вихідного коду. Процес підписання, який використовується Ubuntu, значно знижує ризик підробити сторонні пакети, але ви все ще повинні довіряти, що до компіляції не додано шкідливого коду, який не відображається у завантажуваному вихідному коді.

Причина полягає в тому, що надзвичайно важко отримати точно такі ж двійкові файли, які є у складених пакетах, оскільки вони залежать від точної версії компілятора, її параметрів, і, ймовірно, є також деякі шляхи чи змінні середовища, зібрані у двійкові. Таким чином, ви не зможете отримати саме той самий двійковий файл при компілюванні, який би "перевірив" завантажений бінарний файл.

Насправді існує невелика дослідницька спільнота навколо саме цієї проблеми - як зробити компіляцію відтворюваною.

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

Але тут також виникає проблема довіри компілятору, як уже згадувалося ...


4

Складно створити однакові бінарні файли на двох різних машинах. Проект TOR робить це звичайною частиною їх побудови. Є опис того, як вони це роблять. У Debian і Fedora, здається, є проекти, що дозволяють зробити це можливим для цієї дистрибуції, але вони знаходяться на ранній стадії. Це не схожа , є якась - або робота , виконана в Ubuntu .

Щоб відтворити бінарний пакет Ubuntu, вам потрібно відтворити середовище, в якому він був створений, наскільки це можливо. Для початку потрібно спочатку з’ясувати, де і як цей пакет, де компільовано. Не схоже, що цю інформацію легко знайти.


Детальніше про те, що конкретно?
Йозеф

Ігноруйте мене, плутайте з іншим дописом :)
Тім

0

Перевірка за допомогою MD5 Ubuntu. Якщо отриманий вами MD5 з ваших файлів відповідає тому, який опублікував Ubuntu, то ніхто не підробляє бінарні файли між ними.


Це не питання ОП. Він стурбований тим, що вихідний код, який поширює Ubuntu, не є таким самим, як двійкові файли, які поширює Ubuntu. Іншими словами, вони кажуть "це джерело", але джерело, з якого вони будують двійкові файли, насправді має додатковий код, введений NSA. Він не переживає, що бінарні файли підробляються після збирання.
Іоанн Златоуст

В ОП написано: "Як я можу переконатися, що ці двійкові файли насправді є вихідним вихідним кодом Ubuntu?" Відповідь на це питання. Інший - смішний, хто може знати, якщо ядро ​​Linux не було підроблене ким-небудь (NSA чи ким-небудь?) Легко, завантажте код, прочитайте його і як тільки ви раді скомпілюйте його самостійно. Крім цього, моя відповідь стосується питання, яке я скопіював на початку цього коментаря.
YoMismo

Ви не відповіли на питання, яке ви цитували. Використання MD5 дозволяє йому лише перевірити, чи двійкові файли на його комп’ютері відповідають бінарним файлам на сервері. Вони НЕ дозволяють йому перевірити, що завантажені ним файли файлів були зібрані з джерела, яке надає Ubuntu. Тепер я погоджуюся, що його питання смішні з тієї причини, яку ви (та інші) заявили. Але це було його питання.
Іоанн Златоуст

0

Це важка робота, я думаю, довіра тут краща, ніж ця складна робота. Але питання Чи можете ви довіряти?

Оскільки програмне забезпечення з відкритим кодом надає користувачам багато свобод щодо зміни коду, ви не можете довіряти будь-кому.

Дозвольмо скласти сценарій для цієї мети, я хочу перевірити, що мій Ubuntu == source code, зачекайте. Чому ви не намагаєтеся порівняти пакети з їх джерелом?

  1. Створіть бінарний пакет для Ubuntu з джерела.
  2. порівнював самостійно побудований двійковий пакет з тим, який опублікував дистрибутив.
  3. Використовуйте apt-get -b для завантаження джерела.

Але для мене порівняння добре дає незначні різні результати через різні часові позначки, середовища, але це доводить, що це не з вихідного коду!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.