Instaluji cmake z webu cmake.org a poskytují dva soubory, o kterých se domnívám, že jsou určeny k ověření stažení zdrojového kódu cmake-3.11.0-rc3.tar.gz
Na stejné stránce mají odkazy ke stažení cmake-3.11.0-rc3-SHA-256.txt a soubor cmake-3.11.0-rc3-SHA-256.txt.asc soubor
Čemu nerozumím:
- Jak soubor asc ze stejného zdroje (cmake.org) zajišťuje integritu zdrojového kódu? Pokud byl kompromitován zdrojový kód nabízený webem, nemohl útočník kompromitovat také soubor asc?
-
Nepotřebuji veřejný klíč ke skutečnému ověření stažení zdrojového kódu? A myslel jsem, že soubor asc by měl být veřejný klíč. Když se však pokusím importovat soubor asc pomocí
gpg --import cmake-3.11.0-rc3-SHA-256.txt.asc
Zobrazuje se mi chyba, že „nebyla nalezena žádná platná data OpenPGP“
Přijatá odpověď:
Podívejte se do .asc
soubor, uvidíte, že začíná:
-----BEGIN PGP SIGNATURE-----
Takže toto je Podpis PGP . Znamená to, že podepisuje nějaký obsah nějakým specifickým klíčem PGP.
1) Obsah
Podle názvu je obsahem soubor .txt
, je to seznam souborů odpovídajících softwaru ke stažení a každý soubor má svůj odpovídající hash.
2) Podpis
Pokud spustíte gpg
na obou souborech je výsledek:
$ gpg --verify cmake-3.11.0-rc3-SHA-256.txt.asc cmake-3.11.0-rc3-SHA-256.txt
gpg: Signature made Fri Mar 9 10:29:10 2018 EST
gpg: using RSA key 2D2CEF1034921684
gpg: Can't check signature: No public key
Jak to tedy celé funguje? Měli byste mít klíč 2D2CEF1034921684
ve vaší místní klíčence. Jak to získáte, a co je důležitější, ujistěte se, že máte ten správný? (ID samo o sobě nestačí). Zde se odehrává model sítě důvěry OpenPGP. Bylo by příliš dlouhé na to, abychom to zde podrobně popisovali, ale stručně řečeno, v ideálním případě získáte přístup ke klíčům mimo pásmo a máte prostředky k jeho autentizaci... nebo k ověření nějakého jiného klíče někoho, o kom víte, že sám ověřil druhý klíč. A/nebo jej najdete online na jednom nebo více místech, zabezpečený HTTPS (s certifikátem a CA, kterým důvěřujete) a ideálně pomocí DNSSEC.
Pokud máte veřejný klíč a věříte, že je dobrý a není padělaný (a že obvykle odpovídá vývojářům softwaru nástroje, který se pokoušíte stáhnout), výše uvedený příkaz vám ukáže, že .txt
se soubory nebylo manipulováno. A to vám zase poskytuje hash všech archivních souborů, takže si jej můžete stáhnout a znovu spustit hashovací algoritmus (SHA256, jak je napsáno v názvu souboru) a porovnat jej s hodnotou uloženou v souboru.
Pokud by někdo kompromitoval server a změnil některé archivy, mohl, jak sám říkáte, změnit také .txt
soubor s novými hodnotami hash, takže můžete věřit, že se soubory shodují.
Tato třetí strana by však nebyla schopna vygenerovat správný .asc
soubor s podpisem PGP (po gpg --verify
dostali byste chybu o neplatném podpisu), protože k tomu by potřeboval mít přístup k soukromému klíči, který je údajně správně zabezpečený a stejně není uložen na webovém serveru.
A pokud jej vygeneruje jiným klíčem uvidíte to, protože tomuto neznámému klíči nebudete důvěřovat.
Ale samozřejmě se celý model zhroutí, pokud je kompromitován samotný klíč.