491 / 736REPRO

Reproducible Firmware Build

Reprodukovatelné sestavení firmwaru

Když aktualizujete hardwarovou peněženku, instalujete hotový soubor. Jak ale zjistit, zda opravdu vznikl z kódu, který výrobce zveřejnil? Reproducible Firmware Build umožňuje nezávislému člověku sestavit stejný software znovu a výsledky porovnat. Pomáhá tím kontrolovat cestu od veřejného kódu k vydané aktualizaci.

Firmware je software, který řídí zařízení, například hardwarovou peněženku. Jeho sestavení je reprodukovatelné, když stejný zdrojový kód, určené prostředí a návod vedou k přesně shodným předem vymezeným souborům. Nestačí, aby program jen stejně fungoval. Kontrola porovnává samotná data; u podepsaných vydání musí být navíc jasné, jak se zachází s podpisem.

Výrobce může zveřejnit kód, který si programátor přečte. Do peněženky ale obvykle instalujete až hotový strojový soubor, často nazývaný binárka. Mezi těmito dvěma podobami je krok sestavení. Nezávislý člověk jej může zopakovat a porovnat výsledek s vydáním výrobce. Hledá shodu bajtů, tedy jednotlivých jednotek dat, například pomocí kryptografického hashe: otisku vypočítaného z obsahu. Tvrzení se vztahuje na určené výstupy, třeba soubor firmwaru, nikoli automaticky také na všechny pracovní soubory a záznamy. [1] [4]

Představte si dva vývojáře, kteří chtějí ověřit jednu aktualizaci. Samotné jméno projektu jim nestačí: potřebují stejný commit, tedy přesně určenou revizi kódu. Musí znát také verze připojených knihoven a kompilátoru, nástroje převádějícího kód do strojové podoby. Součástí postupu jsou jeho přepínače, relevantní nastavení prostředí a model peněženky. Tyto údaje mají být předem stanovené nebo při sestavení zaznamenané. Jinak mohou oba pracovat poctivě, ale každý vytvořit jiný výsledek. [1] [2]

Rozdíl nemusí znamenat, že někdo změnil chování programu. Kompilátor může do informací pro hledání chyb zapsat i cestu ke složce, v níž pracoval. Jeden vývojář má projekt uložený jinde než druhý, a soubory se proto liší. Řešením může být předepsaná cesta nebo podporovaný způsob jejího sjednocení. Takové pravidlo musí být známou součástí sestavení. Nestačí po neúspěšné kontrole smazat nejasná místa, jen aby nakonec vyšla shoda. [3]

Digitální podpis umožňuje ověřit, že soubor odpovídá podpisu vytvořenému příslušným klíčem. Přisoudit tento klíč výrobci je další součást důvěry. Reprodukovatelné sestavení řeší jinou otázku: zda soubor odpovídá určenému zdrojovému kódu. Obě kontroly se doplňují. Oficiální aktualizace ale může obsahovat podpisová data, která místní sestavení nemá. Pokud porovnáte celé soubory bez znalosti formátu, můžete dostat rozdíl i při správně sestaveném programu. [5]

Dokumentace Trezor popisuje výběr verze a modelu, sestavení firmwaru a porovnání s oficiálním souborem. Protože místní výsledek není podepsaný stejně jako vydání výrobce, postup před porovnáním vynuluje přesně určená podpisová pole. U starších formátů se liší i hlavičky, úvodní části souborů s jejich údaji. Rozložení závisí na modelu a verzi. Návod pro jeden přístroj proto nelze bez ověření použít na jiný. Původní podpis se přitom ověřuje samostatně; porovnání upravených kopií tuto kontrolu nenahrazuje. [5]

Nejdřív je potřeba zjistit, zda se opravdu porovnávala stejná revize pro stejný model a stejnou variantu firmwaru. Potom přicházejí na řadu nástroje, knihovny a předepsané úpravy souboru. Původní soubory i zjištěný rozdíl mají zůstat zachované. Příčinou může být chyba prostředí nebo návodu, ale také zásah do distribuovaného programu. Samotná neshoda ještě neurčuje viníka ani příčinu. Dokud není vysvětlená a kontrola zopakovaná, není namístě označit sestavení za ověřené. [1] [4]

Pokud je chyba už ve zveřejněném kódu, může ji každé opakované sestavení věrně zachovat. Také společný nedůvěryhodný kompilátor může do všech výsledků přidat stejnou škodlivou změnu; opakovat jeho použití není totéž jako nezávisle prověřit nástroj. Uzavřené binární části zase omezují, co lze z dostupného kódu znovu sestavit. A shoda souboru v počítači sama neříká, zda je konkrétní peněženka pravá nebo zda v ní běží právě tento firmware. Kontrola původu souboru je důležitá část bezpečnosti, nikoli její úplný důkaz. [6] [1]

Zpráva „ověřeno“ je užitečná teprve tehdy, když lze zjistit, kdo kontrolu provedl, kterou revizi sestavil, pro jaký model a podle jakého postupu. Má uvádět porovnané soubory, použitou hashovací funkci, výsledky a přesné zacházení s podpisovými daty. Takový záznam mohou další lidé ověřit nebo zopakovat. Více nezávislých sestavovatelů omezuje závislost na jediném vydavateli. Pořád však potřebujeme také kontrolu kódu, způsobu aktualizace a samotného zařízení. [2] [4]

Příklad · REPRO

Dva stejné výsledky a jeden jiný hash

Dva vývojáři sestaví firmware ze stejné revize pro stejný model ve stejném prostředí. Otisky SHA-256 jejich souborů souhlasí, otisk oficiální podepsané verze je však jiný. Jestliže dokumentace přesně popisuje podpisová pole, provedou předepsanou úpravu na kopiích a porovnají je znovu. Shoda se pak vztahuje na takto vymezený obsah. Původní podpis stále vyžaduje vlastní ověření; ostatní nevysvětlené rozdíly se nesmějí jednoduše odstranit.

Pro nejúplnější obraz čtěte toto heslo společně s Hardware Wallet, Private Key, Cold Storage, Secure Element. Opačným směrem na něj odkazují také COLDCARD RNG Incident (2026).

01Musím si jako uživatel firmware sám sestavovat?

Abyste rozuměli výsledku kontroly, nemusíte být programátor. Sledujte ale, zda záznam nezávislé kontroly uvádí konkrétní verzi, model a porovnané soubory. Samotná shoda hashe neprokazuje nepřítomnost chyb: stejný škodlivý kód nebo kompilátor mohou vytvářet stejné soubory. Posouzení kódu a důvěry v zařízení zůstává samostatnou otázkou.

02Znamená odlišný hash podepsané aktualizace útok?

Ne automaticky. V souboru mohou být jiná podpisová data nebo hlavičky, se kterými ověřovací postup předem počítá. Je třeba zkontrolovat verzi, model a přesný návod. Nevysvětlený rozdíl však není úspěšné ověření a nesmí se obejít libovolným mazáním dat.

DOC · 001Reproducible Builds — DefinitionDokumentace DOC · 002Reproducible Builds — Recording the environmentDokumentace DOC · 003Reproducible Builds — Build pathsDokumentace DOC · 004Reproducible Builds — Build infrastructure threatsDokumentace DOC · 005Trezor — Reproducible build verificationDokumentace DOC · 006Wheeler — Countering Trusting TrustPrimární zdroj
Revidováno: Primární zdroje · Nejde o investiční doporučení