Компаниите Red Hat и Google, в сътрудничество с Университета Пърдю, основаха проекта Sigstore, насочен към създаването на инструменти и услуги за верификация на софтуер чрез цифрови подписи и поддържане на публичен лог за потвърждаване на автентичността (transparency log). Проектът ще се развива под егидата на нестопанската организация Linux Foundation.
Предложеният проект ще позволи увеличаване на сигурността на каналите за разпространение на софтуер и защита срещу атаки, насочени към замяна на софтуерни компоненти и зависимости (supply chain). Една от ключовите проблеми с безопасността в отвореното ПО е сложността при проверка на източника на получаване на програмата и верификация на процеса на компилация. Например, за проверка на целостта на релиза, повечето проекти използват хешове, но често необходимата информация за верификация е съхранявана на незабезпечени системи и в общи репозитории с код, което позволява на атакуващите да заменят необходимите за верификация файлове и да внедрят злонамерени промени, без да предизвикват съмнение.
Само малка част от проектите използват цифрови подписи при разпространението на релизи поради сложността на управлението на ключове, разпространението на открити ключове и отзоваване на компрометирани ключове. За да има смисъл верификацията, се изисква също така да се организира надежден и безопасен процес на разпространение на открити ключове и контролни суми. Дори при наличие на цифрова подпис, много потребители игнорират проверката, тъй като трябва да отделят време за изучаване на процеса на верификация и да разберат кой ключ заслужава доверие.
Sigstore се представя като аналог на Let’s Encrypt за код, предоставящ сертификати за заверка на код с цифрови подписи и инструменти за автоматизация на проверката. С помощта на Sigstore разработчиците ще могат да създават цифрови подписи за свързаните с приложението артефакти, като файлове с релизи, контейнерни образи, манифести и изпълними файлове. Отличителна черта на Sigstore е, че материалът, използван за подписване, се отразява в защитен от промени публичен лог, който може да се използва за проверка и одит.
Вместо постоянни ключове в Sigstore се използват краткоживеещи ефимерни ключове, които се генерират въз основа на правомощия, потвърдени от доставчици на OpenID Connect (в момента на генериране на ключовете за цифров подпис, разработчикът се идентифицира чрез доставчик на OpenID, свързан с имейл). Достоверността на ключовете се проверява чрез публичен централизован лог, който позволява да се уверим, че авторът на подписа е именно онзи, за когото се представя, и подписът е съставен от същия участник, който е отговарял за предишните версии.
Sigstore предлага както готова услуга, която вече може да се използва, така и набор от инструменти, позволяващи да се разгръщат подобни услуги на собствено оборудване. У услугата се предоставя безплатно за всички разработчици и доставчици на софтуер и е разположена на неутрална платформа — Linux Foundation. Всички компоненти на услугата са с отворен код, написани са на езика Go и се разпространяват под лицензия Apache 2.0.
От развиваните компоненти можем да посочим:
- Rekor — реализация на лог за съхранение на удостоверени с цифрови подписи метаданни, отразяващи информация за проектите. За гарантиране на целостта и защита от изопачаване на данни постфактум се прилага дървовидна структура „Дърво на Меркъл“ (Merkle Tree), в която всеки клон проверява всички подлежащи клонове и възли, благодарение на съвместно (дървовидно) хеширане. Има крайно хеш, потребителят може да се увери в коректността на цялата история на операциите, както и в коректността на предишните състояния на БД (кореновият проверочен хеш на новото състояние на базата се изчислява с оглед на предишното състояние). За верификация и добавяне на нови записи се предоставя Restful API, а също така и cli-интерфейс.
- Fulcio (SigStore WebPKI) — система за създаване на удостоверяващи центрове (Root-CA), издаващи краткоживеещи сертификати на основата на имейл, аутентифициран чрез OpenID Connect. Времето на живот на сертификата е 20 минути, в които разработчикът трябва да успее да състави цифров подпис (ако впоследствие сертификатът попадне в ръцете на злоумственик, той вече ще бъде просрочен).
- Cosign (Container Signing) — инструментариум за съставяне на подписи за контейнери, проверка на подписи и разполагане на подписани контейнери в хранилища, съвместими с OCI (Open Container Initiative).
Източник: opennet.ru
