Jakým certifikátem by balíčky měly být opatřeny? Co by takový certifikát potvrzoval? Jakou by to mělo mít souvislost se zdrojovými kódy, ze kterých byl balíček sestaven? Samé otázky.
Deb balicek je podpisany PGP klucom. Takze pokial nemas ten isty kluc, tak identicky balicek nevytvoris.
Mozes vytvorit balicek, ktory ma identicky obsah.. ak je splnenych mnoho inych podmienok. Co mam lahke pochyby, ze je bezne v debianiom build systeme. To, ze doteraz balicky neboli reprodukovatelne nebolo len tak z roztopase a toto rozhodnutie release timu mi pripada ako poroucime vetru, desti. Alebo maju prilist vela maintainerov a chcu sa ich zbavit, spolu s prislusnymi balickami ;).
Většina balíčků v Debianu je dávno reprodukovatelná, psal jsem o tom před více než deseti lety, kdy už se reprodukovatelnost pohybovala nad osmdesáti procenty a to ten projekt běžel teprve dva roky. Čili je to dlouhodobá a úspěšná věc, teď se to jen posouvá o krok dál a stává se z toho pro vývojáře povinnost.
Linux je jadro. Pokud se bavime o distribuci, konkretne o Debianu, o kterem byla puvodni zpravicka, pak pokud vim, tak se certifikaty a hashe normalne pouzivaji: https://www.debian.org/doc/manuals/securing-debian-manual/deb-pack-sign.en.html
Jak to ale souvisi s reprodukovatelnosti binarek, to nevim.
Tam se ale nepoužívají certifikáty, ale elektronické podpisy využívající pár veřejného a soukromého klíče. Certifikáty tam nehrají žádnou roli.
Každý veřejný klíč je certifikát, protože je elektronicky podepsaný, aby se nedaly měnit obsažené identifikační údaje o majiteli.
Ne. Veřejný klíč je velké číslo, nic víc. Nejsou tam žádné identifikační údaje o majiteli, ani žádný podpis. Je to jen číslo.
Kdyby veřejný klíč nebyl podepsaný, tj. nebyl certifikátem, dal by se snadno povrhnout a nedalo by se zjistit, že balíček podepsala osoba A. Elektronicky podepsané jsou PGP klíče i X.509 klíče.
Elektronický podpis v balíčku je skutečně jen číslo.
Certifikát (lepe digitální podpis) balíčku jen říká, že ten balíček vytvořil majitel privátního klíče. Takže identifikuje autora balíčku. Nic víc nic míň.
Naproti tomu reprodukovatelnost je to, že ze stejného kódu (verze/commitu…) vytvoří jiný člověk stejnou binárku. To se hodí v případě, že si nějaká distribuce udělá vlastní repozitář a pak verze určitého balíčku bude např. z Debian a Ubuntu repozitáře binárně shodná.
Prosím nepleťte si certifikát a elektronický podpis. To jsou dvě různé věci. Certifikát je strojově čitelný dokument, který svazuje dohromady nějaké informace a měl by být opatřen elektronickým podpisem, aby dával smysl a byl ověřitelný. Stejným podpisem může být ale opatřen přímo balíček, bez potřeby nějakého certifikátu. Balíčky v Debianu (a většině distribucí obecně) jsou opatřeny elektronickým podpisem vývojářů, ale není k tomu potřeba žádný certifikát.
Zbytek máte samozřejmě správně, reprodukovatelnost je způsob, jak dodatečně ověřit, že binární balíček pochází skutečně z konkrétních zdrojových souborů. Bez ní se musíme prostě jen slepě spolehnout na to, že nám tvůrce binárky dává opravdu daný program. S reprodukovatelností je to možné skutečně ověřit a sestavit si pro kontrolu na bit stejný balíček ve vlastní režii.
Obávám se, že to motáte dohromady s certifikačními autoritami.
Kdyby veřejný elektronický klíč neobsahoval údaje o majiteli, pak by se dalo ověřit pouze to, že se od podepsání obsah nezměnil. Když je však ve veřejném klíči uveden majitel, pak lze z podpisu usoudit, kdo ten balíček vytvořil (za pomoci přenosu důvěry, a to buď pomocí sítě důvěry nebo přes certifikační autoritu a kořenové klíče). A aby se nedaly informace o majiteli ve veřejném klíči měnit, je klíč podepsaný, čímž vzniká certifikát.
Každý veřejný klíč je podepsán, protože bez toho by nešlo sestavit řetězec přenosu důvěry.
Přenos důvěry (a tudíž identifikaci a podpis) není potřeba třeba u SSH klíče, kde se používá TOFU.
12. 5. 2026, 10:18 editováno autorem komentáře
Ne, Petr to píše úplně správně a motáte to vy. Asi je dobré taky upřesnit, o jakou technologii digitálního podpisu jde. Linuxové distribuce obvykle používají nějakou formu PGP. Tam klíč kromě sady klíčů obsahují jenom textový email a jméno majitele, UID. Tam si můžete napsat, cokoliv vás napadne. Tohle asi chápat tím digitálním podpisem. Nějaká metadata navíc tam sice jsou, ale naprosto minimální.
Naproti tomu Petr má na mysli asi X.509 certifikáty, jaké můžete vidět na webech, PDF souborech a podobných věcech. Myslím i instalační balíčky pro Windows používají v zásadě tohle. I s touto technologií můžete mít self-signed certifikát, kde si opět můžete pěkně strukturovaně vyplnit cokoliv dle libosti.
Certifikační autorita obvykle nemá k dispozici váš privátní klíč, ale podepisuje metadata k vašemu klíči - to, co běžně navýváme certifikátem. Pořád jde o X.509 formát zobrazitelný přes openssl x509 příkaz, ale má nějaký řetěz důvěry. To je sice velmi praktické, ale certifikáty jde míst i zcela bez toho.
A že by u SSH klíče přenos důvěry nebyl vůbec třeba bych se hádal. Například SSHFP záznamy podepsané pomocí DNSSEC vám přesně to dokáží nabídnout i pro SSH. Že se trochu z nouze a absence lepšího řešení běžně používají pomocí TOFU neznamená, že to není třeba zlepšovat. Nakonec i v SSH jdou použít certifikáty.
X.509 i PGP klíče jsou podepsané právě proto, aby nešlo podvrhnout majitele. Když se vygeneruje pár klíčů pro asymetrickou šifru, okamžitě se podepisuje veřejný klíč pomocí privátního klíče. Tím se fixují metadata (e-mail, jméno apod.) a bez privátního klíče je už nelze změnit. Doplňující údaje se používají pro přenos důvěry (certifikační autority nebo sítě důvěry).
Privátní klíč podpis neobsahuje, protože to není potřeba (neslouží k přenosu důvěry). Obvykle je zašifrován symetrickou šifrou (heslová fráze).
Elektronický podpis je jen číslo. Často se k podepsanému dokumentu rovnou přidává veřejný klíč.