Podpisywanie i weryfikowanie danych za pomocą Cloud KMS (asymetrycznie)

Podpisywanie i weryfikowanie danych za pomocą Cloud KMS (asymetrycznie)

Informacje o tym ćwiczeniu (w Codelabs)

subjectOstatnia aktualizacja: cze 25, 2021
account_circleAutorzy: sethvargo

1. Omówienie

Cloud KMS to hostowana w chmurze usługa do zarządzania kluczami, która umożliwia zarządzanie kluczami kryptograficznymi dla usług w chmurze w taki sam sposób jak w przypadku usług lokalnych. Obejmuje to szyfrowanie, odszyfrowywanie, podpisywanie i weryfikację przy użyciu różnych typów i źródeł kluczy, w tym Cloud HSM w przypadku kluczy sprzętowych. W tym samouczku dowiesz się, jak podpisywać i weryfikować dane za pomocą asymetrycznych kluczy Cloud KMS.

Czego się nauczysz:

  • Jak włączyć interfejs Cloud KMS API
  • Jak utworzyć pęk kluczy
  • Jak utworzyć klucz kryptograficzny do podpisywania asymetrycznego i weryfikacji

2. Konfiguracja i wymagania

Konfiguracja środowiska w samodzielnym tempie

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. (jeśli nie masz jeszcze konta Gmail ani G Suite, utwórz je).

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Zapamiętaj identyfikator projektu, który jest unikalną nazwą w ramach wszystkich projektów Google Cloud (podane powyżej imię i nazwisko są już zajęte i nie będą działać). W dalszej części tego ćwiczenia będzie on nazywany PROJECT_ID.

  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.

Przejście przez ten Codelab nie powinno wiązać się z wielkimi kosztami, jeśli w ogóle będą jakieś. Pamiętaj, aby postępować zgodnie z instrukcjami w sekcji „Wyczyszczanie”, które podają, jak wyłączyć zasoby, aby uniknąć opłat po zakończeniu samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

W tym laboratorium kodu użyjesz Cloud Shell, bezpłatnego wirtualnego środowiska działającego w Google Cloud. W konsoli GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po jego zakończeniu powinno wyświetlić się coś takiego:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie poprawia wydajność sieci i uwierzytelnianie. O ile nie podano inaczej, wszystkie polecenia uruchamiaj z tego powłoki.

3. Włączanie usługi Cloud KMS

Zanim zaczniesz korzystać z usługi Cloud KMS, musisz ją najpierw włączyć w swoim projekcie. Wystarczy to zrobić tylko raz w przypadku każdego projektu. Aby włączyć usługę Cloud KMS, uruchom to polecenie:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

Włączenie tej opcji może potrwać do minuty. Po zakończeniu polecenie zwróci komunikat o powodzeniu.

4. Tworzenie klucza KMS

utworzyć pęk kluczy Cloud KMS; W Cloud KMS pęk kluczy to logiczna kolekcja kluczy kryptograficznych. Pierścień kluczy zawiera metadane dotyczące kluczy, takie jak ich lokalizacja. Utwórz pęk kluczy o nazwie my-keyring w regionie global:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Utwórz klucz kryptograficzny o nazwie my-asymmetric-signing-key i celu asymmetric-signing w ramach utworzonego właśnie pęku kluczy.

$ gcloud kms keys create "my-asymmetric-signing-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "asymmetric-signing" \
    --default-algorithm "rsa-sign-pkcs1-4096-sha512"

5. Dane podpisu

W przeciwieństwie do szyfrowania odszyfrowywanie danych zaszyfrowanych za pomocą asymetrycznego klucza Cloud KMS wymaga dostępu online do usługi Cloud KMS. Odszyfruj tekst zaszyfrowany z pliku za pomocą narzędzia wiersza poleceń gcloud:

Utwórz plik z danymi do podpisania i użyj narzędzia wiersza poleceń gcloud, aby podpisać dane kluczem Cloud KMS:

$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --version "1" \
    --digest-algorithm "sha512" \
    --input-file ./data.txt \
    --signature-file ./data.txt.sig

Podpis jest zapisywany w data.txt.sig na dysku. Jeśli otworzysz plik data.txt.sig, zauważysz, że zawiera on dziwne, niedrukowalne znaki. Dzieje się tak, ponieważ dane wyjściowe są w formacie binarnym.

Podczas przechowywania podpisu w bazie danych lub przesyłania go w ramach żądania HTTP może być konieczne kodowanie danych. Popularnym mechanizmem kodowania jest Base64.

6. Weryfikacja danych

W przypadku kluczy asymetrycznych usługa Cloud KMS nie przeprowadza weryfikacji bezpośrednio. Zamiast tego zapewnia dostęp do klucza publicznego, a Ty weryfikujesz dane za pomocą tego klucza publicznego za pomocą kryptografii klucza publicznego. W przypadku kluczy asymetrycznych weryfikację można przeprowadzić całkowicie w trybie offline i nie wymaga ona dostępu do Cloud KMS ani innych interfejsów Google Cloud API. Weryfikacja jest przeprowadzana za pomocą narzędzia kryptograficznego, takiego jak openssl, lub za pomocą języka programowania lub biblioteki obsługujących kryptografię klucza publicznego.

Pobierz klucz publiczny z Cloud KMS:

$ gcloud kms keys versions get-public-key "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-signing-key" \
    --output-file ./key.pub

Zweryfikuj podpis za pomocą klucza publicznego, używając narzędzia wiersza poleceń openssl:

$ openssl dgst -sha256 \
    -verify ./key.pub \
    -signature ./data.txt.sig ./data.txt

Konsola wyświetli komunikat o udanej operacji, który potwierdzi, że podpis cyfrowy jest prawidłowy.

Verified OK

7. Gratulacje!

Użytkownik włączył interfejs Cloud KMS API, utworzył asymetryczny klucz podpisywania i podpisał oraz zweryfikował dane. Cloud KMS to zaawansowany produkt, a podpisywanie i weryfikacja to tylko część jego możliwości.

Czyszczenie danych

Gdy skończysz eksplorować, możesz usunąć projekt.

  • Otwórz konsolę Cloud Platform.
  • Wybierz projekt, który chcesz zamknąć, a potem u góry kliknij „Usuń”. Spowoduje to zaplanowanie usunięcia projektu.

Więcej informacji

Licencja

To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.