Dlaczego gpg się denerwuje i jak go zatrzymać?

24

Niedawno przeprowadziłem migrację z jednej instalacji Ubuntu do innej, w trakcie której zmieniłem moją nazwę użytkownika. Zaimportowałem parę kluczy publiczny / prywatny do gpg, a podczas gdy deszyfrowanie (przy użyciu mojego klucza prywatnego) działa dobrze, za każdym razem, gdy próbuję zaszyfrować coś za pomocą mojego klucza publicznego, pojawia się następujący komunikat ostrzegawczy:

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Następnie pyta mnie, czy naprawdę chcę użyć klucza (zawsze odpowiadam „tak”, ponieważ w rzeczywistości jest to jedyny klucz w moim breloku i wiem, skąd się wziął). Mogę dobrze odszyfrować rzeczy, więc dlaczego gpg pasuje do tego syczącego dopasowania za każdym razem, gdy próbuję coś zaszyfrować? Jak mogę zapobiec ponownemu pojawianiu się tego komunikatu?

czterokrotnie
źródło
Czy którakolwiek z odpowiedzi na to starsze pytanie w stackoverflow pomaga ?: stackoverflow.com/q/9460140/2422988
Paul
@Paul, tak, ten link trochę pomógł. Poziom „zaufania” mojego klucza jest najwyższy i wydaje się, że to rozwiązało problem. Ale w czym był problem? Dlaczego tak się dzieje i czy to naprawiłem, czy tylko złagodziłem objawy?
Fouric
Niestety InkBlend, obawiam się, że moja zdolność do przeglądania i porównywania wyników wyszukiwania przewyższa moją wiedzę na temat pgp w tym przypadku, stąd moja próba uznania tego za odpowiedź. Wygląda na to, że Garrett wie, co się dzieje.
Paul

Odpowiedzi:

16

Udało mi się odtworzyć napotkany problem. Zrobiłem to, wykonując następujące czynności:

$ gpg --no-default-keyring --keyring ./test-keyring  --secret-keyring ./test-secring --trustdb-name ./test-trustdb --no-random-seed-file --gen-key

<specified parameters and let it do its thing>

gpg: key 58018BFE marked as ultimately trusted
public and secret key created and signed.

<snip>

$

Zauważ, że proces oznaczył klucz jako „ostatecznie zaufany”.

Teraz eksportuję klucze:

$gpg --no-default-keyring --keyring ./test-keyring  --secret-keyring ./test-secring --trustdb-name ./test-trustdb --no-random-seed-file --export-secret-keys -a >private.key

$gpg --no-default-keyring --keyring ./test-keyring  --secret-keyring ./test-secring --trustdb-name ./test-trustdb --no-random-seed-file --export -a > public.key

Teraz importuję do nowej bazy danych gpg:

$gpg --no-default-keyring --keyring ./test2-keyring  --secret-keyring ./test2-secring --trustdb-name ./test2-trustdb --no-random-seed-file --import public.key

$gpg --no-default-keyring --keyring ./test2-keyring  --secret-keyring ./test2-secring --trustdb-name ./test2-trustdb --no-random-seed-file --import private.key

Teraz, gdy spróbuję zaszyfrować przy użyciu nowych kluczy, otrzymam:

$ gpg --no-default-keyring --keyring ./test2-keyring  --secret-keyring ./test2-secring --trustdb-name ./test2-trustdb --no-random-seed-file -r Fake -e
gpg: AE3034E1: There is no assurance this key belongs to the named user

pub  1024R/AE3034E1 2013-06-13 Fake User <[email protected]>
 Primary key fingerprint: AD4D BAFB 3960 6F9D 47C1  23BE B2E1 67A6 5801 8BFE
      Subkey fingerprint: 58F2 3669 B8BD 1DFC 8B12  096F 5D19 AB91 AE30 34E1

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Powodem tego jest model „sieci zaufania”. Domyślnie, aby zaufać kluczowi publicznemu, wymaga albo 1 „ostatecznego” certyfikatu zaufania (zazwyczaj tam, gdzie osobiście zweryfikowałeś tożsamość zaangażowanych osób), albo 3 „marginalnych” certyfikatów zaufania (w przypadku kogoś, kogo znasz, kto zna kogoś, kogo znasz ... podpisał certyfikat).

Ponieważ gpg jest aplikacją zabezpieczającą, ostrzega, jeśli próbujesz zaszyfrować klucz, który nie jest wymieniony jako zaufany. Powód, dla którego twój klucz nie jest zaufany w tym przypadku, jest prosty. Jest tak, ponieważ nie wyeksportowałeś relacji zaufania z poprzedniej instancji gpg. Aby to zrobić, użyj poleceń --export-ownertrust i --import-ownertrust.

Jak zawsze, zajrzyj na stronę podręcznika .

Garrett Kajmowicz
źródło
1
Kluczową sprawą jest to, że wszystkie dane dotyczące zaufania klucza są przechowywane oddzielnie od kluczy (zarówno tajnych, jak i publicznych)! ~/.gnupg/trustdb.gpgprzechowuje bazę danych zaufania, pubring.gpgklucze publiczne i secring.gpgklucze tajne. Proszę zapoznać się z dokumentacją GnuPG na ten temat .
gertvdijk
28

Natknąłem się na ten sam problem, jednak nie miałem już dostępu do starego klucza. Dzięki temu możesz odtworzyć zaufanie do starego klucza za pomocą:

gpg --edit-key [email protected]
gpg> trust
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
Kevin Lyda
źródło
OP dokonało tego (odnotowano w komentarzach), ale dobrze jest, gdy podano to jako odpowiedź.
muru
7

Możesz użyć --always-trustflagi, aby pominąć tę wiadomość.

Paul Baltescu
źródło
1
To absolutnie prawda, ale to tylko usuwa objawy, a nie chorobę. Twoje rozwiązanie jest jak przyjmowanie aspiryny, ponieważ masz raka ...
Fabby,
2
--always-trustjest dobrym rozwiązaniem w niektórych przypadkach , ale jeśli dany klucz jest rzeczywiście kluczem użytkownika, należy mu po prostu zaufać.
Blacklight Shining
4
Moją chorobą jest uparty nacisk GPG na brelok do pieprzenia mojego programowego szyfrowania plików i robienie tego na różne sposoby na każdej maszynie wirtualnej, na której instaluję oprogramowanie.
bbozo
@BlacklightShining i jeśli nie byłbym jeszcze w stanie tego zweryfikować, Evolution nie pozwala na szyfrowanie wiadomości e-mail na ten adres. Nie mam pojęcia, dlaczego szyfrowanie tekstu do kogoś wymaga absolutnego zaufania - a przy minimalnym zaufaniu nie powinno być możliwe.
Izzy