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
- 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).
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
.
- 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:
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:
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.