W jaki sposób rpm weryfikuje podpisy pakietów?

Adam Osuchowski adwol at zonk.pl
Thu Sep 27 12:23:47 CEST 2018


Pytanie może trochę dziwne, ale coś mi się nie zgadza.

Jeżeli podczas budowania pliku z paczką nie zostało wymuszone podpisywanie
(rpmbuild bez --sign), to rpm generuje na poczekaniu całkowicie nową parę
kluczy, publiczny umieszcza w budowanej paczce, a prywatnym podpisuje
całość. Taki plik całkowicie poprawnie się weryfikuje (rpm -K) mimo, że
taki podpis (self-sign) ma oczywiście zerową wartość. Czy da się jakoś
sprawić, by rpm nie uznawał za właściwie podpisane tego typu paczki?
Jak zmusić go, żeby pokazywał poprawną sygnaturę tylko wtedy, gdy jest
prawidłowo podpisana kluczem, który jest zainstalowany?

Poldek, który korzysta z bibliotek librpm*, zachowuje się oczywiście tak
samo. W zasadzie to chodzi tu głównie o niego, bo że działa instalacja
rpmem niepodpisanej paczki bezpośrednio z pliku to wiadomo (chociaż, tu
też mogłaby być robiona weryfikacja).

Jestem prawie pewny, że kiedyś (być może za czasów rpm 4) to działało,
to znaczy, że rpm weryfikował poprawnie tylko pakiety podpisane znanym
(czytaj: zainstalowanym) kluczem. Potem tego nie sprawdzałem i coś się
musiało zmienić (co najmniej to, że rpm 4 uruchamiał zewnętrzne gpg do
operacji crypto, a 5-tka ma to builtin). W tej sytuacji instalacja
jakichkolwiek paczek z sieci jest dosyć mało wiarygodna i bezpieczna.

Czy ktoś jest w stanie to potwierdzić, bo już zaczynam podejrzewać, że
to moja instalacja ma coś skopane?


More information about the pld-devel-pl mailing list