Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

データ要素暗号化の使用法

データ要素暗号化により、データベース全体を暗号化するよりも、アプリケーション・データをよりきめ細かく暗号化する方法が実現されます。漏洩防止が必要な機密データ要素のためのものです。例えば、顧客のレコードでクレジット・カード情報のフィールドを排他的に暗号化できます。検査結果 (HIV 検査など) を表示するフィールドを患者レコードで排他的に暗号化できます。社会保障番号が記載されたレコードで該当フィールドを排他的に暗号化できます。

データ要素暗号化は、管理ポータルからではなく、(API により) プログラムで使用できます。API によりアクセスできるので、アプリケーション・コードでこれを使用できます。データ要素暗号化をデータベース暗号化で使用するオプションがあります (両方を使用する必要はありません)。

アプリケーションでデータ要素暗号化を使用するには、アプリケーション実行時に必要なキーが使用可能である必要があります。キーを使用可能にするには、これを有効にします。詳細は、"プログラムで管理するキー"、またはポータルを使用する場合は "データ要素暗号化キーの有効化" を参照してください。キーが有効化されると、InterSystems IRIS® データ・プラットフォームではその一意の識別子が有効化キーのテーブルに表示されます。アプリケーションではその識別子を使用してキーを参照し、暗号化処理のためにメモリにロードできます。同時に 4 つまでのキーを有効にできるので、データ要素暗号化では複数のキーが必要なタスクのインフラストラクチャが実現します。

データ要素暗号化のデータを暗号化する際、InterSystems IRIS では結果として得られる暗号化テキストと共に暗号化キーの一意の識別子を格納します。一意の識別子により、暗号化テキスト自体のみを使用して解読時にシステムでキーを識別できます。

ここでは以下について説明します。

プログラムで管理するキー

データ要素暗号化は API により使用できるので、キーを管理するための一連の呼び出しもあります。

これらはすべて、%SYSTEM.EncryptionOpens in a new tab クラスのメソッドです。

データ要素暗号化の呼び出し

データ要素暗号化で利用できるシステム・メソッドは、%SYSTEM.EncryptionOpens in a new tab クラスのすべてのメソッドで、以下のとおりです。

上記のメソッド名の先頭はすべて “AESCBCManagedKey” になります。それらのメソッドが AES (Advanced Encryption Standard) を CBC (Cipher Block Chaining) モードで使用し、マネージド・キー暗号化の一連のツールの一部であるためです。

Important:

“ManagedKey” が名前に含まれない AESCBC メソッドは、古いメソッドでこれらの目的では使用できません。

$SYSTEM.Encryption.AESCBCManagedKeyEncrypt

このメソッドのシグニチャは、通常の呼び出しと同様に以下のようになります。

$SYSTEM.Encryption.AESCBCManagedKeyEncrypt
        (
        plaintext As %String, 
        keyID As %String, 
        ) 
    As %String

各要素の内容は以下のとおりです。

  • plaintext — 暗号化対象となる暗号化されていないテキスト。

  • keyID — 平文の暗号化に使用されるデータ暗号化キーの GUID。

  • メソッドは、暗号化されたテキストを返します。

メソッドが正常に実行できなかった場合、このメソッドは <FUNCTION> エラーまたは <ILLEGAL VALUE> エラーをスローします。このメソッドの呼び出しを Try-Catch ループに記述します。Try-Catch の詳細は、"TRY-CATCH メカニズム" を参照してください。

詳細は、"$SYSTEM.Encryption.AESCBCManagedKeyEncryptOpens in a new tab" のクラス・リファレンス・コンテンツを参照してください。

$SYSTEM.Encryption.AESCBCManagedKeyDecrypt

このメソッドのシグニチャは、通常の呼び出しと同様に以下のようになります。

$SYSTEM.Encryption.AESCBCManagedKeyDecrypt
        (
        ciphertext As %String
        ) 
    As %String

各要素の内容は以下のとおりです。

  • ciphertext — 解読対象となる暗号化テキスト。

  • メソッドは、解読された平文を返します。

メソッドが正常に実行できなかった場合、このメソッドは <FUNCTION> エラーまたは <ILLEGAL VALUE> エラーをスローします。このメソッドの呼び出しを Try-Catch ループに記述します。Try-Catch の詳細は、"TRY-CATCH メカニズム" を参照してください。

キー ID は解読対象となる暗号化テキストに関連付けられるため、キー ID をこの呼び出しで含める必要はありません。

詳細は、"$SYSTEM.Encryption.AESCBCManagedKeyDecryptOpens in a new tab" のクラス・リファレンス・コンテンツを参照してください。

$SYSTEM.Encryption.AESCBCManagedKeyEncryptStream

このメソッドのシグニチャは、通常の呼び出しと同様に以下のようになります。

$SYSTEM.Encryption.AESCBCManagedKeyEncryptStream
        (
        plaintext As %Stream.Object, 
        ciphertext As %Stream.Object, 
        keyID As %String, 
        ) 
    As %Status

各要素の内容は以下のとおりです。

  • plaintext — 暗号化対象となる暗号化されていないストリーム。

  • ciphertext — 暗号化ストリームを受け取る変数。

  • keyIDplaintext の暗号化に使用されるデータ暗号化キーの GUID。

  • メソッドは %StatusOpens in a new tab コードを返します。

詳細は、"$SYSTEM.Encryption.AESCBCManagedKeyEncryptStreamOpens in a new tab" のクラス・リファレンス・コンテンツを参照してください。

$SYSTEM.Encryption.AESCBCManagedKeyDecryptStream

このメソッドのシグニチャは、通常の呼び出しと同様に以下のようになります。

$SYSTEM.Encryption.AESCBCManagedKeyDecryptStream
        (
        ciphertext As %Stream.Object, 
        plaintext As %Stream.Object
        ) 
    As %Status

各要素の内容は以下のとおりです。

  • ciphertext — 解読対象となる暗号化ストリーム。

  • plaintext — 解読ストリームを受け取る変数。

  • メソッドは %StatusOpens in a new tab コードを返します。

キー ID は解読対象となる暗号化テキストに関連付けられるため、キー ID をこの呼び出しで含める必要はありません。

詳細は、"$SYSTEM.Encryption.AESCBCManagedKeyDecryptStreamOpens in a new tab" のクラス・リファレンス・コンテンツを参照してください。

リアルタイムのデータの再暗号化のサポート

データ要素暗号化では、InterSystems IRIS アプリケーションで、暗号化されたデータ要素を新しいキーで再暗号化する処理をサポートできます。

暗号化されたデータ要素には暗号化キーの識別子が格納されているので、これによって、データの再暗号化の処理が単純になります。暗号化テキストのハンドルと有効なキーを与えられるだけで、アプリケーションは再暗号化を実行できます。例えば、データ要素暗号化では、機密データをダウンタイムなしで再暗号化できる機能がサポートされています。これは特に、PCI DSS (Payment Card Industry Data Security Standard) 要件を満たすことが必要な場合など、法的な理由でこの処理が必要な場合に便利です。

データの再暗号化が必要な場合、新しいキーを作成し、アプリケーションに対して、これが新しい暗号化キーであることを指定します。その後、要素を解読してから新しいキーで暗号化するバックグラウンド・アプリケーションを実行するなどの処理を実行できます。この処理では暗号化に指定されたキーを使用し、解読にも必ずその適切なキーを使用します。これはキーが暗号化されたデータと共に格納されるためです。

FeedbackOpens in a new tab