Udostępnij przez


Zarządzanie kluczami w module HSM w chmurze platformy Azure

Efektywne zarządzanie kluczami ma kluczowe znaczenie dla optymalizacji wydajności, zabezpieczeń i wydajności modułu HSM w chmurze platformy Azure. Ten artykuł zawiera najlepsze rozwiązania i zalecenia dotyczące obsługi limitów magazynu kluczy, zabezpieczeń opakowujących klucze, kluczowych atrybutów i strategii buforowania.

Zarządzanie limitem magazynu kluczy

Sprzętowe moduły zabezpieczeń (HSM) mają limity maksymalnej liczby tokenów i kluczy sesji, które mogą być przechowywane jednocześnie. Aby uzyskać szczegółowe informacje na temat tych limitów, zapoznaj się z tematem Azure Cloud HSM service limits (Limity usługi HSM w chmurze platformy Azure).

Aby uniknąć przekroczenia limitów usługi Moduł HSM w chmurze platformy Azure, rozważ użycie co najmniej jednej z następujących strategii efektywnego zarządzania kluczami:

  • Rotacja kluczy: Obracanie kluczy często w celu zapewnienia wymiany starszych kluczy i zwolnienia miejsca dla nowych. Częsta rotacja pomaga utrzymać HSM w granicach przechowywania, zachowując bezpieczeństwo.
  • Hierarchia kluczy: użyj hierarchii kluczy, w której klucze podstawowe są używane do szyfrowania innych kluczy. Ta hierarchia zmniejsza liczbę kluczy, które muszą być przechowywane bezpośrednio w module HSM.
  • Udostępnianie kluczy i ponowne użycie: w przypadku aplikacji z wieloma sesjami lub tokenami rozważ udostępnienie kluczy lub ponowne użycie ich w celu zmniejszenia całkowitej liczby przechowywanych.
  • Usuwanie klucza: po zakończeniu sesji nie potrzebujesz już klucza (na przykład po zakończeniu sesji), upewnij się, że jest bezpiecznie usuwany, aby zwolnić miejsce dla nowych kluczy.

Uwaga

Poczekaj 24 godziny po utworzeniu klucza, aby upewnić się, że synchronizacja i kopie zapasowe w ramach wdrożenia modułu HSM w chmurze platformy Azure zostaną ukończone.

Zarządzanie zawijaniem kluczy

Atrybut EXTRACTABLE w usłudze Azure Cloud HSM służy do oznaczania kluczy jako wyodrębnialnych lub niewyodrębnialnych. Domyślnie klucze HSM są ustawiane jako możliwe do wyodrębnienia. Klucze możliwe do wyodrębnienia można wyeksportować z modułu HSM przy użyciu mechanizmu owijania klucza, który je szyfruje. Następnie klucze muszą zostać rozpakowane przy użyciu tego samego klucza do owinięcia przed użyciem.

Natomiast kluczy nieekstraktowalnych nie można eksportować z modułu HSM w chmurze platformy Azure w żadnym wypadku. Po ustawieniu kluczy jako niewyodrębnialne nie ma możliwości zmiany ich na wyodrębnialne. Należy dokładnie rozważyć, czy potrzebne jest, aby klucze były wyciągane i odpowiednio ustawić atrybut klucza.

Jeśli aplikacja wymaga zawijania kluczy, zalecamy użycie zaufanego zawijania kluczy. Takie podejście ogranicza użytkownikom modułu HSM opakowywanie i rozpakowywanie tylko tych kluczy, które administrator jawnie wskazał jako zaufane.

  • EXTRACTABLE=0: klucze utworzone za pomocą atrybutu ustawionego EXTRACTABLE na 0 nie mogą być eksportowane, z wyjątkiem obiektów maskowanych. Są one idealne dla kluczy, które nigdy nie powinny opuszczać modułu HSM.

  • WRAP_WITH_TRUSTED=1: Domyślnie klucze możliwe do wyodrębnienia utworzone za pomocą zestawu SDK modułu HSM w chmurze platformy Azure używają zaufanego zawijania kluczy. Jednak specyfikacja PKCS#11 domyślnie ustawia WRAP_WITH_TRUSTED na CK_FALSE (0). Bez zaufanego zawijania kluczy użytkownik kryptografii może wyeksportować prywatny materiał klucza bez żadnej autoryzacji. Każda osoba, która ma dostęp do aplikacji klienckiej i używa tych kluczy, może je wyeksportować w postaci zwykłego tekstu.

Obsługa atrybutów klucza dla dostawców modułu HSM w chmurze platformy Azure

Dostawca modułu HSM w chmurze platformy Azure Atrybuty domyślne dla kluczy prywatnych i symetrycznych Obsługuje funkcję EXTRACTABLE=0 Obsługuje konfigurowanie WRAP_WITH_TRUSTED w ramach dostawcy Domyślna wartość WRAP_WITH_TRUSTED
azcloudhsm_util EXTRACTABLE, !WRAP_WITH_TRUSTED Tak Tak 1 (0 można ustawić za pomocą parametrów)
PKCS#11 EXTRACTABLE, !WRAP_WITH_TRUSTED Tak Tak 0 (określone w specyfikacji PKCS#11, ale w interfejsie API można ustawić na wartość 1)
CNG/KSP EXTRACTABLE, !WRAP_WITH_TRUSTED Nie. Nie. 1
Silnik OpenSSL EXTRACTABLE, !WRAP_WITH_TRUSTED Nie. Nie. 1
JCE !EXTRACTABLE, !PERSISTANT, !WRAP_WITH_TRUSTED Tak Nie. 1

Klucze tworzone przy użyciu interfejsu API kryptografii dostawcy następnej generacji (CNG) są zawsze ustawiane jako EXTRACTABLE. Za pomocą narzędzia CavImportKey.exe można importować klucze z innych narzędzi HSM w chmurze Azure do dostawcy usług CNG przy użyciu ich identyfikatorów kluczy. Ten import tworzy klucz w dostawcy usług magazynowania kluczy (KSP) z istniejących uchwytów kluczy.

W przypadku urzędów certyfikacji korzystających z CNG lub KSP jako dostawcy wszystkie klucze wygenerowane w dostawcy CNG są nadal oznaczone jako możliwe do wyodrębnienia. Jeśli klucz jest oznaczony jako TRUSTED w module HSM (na przykład klucz szyfrowania klucza wygenerowany przez użytkownika), może służyć do wyodrębnienia klucza prywatnego w postaci zwykłego tekstu tych kluczy, nawet po WRAP_WITH_TRUSTED zmianie.

W takich przypadkach zalecamy użycie polecenia azcloudhsm_util w celu wygenerowania klucza, jeśli nie chcesz, aby został on oznaczony jako EXTRACTABLE. Zalecamy użycie getAttribute polecenia w celu sprawdzenia, czy wygenerowane klucze mają żądane atrybuty.

Stosowanie atrybutów klucza do zarządzania uprawnieniami klucza

Użyj kluczowych atrybutów, aby zarządzać kluczowymi możliwościami, takimi jak uprawnienia. Podczas generowania klucza użyj atrybutów klucza, aby określić uprawnienia, które zezwalają na określone operacje dla tego klucza lub ograniczają je. Zalecamy generowanie kluczy tylko przy użyciu atrybutów niezbędnych do ich zamierzonego celu.

Na przykład klucz Advanced Encryption Standard (AES), który jest używany do szyfrowania, nie powinien mieć możliwości zawijania kluczy poza modułem HSM. Aby uzyskać więcej informacji na temat atrybutów zestawu SDK modułu HSM w chmurze platformy Azure, zobacz przewodniki dotyczące integracji.

Optymalizowanie opóźnienia przez buforowanie obiektów kluczy

Aby zmniejszyć opóźnienie, należy rozważyć buforowanie obiektów kluczy zawsze, gdy jest to możliwe. Podczas wyszukiwania kluczy każdy moduł HSM w klastrze na platformie chmurowej Azure jest odpytywany. Ta operacja jest kosztowna i nie jest wydajnie skalowana. Metoda wyszukiwania kluczy zależy od dostawcy:

  • W przypadku PKCS#11 do wyszukiwania kluczy używa się interfejsu C_FindObjects API.
  • W przypadku rozszerzenia kryptografii języka Java (JCE) wyszukiwanie kluczy używa wartości KeyStore.

Aby uzyskać optymalną wydajność, zalecamy użycie poleceń znajdowania kluczy (takich jak findKey i key list) tylko raz podczas uruchamiania aplikacji. Zapisz zwrócony obiekt klucza w pamięci aplikacji. Gdy ten obiekt klucza będzie potrzebny później, pobierz go z pamięci podręcznej zamiast wykonywać zapytania dotyczące niego przy użyciu każdej operacji. Wykonywanie zapytań w związku z tym wiąże się ze znacznym obciążeniem wydajności.