Jak mogę zautomatyzować odszyfrowanie gpg, które używa hasła, zachowując je w tajemnicy?

13

Zadanie polega na zautomatyzowaniu odszyfrowywania gpg za pomocą crona (lub dowolnego narzędzia do planowania zadań zgodnego z Ubuntu Server). Ponieważ musi być zautomatyzowany, użyłem --passphrasego, ale kończy się w historii powłoki, więc jest widoczny na liście procesów.

Jak mogę zautomatyzować odszyfrowywanie, zachowując jednocześnie dobre (najlepiej świetne) standardy bezpieczeństwa?

Przykład zostanie bardzo doceniony.

Zakk Coetzee
źródło
Argumenty takie jak ten są widoczne w psetc, chyba że masz hidepidwłączone /proc, ale powłoka uruchamiająca skrypt (z crona lub innego) jest nieinteraktywna i nie powinna zapisywać historii, chyba że jest źle skonfigurowana.
dave_thompson_085

Odpowiedzi:

23

Przechowuj hasło w pliku, który może odczytać tylko użytkownik zadania cron, i skorzystaj z --passphrase-fileopcji, gpgaby odczytać tam hasło.

Zapewni to, że hasło nie będzie widoczne w informacjach o procesie w pamięci. Poziom bezpieczeństwa będzie określony przez poziom dostępu do pliku przechowującego hasło (a także poziom dostępu do pliku zawierającego klucz), w tym wszędzie tam, gdzie jego zawartość zostanie skopiowana (więc zachowaj kopie zapasowe), oraz dostępność offline (wyciągnięcie dysku z serwera). To, czy ten poziom bezpieczeństwa jest wystarczający, będzie zależeć od kontroli dostępu do serwera przechowującego plik, fizycznie i programowo, oraz od scenariuszy, które próbujesz złagodzić.

Jeśli chcesz mieć świetne standardy bezpieczeństwa, musisz użyć sprzętowego modułu bezpieczeństwa zamiast lokalnego przechowywania klucza (i hasła). Nie zapobiegnie to użyciu klucza na miejscu , ale uniemożliwi kopiowanie i używanie go w innym miejscu.

Stephen Kitt
źródło
+1 za wzmiankę o module bezpieczeństwa sprzętowego, jedynym tak naprawdę rozwiązaniu tej zagadki.
MariusMatutiae
Stephen dzięki za wzmiankę o module bezpieczeństwa sprzętu, zrobię trochę badań. Dzięki za wskazanie mi właściwego kierunku.
Zakk Coetzee
@StephenKitt Klucze sprzętowe są świetne podczas pracy. Kiedy tego nie robią, cóż ...
Satō Katsura
@ SatōKatsura to prawda, chociaż chciałbym zauważyć, że Yubikey nie jest HSM. (Co nie znaczy, że HSM nie są oczywiście bezbronni .)
Stephen Kitt
„Jeśli chcesz mieć świetne standardy bezpieczeństwa”, nie możesz mieć automatycznego zadania odszyfrowywania ani podpisywania czegokolwiek.
JimmyB
5

Automatyzacja deszyfrowania oznacza, że ​​musisz gdzieś przechowywać hasło lub nie używać hasła (chyba że użyjesz dodatkowych opcji, jak wskazano w drugiej odpowiedzi przesłanej przez Stephena, gdy pisałem moje)! Żaden z nich nie spełnia Twoich wymagań dotyczących dobrych lub świetnych standardów bezpieczeństwa.

tzn. twoje wymaganie nie jest zgodne z jego bezpieczeństwem.

Możesz polegać na takich rzeczach - musisz być rootem, nadałem plikowi, w którym moje hasło jest przechowywane, bardzo mylącą nazwę, zaszyfrowałem bazowe systemy plików itp., Ale wszystkie są warstwami które są trywialne do obejścia, gdy jesteś rootem.

Opcja, która zapobiega wyświetlaniu hasła na liście procesów, to --passphrase-file <file-name>.

Nie jest to jednak bardziej bezpieczne niż usunięcie hasła.

EightBitTony
źródło
Dziękuję za wyjaśnienie Tony'ego, lepiej zrozumiałeś tę sprawę. Głównym celem będzie sprzętowy moduł bezpieczeństwa, o którym wspomniał Stephen.
Zakk Coetzee
@ZakkCoetzee: Jak powiedziałem w innej odpowiedzi, co powstrzymuje atakującego przed użyciem HSM, jeśli są rootem?
Martin Bonner wspiera Monikę
@MartinBonner Jak powiedział wcześniej Stephen Kitt, powstrzymuje ich przed zdobyciem klucza, co jest zdecydowanie lepsze niż zdobycie klucza.
Zakk Coetzee
Jest, ale nie znacznie lepiej. Zapytaj Diginotara (który miał klucz w HSM, ale pozostawił HSM podłączony i odpowiednią kartę inteligentną w gnieździe - aby osoba atakująca mogła podpisać kilka certyfikatów atakującego.)
Martin Bonner obsługuje Monikę