BYOK(Bring Your Own Key) 구성

완료됨

시나리오

Key Vault 고객은 Azure 외부의 온-프레미스 HSM(하드웨어 보안 모듈)에서 Azure Key Vault를 지원하는 HSM으로 키를 안전하게 전송하려고 합니다. Key Vault 외부에서 생성된 키를 가져오는 프로세스를 BYOK(Bring Your Own Key)라고 합니다.

다음은 요구 사항입니다.

  • 전송할 키는 HSM 외부에서 절대 일반 텍스트 형식으로 존재하지 않습니다.
  • HSM 외부에서 전송할 키는 항상 Azure Key Vault HSM에 보관된 키로 보호됩니다.

용어

키 이름 키 유형 Origin 설명
KEK(키 교환 키) RSA Azure Key Vault HSM Azure Key Vault에서 생성된 HSM 지원 RSA 키 쌍
래핑 키 AES 공급업체 HSM HSM 온-프레미스에서 생성된 [임시] AES 키
대상 키 RSA, EC, AES(관리되는 HSM만 해당) 공급업체 HSM Azure Key Vault HSM으로 전송할 키

KEK(키 교환 키): BYOK(Bring Your Own Key) 키를 가져오기 위한 키 자격 증명 모음 내에서 고객이 생성한 HSM 지원 키입니다. KEK에는 다음과 같은 속성이 있어야 합니다.

  • 크기가 4096비트, 3072비트 또는 2048비트인 RSA-HSM 키여야 합니다.
  • 키 작업(key_ops)은 '가져오기'로 제한되므로 BYOK 프로세스 중에만 사용할 수 있습니다.
  • 대상 키를 가져올 동일한 자격 증명 모음에 있어야 합니다.

사용자 단계

키 전송을 수행하려면,

  1. KEK를 생성합니다.
  2. KEK의 공개 키를 검색합니다.
  3. BYOK 도구를 제공한 HSM 공급업체를 사용하여 KEK를 대상 HSM으로 가져오고 KEK로 보호되는 대상 키를 내보냅니다.
  4. 보호되는 대상 키를 Azure Key Vault로 가져옵니다.

고객은 HSM 공급업체에서 제공한 BYOK 도구 및 설명서를 사용하여 3단계를 완료합니다. 키 전송 Blob(".byok" 파일)을 생성합니다.

HSM 제약 조건

기존 HSM은 다음을 포함하여 관리 대상의 키에 제약 조건을 적용할 수 있습니다.

  • 키 랩 기반 내보내기를 허용하도록 HSM을 구성해야 할 수 있습니다.
  • 대상 키는 제어된 내보내기를 허용하려면 HSM에 대한 CKA(Cryptoki Attribute)_EXTRACTABLE를 표시해야 할 수 있습니다.
  • 경우에 따라 KEK 및 래핑 키를 CKA_TRUSTED로 표시해야 할 수 있으며 HSM에서 키를 래핑하는 데 사용할 수 있습니다.

원본 HSM의 구성은 일반적으로 이 사양의 범위를 벗어납니다. Microsoft는 HSM 공급업체가 이러한 구성 단계를 포함하는 BYOK 도구와 함께 설명서를 생성할 것으로 기대합니다.

참고 항목

이러한 단계 중 일부는 Azure PowerShell 및 Azure Portal과 같은 다른 인터페이스를 사용하여 수행할 수 있습니다. Key Vault SDK에서 동등한 기능을 사용하여 프로그래밍 방식으로 수행할 수도 있습니다.

KEK 생성

az keyvault key create 명령을 사용하여 키 작업이 가져오기로 설정된 KEK를 만듭니다. 아래 명령에서 반환된 키 식별자 'kid'를 기록해 둡니다.

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




서비스는 다양한 KEK 길이를 지원합니다. 예를 들어, Azure SQL은 2048 또는 3072바이트의 키 길이만 지원합니다.

KEK의 공개 키 검색

KEK의 공개 키 부분을 다운로드하고 PEM 파일에 저장합니다.

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




HSM 공급업체에서 제공하는 BYOK 도구를 사용하여 키 전송 Blob 생성

HSM 공급업체가 제공한 BYOK 도구를 사용하여 키 전송 Blob(‘.byok’ 파일로 저장됨)을 만듭니다. 이 도구에 대한 입력 중 하나는 개인 정보 보호 강화 메일(.pem 파일)로 된 KEK 공개 키입니다.

키 전송 Blob

장기적으로 Microsoft는 PKCS#11 CKM_RSA_AES_KEY_WRAP 메커니즘을 사용하여 대상 키를 Azure Key Vault로 전송하려고 합니다. 이 메커니즘이 단일 Blob을 생성하고 더 중요하게는 임시임이 보장되며 중간 AES 키가 두 HSM에서 처리되기 때문입니다. 이 메커니즘은 현재 일부 HSM에서 사용할 수 없지만 AES 키를 사용하는 CKM_AES_KEY_WRAP_PAD 대상 키를 보호하고 CKM_RSA_PKCS_OAEP AES 키를 보호하는 조합은 동등한 Blob을 생성합니다.

대상 키 일반 텍스트는 키 유형에 따라 다릅니다.

  • RSA 키의 경우 PKCS#8 [RFC5208]로 래핑된 프라이빗 키 ASN.1 DER 인코딩 [RFC3447]
  • EC 키의 경우 PKCS#8 [RFC5208]로 래핑된 프라이빗 키 ASN.1 DER 인코딩 [RFC5915]
  • 옥텟 키의 경우 키의 원시 바이트

그런 다음 일반 텍스트 키의 바이트는 CKM_RSA_AES_KEY_WRAP 메커니즘을 사용하여 변환됩니다.

  • 임시 AES 키가 생성되고 SHA1과 함께 RSA-OAEP를 사용하여 래핑 RSA 키로 암호화됩니다.
  • 인코딩된 일반 텍스트 키는 AES 키(패딩으로 AES 키 매핑 사용)를 사용하여 암호화됩니다.
  • 암호화된 AES 키와 암호화된 일반 텍스트 키를 연결하여 최종 암호문 Blob을 생성합니다.

전송 Blob의 형식은 기본적으로 올바른 암호 해독을 위해 필요한 메타데이터를 서비스에 전달하기 위한 수단으로 JSON 웹 암호화 압축 직렬화(RFC7516)를 사용합니다.