アップロードキー

アップロードキー

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

独自の暗号鍵の使用は、Zohoの鍵暗号化鍵(KEK)の代わりに、独自のKEKを使用できる機能です。任意の外部の鍵管理サービス(EKM)から鍵を追加するか、暗号化済みの鍵を手動でアップロードできます。
鍵をアップロードする場合の処理は、次のとおりです。
  1. 通常の処理では、データはZohoが管理するデータ暗号化鍵(DEK)を使用して暗号化され、Zohoの鍵管理システム(KMS)に保存されます。さらにDEKはZohoのKEKを使用して暗号化され、別のサーバーに保存されます。
  2. KEKをアップロードするには、Zohoから提供される証明書から公開鍵を抽出し、その公開鍵を使用して鍵を暗号化およびハッシュ化する必要があります。
  3. Zoho Oneで、暗号化されたKEKとハッシュ化されたKEKをアップロードします。
  4. ZohoのKEKを使用してDEKを復号し、平文のDEKを取得します。
  5. この平文のDEKは、ユーザーが提供したKEKを使用して暗号化されます。

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

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

[スペースUI]
[統合UI]
スペースUI

鍵をアップロードするには

1. BYOK証明書の追加

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

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

  3. [独自の暗号鍵の使用]をクリックし、右上の[証明書の管理]をクリックします。

  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. [独自の暗号鍵の使用]をクリックし、次に[設定]をクリックします。


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. [独自の暗号鍵の使用]をクリックし、次に右上の[証明書の管理]をクリックします。

  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. まず、[独自の暗号鍵の使用]をクリックし、[設定]をクリックします。

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


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

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


  1. 「鍵の詳細」で、すでに暗号化されたKEKとハッシュ化されたKEKを生成済みの[利用可能な証明書]を1つ選択します。

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

  1. ハッシュ化されたKEKの.txtファイルを選択してアップロードします。

  2. 暗号化されたKEKの.txtファイルを選択してアップロードします。

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