Назад
Співзасновник GitHub Скотт Чаконі: перехід Git 3.0 на SHA-256 буде дорогою помилкою
SiTech AI Team2 хв читання

Співзасновник GitHub Скотт Чаконі: перехід Git 3.0 на SHA-256 буде дорогою помилкою

Співзасновник GitHub та GitButler Скотт Чаконі у блозі стверджує, що перехід Git 3.0 на хешування за замовчуванням з SHA-1 на SHA-256 буде дорогою і практично безглуздою зміною для екосистеми.

Співзасновник GitHub та GitButler Скотт Чаконі опублікував допис у блозі, в якому стверджує, що заміна алгоритму хешування за замовчуванням з SHA-1 на SHA-256 у Git 3.0 буде дорогою помилкою; за його слова, міграція — це величезні витрати з мінімальною користю.

Допис опубліковано в блозі GitButler, і він стверджує, що майже ніхто не знає про ці зміни.

Чому Git 3.0 переходить на SHA-256

Git — це база даних на основі вмісту: кожен файл, дерево та коміт зберігається з хешем вмісту, коміт містить хеш батька та пов'язує всю історію разом. SHA-1 було обрано Лінусом Торвальдсом у 2005 році.

SHA-1 сьогодні вважається частково зламаним: атаки SHAttered 2017 року та SHA-1 is a Shambles 2020 року показали можливість штучних колізій, хоча реальної атаки не зафіксовано. Тому Git 3.0 планує замінити алгоритм за замовчуванням на SHA-256; зміна входить до списку несумісних змін релізу.

Порівняння атак на колізію та другий преімадж

Аргументи проти міграції

Головний аргумент Чаконі полягає в тому, що довіра не базується на хеші. Він цитує Лінуса Торвальдса з 2005 року: «Я справді вважаю, що люди не повинні вважати sha1 безпечним; справжня безпека — це поширеність». Реальні атаки відбуваються через скомпрометованих супроводжувачів та репозиторії пакетів, а не через колізію хешу.

Витрати величезні: нові репозиторії створюватимуться за замовчуванням з SHA-256, старі залишаться на SHA-1, і змішування форматів неможливе; submodule працюють лише в тому самому форматі, що й батьківський. Конвертація перезаписує всі об'єкти та підписи, ламає старі посилання та інструменти, прив'язані до 40-символьних хешів, а багато бібліотек взагалі не мають повної підтримки.

Заголовок незалежного хешу дерева в підписаному об'єкті Git

Альтернатива: незалежні заголовки хешу дерева

Замість міграції екосистеми Чаконі пропонує «незалежні заголовки хешу дерева»: під час підписання вміст дерева хешується незалежно також іншим алгоритмом (SHA-256 або BLAKE3) і додається як заголовок у підписаний об'єкт, таким чином підпис охоплює обидва хеші. Для атаки знадобилася б колізія в обох алгоритмах; за словами автора, цей підхід лише безпечніший за SHA-256.

Ідея не нова: git-evtag Коліна Волтерса з 2015 року додає до підписаних тегів контрольну суму Git-EVTag-v0-SHA512. На прототипі Чаконі дерево Chromium розміром 35 ГБ з 2,1 мільйона файлів було захешовано за 5 секунд на Mac M5.

Допис закликає переглянути рішення; на думку Чаконі, міграція триватиме роки, і в разі ослаблення SHA-256 екосистема знову опиниться в тому самому стані.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.