Коли ми завантажуємо дистрибутив GNU/Linux, зазвичай ми завантажуємо Створіть ISO-образ і почніть створювати завантажувальний USB-накопичувач. Не замислюючись над тим, що могло статися по дорозі. Правда в тому, що, хоча часто нічого не йде не так, ми сліпо довіряємо, що ISO-образ справжній. Що його ніхто не чіпав і що завантажений файл не пошкоджено.
Якщо ж мова йде про повноцінну операційну систему, то тут все змінюється. Це великі файли, їх завантаження займає багато часу, і, перш за все, Збій або маніпуляція в ISO може поставити під загрозу всю командуОсь чому у світі Linux так поширено (і так рекомендується) перевіряти цілісність та автентичність ISO-образів за допомогою контрольних сум та підписів GPG перед тим, як записати їх на DVD або USB-накопичувач.
Що означає перевірити ISO: цілісність та автентичність
Під час перевірки стандарту ISO ви виконуєте не одну перевірку, а дві окремі перевірки, які не слід змішувати: цілісність файлу та автентичність його походженняЦілісність показує, чи ISO-файл на диску ідентичний тому, що був на сервері, біт у біт. Автентичність показує, чи цей ISO-файл та його контрольні суми справді походять з проекту, який вони нібито представляють.
Цілісність перевіряється через хеш-функція (контрольна сума), розрахована для всього файлуЯкщо результат, який ви отримаєте на своєму комп’ютері, відповідає тому, що опубліковано дистрибутивом, це означає, що ISO-образ не був змінений під час завантаження або пошкоджений під час зберігання.
Справжність підтверджується через Цифрові підписи GPG пов'язані з відкритими ключами розробниківНа практиці дистрибутив підписує файл, що містить контрольні суми (наприклад, SHA256SUMS), і ви перевіряєте, чи цей підпис відповідає офіційному ключу проекту та чи він не був змінений.
Хоча багато людей перевіряють лише контрольну суму MD5 або SHA та вважають її дійсною, якщо хтось скомпрометував сервер завантаження, він також може... Замініть ISO-образ та опублікуйте підроблену контрольну суму.Тому гарна практика також включає перевірку GPG-підпису файлу сум.

Що таке контрольна сума і чому вона використовується в ISO-образах?
Контрольна сума – це результат застосування контрольної суми до файлу. криптографічна хеш-функція, яка генерує унікальний рядок для цього вмісту. Цей рядок зазвичай представлений у шістнадцятковій системі числення (символи 0-9 та af) та має фіксовану довжину, незалежно від розміру вихідного файлу.
У контексті дистрибутивів GNU/Linux контрольні суми використовуються для перевірте, чи дані не змінилися з моменту публікації зображення в рамках проектуЯкщо два файли створюють однаковий хеш за допомогою одного й того ж алгоритму, вони вважаються (на практиці) ідентичними. Якщо хеш не збігається, достатньо одного різного біта, щоб повністю змінити значення та виявити проблему.
Існує багато алгоритмів хешування, але ті, які ви найчастіше побачите пов'язаними з ISO: MD5, SHA-1 та сімейство SHA-2 (SHA-256, SHA-384, SHA-512…)На сторінках завантаження для Debian, Ubuntu, Fedora або інших дистрибутивів, поряд з ISO-образами, часто пропонуються файли з такими іменами, як MD5SUMS, SHA1SUMS або SHA256SUMS.
Процедура проста: ви завантажуєте ISO та його хеш-файл, обчислюєте хеш ISO на своєму комп’ютері та Ви перевіряєте, чи результат відповідає значенню, опублікованому у файлі контрольної сумиЯкщо воно збігається, можна бути впевненим, що зображення не пошкоджене або обрізане.
MD5 сьогодні вважається алгоритмом застарілий для використання в інтенсивних системах безпекиоскільки було виявлено практичні колізії. Незважаючи на це, він залишається корисним для базової перевірки цілісності. Для великих завантажень, особливо ISO, краще використовувати... SHA-256, який наразі є рекомендованим стандартом. у більшості дистрибутивів.
Типи файлів, які ви знайдете під час завантаження ISO-образу
Під час завантаження дистрибутива з його офіційного сервера, окрім самого образу, часто можна знайти низку додаткових файлів. Кожен з них має своє призначення, і важливо знати, що вони собою являють. Яку функцію виконує кожен тип файлу та як це пов'язано з верифікацією? що ви збираєтеся зробити.
Зазвичай ви знайдете щось подібне (назви можуть дещо відрізнятися залежно від дистрибутиву):
- назва-дистрибутиву-версія-архітектура.isoСам образ, який ви запишете на USB-накопичувач або DVD-диск. Наприклад, ubuntu-20.04-desktop-amd64.iso, що вказує на дистрибутив, версію, видання (настільна/серверна) та архітектуру.
- MD5SUMSТекстовий файл, що містить список MD5-хешів для зображень, доступних у цьому каталозі. Кожен рядок пов'язує хеш з іменем файлу.
- MD5SUMS.gpgGPG-підпис файлу MD5SUMS, згенерований за допомогою ключа розробника. Він служить для перевірки того, що хеш-файл MD5 дійсно походить з проекту та не був змінений.
- SHA256SUMS: еквівалент MD5SUMS, але з використанням алгоритму SHA-256. Це файл, якому слід надати пріоритет, якщо він доступний.
- SHA256SUMS.gpgSHA256SUMS Цифровий підпис GPG, що використовується для гарантії його автентичності.
У деяких дистрибутивах ви також побачите SHA1SUMS, SHA512SUMS або подібні файли. Всі вони дотримуються одного й того ж принципу: список сум та, за бажанням, пов'язаний з ними GPG-сигнатурний підпис щоб ви могли переконатися, що список не був підроблений.
Якщо замість завантаження ISO через HTTP/HTTPS ви робите це за допомогою BitTorrent, більшість клієнтів вже інтегрували систему верифікації Внутрішня обробка базується на фрагментах та часткових хешах, тому ймовірність отримання пошкодженого ISO значно знижується. Навіть попри це, якщо ви хочете бути абсолютно впевненими в його автентичності, все одно має сенс перевірити GPG-підпис хеш-файлу.
Як працюють хеш-функції (MD5, SHA-1, SHA-256…)
На практичному рівні вам не потрібно розуміти математику, що лежить в основі хешів, але корисно зрозуміти кілька основних концепцій, щоб мати чітке розуміння. Чому вони такі корисні для перевірки ISO?Криптографічна хеш-функція приймає файл будь-якого розміру та повертає рядок фіксованої довжини; зміна одного біта файлу призводить до зовсім іншого хешу.
Вимоги до гарної хеш-функції включають те, що її легко обчислити в певному сенсі, але практично неможливо інвестуватищо дуже важко знайти два різні файли з однаковим хешем (колізія) та що він стійкий до спроб генерувати шкідливий контент, який відповідає певному хешу.
MD5 роками був фактичним стандартом для цього типу перевірки, але досягнення в криптографії показали, що Можна створювати різні файли з однаковим хешем MD5Тому, хоча це залишається поширеною практикою в деяких проектах, з міркувань безпеки рекомендується використовувати більш надійні алгоритми.
SHA-1 покращив деякі слабкі сторони MD5, але також були виявлені проблеми зі зіткненнями, і його вважають... Не підходить для нових реалізацій, що вимагають високого рівня безпекиСімейство SHA-2 (особливо SHA-256) наразі є найбільш збалансованим варіантом між безпекою та продуктивністю для перевірки ISO.
На практиці, якщо дистрибутив пропонує кілька файлів sum, найкращим варіантом буде вибрати один. SHA-256 або SHA-512 як перший варіантЗалиште SHA-1 лише для випадків, коли немає іншого варіанту, а MD5 перевірте на базову цілісність, коли у вас немає альтернативи.
Інструменти Linux для обчислення та перевірки контрольних сум
Гарна новина полягає в тому, що вам не потрібно встановлювати нічого незвичайного: більшість сучасних дистрибутивів GNU/Linux вже містять їх. Утиліти командного рядка для обчислення та перевірки хешівЦі інструменти зазвичай є частиною coreutils або інших базових пакетів.
Найпоширеніші команди, з якими ви зіткнетеся:
- md5сум: обчислює та перевіряє суми MD5.
- sha1сум: обчислює та перевіряє суми SHA-1.
- sha256сум: обчислює та перевіряє суми SHA-256.
- sha512сум: обчислює та перевіряє суми SHA-512.
Використання їх дуже просте. Якщо ви хочете обчислити хеш певного файлу, просто виконайте таку команду в терміналі з каталогу, де знаходиться ISO-файл:
cd Descargas
sha256sum nombre-de-tu-imagen.iso
Команда виведе рядок із хешем та іменем файлу, які ви можете порівняти зі значенням, опублікованим на вебсайті. Якщо ви надаєте перевагу MD5 або SHA-1, Формат команди ідентичний, зміна утиліти (md5sum, sha1sum, sha512sum…).
Окрім обчислення окремих хешів, ці ж інструменти дозволяють перевіряти кілька файлів одночасно за допомогою перевірити режим за допомогою опції -cОсь тут і знадобиться файл MD5SUMS або SHA256SUMS, який ви завантажили разом з ISO-образами.
Перевірка цілісності ISO-образу за допомогою sum-файлів
У типовому випадку ви завантажуєте як ISO-образ, так і його SHA256SUMS-файл (і, якщо доступний, MD5SUMS або SHA1SUMS) з офіційного веб-сайту дистрибутива. Структура цього файлу дуже проста: кожен рядок містить хеш, пробіл, за бажанням зірочку або додатковий пробіл та ім'я файлу.
Щоб перевірити ISO за допомогою файлу sum, вам просто потрібно перейти до папки, де у вас є як зображення, так і файл SHA256SUMS та запустіть:
sha256sum -c SHA256SUMS
Утиліта перебирає всі рядки SHA256SUMS та порівнює хеш, який вона обчислює локально для кожного переліченого файлу, з хешем у документі. Якщо все гаразд, вона відобразить щось на кшталт:
nombre-distro.iso: OK
У разі розбіжностей, чи то через пошкодження ISO-образу, чи то через Файл не відповідає списку сумВи побачите такі повідомлення:
nombre-distro.iso: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
Така ж процедура застосовується до MD5 та SHA-1, шляхом підстановки відповідного інструменту та файлу, наприклад:
md5sum -c MD5SUMS
sha1sum -c SHA1SUMS
Такий підхід особливо зручний під час завантаження кількох ISO-образів або кількох файлів одночасно, оскільки Ви перевіряєте всі файли одночасно однією командою. і система повідомляє вам, які з них пройшли тест, а які ні.
Підписи GPG: перевірка справжності сум
Досі ми говорили лише про цілісність, але другий компонент відсутній: переконайтеся, що файл сум справді походить з проєкту а не від когось, хто скомпрометував сервер. Саме тут і з'являється GnuPG (gpg) – стандартний інструмент для обробки криптографії з відкритим ключем у GNU/Linux.
Більшість основних дистрибутивів підписують свої хеш-файли (наприклад, SHA256SUMS.gpg) закритим ключем, пов'язаним з розробниками. Ви, як користувач, завантажуєте цей підпис і використовуєте його. відкритий ключ проекту для перевірки що файл SHA256SUMS не був змінений.
Типовий робочий процес з дистрибутивом, таким як Ubuntu, буде таким, після встановлення gpg та перебування в каталозі завантажень:
gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS
Якщо на вашому комп’ютері вже правильно імпортовано та встановлено довірений відкритий ключ Ubuntu, gpg відобразить повідомлення, що вказує на дійсний підпис та ідентифікатор ключаАле дуже часто, коли ви вперше запускаєте його, він повідомляє вам, що не знає цього відкритого ключа.
У такому випадку наступним кроком буде імпорт відкритого ключа з довіреного сервера ключів. Наприклад, з Ubuntu ви можете зробити щось подібне:
gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0xD94AA3F0EFE21092
Це завантажує ключ із зазначеним ідентифікатором з офіційного сервера ключів. Після імпорту ви знову запускаєте команду перевірки підпису за допомогою SHA256SUMS, і тепер ви повинні отримати підтвердження правильності підпису і пов'язаний з ключем «Ключ автоматичного підписування образу компакт-диска Ubuntu (2012)»[захищено електронною поштою]>” або інший подібний, залежно від дистрибутива.
GPG може відображати попередження, такі як «Немає жодних ознак того, що підпис належить власнику», що по суті означає, що Ви не позначили цей ключ як абсолютно надійний.Це не фатальна помилка: якщо ви перевірили іншими способами (офіційний веб-сайт, документацію тощо), що відбиток ключа є тим, що заявлений проектом, ви можете продовжити.
Практичний приклад: перевірка нещодавнього ISO-образу Ubuntu
Щоб чітко це зрозуміти, уявіть, що ви завантажуєте ISO-образ Ubuntu (наприклад, останню версію LTS) з офіційного веб-сайту. На цій сторінці ви знайдете посилання на ISO-образ, файл SHA256SUMS та його сигнатуру SHA256SUMS.gpg, які знаходяться в тому ж або сусідньому каталозі.
Кроки, яких вам слід дотримуватися, будуть по суті наступними:
Спочатку Завантажте відповідний ISO-образ для вашої архітектури (наприклад, 64-розрядний образ робочого столу AMD64), а також файли SHA256SUMS та SHA256SUMS.gpg, що відповідають цій версії.
Далі, встановивши gpg на вашій системі, вам слід перевірити підпис файлу sums за допомогою:
gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS
Якщо gpg повідомляє, що не може знайти ключ, ви можете отримати його з сервера ключів, пов'язаного з проектом, виконавши команду, подібну до:
gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0xD94AA3F0EFE21092
Після імпорту ключа та перевірки підпису файлу SHA256SUMS ви можете перевірити ISO-образ за цим списком, використовуючи:
sha256sum -c SHA256SUMS
Команда перевірить усі записи та відобразить повідомлення для кожного файлу у списку. Для щойно завантаженого ISO-образу ви повинні побачити щось подібне: «ubuntu-XX.XX-desktop-amd64.iso: Сума збігів» або «ОК», підтверджуючи, що локальне зображення точно відповідає тому, що опублікували розробники.
Вручну перевірити одну контрольну суму
Іноді у вас немає повного файлу сум або на сторінці завантаження вам надано лише один хеш. У такому разі ви також можете виконати «старомодну» перевірку. обчислення локальної контрольної суми та її порівняння вручну з опублікованою вартістю.
Уявіть, що ви завантажили ISO-образ Red Hat, і веб-сайт показує лише SHA-1-хеш цього образу. У вашому робочому каталозі ви виконуєте:
sha1sum redhat7-x64.iso
Команда поверне щось на кшталт:
2ac2f3368e6c9fe4d7201d85ad85528698aeaf08 redhat7-x64.iso
Звідти вам просто потрібно порівняйте візуально або скопіюйте/вставте цей хеш Порівняйте назву файлу з назвою, що відображається на веб-сайті або в невеликому текстовому файлі, який ви завантажили. Якщо вони збігаються посімвольно, цілісність файлу гарантована; якщо вони відрізняються, вам потрібно буде завантажити його ще раз.
Перевірте багато ISO-образів одночасно
Бувають ситуації, коли ви збираєтеся завантажити кілька образів одночасно (наприклад, різні версії чи архітектури) і не хочете перевіряти їх по одному. На щастя, файли MD5SUMS, SHA1SUMS або SHA256SUMS зазвичай групують їх разом. усі суми каталогу в одному документі, щоб ви могли виконати масову перевірку за один крок.
Припустимо, у вас є шість різних ISO-образів у папці, і ви завантажили файли MD5SUM, SHA1SUM та SHA256SUM. Для перевірок MD5 вам слід зробити щось подібне:
md5sum -c MD5SUM
У виводі буде перераховано кожен ISO разом із позначкою «OK» або «FAILED» залежно від того, чи сума збігається чи ні. Те саме стосується SHA-1 та SHA-256, змінюються лише інструмент та файл:
sha1sum -c SHA1SUM
sha256sum -c SHA256SUM
Якщо ви коли-небудь навмисно змінюєте ISO-образ або якщо він пошкоджується через збій диска, ви побачите, що Тільки цей конкретний запис позначає НЕВДАЧУ Хоча все інше залишається гаразд, програми сповіщатимуть вас повідомленням типу «ПОПЕРЕДЖЕННЯ: 1 обчислена контрольна сума НЕ збігається», щоб ви знали, що щось пішло не так.
Як створити власні файли контрольних сум
Окрім перевірки публікацій інших, ви також можете створювати власні файли контрольних сум, якщо плануєте ділитися ISO-образами або будь-яким іншим типом файлів з більшою кількістю людей. Це так само просто, як використовувати ті самі інструменти, але перенаправлення стандартного виводу у файл які ви потім можете завантажити разом із завантаженнями.
Наприклад, якщо ви підготували кілька ISO-образів у каталозі та хочете створити файл MD5SUM з усіма ними, ви можете зробити наступне:
md5sum *.iso > MD5SUM
Команда просканує всі ISO-образи в папці та збереже список хешів та імен у файлі MD5SUM. Аналогічно, ви можете створювати документи за допомогою SHA-1 або SHA-256:
sha1sum *.iso > SHA1SUM
sha256sum *.iso > SHA256SUM
Опублікувавши ці файли підтвердження разом із вашими файлами, будь-хто зможе запустити md5sum -c, sha1sum -co sha256sum -c на них та переконайтеся, що завантаження пройшло успішно та що ніхто не змінив їх під час передачі.
Якщо ви хочете піти далі та запропонувати гарантії автентичності, ви можете навіть цифровий підпис цих файлів sum Використання власного GPG-ключа, подібно до того, як це роблять великі проекти. Таким чином, той, хто отримує матеріал, може перевірити не лише повноту даних, але й те, що вони справді надійшли від вас.
Звичка перевіряти контрольні суми та підписи GPG перед встановленням дистрибутива Linux займає дуже мало часу та, натомість, забезпечує важливий рівень безпеки, запобігаючи встановленню з пошкодженими або зміненими ISO-образами та допомагаючи виявляти проблеми, перш ніж вони вплинуть на ваш комп'ютер.
