Kendi anahtarını getir belirtimi

Bu belgede müşterilerin şirket içi HSM'lerinden Key Vault HSM korumalı anahtarları içeri aktarmaya yönelik belirtimler açıklanmaktadır.

Senaryo

Key Vault müşterisi, şirket içi HSM'sinden Azure dışındaki bir anahtarı azure Key Vault HSM'ye güvenli bir şekilde aktarmak istiyor. Key Vault dışında oluşturulan bir anahtarı içeri aktarma işlemi, Kendi Anahtarını Getir (KAG) olarak adlandırılır.

Gereksinimler şunlardır:

  • Aktarılacak anahtar hiçbir zaman HSM'nin dışında düz metin biçiminde bulunmaz.
  • Bir HSM dışında aktarılacak anahtar her zaman Azure Key Vault HSM'de tutulan bir anahtarla korunur

Terminoloji

Anahtar Adı Anahtar Türü Kaynak Açıklama
Anahtar Değişim Anahtarı (KEK) RSA Azure Key Vault HSM Azure Key Vault oluşturulan HSM destekli RSA anahtar çifti
Sarmalama Anahtarı AES Satıcı HSM Şirket içi HSM tarafından oluşturulan bir [kısa ömürlü] AES anahtarı
Hedef Anahtar RSA, EC, AES (yalnızca Yönetilen HSM) Satıcı HSM Azure Key Vault HSM'ye aktarılacak anahtar

Anahtar Değişim Anahtarı: Müşterinin BYOK anahtarının içeri aktarılacağı anahtar kasasında oluşturduğu HSM destekli bir anahtar. Bu KEK aşağıdaki özelliklere sahip olmalıdır:

  • Bu bir RSA-HSM anahtarıdır (4096 bit veya 3072 bit ya da 2048 bit)
  • YALNIZCA KAG sırasında kullanılmasına izin veren sabit key_ops (YALNIZCA 'içeri aktarma') olacaktır
  • Hedef Anahtarın içeri aktarılacağı kasada olmalıdır

Kullanıcı adımları

Bir anahtar aktarımı gerçekleştirmek için kullanıcı aşağıdaki adımları gerçekleştirir:

  1. KEK oluştur.
  2. KEK'nin ortak anahtarını alın.
  3. HSM satıcısı tarafından sağlanan BYOK aracını kullanma - KEK'yi hedef HSM'ye içeri aktarın ve KEK tarafından korunan Hedef Anahtarı dışarı aktarır.
  4. Korumalı Hedef Anahtarı Azure Key Vault içeri aktarın.

Müşteriler, 3. Adımları tamamlamak için HSM satıcısı tarafından sağlanan BYOK aracını ve belgelerini kullanır. Bir Anahtar Aktarım Blobu (bir ".byok" dosyası) üretir.

HSM kısıtlamaları

Mevcut HSM, yönettiği anahtara kısıtlamalar uygulayabilir, örneğin:

  • HSM'nin anahtar sarmalama tabanlı dışarı aktarmaya izin verecek şekilde yapılandırılması gerekebilir
  • HSM'nin denetimli dışarı aktarmaya izin verebilmesi için hedef anahtarın CKA_EXTRACTABLE işaretlenmesi gerekebilir
  • Bazı durumlarda KEK ve sarmalama anahtarının CKA_TRUSTED olarak işaretlenmesi gerekebilir ve bu da HSM'deki anahtarları sarmalamada kullanılmasını sağlar.

Kaynak HSM yapılandırması genellikle bu belirtim kapsamının dışındadır. Microsoft, HSM satıcısının bu tür yapılandırma adımlarını dahil etmek için KAG aracına eşlik eden belgeler üretmesini bekler.

Not

Bu adımların birkaçı Azure PowerShell ve Azure Portal gibi diğer arabirimler kullanılarak gerçekleştirilebilir. Ayrıca Key Vault SDK'daki eşdeğer işlevler kullanılarak program aracılığıyla da gerçekleştirilebilirler.

KEK Oluştur

anahtar işlemleri içeri aktaracak şekilde ayarlanmış KEK oluşturmak için az keyvault key create komutunu kullanın. Aşağıdaki komuttan döndürülen 'kid' anahtar tanımlayıcısını not edin.

az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --vault-name ContosoKeyVaultHSM

Not

Hizmetler farklı KEK uzunluklarını destekler; örneğin Azure SQL yalnızca 2048 veya 3072 baytlık anahtar uzunluklarını destekler. Ayrıntılar için hizmetinizin belgelerine bakın.

KEK'nin ortak anahtarını alma

KEK'nin ortak anahtar bölümünü indirin ve bir PEM dosyasında depolayın.

az keyvault key download --name KEKforBYOK --vault-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem

HSM satıcısı tarafından sağlanan BYOK aracını kullanarak anahtar aktarım blobu oluşturma

Müşteri, bir anahtar aktarım blobu (".byok" dosyası olarak depolanır) oluşturmak için HSM Satıcısı tarafından sağlanan BYOK aracını kullanacak. KEK ortak anahtarı (.pem dosyası olarak) bu aracın girişlerinden biri olacaktır.

Anahtar Aktarım Blobu

Uzun vadede Microsoft, hedef anahtarı Azure Key Vault'a aktarmak için PKCS#11 CKM_RSA_AES_KEY_WRAP mekanizmasını kullanmak istiyor çünkü bu mekanizma tek bir blob üretir ve daha da önemlisi ara AES anahtarı iki HSM tarafından işlenir ve kısa ömürlü olması garanti edilir. Bu mekanizma bazı HSM'lerde mevcut değildir, ancak AES anahtarı kullanarak hedef anahtarı CKM_AES_KEY_WRAP_PAD ile korumanın ve AES anahtarını CKM_RSA_PKCS_OAEP ile korumanın birleşimi eşdeğer bir blob üretir.

Hedef anahtar düz metni anahtar türüne bağlıdır:

  • RSA anahtarı için, ÖZEL anahtar ASN.1 DER kodlaması [RFC3447] PKCS#8 içinde sarmalandı [RFC5208]
  • BIR EC anahtarı için, ÖZEL anahtar ASN.1 DER kodlaması [RFC5915] PKCS#8 içinde sarmalandı [RFC5208]
  • Sekizli anahtar için, anahtarın ham baytları

Düz metin anahtarının baytları daha sonra CKM_RSA_AES_KEY_WRAP mekanizması kullanılarak dönüştürülür:

  • Kısa ömürlü bir AES anahtarı oluşturulur ve SHA1 ile RSA-OAEP kullanılarak sarmalama RSA anahtarıyla şifrelenir.
  • Kodlanmış düz metin anahtarı, Doldurma ile AES Anahtar Kaydırma kullanılarak AES anahtarı kullanılarak şifrelenir.
  • Şifrelenmiş AES anahtarı ve şifrelenmiş düz metin anahtarı, son şifre metin blobunu üretmek için birleştirilir.

Aktarım blobunun biçimi, JSON Web Şifrelemesi sıkıştırma serileştirmesini (RFC7516) öncelikle doğru şifre çözme için gerekli meta verileri hizmete teslim etmek için bir araç olarak kullanır.

CKM_RSA_AES_KEY_WRAP_PAD kullanılırsa aktarım blobunun JSON serileştirmesi şöyle olacaktır:

{
  "schema_version": "1.0.0",
  "header":
  {
    "kid": "<key identifier of the KEK>",
    "alg": "dir",
    "enc": "CKM_RSA_AES_KEY_WRAP"
  },
  "ciphertext":"BASE64URL(<ciphertext contents>)",
  "generator": "BYOK tool name and version; source HSM name and firmware version"
}

  • kid = KEK'nin anahtar tanımlayıcısı. Key Vault tuşlar için şöyle görünür:https://ContosoKeyVaultHSM.vault.azure.net/keys/mykek/eba63d27e4e34e028839b53fac905621
  • alg = algoritma.
  • dir = Doğrudan mod, yani başvuruda bulunan çocuk, CKM_RSA_AES_KEY_WRAP doğru bir temsili olan şifre metnini doğrudan korumak için kullanılır
  • generator = BYOK aracının ve kaynak HSM üreticisinin ve modelinin adını ve sürümünü belirten bilgi alanıdır. Bu bilgiler sorun giderme ve destek için tasarlanmıştır.

JSON blobu , ".byok" uzantısına sahip bir dosyada depolanır, böylece Azure PowerShell/CLI istemcileri 'Add-AzKeyVaultKey' (PSH) veya 'az keyvault key import' (CLI) komutları kullanıldığında bunu doğru şekilde ele alır.

HSM anahtarını içeri aktarmak için anahtar aktarım blobu karşıya yükleme

Müşteri Anahtar Aktarım Blobunu (".byok" dosyası) çevrimiçi bir iş istasyonuna aktarır ve ardından bu blobu yeni bir HSM destekli anahtar olarak Key Vault içeri aktarmak için az keyvault key import komutunu çalıştırır.

RSA anahtarını içeri aktarmak için şu komutu kullanın:

az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok --ops encrypt decrypt

Ec anahtarını içeri aktarmak için anahtar türünü ve eğri adını belirtmeniz gerekir.

az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file --kty EC-HSM --curve-name "P-256" KeyTransferPackage-ContosoFirstHSMkey.byok --ops sign verify

Yukarıdaki komut yürütürken aşağıdaki gibi bir REST API isteği gönderilmesiyle sonuçlanır:

PUT https://contosokeyvaulthsm.vault.azure.net/keys/ContosoFirstHSMKey?api-version=7.0

RSA anahtarını içeri aktarırken istek gövdesi:

{
  "key": {
    "kty": "RSA-HSM",
    "key_ops": [
      "decrypt",
      "encrypt"
    ],
    "key_hsm": "<Base64 encoded BYOK_BLOB>"
  },
  "attributes": {
    "enabled": true
  }
}

EC anahtarını içeri aktarırken istek gövdesi:

{
  "key": {
    "kty": "EC-HSM",
    "crv": "P-256",
    "key_ops": [
      "sign",
      "verify"
    ],
    "key_hsm": "<Base64 encoded BYOK_BLOB>"
  },
  "attributes": {
    "enabled": true
  }
}

"key_hsm" değeri, Base64 biçiminde kodlanmış KeyTransferPackage-ContosoFirstHSMkey.byok içeriğinin tamamıdır.

Başvurular

Sonraki adımlar