アップロードキー

アップロードキー

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

Bring Your Own Key(BYOK)は、ZohoのKEKではなく、独自のキー暗号化キー(KEK)を使用できる機能です。任意の外部キー管理システム(EKM)からキーを追加するか、暗号化されたキーを手動でアップロードできます。
キーをアップロードする場合の流れは次のとおりです。
  1. 標準的な方式に従い、データはZohoが管理し、ZohoのKMSに保存されるDEKで暗号化されます。このDEKはさらにZohoのKEKで暗号化され、そのKEKは別のサーバーに保存されます。
  2. KEKをアップロードするには、Zohoが提供する証明書から公開鍵を抽出し、その公開鍵を使用してキーを暗号化およびハッシュ化する必要があります。
  3. 暗号化されたKEKとハッシュ化されたKEKをZoho Oneにアップロードします。
  4. ZohoのKEKを使用してDEKを復号し、平文のDEKを取得します。
  5. この平文のDEKは、ここでお客様が提供したKEKを使用して暗号化されます。

組織内の各アプリケーションに個別にキーを設定することも、2つ以上のアプリケーションをグループ化することも、組織内のすべてのアプリケーションに単一のキーを設定することもできます。

キーをアップロードする手順は、Zoho Oneでサポートされている2種類の操作画面のバージョンによって異なります。下のタブから使用している操作画面のバージョンを選択し、以降の手順に進んでください。

[Spaces操作画面]
[統合操作画面]
Spaces操作画面

キーのアップロード

1. BYOK証明書の追加。

  1. Zoho One にサインインし、右上にあるアイコンをクリックします。

  2. [セキュリティ]をクリックします。

  3. [BYOK]をクリックし、右上にある[証明書の管理]をクリックします。

  4. [証明書の追加]をクリックし、証明書に一意の名前を入力して、[追加]をクリックします。 追加した証明書にカーソルを合わせて、ダウンロードアイコンをクリックします。

Notes
メモ:追加できる証明書は最大2件です。

 

2. 暗号化されたKEKの生成。

前提条件。

  • バージョン1.78.1以上の'bcprov-jdk18on' jar

 

ダウンロードした証明書ファイルから公開鍵を抽出し、キーを暗号化するには、次のJavaコードスニペットを使用します。

完全なコードスニペットを表示するには、こちらをクリックしてください

/**
* @param fileName
* - Downloaded FileName
* @param plainKeyBytes
* - Generated Key Bytes
* @return - Encrypted Key
* @throws Exception
*/
public static String encryptKeyWithPublicKey(String fileName, byte[] plainKeyBytes) throws Exception {

PemReader reader = new PemReader(new FileReader(new File(fileName)));
PemObject pemObject = reader.readPemObject();
byte[] content = pemObject.getContent();
reader.close();
InputStream fin = new ByteArrayInputStream(content);
CertificateFactory f = CertificateFactory.getInstance('X.509');
X509Certificate certificate = (X509Certificate) f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
byte[] publicKeyBytes = pk.getEncoded();
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance('RSA');
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Cipher encryptCipher = Cipher.getInstance('RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING');
OAEPParameterSpec oaepParams = new OAEPParameterSpec('SHA-256', 'MGF1', new MGF1ParameterSpec('SHA-256'), PSource.PSpecified.DEFAULT);
encryptCipher.init(Cipher.ENCRYPT_MODE, publicKey, oaepParams);
byte[] encryptedBytes = encryptCipher.doFinal(plainKeyBytes);
return Base64.getEncoder().encodeToString(encryptedBytes);

}

 

3. ハッシュ化されたKEKの生成。

以下のコードスニペットを使用して、AESキーのハッシュ値を生成します。

public staticString getHashValue(byte[] plainKeyBytes) throwsNoSuchAlgorithmException {

MessageDigest digest = MessageDigest.getInstance('SHA-256');

byte[] hashed = digest.digest(plainKeyBytes);

returnBase64.getEncoder().encodeToString(hashed);

}

 

4. キーのアップロード。

  1. Zoho One にサインインし、左側のメニューで[ディレクトリ]をクリックします。

  2. [管理パネル]をクリックし、[セキュリティ]をクリックします。

  3. [BYOK]をクリックし、[設定]をクリックします。


Notes
すでにキーを追加済みの場合は、右側の[+キーを追加]をクリックします。


  1. キーの追加]画面で、[キー名]を入力し、アプリを選択し、必要に応じて可用性キーを有効にすると、設定済みのキーが利用できない場合のデータ復旧に使用できます。 また、[キーの種類]として[キーをアップロード]を選択します。

Notes

1つのアプリに適用できるキーは1つのみです。すでに割り当てられているアプリは、利用可能なアプリに表示されません。


  1. キーの詳細]で、利用可能な証明書のうち、すでに暗号化済みKEKハッシュ化済みKEKを生成済みのものを1つ選択します。

メモ:+アイコン(利用可能な証明書の横)をクリックすると、証明書を追加できます。また、上記のJavaコードスニペットを使用して、暗号化済みKEKとハッシュ化済みKEKを生成できます。

  1. [参照]して、ハッシュ化済みKEKを.txtファイルとしてアップロードします。

  2. [参照]して、暗号化済みKEKを.txtファイルとしてアップロードします。

  3. [追加]をクリックします。



統合UI

キーのアップロード

1. BYOK証明書の追加。

  1. Zoho One にサインインし、左側のメニューで[ディレクトリ]をクリックします

  2. [セキュリティ]をクリックします。

  3. [BYOK]をクリックし、右上の[証明書の管理]をクリックします。

  4. [証明書の追加]をクリックし、証明書に一意の名前を入力して、[追加]をクリックします。 追加した証明書にカーソルを合わせ、ダウンロードアイコンをクリックします。

Notes
メモ:追加できる証明書は最大2件までです。

 

2. 暗号化済みKEKの生成。

前提条件。

  • バージョン1.78.1以上の'bcprov-jdk18on' JAR

 

ダウンロードした証明書ファイルから公開鍵を抽出し、キーを暗号化するには、次のJavaコードスニペットを使用します。

完全なコードスニペットを表示するには、こちらをクリックしてください

/**
* @param fileName
* - Downloaded FileName
* @param plainKeyBytes
* - Generated Key Bytes
* @return - Encrypted Key
* @throws Exception
*/
public static String encryptKeyWithPublicKey(String fileName, byte[] plainKeyBytes) throws Exception {

PemReader reader = new PemReader(new FileReader(new File(fileName)));
PemObject pemObject = reader.readPemObject();
byte[] content = pemObject.getContent();
reader.close();
InputStream fin = new ByteArrayInputStream(content);
CertificateFactory f = CertificateFactory.getInstance('X.509');
X509Certificate certificate = (X509Certificate) f.generateCertificate(fin);
PublicKey pk = certificate.getPublicKey();
byte[] publicKeyBytes = pk.getEncoded();
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance('RSA');
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Cipher encryptCipher = Cipher.getInstance('RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING');
OAEPParameterSpec oaepParams = new OAEPParameterSpec('SHA-256', 'MGF1', new MGF1ParameterSpec('SHA-256'), PSource.PSpecified.DEFAULT);
encryptCipher.init(Cipher.ENCRYPT_MODE, publicKey, oaepParams);
byte[] encryptedBytes = encryptCipher.doFinal(plainKeyBytes);
return Base64.getEncoder().encodeToString(encryptedBytes);

}

 

3. ハッシュ化されたKEKの生成。

AESキーのハッシュ値を以下のコードスニペットを使用して生成します。

public staticString getHashValue(byte[] plainKeyBytes) throwsNoSuchAlgorithmException {

MessageDigest digest = MessageDigest.getInstance('SHA-256');

byte[] hashed = digest.digest(plainKeyBytes);

returnBase64.getEncoder().encodeToString(hashed);

}

 

4. キーのアップロード。

  1. Zoho One にサインインし、左側のメニューで[ディレクトリー]をクリックします。

  2. [管理パネル]をクリックし、[セキュリティ]をクリックします。

  3. [BYOK]をクリックし、[設定]をクリックします。

キーをすでに追加済みの場合は、右側の[+キーの追加]をクリックします。


  1. キーの追加]画面で、[キー名]を入力し、アプリケーションを選択し、必要に応じて可用性キーを有効にします(設定済みのキーを利用できない場合のデータ復旧に使用する場合)。 また、[キーの種類]として[キーのアップロード]を選択します。

1つのアプリに適用できるキーは1つのみです。すでに割り当てられているアプリは[利用可能なアプリケーション]には表示されません。


  1. キーの詳細]で、すでに暗号化済みKEKハッシュ化済みKEKを生成している利用可能な証明書のいずれかを選択します。

メモ:+アイコン([利用可能な証明書]の横)をクリックして証明書を追加し、上記のJavaコードスニペットを使用して暗号化済みKEKとハッシュ化済みKEKを生成できます。

  1. ファイルを参照して、ハッシュ化済みKEKを.txtファイルとしてアップロードします。

  2. ファイルを参照して、暗号化済みKEKを.txtファイルとしてアップロードします。

  3. [追加]をクリックします。