Spoločnosti Red Hat a Google, v spolupráci s Purdue University, založili projekt Sigstore, zameraný na vytváranie nástrojov a služieb na verifikáciu softvéru pomocou digitálnych podpisov a vedenie verejného záznamu na potvrdenie autenticity (transparency log). Projekt sa bude vyvíjať pod záštitou neziskovej organizácie Linux Foundation.
Navrhovaný projekt umožní zvýšiť bezpečnosť kanálov distribúcie programov a chrániť sa pred útokmi zameranými na podvod s programovými komponentmi a závislosťami (supply chain). Jedným z kľúčových problémov s bezpečnosťou v otvorenom softvéri je zložitosti overovania zdroja, z ktorého bol program získaný, a verifikácie procesu zostavenia. Napríklad na overenie integrity vydania väčšina projektov používa hash, ale často potrebné informácie na overenie autenticity sú uložené v nezabezpečených systémoch a v spoločných repozitároch s kódom, čo môže útočníkom umožniť pozmeniť potrebné súbory na overenie a nevyvolať podozrenie.
Len nepatrná časť projektov používa digitálne podpisy pri distribúcii vydaní kvôli zložitostiam v správe kľúčov, distribúcii otvorených kľúčov a odvolávaní kompromitovaných kľúčov. Aby verifikácia mala zmysel, je tiež potrebné zorganizovať spoľahlivý a bezpečný proces distribúcie otvorených kľúčov a kontrolných súm. Aj pri existencii digitálneho podpisu mnohí používatelia ignorujú overenie, pretože musia venovať čas štúdiu procesu verifikácie a pochopiť, ktorý kľúč si zaslúži dôveru.
Sigstore sa predstavuje ako ekvivalent Let’s Encrypt pre kód, poskytujúci certifikáty na overovanie kódu digitálnymi podpismi a nástroje na automatizáciu kontroly. Pomocou Sigstore budú môcť vývojári vytvárať digitálne podpisy pre s aplikáciou súvisiace artefakty, ako sú súbory s uvoľneniami, obrazce kontajnerov, manifesty a spustiteľné súbory. Špeciálnosťou Sigstore je, že materiál použitý na podpisovanie sa odráža v chránenom verejnom logu, ktorý je možné použiť na overovanie a audit.
Namiesto stálych kľúčov sa v Sigstore používajú krátkodobé efemérne kľúče, ktoré sú generované na základe oprávnení potvrdených poskytovateľmi OpenID Connect (v momente generovania kľúčov pre digitálny podpis sa vývojár identifikuje prostredníctvom poskytovateľa OpenID s prepojením na email). Autenticita kľúčov sa overuje podľa verejného centralizovaného logu, ktorý umožňuje uistiť sa, že autor podpisu je naozaj tým, za koho sa vydáva, a podpis bol vytvorený tým istým účastníkom, ktorý bol zodpovedný za predchádzajúce vydania.
Sigstore poskytuje ako hotovú službu, ktorou je možné už teraz využívať, tak aj súbor nástrojov, umožňujúcich nasadiť podobné služby na vlastnom zariadení. Služba je bezplatná pre všetkých vývojárov a dodávateľov softvéru a je nasadená na neutrálnom mieste — Linux Foundation. Všetky komponenty služby sú otvorené, napísané v jazyku Go a šíria sa pod licenciou Apache 2.0.
Medzi vyvíjané komponenty patrí:
- Rekor — implementácia logu na uchovávanie overených digitálnymi podpismi metadát, odrážajúcich informácie o projektoch. Na zabezpečenie integrity a ochrany pred pozmenením dát spätne sa používa stromová štruktúra „Merkle Tree“, v ktorej každá vetva overuje všetky podriadené vetvy a uzly, vďaka spoločnému (stromovému) hashovaniu. S konečným hashom sa používateľ môže uistiť v správnosti celej histórie operácií, ako aj v správnosti minulých stavov databázy (koreňový kontrolný hash nového stavu databázy sa vypočítava so zohľadnením minulého stavu). Na overenie a pridanie nových záznamov je k dispozícii Restful API a tiež cli rozhranie.
- Fulcio (SigStore WebPKI) — systém na vytváranie certifikačných autorít (Root-CA), ktoré vydávajú krátkodobé certifikáty na základe emailu, autentifikovaného cez OpenID Connect. Doba platnosti certifikátu je 20 minút, počas ktorých musí vývojár stihnúť vytvoriť digitálny podpis (ak certifikát neskôr padne do rúk útočníka, už bude expirovaný).
- Cosign (Container Signing) — nástroj na vytváranie podpisov pre kontejnery, overovanie podpisov a umiestňovanie podpísaných kontajnerov v repozitároch kompatibilných s OCI (Open Container Initiative).
Zdroj: opennet.ru
