...

データ暗号化機能 内容 1.表内の列の暗号化

by user

on
Category: Documents
236

views

Report

Comments

Transcript

データ暗号化機能 内容 1.表内の列の暗号化
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
データ暗号化機能
お断り:当資料は、DB2 UDB V7.2(UNIX,PC)をベースに作成されています。
<第1.00版>2001年6月
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
内容
1.表内の列の暗号化
1-1. 表内の列の暗号化
1-2. 暗号化されたデータ
1-3. ENCRYPT関数
1-4. DECRYPT関数
1-5. GETHINT関数
1-6. ENCYPTION PASSWORD特殊レジスター
1-7. 暗号化関数の使用例
1-8. エラー・メッセージ
1-9. コードページの注意点
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 1-2 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1.表内の列の暗号化
組み込み関数に新しい暗号化と解読のセットが加わりました
注意:一度データが暗号化されると、正しいパスワード以外では解読できません!
ENCRYPT関数 データを暗号化
DECRYPT_CHAR/DECRYPT_BIN関数 データを解読
GETHINT関数 データのためのパスワードのヒントを戻す
ENCYPTION PASSWORD特殊レジスター
引数にパスワードを指定する代わりに特殊レジスターに設定できます
x'0034CC0603AFD5AC464544434241D3653A9B1AD0856C'
190249
暗号化されたデー
タをVARCHAR
FOR BIT DATA列
に保存
MOTOKI
SELECT DECRYPT_CHAR(COL3,'passwd') FROM TAB1
WHERE COL1 = 190249
INSERT INTO TAB1
1
values(190249,'MOTOKI',encrypt('秘密','passwd'));
---------------------------秘密
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1.表内の列の暗号化
組み込み関数に新しい暗号化と解読のセットが加わりました。
セキュリティ計画の一環として、データの暗号化があります。 これを行うため、暗号化および暗号化解除組み込み関数が提供
されました。ENCRYPT 関数は、パスワード・
ベースの暗号化メソッドでデータを暗号化します。これらの関数によって、パスワ
ード・ヒントをカプセル化することもできます。 GETHINT関数は、カプセル化されたパスワード・ヒントを返します。 パスワード・
ヒントとは、データ所有者がパスワードを思い浮かべるために役立つフレーズです。 たとえば、パスワード "Pacific" を思い浮
かべるために、ワード "Ocean" をヒントとして使用することができます。データの暗号化に使用するパスワードは、以下のいず
れかの方法で決定されます。
追加されたセットは以下のものです。
ENCRYPT関数: データを暗号化
DECRYPT_CHAR/DECRYPT_BIN関数: データを解読
GETHINT関数: データのためのパスワードのヒントを戻す
ENCYPTION PASSWORD特殊レジスター: 引数にパスワードを指定する代わりに特殊レジスターに設定できます
これらにより、すべての行の各列に対して別々のパスワードを設定した暗号化データを作成する事が可能になりました。
Client/Server間でのデータの暗号化ではありません。 UDBサーバー内で暗号化/暗号解除を行います。
注意:一度データが暗号化されると、正しいパスワード以外では解読できません!
使用する場合はパスワードを忘れてしまった場合の運用を検討してください。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 3-4 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-2. 暗号化されたデータ
暗号化のアルゴリズムとキーの長さ
暗号化の履行はRSAで、現在DB2でパスワード暗号化に使われているライブラリと同じです
Password Based encription - パスワードを秘密キーとして暗号化
128ビットキー
データ長
データ・
ストリング:Hintありの場合 最大32663Byte、Hintなしの場合 最大32631Byte
パスワード
: 6 <= パスワード <= 127 バイト
大文字変換は行われないため、文字はすべて大文字小文字を区別して指定しなければ なりません
末尾のブランクの数も区別されて別のものとして扱われます
ヒント
: 最大 32バイト
暗号化データ
VARCHAR のみ暗号化することが可能
関数の引数としてはCHARも指定可能です(暗号解除した場合にVARCHARで戻されます)
GRAPHIC/VARGRAPHICは不可(CHAR/VARCHARにキャストする事により暗号化)
バイナリー・
データも暗号化することが可能です(VARCHAR FOR BIT DATAを引数として指定)
LOBデータはV7.2ではサポートされない
VARCHAR FOR BIT DATAとして格納
暗号化されたデータと共にオリジナル・
データのデータ長、フラグ、チェックサム、CCSID、ヒン
ト・ストリングおよび、そのデータ長をふくみます
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-2. 暗号化されたデータ
Password Based encription - パスワードを秘密キーとして暗号化 します。 暗号化の履行はRSAで、現在DB2でパスワード暗号化
に使われているライブラリと同じです。
CHAR/VARCHAR のみ暗号化の対象になります。 暗号解除した場合にはVARCHARで戻されますので、正確にはVARCHARのみ
が暗号化可能ということになります。 CHAR/VARCHARにはFOR BIT DATAサブ・タイプを含みます。 つまりバイナリー・データを
暗号化することができるわけです。 LOBデータはV7.2ではサポートされません。
暗号化されたデータはVARCHAR FOR BIT DATAとして格納されます。 逆の言い方をすれば、暗号化されたデータを保存するた
めの表をCREATE TABLEで作成する場合、該当のカラムをVARCHAR FOR BIT DATAとします。 定義時のデータ長の計算は次ペ
ージで説明します。
暗号化されたデータと共にオリジナル・
データのデータ長、フラグ、チェックサム、CCSID、ヒント・ストリングおよび、そのデータ長を
ふくみます
注意
パスワードの文字はすべて大文字小文字を区別します。
末尾のブランクの数も区別されて別のものとして扱われます。
プログラムでパスワードをCHARタイプの変数に入れている場合、ブランクがパディングされる事に注意してください。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 5-6 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-2. 暗号化されたデータ
カラム長の計算
Hintありの場合:オリジナルのデータの最大長 + ヘッダー(8byte) + Hint(32Byte) + 次の8バ
イト境界までのバイト数
Hintなし場合 :オリジナルのデータの最大長 + ヘッダー(8byte) + 次の8バイト境界までの
バイト数
計算例
オリジナルのデータの最大長
30
16
+ 次の8バイト境界までのバイト数
2
8
+ ヘッダー長(8バイト)
8
8
+ Hint
32
--------------------------------------------------暗号化カラム長
40
64
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-2. 暗号化されたデータ
暗号化されたデータはVARCHAR FOR BIT DATAのカラムに保存します。 この時のカラムの長さ属性を以下のように計算します。
Hintありの場合:オリジナルのデータの最大長 + ヘッダー(8byte) + Hint(32Byte) + 次の8バイト境界までのバイト数
Hintなし場合 :オリジナルのデータの最大長 + ヘッダー(8byte) + 次の8バイト境界までのバイト数
実際のHintの長さは指定したストリングのバイト数になります。 Hintとして最大長(32Byte)のストリングが指定された時の事を
考慮してカラムの長さ属性を決めてください。
オリジナルのデータ長が8の倍数であった場合、"次の8バイト境界までのバイト数"として8バイトを加えます。
struct sqlri_encryptedData{
unsigned char flags;
unsigned char chksum;
unsigned char chksum2;
signed char hintLen;
Uint16
CCSID;
Uint16
dataLen;
For the "flags", bit values
0 On: FBD. Off: Non-FBD
1 On: Lob. Off: Varchar
2-7 Reserved
//
//
//
//
//
checksum
Complement checksum
Length of the hint
CCSID of the original data
Length of the original data
db2 "INSERT INTO TAB1 VALUES(ENCRIPT('ABCDEF','123456','654321'))"
x'0034CC 06 AF03 ACD5 464544434241 D3653A9B1AD0856C' NT
x'0034CC 06 03AF D5AC 464544434241 D3653A9B1AD0856C' AIX
Code
Page
943
Hint
'654321'
暗号化データ
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 7-8 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-3. ENCRYPT関数
ENCRYPT関数
>>-ENCRYPT------------------------------------------------------>
>----(--data-string-expression--+----------------------------------------------------------------+---)-><
'-,--password-string-expression--+----------------------------+--'
'-,--hint-string-expression--'
ENCRYPT 関数は、data-string-expression 暗号化し、結果をVARCHAR FOR BIT DATA で
戻します
スキーマは SYSIBMです
暗号化データ・ストリングは暗号化されたデータに加えヘッダーおよびパディングされ
る部分を含むので、オリジナル・データより大きくなります
引数
data-string-expression: 暗号化するCHARまたはVARCHARデータ(式)。 hint-string-expression 引き数が
なければ32663 バイト、hint-string-expression引き数が指定されていれば 32631バイトに制限されていま
す。
password-string-expression: 暗号化するために 使用されるパスワード(CHARまたはVARCHARデータ(式))。
6 <= パスワード <= 127バイトに制限されています。 パスワード引き数がヌル、または与えられていない
場合、 ENCRYPTION PASSWORD特殊レジスターの値を使用して暗号化されます。
hint-string-expression: データ所有者がパスワードを思い浮かべるためのフレーズ。 32バイトまでの
CHARまたはVARCHARデータ(式)。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-3. ENCRYPT関数
ENCRYPT関数は、バージョン 7.1 のフィックスパック 3 から有効になりました。
その他の注意点
data-string-expressionがNULLの場合には、結果はNULLになります。
password-string-expressionが指定されない、またはNULLの場合、パスワードとしてENCRYPTION PASSWORD特殊レジスタ
ーの値が使用されます。 この時にはENCRYPTION PASSWORD特殊レジスターに値が設定されていなければなりません。設
定されていない場合にはエラー(SQL20143N(SQLSTATE=51039))になります。
パスワードの文字はすべて大文字小文字を区別します。 また、末尾のブランクの数も区別されて別のものとして扱われます。
暗号化されたものをさらに暗号化することはできません。 data-string-expressionと指定されたものが既に暗号化されてもので
あれば、エラーになります(SQL20147N(SQLSTATE=55048))。
パスワードを引数に指定した時の例
H:¥>db2 "INSERT INTO X2 VALUES(1,ENCRYPT('043-297-5948', 'pacifc','ocean'))
DB20000I SQL コマンドが正常に終了しました。
H:¥>db2 SELECT GETHINT(COL2) FROM X2 WHERE COL1 = 1
1
-------------------------------ocean
1 レコードが選択されました。
H:¥>db2 "SELECT COL1, DECRYPT_CHAR(COL2, 'pacifc') FROM X2 WHERE COL1 = 1"
COL1
2
----------- ---------------------------------------------------1 043-297-5948
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 9-10 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-4. DECRYPT関数
DECRYPT_CHAR/DECRYPT_BIN関数
>>-+-DECRYPT_BIN--+--------------------------------------------->
'-DECRYPT_CHAR-'
>----(--encrypted-data--+--------------------------------+---)--><
'-,--password-string-expression--'
DECRYPT_BIN/DECRYPT_CHAR 関数は、encrypted-dataを暗号化 解除した値を返します。
DECRYPT_BIN およびDECRYPT_CHAR 関数は、ENCRYPT 関数で暗号化された値だけを 暗
号化解除できます
DECRYPT_BIN 関数の戻り値はVARCHAR FOR BIT DATAで、DECRYPT_CHAR 関数の戻り
値はVARCHARです
スキーマは SYSIBMです
引数
encrypted-data: ENCRYPT関数で暗号化された、完全な暗号化データ・ストリング。CHAR FOR BIT DATA または
VARCHAR FOR BIT DATAデータ(式)
password-string-expression: 暗号化した時と同じパスワード。 パスワード引き数がヌル、または与えられていない場
合、 ENCRYPTION PASSWORD特殊レジスターの値を使用します。いずれにも与えられていない場合はエラーになり
ます。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-4. DECRYPT関数
DECRYPT_CHAR/DECRYPT_BIN関数は、バージョン 7.1 のフィックスパック 3 から有効になりました。
その他の注意点
encrypted-dataがNULLの場合には、結果はNULLになります。
password-string-expressionが指定されない、またはNULLの場合、パスワードとしてENCRYPTION PASSWORD特殊レジスタ
ーの値が使用されます。 この時にはENCRYPTION PASSWORD特殊レジスターに値が設定されていなければなりません。設
定されていない場合にはエラー(SQL20143N(SQLSTATE=51039))になります。
パスワードの文字はすべて大文字小文字を区別します。 また、末尾のブランクの数も区別されて別のものとして扱われます。
ECRYPT_BIN/DECRYPT_CHAR関数は、ENCRYPT 関数で暗号化された値だけを 暗号化解除できます。 ENCRYPT 関数で暗
号化されたデータでない場合にはエラー(SQL20146N(SQLSTATE=428FE))になります。
暗号化が行われたときのコード・
ページとは別のコード・ページが使用されている、 異なるシステムでデータが暗号化解除され
ると、暗号化解除された値をデータベース・ コード・ページに変換するとき、長さが超過してしまう可能性があります。 この場合
、encrypted-data 値を より大きなバイト数の VARCHAR ストリングに cast する必要があります。
どうして異なる2つのDECRYPT関数が用意されているのでしょうか?
戻り値のデータ・タイプはコンパイル時に決まってしまいます。 実行時に初めて戻り値のデータ・タイプがキャラクターかバイア
リーかがわかるため、1種類の関数では対応できないのです。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 11-12 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-5. GETHINT関数
GETHINT関数
>>-GETHINT--(--encrypted-data--)-------------------------------><
GETHINT関数は、encrypted-dataを暗号化した時にENCRYPT関数で指定されたヒントを戻し
ます。
関数の結果は VARCHAR(32) です。結果はヌルになることがあります。 ヒント・
パラメーター
が ENCRYPT 関数によって encrypted-data に追加されなかった場合、または最初の引き数
はヌルの場合、結果は NULL 値になります
スキーマは SYSIBMです
引数
encrypted-data: ENCRYPT関数で暗号化された、完全な暗号化データ・ストリング。CHAR FOR BIT DATA または
VARCHAR FOR BIT DATAデータ(式)
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-5. GETHINT関数
GETHINT関数は、バージョン7.1 のフィックスパック 3 から有効になりました。
GETHINT関数は、encrypted-dataを暗号化した時にENCRYPT関数で指定されたヒントを戻します。
パスワード・ヒントがencrypted-dataに見つかった場合、 GETHINT関数をそのヒントを返します。 パスワード・ヒントとは、データ所
有者がパスワードを思い浮かべる (たとえば、'Ocean' が 'Pacific' を 思い出すヒントになります) ために役立つフレーズです。
その他の注意
関数の結果は VARCHAR(32) です。 結果はヌルになることがあります。 ヒント・パラメーターが ENCRYPT 関数によって
encrypted-data に追加されなかった場合、または最初の引き数はヌルの場合、結果は NULL 値になります。
引数(encrypted-data)は、ENCRYPT 関数で暗号化されたデータでなければなりません。 ENCRYPT 関数で暗号化されたデー
タでない場合にはエラー(SQL20146N(SQLSTATE=428FE))になります。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 13-14 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-6. ENCYPTION PASSWORD特殊レジスター
ENCYPTION PASSWORD特殊レジスター
新規の特殊レジスター。ENCRYPT関数、DECRYPT_CHAR/DECRYPT_BIN関数が参照
初期値はNULL
注意)ENCYPTION PASSWORD特殊レジスターの値は表示する事ができません
SET ENCYPTION PASSWORD
.-=-.
>>-SET--ENCRYPTION PASSWORD--+---+--+-host-variable---+--------><
'-string-constant-'
6 <= password <= 127が検査されます (NULLは不可です)
このパスワードは DB2 認証には関連付けられず、データ暗号化にのみ使用されます
セットされたコネクションだけに有効
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-6. ENCYPTION PASSWORD特殊レジスター
ENCYPTION PASSWORD特殊レジスターは、バージョン 7.1 のフィックスパック 3 から有効になりました。
ENCYPTION PASSWORD特殊レジスター
ENCRYPT関数、DECRYPT_CHAR/DECRYPT_BIN関数でパスワードを指定しない場合、またはNULLの場合にENCYPTION
PASSWORD特殊レジスターの値をパスワードとして使用します。
初期値はNULLです。
注意)ENCYPTION PASSWORD特殊レジスターの値は表示する事ができません。 また、リセット(値を初期値のNULLにする)す
ることもできません。
このパスワードは DB2 認証には関連付けられることはありません。 データ暗号化にのみで使用されます。
SET ENCRYPTION PASSWORD
SET ENCRYPTION PASSWORD ステートメントは、暗号化および暗号化解除関数によって 使用されるパスワードを設定しま
す。 このパスワードは DB2 認証には関連付けられず、データ暗号化にのみ使用されます。
このステートメントは、トランザクション制御のもとにはありません。呼び出しこのステートメントはアプリケーション・
プログラムに
組み込むことができ、また対話式に出すことができます。 動的に準備できる実行可能ステートメントです。
ENCRYPTION PASSWORD は、パスワード・
ベースの暗号化のための ENCRYPT、DECRYPT_BIN、 および DECRYPT_CHAR
組み込み関数で使用できます。 長さは 6 と127 の間でなければなりません。 大文字変換は行われないため、文字はすべて
大文字小文字を区別して指定しなければ なりません。
セットされたコネクションのだけに有効です。
ReleaseNotes.txtに"SET ENCRYPTION PASSWORD ステートメントはパスワード値を暗号化し、その暗号化された パスワードを
データベース・マネージャーに送信して、特殊レジスターに保管します。 "との記述がありますが、V7.1 FixPak3現在ではクライアン
ト・サーバー間でパスワードは暗号化されません。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 15-16 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
解説:1-7. 暗号化関数の使用例
引数にパスワードを指定する場合の例
ENCRYPT関数に暗号化するデータ、
パスワードおよびヒントを指定します。
ヒントはオプションです。
GETHINT関数でヒントを取得することが
できます。ヒントを見てパスワードを思
い出します。
H:¥>db2 INSERT INTO X2 VALUES(1,ENCRYPT('UDB V8 PLAN','MOOMIN','PAPA'))
DB20000I SQL コマンドが正常に終了しました。
H:¥>db2 SELECT COL1, GETHINT(COL2) FROM X2 WHERE COL1 = 1
COL1
2
----------- -------------------------------1 PAPA
DECRYPT関数で暗号解除をします。誤
ったパスワードではデータを見る事が
できません。
H:¥>db2 SELECT COL1, DECRYPT_CHAR(COL2,'BAKABON') FROM X2 WHERE COL1 = 1
COL1
2
----------- ---------------------------------------------------SQL20145N 暗号化解除関数が失敗しました。暗号化解除に使用されたパスワードが、デ
ータを暗号化するために使用されたパスワードと一致しません。
SQLSTATE=428FD
H:¥>db2 SELECT COL1, DECRYPT_CHAR(COL2,'MOOMIN') FROM X2 WHERE COL1 = 1
COL1
2
----------- ---------------------------------------------------1 UDB V8 PLAN
引数にパスワードが指定されず、かつ
、
ENCRYPTION PASSWORD特殊レジス
ターにパスワードが設定されていない
場合、エラーになります。
H:¥>db2 INSERT INTO X2 VALUES(1,ENCRYPT('UDB V8 PLAN'))
DB21034E コマンドが、有効なコマンド行プロセッサー・コマンドでないため、SQL
ステートメントとして処理されました。 SQL 処理中に、そのコマンドが返されました。
SQL20143N ENCRYPTION PASSWORD
値が設定されていないため、暗号化または暗号化解除関数が失敗しました。
SQLSTATE=51039
H:¥>db2 INSERT INTO X2 VALUES(2,ENCRYPT('UDBは凄い','MOOMIN','PAPA'))
DB20000I SQL コマンドが正常に終了しました。
H:¥>db2 UPDATE X2 SET COL2 = ENCRYPT('UDBはとっても凄い','MOOMIN','PAPA') WHERE COL1 = 2
DB20000I SQL コマンドが正常に終了しました。
H:¥>db2 DELETE FROM X2 WHERE COL1 = 2
DB20000I SQL コマンドが正常に終了しました。
暗号化の仕組みでは、作成されたデータの保護はで
きません。 暗号化されていないカラム同様、
UPDATE/DELETEによる操作が行なえます。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-7. 暗号化関数の使用例
ENCRYPTION PASSWORD特殊レジスター値をパスワードに使用する例
H:¥>db2 SET ENCRYPTION PASSWORD 'BAKABON'
DB20000I SQL コマンドが正常に終了しました。
H:¥>db2 INSERT INTO X2 VALUES(2,ENCRYPT('UDBはスケーラブル'))
DB20000I SQL コマンドが正常に終了しました。
ENCRYPTION PASSWORD特殊レジスターにパス
ワードをセット
パスワードをセットしないENCRYPT関数
H:¥>db2 SELECT COL1, DECRYPT_CHAR(COL2) FROM X2 WHERE COL1 = 2
COL1
2
----------- ---------------------------------------------------2 UDBはスケーラブル
パスワードをセットしないDECRYPT_CHAR関数
ENCRYPT時にヒントが指定されていなかったため、
ヒントにはNULLがはいっている
H:¥>db2 SELECT COL1, GETHINT(COL2) FROM X2 WHERE COL1 = 2
COL1
2
----------- -------------------------------2 H:¥>db2 INSERT INTO X2 VALUES(3,ENCRYPT('UDBは信頼性が高い',CAST(NULL
DB20000I SQL コマンドが正常に終了しました。
H:¥>db2 SELECT COL1, GETHINT(COL2) FROM X2 WHERE COL1 = 3
COL1
2
----------- -------------------------------3 PAPA
AS VARCHAR(4)),'PAPA'
ENCRYPTION PASSWORD特殊レジスターのパスワ
ードを使用して、かつ、ヒントを組み込みたい場合は
パスワード引数にNULLを指定します
H:¥>db2 SELECT COL1, DECRYPT_CHAR(COL2) FROM X2 WHERE COL1 = 3
COL1
2
----------- ---------------------------------------------------3 UDBは信頼性が高い
H:¥>db2 SELECT COL1, DECRYPT_CHAR(COL2) FROM X2 WHERE COL1 = 1
COL1
2
----------- ---------------------------------------------------SQL20145N 暗号化解除関数が失敗しました。暗号化解除に使用されたパスワードが、デ
ータを暗号化するために使用されたパスワードと一致しません。 SQLSTATE=428FD
H:¥>db2 SELECT COL1, DECRYPT_CHAR(COL2,'MOOMIN') FROM X2 WHERE COL1 = 1
COL1
2
----------- ---------------------------------------------------1 UDB V8 PLAN
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 17-18 )
ENCRYPTION PASSWORD特殊レジスター
値とENCRYPTした時のパスワードが異な
れば、エラーになります。 その場合はレジ
スター値をセットし直すか、パスワードを引
数に指定します。
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-8. エラー・メッセージ
エラー・メセージ
SQL20143N (sqlstate: 51039)
関数にパスワードの指定がなく、かつ、ENCRYPTION PASSWORD特殊レジスターに値がセットされていない
SQL20144N(sqlstate: 428FC)
6 <= パスワード長は <= 127でなければならない
SQL20145N (sqlstate: 428FD)
パスワードが合っていない
SQL20146N (sqlstate: 428FE)
暗号化データとして指定されたデータがデータ・タイプが ENCRYPT関数で作成されたものではない
SQL20147N (sqlstate: 55048)
暗号化されたものをさらに暗号化することはできません
SQL0332N (sqlstate: 57017)
暗号化されたデータとともに保管されているコード・ページからターゲット・コード・ページへの変換中にエラーが発生し
ました。
SQL0334N (sqlstate: 22524)
暗号化されたデータとともに保管されているコード・ページからターゲット・コード・ページへ変換した時の長さが制限を
越えて小さい、または大きい
暗号化されたデータ値を暗号化解除関数で使用する前に、バイト数のより多い VARCHAR ストリングにキャストして
ください。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
解説:1-8. エラー・メッセージ
新規メッセージ
SQL20143N ENCRYPTION PASSWORD値が設定されていないため、暗号化または暗号化解除関数が失敗しました 。
(sqlstate: 51039)
関数にパスワードの指定がなく、かつ、ENCRYPTION PASSWORD特殊レジスターに値がセットされていない
SQL20144N 指定されたパスワードの長さが 6 バイト未満か、または 127バイトを超えていたため、暗号化パスワードが無効で
す。(sqlstate: 428FC)
6 <= パスワード長は <= 127でなければならない
SQL20145N 暗号化解除関数が失敗しました。暗号化解除に使用されたパスワードが、データを暗号化するために使用され
たパスワードと一致しません。(sqlstate: 428FD)
パスワードが合っていない
SQL20146N 暗号化解除関数が失敗しました。データは暗号化されていません。(sqlstate: 428FE)
暗号化データとして指定されたデータがデータ・タイプが ENCRYPT関数で作成されたものではない
SQL20147N ENCRYPT関数が失敗しました。複数回の暗号化はサポートされていません。(sqlstate: 55048)
暗号化されたものをさらに暗号化することはできません
"説明"の一部が変更されたメッセージ
SQL0332N ソース・コード・ページ "<code page>" をターゲット・コード・ページ "<code page>"への変換が使用できません。理
由コードは "<reason-code>" です。(sqlstate: 57017)
コード・コンバージョンができない
暗号化されたデータとともに保管されているコード・ページからターゲット・コード・ページへの変換中にエラーが発生しました。
"ユーザーの応答"の一部が変更されたメッセージ
SQL0334N コード・
ページ "<source>" からコード・
ページ "<target>" への変換の実行中にオーバーフローが発生しました。タ
ーゲット・エリアの最大 サイ ズは "<max-len>"です。ソース・ストリング長は "<source-len>"およびそれの 16 進数表示は
"<string>" でした。sqlstate: 22524)
暗号化されたデータとともに保管されているコード・
ページからターゲット・コード・ページへ変換した時の長さが制限を越え
て小さい、または大きい
暗号化されたデータ値を暗号化解除関数で使用する前に、バイト数のより多い VARCHAR ストリングにキャストしてください。
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
( 19-20 )
DB2 UDB (PC&Unix) V7.2
データ暗号化機能
1-9. コードページの注意点
コードページの注意点
コード変換後のデータ長が大きくなる場合、例えばデータが暗号化されるときにダブル・
バイト
のコード・
ページで行い暗号化解除されるのがUnicodeコード・
ページのような場合、にオーバ
ーフロー・
エラー(SQL0334N SQLSTATE=22524)になる可能性がある
回避策:暗号化されたデータ値を暗号化解除関数で使用する前に、バイト数のより多いVARCHARストリングにキャ
ストしてください。
ソース・コード・
ページからターゲット・コードページへの変換ができない時にエラー(SQL0332N
SQLSTATE=57017)(オリジナルのコード・
ページで暗号化されたデータに埋め込まれてますが
,暗号解除した後コード変換ができない)
コード変換後のパスワードが制限値(63バイト)を超える場合に、パスワードがオーバーフロー・
エラー(SQL0334N SQLSTATE=22524)
回避策:パスワードにシングル・バイトの英数字を使用する。 または、短めのパスワードを使用する。
パスワード・
アンダーフロー。変換後にパスワードが6バイト未満になる場合にエラー
(SQL20144N SQLSTATE=428FC)
データの暗号解除はオリジナルのコード・
ページで行われる
(C)日本IBMシステムズ・エンジニアリング(株) データシステム部
ブランク・ページです
( 21-22 )
Fly UP