Title |
[ORACLE] KO16KSC5601DBのハングルdataを暗号化してからUTF8 DBへの移管TEST | Product |
Plug-In |
---|---|---|---|
Phenomenon |
KO16KSC5601から暗号化されたハングルdataをUTF8 DBに移管してから暗号化されたハングルdataがばけてしまう現象 |
||
Cause |
平文である‘곽경철’をKO16KSC5601DBに入力すると6byteでDBに入力され、該当Dataを
UTF8 DBにmigrationする場合(exp/imp or dblinkによるCTAS)、オラクル内部で2byteのハングルを 3byteに変換するcharacterset conversionが発生し、6byteか‘곽경철’が9byteの‘곽경철’に 自動変換されDBに保存される。 平文である‘곽경철’をKO16KSC5601DBに入力してからAES-128に暗号化すると、数字と英文で組み合わせたASCII値(0E3D293EC57993333EFCF88EDE8E9941)が生成され、その値をUTF8 DBへmigrationすれば数字と英文の組み合わせた暗号化の値は別途のcharacterset conversionなくUTF8 DBに保存される。 |
||
Solution |
従来のKO16KSC5601 DBにハングルdataが入っているカラムを暗号化して使う場合、UTF8にmigrationするときハングルがばける現象が発生するので、DB upgrade及びmigration時には必ずAS-ISとTO-BE側のcharactersetを確認しなければならない。
以上のTESTのように、mirationの際にハングルがばける現象を防ぐためには以下の方法でDataを移管しなければならない。 - 従来のKO16KSC5601 DBの暗号化カラムのうち、ハングルDataが含まれたtableは複合化してから Exp/impでdataをmigrationして再び暗号化する方法 - viewからviewへと、dblinkによりinsert into selectへdataを送る方法 以上の2つの方法がもっとも一般的な方法であるが、作業時間がかかりすぎるという短所がある。 詳細TEST内容は添付ファイル参照 KO16KSC5601 DBのハングルdataを暗号化してからUTF8 DBへの移管TEST.docx |