OpenPGP интеграция в RPM

Версия 1.1.1, 19 юни 2008

Веселин Колев, Софийски Университет "Св. Климент Охридски"

Адрес за кореспонденция: vesso AT vesselin.org

Първоизточник: http://www.vesselin.org

Лиценз на документа: CC Attribution-ShareAlike

 

Съдържание:

  1. Въведение

  2. Поставяне на OpenPGP сертификат в базата на RPM

  3. Представяне и преглед на инсталираните OpenPGP сертификати в базата на RP

  4. Преглед на съдържанието на инсталираните OpenPGP сертификати в базата на RPM

  5. Изтриване на инсталиран OpenPGP сертификат от базата на RPM

  6. Проверка на електронния подпис върху файл, съдържащ RPM пакет

  7. Проверка на електронния подпис върху инсталиран RPM пакет

  8. Предишни версии на публикацията

 

1. Въведение

RPM е пакетна система, в която всеки пакет подлежи на интеграция в рамките на сертификатен модел за удостоверяване. За удостоверителен модел е избран OpenPGP. Когато един RPM пакетен файл бъде създаден, съдържанието му се подписва така, че електронния подпис се поставя вътре в създадения RPM файл (това отличава пакетната система RPM от пакетни системи, при които електронния подпис се съхранява във файл извън пакета). Така електронният подпис следва пакетния файл навсякъде и служи за идентификация на лицето или организацията, която е произвела пакета. Възможно е електронният подпис да бъде извършен и от този, който предоставя/дистрибутира пакета (благодарение на възможността за реподписване на пакета), а не от създателя му (при реподписването, електронния подпис на създателя на пакета може да бъде заменен с електронния подпис на дистрибутора).

Когато един RPM пакет трябва да бъде инсталиран, е наложително да бъде проверен електронния подпис интегриран в него. Създаването на таква практика силно намалява възможността за подмяна ("пробутване" на опасен пакет, който примерно може да отвори дупка в сигурността на системата, да унищожи файлове, да използва несанкционирано ресурси и т.н). Разбира се, инсталиращият пакета трябва да притежава копие от OpenPGP сертификата на лицето и организацията, които са подписали пакета. От гледна точка на сертификатния модел OpenPGP, не е достатъчно проверяващия електронния подпис просто да притежава копие от сертификата. Той трябва да е убеден в неговата автентичност. Следователно трябва да съществува канал за проверка на автентичността - примерно представител на дистрибутура гарантира за сертификата или пък да се ползва схемата на онаследено доверие в рамките на Web Of Trust (тази схема няма да бъде коментирана тук).

Сертификатното хранилище на базата на RPM няма нищо общо със сертификатното харанилище на други приложения, по-специално GNUPG. Проверката в рамките на Web Of Trust се прави в рамките на GNUPG и неговото сертификатно хранилище и чак след това удостоверения сертификат се прехвърля в RPM базата с OpenPGP сертификати.

Настоящата статия има за цел да покаже възможностите за интеграцията на сертификатния модел OpenPGP в пакетната система RPM. По-задълбочени познания за пакетната система RPM могат да се получат от различните документации на тази тема, като повечето от тях са свободно достъпни в Интернет. Към настоящият момент най-пълното ръководствто за потребители по използване на пакетната система RPM е създадено в рамките на проекта по документация на дистрибуцията Fedora [2].

Статията е фокусирана върху работата с пакетната система RPM в рамките на дистрибуциите Fedora Core и Red Hat Enterprise Linux.

Авторът не носи отговорност за причинени щети, вследствие на използване на описаните тук действия и техники.

 

2. Поставяне на OpenPGP сертификат в базата на RPM

За да се постави един OpenPGP сертификат в RPM базата, той трябва да е наличен в текстов файл (ASCII) във формат Base64. Спрямо значимостта си към RPM базата, OpenPGP сертификатите се разделят на два типа (чисто условно):такива, които удостоверяват автентичността на пакетите в хранилищата с пакети на дистрибуцията, поддържани от дистрибутора и такива, които удостоверяват автентичността на външни за дистрибуцията пакети (например от хранилища, които не са поддържани от дистрибутора на дистрибуцията). Всички OpenPGP сертификати, в рамките на RPM базата, се инсталират в една централен контейнер - сертификатно хранилище. В дистрибуциите Fedora Core и Red Hat Enterprise Linux (и дериватите), сертификатното хранилище на RPM базата физически се намира във файла /var/lib/rpm/Pubkeys. Това е бинарен файл във формат BerkeleyDB.

 

 

 

3. Представяне и преглед на инсталираните OpenPGP сертификати в базата на RPM

Всеки сертификат се представя в RPM базата като пакет. Следователно може да бъде търсен като такъв с наличните за целта инструменти. Всички OpenPGP сертификати в RPM базата може да се разглеждат като много едновременно налични версии на един и същи пакет с име gpg-pubkey. Версиите на пакетите gpg-pubkey се опрделят на база шестнадесетичния идентификатор на публичния ключ в основата на OpenPGP сертификата. Форматът на версията съдържа два шестнадесетични числа, разделени с тире. Идентификаторът на OpenPGP сертификата е първото число. Например във версията на пакета

gpg-pubkey-db42a60e-37ea5438

шестнадесетичното число db42a60e е идентификатора на публичния ключ в основата на OpenPGP сертификата, а 37ea5438 е хеш на датата на създаване на двойката "частен-публичен ключ". Идентификаторът на публичния ключ се използва за идентификация на даден сертификат, например в GNUPG:

$ gpg --list-keys db42a60e
pub  1024D/DB42A60E 1999-09-23 Red Hat, Inc <security@redhat.com>
sub  2048g/961630A2 1999-09-23

 

 

 

4. Преглед на съдържанието на инсталираните OpenPGP сертификати в базата на RPM

Прегледът на съдържанието на инсталираните OpenPGP пакети в базата на RPM може да стане чрез инструментите rpm и yum.

 

 

5. Изтриване на инсталиран OpenPGP сертификат от базата на RPM

Изтриването на един OpenPGP сертификат от базата на RPM може да се наложи в случайте, когато този сертификат няма да бъде използван повече или е компрометиран по някакъв начин. Пакетната система RPM чрез своя инструментариум не може да следи състоянието на даден OpenPGP сертификат. Подобно следене на състоянието на един OpenPGP сертификат може да стане например чрез периодична проверка за наличието на отменящи сертификати към дадения OpenPGP сертификат, които да укажат на неготово компрометиране. Като инструмент за реализация на този процес може да бъде използван gpg.

Както процесът по поставяне, така и този по изтриване на OpenPGP сертификат, може да реализира чрез използване на инструментите rpm и yum.

 

 

6. Проверка на електронния подпис върху файл, съдържащ RPM пакет

Преди да бъде инсталиран в системата, всеки RPM пакет представлява файл с разширение rpm. Всеки такъв файл може да бъде проверен от гледна точка на автентичност, като бъде проверен електронния подпис, който е извършен върху съдържанието (което пък се намира под формата на CPIO архив вътре в самия RPM файл).

За извършването на проверката е нужно да се разполага с OpenPGP сертификата на лицето или организацията, подписали пакета. Този сертификат трябва да е инсталиран в RPM базата. Преди всичко няма как в 100% от случаите от напред да се знае с какъв OpenPGP сертификат да се провери достоверността на съдържанието на RPM файла. Това може да се установи само опитно, след проверка. Ако в хода на проверката се установи, че OpenPGP сертификата, чрез който трябва да се провери електронния подпис върху съдържанието на RPM файла, не е наличен в RPM базата, то той трябва да бъде поставен там. След това проверката трябва да бъде извършена отново.

Ето и как се извършва проверката в команден ред чрез инструмента rpm в различни нива на подробност в резултата от проверката:

 

 

 

7. Проверка на електронния подпис върху инсталиран RPM пакет

Тази проверка засяга всички инсталирани файлове в рамките на даден пакет. Това значи, че в хода на проверката може да се установи дали даден файл от даден пакет е променян, липсва или е повреден. Цялата информация, необходима за проверката, се намира в RPM базата. Самата проверка се извършва с инструмента rpm в три нива на подробност. Изходът от операцията за проверка на целостта и автентичността на файловете в даден пакет се представя в три колони:

 

колона 1

колона 2

колона 3

флагове за състояние

флагове за тип на файла

път до файла

 

Възможните стойности на флаговете в първите две колони са както следва:

 

 

 

При извършване на проверка относно целостта на пакетите, се показват само стойностите на тези флагове, които са променяни след инсталация. За всеки файл в даден пакет се пазят базовите стойности и спрямо тях се отчита евентуалната промяна.

Ето и примери в команден ред за използването на инструмента rpm за проверка на автентичността и целостта на файловете в рамките на инсталираните пакети в различните нива на подробност:

 

 

 

 

8. Предишни версии на публикацията

 

Този документ е с OpenPGP подписано съдържание
[информация] [електронен подпис][TimeStamp]

Creative Commons - Признание 2.5 Valid CSS! Valid XHTML 1.0 Strict