GNU/Linux >> Znalost Linux >  >> Linux

Jak poskytnutí souboru ASC zajistí, že stahuji zamýšlený zdrojový kód?

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:

  1. 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?
  2. 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.

Související:Jaký má smysl přidat nový řádek na konec 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íč.


Linux
  1. Jak přidat nový řádek na konec souboru?

  2. Čte Tail celý soubor?

  3. Jak příkaz Sed ‚1!g;h;$!d‘ obrátí obsah souboru?

  1. Jak RSYNC jeden soubor?

  2. Jak určím soubor klíče pro sshfs?

  3. Jak ACL vypočítá efektivní oprávnění k souboru?

  1. Jak opravit chybu – ModSecurity:Přístup odepřen s kódem 44 [Apache]

  2. Jak Sticky Bit funguje?

  3. Jak funguje příkaz ps?