Korzystanie z OVHcloud Key Management Service (KMS)
Szyfruj lub podpisuj swoje dane za pomocą regionalnego API REST usługi OVHcloud Key Management Service (KMS)
Wprowadzenie
Celem tego przewodnika jest przedstawienie kolejnych etapów interakcji z KMS OVHcloud w celu szyfrowania lub podpisywania danych.
Wymagania początkowe
- Posiadanie konta klienta OVHcloud.
- Zamówienie KMS OVHcloud.
- Skonfigurowanie metody uwierzytelniania dla płaszczyzny danych OKMS (osobisty token dostępu, konto serwisowe lub certyfikat dostępu).
W praktyce
Komunikacja z KMS
Komunikacja z KMS w celu wykonania operacji szyfrowania i podpisywania odbywa się za pośrednictwem API.
Ponieważ KMS jest zregionalizowany, dostęp do API odbywa się bezpośrednio w jego regionie: https://my-region.okms.ovh.net.
Na przykład dla KMS utworzonego w regionie eu-west-rbx: https://eu-west-rbx.okms.ovh.net.
Komunikacja z KMS jest możliwa przy użyciu:
- Interfejsu użytkownika Swagger
- CLI OKMS: https://github.com/ovh/okms-cli
- SDK Golang: https://pkg.go.dev/github.com/ovh/okms-sdk-go
Uwierzytelnij się za pomocą osobistego tokenu dostępu, konta serwisowego lub certyfikatu dostępu. W przypadku korzystania z API REST zalecany jest osobisty token dostępu (PAT) lub konto serwisowe. Certyfikaty dostępu są wymagane w przypadku integracji KMIP.
Aby testować wywołania API w sposób interaktywny, użyj interfejsu Swagger OKMS pod adresem https://<region>.okms.ovh.net/swagger/.
Tworzenie klucza szyfrującego przez API
Utworzenie klucza może odbyć się za pomocą lub za pomocą API właściwych dla KMS OVHcloud. Wynik nie różni się w zależności od metody tworzenia.
Poniższe ścieżki wymagają identyfikatora Twojej domeny OKMS. Jest on zwracany przez następujące wywołanie API:
Jest również widoczny, razem z regionalnym endpointem, w zakładce Informacje ogólne w .
W przypadku API właściwych dla KMS OVHcloud utworzenie klucza odbywa się za pomocą następującego API:
API oczekuje następujących wartości:
Przykład tworzenia klucza symetrycznego:
Przykład tworzenia klucza asymetrycznego:
Przykład tworzenia klucza EC:
W zależności od typu klucza możliwe rozmiary i operacje są następujące:
- Oct:
- rozmiar: 128, 192, 256
- operacje:
- encrypt, decrypt
- wrapKey, unwrapKey
- RSA:
- rozmiar: 2048, 3072, 4096
- operacje:
- sign, verify
- wrapKey, unwrapKey
- EC:
- rozmiar: nie określać
- curve: P-256, P-384, P-521
- operacje: sign, verify
W przypadku kluczy RSA operacje wrapKey / unwrapKey wzajemnie wykluczają się z sign / verify.
Importowanie klucza szyfrującego
Podczas tworzenia klucza możesz zaimportować istniejący klucz w postaci jawnej w formacie JWK.
Import materiału klucza w postaci jawnej nie jest zalecany w przypadku kluczy, które muszą pozostać zaufane. Preferuj bezpieczny BYOK z asymetrycznym opakowywaniem RSA.
W tym celu możesz dodać dodatkowe pole keys w treści żądania:
Klucz musi być w formacie JSON Web Key (JWK). Wartości pól zawartych w tabeli są zgodne z dokumentacją RFC 7518.
Zarządzanie kluczami szyfrującymi
Do zarządzania kluczami szyfrującymi dostępnych jest kilka API:
Dezaktywacja klucza szyfrującego oznacza, że nie będzie on już mógł być używany, mimo że klucz pozostaje w KMS.
Usunięcie klucza szyfrującego jest możliwe wyłącznie w przypadku klucza wcześniej dezaktywowanego.
Usunięcie klucza szyfrującego jest nieodwracalne. Wszystkie dane zaszyfrowane za jego pomocą będą trwale niedostępne.
Atrybuty wrażliwości kluczy serwisowych
Gdy tworzysz lub pobierasz klucz serwisowy, flagi wrażliwości i możliwości wyodrębnienia są zwracane w obiekcie attributes odpowiedzi GET (obok innych metadanych, takich jak state). Tylko extractable może być ustawiane przez użytkownika (przy tworzeniu lub przez PATCH). Pozostałe flagi ustawia KMS. Ustawienie extractable na true trwale ustawia never_extractable na false.
Przykładowa odpowiedź GET (pola skrócone):
Aby bezpiecznie wyodrębnić klucz, ustaw extractable na true tylko na czas operacji eksportu, wyeksportuj go z opakowaniem RSA, a następnie przywróć wartość false. Informacje znajdziesz w sekcji Eksport opakowanego klucza.
Szyfrowanie danych za pomocą KMS
Szyfrowanie w KMS
KMS OVHcloud dysponuje dedykowanym API szyfrowania przeznaczonym do szyfrowania małych ilości danych (mniej niż 4 kB).
Jest to najprostsza metoda, która jednak nie zapewnia najlepszej wydajności.
API oczekuje następujących wartości:
Przykład szyfrowania
Następnie API zwraca zaszyfrowane dane w polu ciphertext:
Deszyfrowanie danych odbywa się w sposób odwrotny za pomocą API:
API oczekuje następujących wartości:
Pole context musi mieć taką samą wartość jak ta podana podczas szyfrowania.
Szyfrowanie za pomocą Data Key (DK)
Aby uzyskać większą wydajność, możesz wygenerować Data Key (DK) na podstawie klucza symetrycznego (AES), aby używać go z poziomu swojej aplikacji.
Wykorzystywany klucz AES musi zostać wygenerowany z operacjami wrapKey i unwrapKey.
Wygenerowanie DK odbywa się za pomocą następującego API:
API oczekuje następujących wartości:
Przykład generowania Data Key:
Następnie API zwróci Data Key:
- key: zaszyfrowany klucz zakodowany w base64. Ta informacja musi być przechowywana wraz z zaszyfrowanymi danymi i będzie używana do deszyfrowania przez KMS.
- plaintext: klucz jawny zakodowany w base64. Ta informacja musi zostać usunięta po zakończeniu szyfrowania i nie może być zapisywana w kopii zapasowej.
Wykorzystanie Data Key odbywa się następnie za pomocą algorytmów szyfrowania takich jak AES-GCM, który nie jest omawiany w niniejszej dokumentacji.
Odwrotnie, możesz pobrać zdeszyfrowaną wersję Data Key za pomocą następującego API:
API oczekuje następujących wartości:
I zwraca zdeszyfrowany Data Key w polu plaintext.
Podpisywanie za pomocą KMS
Podpisywanie pliku odbywa się za pomocą klucza prywatnego z pary kluczy asymetrycznych.
Obsługiwane algorytmy
KMS OVHcloud obsługuje następującą listę algorytmów podpisywania:
- RSASSA-PKCS1 v1.5
Zgodnie z dokumentacją RFC 7518.
- ECDSA
Zgodnie z dokumentacją RFC 7518.
- RSASSA-PSS
Zgodnie z dokumentacją RFC 7518.
Podpisywanie wiadomości
Ponieważ klucza prywatnego nie można wyodrębnić z KMS w postaci jawnej, podpisywanie może odbywać się wyłącznie bezpośrednio w KMS.
API oczekuje następujących wartości:
Przykład podpisywania:
Następnie API zwróci podpis pliku:
Weryfikacja pliku
Weryfikacja pliku może odbywać się bezpośrednio w KMS lub przy użyciu klucza publicznego.
W KMS możesz użyć następującego API:
API oczekuje następujących wartości:
Przykład weryfikacji
Następnie API zwróci wynik weryfikacji:
Sprawdź również
Import i eksport kluczy w OVHcloud KMS za pomocą BYOK
Jak połączyć zgodny produkt za pomocą protokołu KMIP
Dołącz do grona naszych użytkowników.