ENCRYPT_DATAKEY スカラー関数

ENCRYPT_DATAKEY 関数は、指定された鍵ラベルとアルゴリズムを使用して最初の引数を暗号化した結果の値を戻します。

変更の開始

許可

ENCRYPT_DATAKEY 関数を呼び出す際に使用するプライマリ認証 ID は、key-label-name で指定されているキーラベルを使用する権限が与えられている必要があります。 RACF などの外部セキュリティ製品は、主要な認証IDが関連付けられているグループの1つにキーラベルの使用が許可されている場合、アクセスを許可することができる。 キーラベルの使用許可は、機能が呼び出された際に確認されます。 プライマリ認証IDにACEEが利用できない場合、 Db2 はENCRYPT_DATAKEY関数が実行される際に必要な認証をチェックするためのACEEを作成します。 詳しくは、 Db2 がACEEを作成するときをご覧ください。

変更の終わり

構文

構文図を読むビジュアルシンタックスダイアグラムをスキップするENCRYPT_DATAKEY( 式, キーラベル名,AES256RAES256D)

スキーマは SYSIBM です。

暗号化されるデータを含む式。 式は、INTEGER、BIGINT、DECIMAL、CHAR、VARCHAR、GRAPHIC、VARGRAPHIC、CLOB、または DBCLOB 組み込みデータ・タイプを戻す必要があります。
key-label-name
ICSF 鍵ラベル名が含まれている式。

鍵ラベルは保護された鍵の公開名であり、ICSF 鍵ストアで定義する必要があります。 ENCRYPT_DATAKEY 関数を呼び出す際に使用するプライマリ認証 ID は、キーラベルの使用が許可されている必要があります。

AES256R
256ビットAES CBCアルゴリズムとランダムな初期ベクトル(IV)を使用してデータを暗号化することを指定します。 このアルゴリズムは、非決定論的な暗号化値になり、最高レベルの保護を提供します。

変更の開始入力値に対しては、非決定論的な暗号化された値が返されます。 結果のテキスト・ストリングは、比較対象の暗号化された値が同じ暗号化されていない値からのものであっても比較できません。 暗号化された値は、比較で使用する前に暗号化解除する必要があります。変更の終わり

AES256D
データの暗号化に、固定初期設定ベクトル (IV) を使用する 256 ビット AES CBC アルゴリズムを使用することを指定します。 このアルゴリズムの結果は、決定論的な暗号化された値になります。 結果のテキスト値は、暗号化されたテキスト・ストリングに対する同等の比較で使用できます。 このモードを使用して暗号化された同一の入力値は、すべて同じ暗号化された値になります。 値を暗号化解除せずに、暗号化された値に対して等価比較を実行できます。
結果のデータ・タイプは、次の表に示すように、最初の引数よって決まります。
表 1. ENCRYPT_DATAKEY 関数の結果のデータ・タイプ

最初の引数のデータ・タイプ

結果のデータ・タイプ
BIGINT、INTEGER、DECIMAL、CHAR、VARCHAR、GRAPHIC、VARGRAPHIC VARBINARY
CLOB, DBCLOB BLOB

結果の長さ属性と実際の長さは、以下のように決定されます。

  • 結果の長さ属性 (バイト単位) = (((ソース・データの長さ属性 (バイト単位) + 16 - 1) / 16) * 16) + 15 バイト固定ヘッダー + 鍵ラベルの長さ属性の 64 バイト。
  • 結果の実際の長さ (バイト単位) = (((ソース・データの実際の長さ (バイト単位) + 16 - 1) / 16) * 16) + 15 バイト固定ヘッダー + 可変長鍵ラベル (バイト単位)。 が空ストリングの場合、結果の実際の長さ (バイト単位) = 15 バイト固定ヘッダー + 可変長鍵ラベル (バイト単位)。

結果の実際の長さは、expression の長さよりも長くなることがあります。 したがって、結果の暗号化された値を割り当てる場合は、暗号化された値全体を含むことができる長さ属性を使用してターゲットが定義されていることを確認してください。

結果は NULL になる可能性があります。expression が NULL である場合、その結果は NULL 値になります。

暗号化されたデータの管理

複製されたサーバーが、 Db2 がデータを復号化できるようにするには、同じセキュリティラベルと復号化機能にアクセスできなければなりません。

AES256R が指定されている場合、ENCRYPT_DATAKEY 関数は非決定論的な関数です。

AES256R と AES256D が同じ列内で混合されている場合、または行ごとに異なる鍵ラベルが使用されている場合は、暗号化された値を暗号化解除してから、何らかの比較で使用する必要があります。

文字列カラムSSNの値を暗号化し、その結果をCUSTOMERテーブルのPROTECTED_SSNカラムに挿入します。PROTECTED_SSNカラムはVARBINARYとして定義されています。 鍵ラベルとして「MYKEYLABEL」を使用し、AES256D 暗号化アルゴリズムを使用します。

UPDATE CUSTOMER
  SET PROTECTED_SSN = ENCRYPT_DATAKEY(SSN,'MYKEYLABEL', AES256D);