Title |
[ORACLE] KO16KSC5601 DB의 한글 data를 암호화 한 후 UTF8 DB로 이관 TEST | Product |
Plug-In |
---|---|---|---|
Phenomenon |
KO16KSC5601에서 암호화 된 한글 data를 UTF8 DB로 이관 후 암호화 된 한글 data가 깨지는 현상 |
||
Cause |
평문인 ‘곽경철’을 KO16KSC5601 DB에 입력을 하면 6byte로 DB에 입력이 되고 해당 Data를
UTF8 DB로 migration시(exp/imp or dblink를 통한 CTAS) 오라클 내부적으로 2byte의 한글을 3byte로 변환하는 characterset conversion이 발생하여 6byte던 ‘곽경철’이 9byte의 ‘곽경철’ 로 자동 변환 되어 DB에 저장됨. 평문인 ‘곽경철’을 KO16KSC5601 DB에 입력 후 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 |