GitHub a supus discuției o propunere pentru implementarea serviciului Sigstore pentru verificarea pachetelor prin semnături digitale și gestionarea unui jurnal public pentru a confirma autenticitatea la distribuirea versiunilor. Implementarea Sigstore va adăuga un nivel suplimentar de protecție împotriva atacurilor care vizează înlocuirea componentelor software și a dependențelor (supply chain). De exemplu, modificarea implementată va proteja codurile sursă ale proiectelor în cazul compromiterii contului unui dezvoltator asociat cu una dintre dependențele din NPM, prevenind generarea de actualizări ale pachetului cu cod malițios de către un atacator.
Datorită noului nivel de protecție, dezvoltatorii vor putea lega pachetul generat de codul sursă utilizat și de mediul de compilare, oferindu-le utilizatorilor posibilitatea de a verifica că conținutul pachetului corespunde cu cel al codului sursă din depozitul principal al proiectului. Utilizarea Sigstore simplifică semnificativ procesul de gestionare a cheilor și permite eliminarea complexităților legate de înregistrarea, revocarea și administrarea cheilor criptografice. Sigstore este prezentat ca un analog al Let’s Encrypt pentru cod, oferind certificate pentru semnarea codului cu semnături digitale și unelte pentru automatizarea verificării.
În loc de chei permanente, Sigstore folosește chei efemere cu o durată limitată, generate pe baza autorizațiilor. Materialul utilizat pentru semnătură este reflectat într-un jurnal public protejat împotriva modificărilor, care permite confirmarea faptului că autorul semnăturii este cel care spune că este, și că semnătura a fost generată de același participant care s-a ocupat de versiunile anterioare. Pentru a asigura integritatea și protecția împotriva alterării datelor retroactiv, se utilizează o structură arborescentă denumită „arborele lui Merkle”, în care fiecare ramură verifică toate ramurile și nodurile subiacente prin hash-uri arborescente. Având hash-ul final, utilizatorul se poate asigura de corectitudinea întregii istorii a operațiunilor, precum și de corectitudinea stărilor anterioare ale bazei de date (hash-ul de control al noii stări a bazei este calculat având în vedere starea anterioară).
Sursa: opennet.ro
