1. Przegląd
Cloud KMS to hostowana w chmurze usługa 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. Obsługuje szyfrowanie, odszyfrowywanie, podpisywanie i weryfikację przy użyciu różnych typów i źródeł kluczy, w tym Cloud HSM w przypadku kluczy opartych na sprzęcie. Z tego samouczka dowiesz się, jak podpisywać i weryfikować dane za pomocą asymetrycznych kluczy Cloud KMS.
You will learn
- Jak włączyć Cloud KMS API
- Jak utworzyć pęk kluczy
- Jak utworzyć klucz kryptograficzny do podpisywania/weryfikacji asymetrycznej
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. (Jeśli nie masz jeszcze konta Gmail lub G Suite, musisz je utworzyć).
Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego ćwiczenia będzie on nazywany PROJECT_ID.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.
Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
W tym ćwiczeniu użyjesz Cloud Shell, czyli bezpłatnego zwirtualizowanego ś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 zakończeniu powinno wyświetlić się coś takiego:
Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. O ile nie podano inaczej, wszystkie polecenia uruchamiaj w tej powłoce.
3. Włączanie usługi Cloud KMS
Zanim zaczniesz korzystać z Cloud KMS, musisz najpierw włączyć tę usługę w projekcie. Wystarczy to zrobić 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ć około minuty. Po zakończeniu polecenie zgłosi powodzenie.
4. Tworzenie klucza KMS
Utwórz pęk kluczy Cloud KMS. W Cloud KMS pęk kluczy to logiczny zbiór kluczy kryptograficznych. Klucznik zawiera metadane 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"
Teraz w utworzonym pęku kluczy utwórz klucz kryptograficzny o nazwie my-asymmetric-signing-key i przeznaczeniu asymmetric-signing.
$ 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 w 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 za pomocą klucza 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ż wynikowe dane są w formacie binarnym.
Podczas przechowywania podpisu w bazie danych lub przesyłania go w ramach żądania HTTP może być konieczne zakodowanie danych. Jednym z popularnych mechanizmów kodowania jest base64.
6. Weryfikacja danych
W przypadku kluczy asymetrycznych Cloud KMS nie przeprowadza weryfikacji bezpośrednio. Zamiast tego zapewnia dostęp do klucza publicznego, za pomocą którego możesz weryfikować dane przy użyciu kryptografii klucza publicznego. W przypadku kluczy asymetrycznych weryfikacja może być przeprowadzana całkowicie offline i nie wymaga dostępu do Cloud KMS ani żadnych innych interfejsów Google Cloud API. Weryfikacja jest przeprowadzana za pomocą narzędzia kryptograficznego, takiego jak openssl, lub języka programowania bądź biblioteki obsługującej 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 pomyślnym zakończeniu, wskazujący, że podpis cyfrowy jest prawidłowy.
Verified OK
7. Gratulacje!
Interfejs Cloud KMS API został włączony, utworzono asymetryczny klucz podpisywania, a dane zostały podpisane i zweryfikowane. Cloud KMS to zaawansowana usługa, a podpisywanie i weryfikacja to tylko niewielka część jej możliwości.
Czyszczenie danych
Jeśli skończysz eksplorowanie, rozważ usunięcie projektu.
- Otwórz konsolę Cloud Platform.
- Wybierz projekt, który chcesz zamknąć, a potem kliknij „Usuń” u góry. Spowoduje to zaplanowanie usunięcia projektu.
Więcej informacji
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.