HOME   ·Î±×ÀΠ  ȸ¿ø°¡ÀÔ
    
ȸ¿ø°¡ÀÔ
ºñ¹Ð¹øÈ£ ã±â ÀÚµ¿·Î±ä
ÀÌÀü°Ô½ÃÆÇ
   free_board
   °Ç°­°Ô½ÃÆÇ
   ¿À¶óŬDB
   Linux
   HTML/javascript
   Áú¹®°ú ´ä
È£¼­±â
   À̹ÌÁö°Ô½ÃÆÇ  
   °Ç°­°Ô½ÃÆÇ  
   À½¾ÇÀÚ·á  
   ¼ºÁØÀÌ °Ô½ÃÆÇ  
[ÀϹÝ] ¿À¶óŬ ¾Ïȣȭ ±¸Çö
  È£¼® ´Ô²²¼­ ¾´ ±ÛÀÔ´Ï´Ù - 121.¢½.39.7 ÀÐÀ½:5665  
1. ¼³ ¸í

¢Ñ Bulletin no : 12036 Âü°í


Oracle 8i Release2(8.1.6)¿¡¼­´Â µ¥ÀÌÅ͸¦ ¾ÏȣȭÇÏ¿© ÀúÀåÇÒ ¼ö ÀÖ´Â
Çâ»óµÈ ±â´É(DES Encryption)À» Á¦°ø ÇÕ´Ï´Ù


Áï ½Å¿ëÄ«µå¹øÈ£, Æнº¿öµå µî º¸¾ÈÀÌ ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ ¾ÏȣȭµÈ ÇüÅ·ΠÀúÀåÇÏ¿©
±âÁ¸ÀÇ 3rd Party ToolÀ̳ª, Application LogicÀ¸·Î ±¸ÇöÇÏ´ø ¾Ïȣȭ Á¤Ã¥À»
µ¥ÀÌÅͺ£À̽º Â÷¿ø¿¡¼­ ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï ÇØÁÝ´Ï´Ù.



¢Â DBMS_OBFUSCATION_TOOLKIT

¾Ïȣȭ ±â´ÉÀ» ÀÌ¿ëÇÏ·Á¸é DBMS_OBFUSCATION_TOOLKITÀ» ÀÌ¿ëÇØ¾ß ÇÕ´Ï´Ù.


ÀÌ ÆÐÅ°Áö´Â 4°³ÀÇ ÇÁ·Î½ÃÁ®·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù.

- VARCHAR2 ŸÀÔÀ» Encrypt/DecryptÇÒ ¼ö ÀÖ´Â 2°³ÀÇ ÇÁ·Î½ÃÁ®

- RAW ŸÀÔÀ» Encrypt/DecryptÇÒ ¼ö ÀÖ´Â 2°³ÀÇ ÇÁ·Î½ÃÁ®
(´Ù¸¥ ŸÀÔÀº Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î numberÀÎ °æ¿ì´Â to_char ÀÌ¿ë)



DBMS_OBFUSCATION_TOOLKITÀ» ÀÌ¿ëÇϱâ À§Çؼ­´Â :

1) SYS À¯Àú·Î ¾Æ·¡ÀÇ ½ºÅ©¸³Æ®¸¦ ½ÇÇà ½Ãŵ´Ï´Ù.

@$ORACLE_HOME/rdbms/admin/dbmsobtk.sql
@$ORACLE_HOME/rdbms/admin/prvtobtk.plb

2) ±ÇÇÑÀ» ºÎ¿© ÇÕ´Ï´Ù.

SQL>GRANT execute ON dbms_obfuscation_toolkit TO public;



2. ÆÐÅ°Áö ½ÇÇàÇϱâ



--> ÆÐÅ°Áö ¼±¾ðºÎ »ý¼º

CREATE OR REPLACE PACKAGE CryptIT AS
FUNCTION encrypt( Str VARCHAR2,
hash VARCHAR2 ) RETURN VARCHAR2;

FUNCTION decrypt( xCrypt VARCHAR2,
hash VARCHAR2 ) RETURN VARCHAR2;
END CryptIT;
/



--> ÆÐÅ°Áö º»Ã¼ »ý¼º

CREATE OR REPLACE PACKAGE BODY CryptIT AS
crypted_string VARCHAR2(2000);

FUNCTION encrypt( Str VARCHAR2,
hash VARCHAR2 ) RETURN VARCHAR2 AS
pieces_of_eight INTEGER := ((FLOOR(LENGTH(Str)/8 + .9)) * 8);

BEGIN

dbms_obfuscation_toolkit.DESEncrypt(
input_string => RPAD( Str, pieces_of_eight ),
key_string => RPAD(hash,8,'#'),
encrypted_string => crypted_string );
RETURN crypted_string;
END;

FUNCTION decrypt( xCrypt VARCHAR2,
hash VARCHAR2 ) RETURN VARCHAR2 AS
BEGIN
dbms_obfuscation_toolkit.DESDecrypt(
input_string => xCrypt,
key_string => RPAD(hash,8,'#'),
decrypted_string => crypted_string );
RETURN trim(crypted_string);
END;
END CryptIT;
/



3. ½ÇÇà ¿¹Á¦


1) EncryptÇÏ¿© µ¥ÀÌÅÍ ÀÔ·Â

-- Å×½ºÆ® Å×À̺íÀ» »ý¼º ÇÕ´Ï´Ù.

SQL>create table encrypt_table( id number, passwd varchar(20) );



-- Å×½ºÆ® µ¥ÀÌÆ®·² ÀÔ·Â ÇÕ´Ï´Ù.
-- CryptIT.encrypt(ºñ¹Ð¹øÈ£, Å°°ª)

SQL>INSERT INTO encrypt_table VALUES( 1, CryptIT.encrypt('1234', 'storm'));
1 °³ÀÇ ÇàÀÌ ¸¸µé¾îÁ³½À´Ï´Ù.


SQL>INSERT INTO encrypt_table VALUES( 2, CryptIT.encrypt('5678', 'oramaster'));
1 °³ÀÇ ÇàÀÌ ¸¸µé¾îÁ³½À´Ï´Ù.



2) DecryptÇÏ¿© µ¥ÀÌÅÍ Á¶È¸

--> DecryptÇÏÁö ¾ÊÀ¸¸é ¾ÏȣȭµÈ µ¥ÀÌÅÍ¿Í ºñ±³µÇ¼­ °á°ú°ªÀÌ Ãâ·ÂµÇÁö ¾Ê½À´Ï´Ù.
SQL> select id, passwd from encrypt_table where passwd = '1234';

¼±ÅÃµÈ ·¹Äڵ尡 ¾ø½À´Ï´Ù.


--> ÀúÀåÀåÄ¡¿¡ EncryptµÈ °ªÀ¸·Î ÀúÀå µË´Ï´Ù.

SQL> col passwd format a60
SQL> select id, dump(passwd) passwd from encrypt_table;

ID PASSWD
---------- -------------------------------------------------------------
1 Typ=1 Len=8: 246,27,80,184,227,225,245,31
2 Typ=1 Len=8: 175,231,213,125,85,223,46,133



--> EncryptÇÒ ¶§ »ç¿ëÇÑ Key·Î¸¸ DecryptÇÒ ¼ö ÀÖ½À´Ï´Ù.

SQL>SELECT id, CryptIT.decrypt(passwd,'storm') passwd
FROM encrypt_table
WHERE CryptIT.decrypt(passwd,'storm') = '1234';

ID PASSWD
---------- -----------
1 1234


SQL>SELECT id, CryptIT.decrypt(passwd,'oramaster') passwd
FROM encrypt_table
WHERE CryptIT.decrypt(passwd,'oramaster') = '5678';

ID PASSWD
---------- -----------
2 5678


ÁÖÀÇ) Table¿¡ Á¢±Ù ±ÇÇÑÀÌ ÀÖ´Â ´Ù¸¥ À¯Àúµµ Key°ªÀ» ¾Ë¸é DecryptÇÒ ¼ö ÀÖ½À´Ï´Ù.



4) °ü·Ã ORA error number

ORA error 28231 "Invalid input to Obfuscation toolkit"
- input data, key°ªÀÌ NULLÀÏ °æ¿ì ¹ß»ý

ORA error 28232 "Invalid input size for Obfuscation toolkit"
- input data°¡ 8 bytes ¹è¼ö°¡ ¾Æ´Ò °æ¿ì ¹ß»ý

ORA error 28233 "Double encryption not supported by DESEncrypt in Obfuscation toolkit"
- encrypt data¸¦ ´Ù½Ã encrypt°æ¿ì ¹ß»ý


°ü ·Ã ÀÚ ·á
===========
Oracle8i Supplied PL/SQL Packages Reference Release 2 (8.1.6)



¸ñ·Ï

ºÐ·ù ¼±ÅÃ
94 ÀÏ¹Ý ¿À¶óŬ Áø¼öº¯È¯ ÆÐÅ°Áö ¼Ò½º ( 2 Áø¼ö ~ 36 Áø¼ö ) È£¼® 08-02-27 4892
ÀÏ¹Ý ¿À¶óŬ ¾Ïȣȭ ±¸Çö È£¼® 08-02-20 5666
92 ÀÏ¹Ý sqlplus¿¡¼­ º¯¼ö »ç¿ëÇÏ´Â ¹æ¹ý È£¼® 07-09-14 6459
91 ÀÏ¹Ý ¿À¶óŬ 10gÀÇ Flashback ±â¼ú [recycle ±â´É] È£¼® 07-08-10 5679
90 ÀÏ¹Ý ENTERPRISE EDITION µ¥ÀÌÅͺ£À̽º¸¦ STANDARD EDITIONÀ¸·Î º¯°æÇÏ´Â ¹ý È£¼® 07-07-25 4764
89 ÀÏ¹Ý ¿À¶óŬ Å×À̺í ÆÄƼ¼Ç »ç¿ëÇϱâ È£¼® 07-07-25 5443
88 ÀÏ¹Ý ¼³Ä¡½Ç¼ö·Î ÀÎÇÑ ¿À¶óŬ À缳ġ °ü·Ã È£¼® 07-07-24 4293
87 ÀÏ¹Ý ¿À¶óŬ ÆÄƼ¼Ç Å×À̺í (Partitioned Table) È£¼® 07-07-10 9288
86 ÀÏ¹Ý ¿À¶óŬ Å×À̺í ÆÄƼ¼Å´× È£¼® 07-07-10 6166
85 ÀÏ¹Ý µ¿Àû SQL(Dynamic SQL)ÀÇ »ç¿ë¹æ¹ý È£¼® 07-06-28 5863
84 ÀÏ¹Ý ¿À¶óŬ 10G Åäµå¿¡¼­ DEBUG ±â´É»ç¿ëÇϱâ È£¼® 07-06-25 5097
83 ÀÏ¹Ý °³¹ßÀÚ°¡ ¹üÇϱ⠽¬¿î Æ©´× À̽´ 10°¡Áö À¯Çü ºÐ¼® È£¼® 07-06-22 5020
82 ÀÏ¹Ý ¿À¶óŬ 8i ORA-00604 ,ORA-04031 ¿¡·¯ ó¸® È£¼® 07-06-12 6232
81 ÀÏ¹Ý ¿À¶óŬ 8i DB Àç½ÃÀÛ È£¼® 07-06-12 4102
80 ÀÏ¹Ý mysql DB ¹× »ç¿ëÀÚ »ý¼º (1) È£¼® 07-05-18 4078
óÀ½ÀÌÀü  [1] [2] [3] 4 [5] [6] [7] [8] [9] [10]  ´ÙÀ½¸Ç³¡

 
Copyright © zenos.pe.kr. All rights reserved.