¿À·§¸¸ÀÌ ¾²´Â ¾ÆƼŬÀÎ°Í °°´Ù. ¿©±â¼´Â ¿ì¼± ¸Àº¸±â·Î °£´ÜÇÏ°Ô ¾Ïȣȿ¡ ´ëÇÑ ³»¿ë ¹×
´ëĪ¾ÏÈ£¹æ¹ý¿¡ ´ëÇÑ ³»¿ëÀ» ¼³¸íÇϵµ·Ï ÇÏ°Ú´Ù.
¿äÁò °°ÀÌ ÀÎÅͳÝÀÌ º¸ÆíÈµÇ°í °³¹æÇü ½Ã½ºÅÛµéÀÌ Á¸ÀçÇÏ°Ô µÇ¸é¼ °³ÀÎÀÇ Á¤º¸¹×
ºñ¹Ð¿¡ ´ëÇÑ Á¤º¸º¸È£°¡ ±²ÀåÇÑ À̽´·Î ´ëµÎµÇ¾îÁö°í ÀÖ´Ù.
¿ì¸®°¡ »ç¿ëÇÏ°Ô µÇ´Â ÀÚ¹Ù´Â java.security¹× javax.cryptoÆÐÅ°Áö¸¦ ÅëÇÏ¿© ¾ÏÈ£¸¦ ½±°Ô
»ç¿ëÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù.
¸¸¾à ´ç½ÅÀÌ ¾î¶°ÇÑ µ¥ÀÌÅ͸¦ ´Ù¸¥ »ç¶÷¿¡°Ô Àü´ÞÇÏ´ø µµÁß ±× ¸Þ½ÃÁö¸¦ ´Ù¸¥ »ç¶÷ÀÌ º¸°Ô
µÈ´Ù¸é? ±×°Ô ¸¸¾à ½Å¿ëÄ«µå³ª °áÁ¦Á¤º¸, Áß¿äÇÑ ¹®¼Àϼöµµ ÀÖ´Â °ÍÀÌ´Ù.
±×·¯ÇÑ °Íµé¿¡ ´ëÇÑ Ä§ÀÔÀ§ÇèÀ¸·ÎºÎÅÍ Á¤º¸°¡ º¸È£µÇ¾îÁö±â À§Çؼ´Â ¹«¾ð°¡ÀÇ ¼ö´ÜÀÌ
ÇÊ¿äÇÏ°Ô µÉ°ÍÀÌ´Ù. ÀÚ¹ÙÃø¿¡¼µµ ÄÚµåÁ¤Ã¥¿¡ ´ëÇÑ º¸¾ÈÀÌ ÇÊ¿äÇÏ°ÚÁö¸¸ ¿ì¼±Àº
±âº»ÀûÀÎ »çÇ׸¸À» ¿©±â¼ ³íÇÏ°Ú´Ù.
±âº»ÀûÀÎ ÀÚ¹ÙÀÇ Äڵ庸¾ÈÁ¤Ã¥À¸·Î¼ final class¶óµçÁö, ÆÐÅ°Áöº¸¾È, jarÆÄÀÏ sign,
serializationºÎºÐÀÇ transientµî¿¡ ´ëÇÑ ¼³¸íÀº ¿©±â¼ ³íÀÇÇÏÁö ¾Êµµ·Ï ÇÏ°Ú´Ù.
¢º ´ëĪ¾ÏÈ£È ¾Ë°í¸®Áò
±âº»ÀûÀ¸·Î ÀÌ ±ÛÀ» Àд »ç¶÷À̶ó¸é Çб³´Ù´Ò¶§ ÇѹøÂëÀº Ä£ÇÑ Ä£±¸¿ÍÀÇ ÀÇ»ç¼ÒÅëÀ̳ª
´ëȸ¦ Çϴµ¥¿¡ ÀÖ¾î¼ ³²µéÀÌ ¾ËÁö ¸øÇÏ´Â ¹æ¹ýÀ¸·Î ´ëȸ¦ ÇÏ°í ½Í¾ú´ø ÀûÀÌ ÀÖÀ»°ÍÀÌ´Ù.
(³î»õ~¸¸ ±×·¨³ª?)
°¡·É ³»°¡ °íµîÇб³¸¦ ´Ù´Ò¶§ Ä£±¸¿Í À̾߱⸦ ÇÒ¶§ ¸ðµç ´Ü¾î¸¦ Ç¥ÇöÇÏ°íÀÚ ÇÒ¶§
Áß¼ºÀ» µÚ·Î »©¼ ±×°ÍÀ» ÀÌ¿ëÇÏ¿© ÇѱÛÀÚ¸¦ ´õ ¸¸µé°í °Å±â¿¡ ¤µ¹ÞħÀ» ÀÌ¿ëÇÏ¿© ÀÇ»ç¼ÒÅëÀ»
ÇÑÀûµµ ÀÖ¾ú´Ù. (¿¹: ºñµÑ±â --> ºñ½Ã µÎ¼ú ±â½Ã) 󷳸»ÀÌ´Ù..
À§ÀÇ ¿¹¸¦ µç°Íµµ ÀÏÁ¾ÀÇ ¾ÏÈ£ÈÀÇ ÇÑ ¹æ¹ýÀ̶ó°í ÇÒ ¼ö Àִµ¥ ÀÏ¹Ý »ç¶÷µéÀÌ µè±â¿¡´Â
¾î¶°ÇÑ ³í¸®¿¡ ÀÇÇÏ¿© ¸»À» ÇÏ´Â °ÍÀÎÁö óÀ½¿¡´Â ¾Ë¾ÆµèÁö¸¦ ¸øÇÏ´Ù°¡ ´Ü¾î¸¦ Àû¾îÁְųª
ÇÑÂüÈÄ¿¡¾ß ±×·¯ÇÑ ¿ø¸®°¡ ÀÖ¾úÀ½À» ¾Ë°Ô µÈ´Ù.
À§¿Í °°ÀÌ ¾ÏÈ£È¿Í °°Àº Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© ´Ù½Ã º¹È£È ÇÒ¼ö ÀÖ´Â µ¥ Á» ´õ ½±°Ô ¿¹¸¦ µé¾îº¸ÀÚ¸é
´ÙÀ½°ú °°À» ¼ö ÀÖ´Ù.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
|
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
°¢°¢ÀÇ ¹®ÀÚ¸¦ 3ÀÚ¸®¾¿ µÚ·Î ¿Å°ÜÁø °Í ó·³ º¸¿©Áú ¼ö Àִµ¥ ¸¸¾à HI, CAROUSER¶ó´Â ´Ü¾î´Â
KL, FDURXVIU ¶ó´Â ´Ü¾î·Î ¹Ù²î°Ô µÇ¸é °°Àº ÆÐÅÏ¿¡ ÀÇÇÏ¿© ´Ù½Ã º¹È£È µÇ¾îÁú¼ö ÀÖ´Â
Ư¡À» °¡Áö°í ÀÖ´Ù.
Áï ¸Þ½ÃÁö¸¦ ¾ÏÈ£È¿Í º¹È£È¸¦ Çϱâ À§Çؼ´Â ¾Ë°í¸®Áò°ú Å°°¡ Á¤ÀǵǾî¾ß ÇÑ´Ù.
¢º ´ëĪ¾ÏÈ£È ¾Ë°í¸®ÁòÀÇ Á¾·ù
- DES & TripleDES : DES(Data Encryption Standard)´Â "Lucifer"¶ó´Â À̸§ÀÇ IBM¿¡¼ ÃÖÃÊ°³¹ßµÇ¾ú´Ù.
¶ÇÇÑ ¹Ì±¹¿¡¼ ÃÖÃÊ ±¹°¡Ç¥ÁØÀÌ µÇ¾úÀ¸¸ç, 56ºñƮ۸¦ °¡Áö°í ¾Ïº¹È£È¸¦ »ç¿ëÇß´Ù. ÇÏÁö¸¸
ÄÄÇ»ÅÍ°¡ ¹ßÀüÀ» ÇÔ¿¡ ÀÖ¾î¼ 56ºñƮŰÀÇ °æ¿ì ¾î´ÀÁ¤µµÀÇ ½Ã°£¸¸ È®º¸°¡ µÈ´Ù¸é Ç®¾î³¾¼ö ÀÖ±â
¶§¹®¿¡ Á»´õ ¿Ïº®ÇÑ º¸¾ÈÀ» À§ÇÏ¿© Triple DES°¡ °í¾ÈµÇ¾îÁ³´Ù.
- TripleDES : ÀÌ´Â ±âÁ¸ÀÇ DES¾ÏÈ£È ¾Ë°í¸®Áò¹æ½ÄÀ» ´Ù¸¥Å°¿¡ ¼¼¹ø Àû¿ë½ÃŲ°ÍÀ̸ç, ù¹ø°
¾ÏȣȰúÁ¤, µÎ¹ø° º¹È£È°úÁ¤, ¼¼¹ø°´Â ¶Ç ´Ù¸¥ ¾ÏÈ£È °úÁ¤À» °ÅÄ¡µµ·Ï ÇÏ°í ÀÖ´Ù.
±×·¡¼ À̸§ÀÌ DESede(DES encryption, decryption, encryption)ÀÌ µÇ¾úÀ¸¸ç, °¢°¢ÀÇ °úÁ¤¿¡ µû¶ó
56ºñÆ®ÀÇ ¹è¼ö·Î ¾ÏÈ£È º¹Àâµµ°¡ Áõ°¡µÇ°Ô µÇ¾îÀÖ´Ù.
- Blowfish : 1993³â Bruce Schneier¿¡ ÀÇÇØ °í¾ÈµÈ ºí·Ï¾ÏÈ£·Î¼ DESº¸´Ù ºü¸£°í ¾ÈÀüÇÑ ±â¹ýÀ»
Á¦°øÇÑ´Ù. ÃÖ´ë Å°ÀÇ ºñÆ®¼ö¸¦ 448ºñÆ®±îÁö È®ÀåÇÒ¼öÀִٴ Ư¡À» °¡Áö°í ÀÖ´Ù.
- RC4 : "Civest's Code 4"¸¦ ÀǹÌÇϸç 1987³â RSA Data Security¿¡¼ ¹ßÇ¥µÇ¾ú´Ù. º¸Åë À̱â¹ýÀ¸·Î
TCP/IP¿¬°áÀ» ¾ÈÀüÇÏ°Ô ÇÏ´Â SSLÀ» ±¸ÇöÇÏ´Â µ¥ ¸¹ÀÌ ¾²ÀδÙ(Å°ÀÇ ±æÀÌ 40ºñÆ® ¶Ç´Â 128ºñÆ®)
À§°ú °°ÀÌ ´ëĪ¾ÏÈ£ÈÀÇ °æ¿ì´Â ¸ðµç ¾Ë°í¸®ÁòÀÌ °°Àº ¹æ½ÄÀ¸·Î µ¿ÀÛÀ» ÇÏ°Ô µÇ´Âµ¥
¹®Á¦´Â ¸Þ½ÃÁö¸¦ º¸³»°í ¹Þ´Â »ç¶÷ÀÌ °°Àº Å°¸¦ °¡Áö°Ô µÇ¸ç, Áß°£¿¡ ±× Å°°¡ ³ëÃâÀÌ µÇ¾úÀ» ¶©
ÀÌ¹Ì ¿ì¸®ÀÇ ¸Þ½ÃÁö´Â ³²¿¡°Ô ÀÐÈú¼ö ÀÖ´Â ¹®Á¦Á¡À» °¡Áö°í µÈ´Ù. Áï ºñ¹ÐÅ°°¡ ³ëÃâµÇ°Ô µÇ¸é
¾ÏÈ£ÈµÈ ¸Þ½ÃÁö¶ÇÇÑ µ¿½Ã¿¡ ³ëÃâµÉ ¼ö ÀÖ´Ù´Â ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù.
¢º DES¹æ½ÄÀÇ »ùÇÃÄÚµå
¿ì¸®´Â ¿©±â¼ °£´ÜÇÏ°Ô DES¹æ½ÄÀ» ÀÌ¿ëÇÏ¿© ¾Ïº¹È£È ÇÁ·Î±×·¥À» Çϳª ¿¹Á¦·Î º¸µµ·Ï ÇÑ´Ù.
±âº»ÀûÀ¸·Î ÀÚ¹ÙÃø¿¡¼ Á¦°øÇÒ¼ö ÀÖ´Â ¾ÏÈ£¿¡ °ü·ÃµÈ ÆÐÅ°Áö´Â JCA(java cryptograhpy arch.)¿Í
JCE(java cryptography extension)À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
JCA´Â ±âº»ÀûÀ¸·Î Java2 Runtime EnvironmentÀÇ ÀϺÎÀ̸ç, JCA´Â ±×°ÍÀÇ È®ÀåÆÐÅ°ÁöÀÌ´Ù.
±âº»ÀûÀÎ JCA¿¡¼´Â ÀüÀÚ¼¸í, ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®, Å°»ý¼º±âµîÀÇ Å¬·¡½º¸¦ °¡Áö°í ÀÖÀ¸¸ç
±×·¯ÇÑ ±âº»ÀûÀΠŬ·¡½ºµéÀ» ¿ì¸®°¡ »ç¿ëÇÏ°íÀÚ ÇßÀ» ¶§ new¿¡ ÀÇÇÑ »ý¼ºÀÌ ¾Æ´Ï¶ó
ÀÌ¹Ì ¾ÆÅ°ÅØÃÄ°¡ °¡Áö°í ÀÖ´Â ¾ÏÈ£È ±â¹ý¿¡ ÀÇÇÏ¿© factoryÇüÅÂÀÇ Å¬·¡½º¿¡°Ô »ý¼ºÀ»
¿äûÇÏ¿©¾ß ÇÑ´Ù.
±âº»ÀûÀÎJCE°°Àº °æ¿ì ´ç½ÅÀÌ JDK1.3.1À» »ç¿ëÇÑ´Ù¸é ÆÐÅ°Áö¸¦ ½ã¿¡¼ ´Ù¿î·Îµå ¹ÞÀ»¼öÀÖÀ¸¸ç
jdk1.4¹öÁ¯À» »ç¿ëÇÑ´Ù¸é ÀÌ¹Ì Æ÷ÇԵǾîÁ® ÀÖÀ¸´Ï ±×³É ÄÚµùÀ» Çصµ ¹«¹æÇÒ µí ÇÏ´Ù.
¿ì¼± ¾Æ·¡ÀÇ Äڵ带 º¸±â Àü¿¡ Áß¿äÇÑ Å¬·¡½º¸¦ »ìÆ캸¾Æ¾ß ÇÒ ÇÊ¿ä°¡ Àִµ¥ ±×°ÍÀº
¹Ù·Î javax.crypto.Cipher¶ó´Â Ŭ·¡½º·Î¼ µ¥ÀÌÅ͸¦ ¾ÏÈ£ÈÇÏ°í º¹È£ÈÇϴµ¥ »ç¿ëµÇ´Â
±âº»ÀûÀÎ ¿£ÁøºÎºÐÀÌ´Ù.
¸î°¡ÁöÀÇ ¸Þ¼Òµå¸¸À» »ìÆ캸°Ú´Âµ¥ ¿ì¼±
getIntance(), init(), update(), doFinal()·Î¼ ¾ÏÈ£È ¾Ë°í¸®ÁòÀÇ »ý¼º, CipherÀνºÅϽºÀÇ ÃʱâÈ,
¾Ïº¹È£È, ¾ÏÈ£ÈµÈ ¹è¿À» ȹµæÀ» ÇÏ´Â ¸Þ¼ÒµåµéÀÌ´Ù.
¶ÇÇÑ javax.crypto.KeyGeneratorŬ·¡½º´Â ¾ÏÈ£È¿Í º¹È£È¿¡ ÇÊ¿äÇÑ Å°¸¦ »ý¼ºÇس»´Â µ¥ ¾²À̸ç
getInstance(), init(), generateKey()ÀÇ ¸Þ¼Òµå Á¤µµ¸é Cipher¿¡ ÇÊ¿äÇÑ Å°¸¦ ¸¸µé¾î³¾ ¼ö ÀÖ´Ù.
import java.security.*;
import javax.crypto.*;
public class SimpleExample {
public static void main(String [] args) throws Exception {
if( args.length != 1) {
System.out.println("Usage : java SimpleExample text ");
System.exit(1);
}
String text = args[0];
System.out.println("Generating a DESded (TripleDES) key...");
// Triple DES »ý¼º
KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede");
keyGenerator.init(168); // Å°ÀÇ Å©±â¸¦ 168ºñÆ®·Î ÃʱâÈ
Key key = keyGenerator.generateKey();
System.out.println("Å°»ý¼ºÀÌ ¿Ï·áµÇ¾úÀ½");
// Cipher¸¦ »ý¼º, »ç¿ëÇÒ Å°·Î ÃʱâÈ
Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte [] plainText = text.getBytes("UTF8");
System.out.println("Plain Text : ");
for (int i = 0; i < plainText.length ; i++) {
System.out.print(plainText[i] + " ");
}
// ¾ÏÈ£È ½ÃÀÛ
byte [] cipherText = cipher.doFinal(plainText);
// ¾ÏÈ£¹®¼ Ãâ·Â
System.out.println("\nCipher Text : ");
for (int i = 0; i < cipherText.length ; i++) {
System.out.print(cipherText[i] + " ");
}
//º¹È£È ¸ðµå·Î¼ ´Ù½Ã ÃʱâÈ
cipher.init(Cipher.DECRYPT_MODE, key);
//º¹È£È ¼öÇà
byte [] decryptedText = cipher.doFinal(cipherText);
String output = new String(decryptedText, "UTF8");
System.out.println("\nDecrypted Text : " + output);
}
};
|
À§ÀÇ ÄÚµå·Î¼ °£´ÜÇÏ°Ô »ìÆ캼 ¼ö Àִµ¥, Ãâ·ÂµÇ´Â »ý¼ºµÇ´Â Å°¿¡ µû¶ó °áÁ¤µÇ¹Ç·Î
¸Å¹ø ´Ù¸¥ °á°úÀÇ ¾ÏÈ£ÈµÈ ¹®ÀÚ¿À» º¼ ¼ö Àִ Ư¡À» °¡Áö°í ÀÖ´Ù.
BlowfishÀÇ ´ëĪ¾ÏÈ£È ±â¹ý¶ÇÇÑ °°Àº ¹æ¹ý¿¡ ÀÇÇÏ¿© ¸¸µé¾î³¾ ¼ö Àִµ¥
´Ü¼øÈ÷ À§ÀÇ ÄÚµå»ó¿¡¼ÀÇ º¯È´Â KeyGenerator¿¡¼ "Blowfish"¿Í Cipher¿¡¼
ÀνºÅϽº¸¦ ¾ò¾î³¾¶§ ´Ü¼øÈ÷ "Blowfish/ECB/PKCS5Padding"À» ÀÌ¿ëÇÏ¿© ó¸®Çϸé
128ºñÆ®ÀÇ Å°¸¦ ÀÌ¿ëÇÑ ¾Ïº¹È£È¸¦ Å×½ºÆ®Çغ¼ ¼ö ÀÖ´Ù.
¢º Conclusion
±âº»ÀûÀ¸·Î °¡Àå ±âº»ÀûÀÎ ¾ÏÈ£È ¹æ¹ýÀ» »ìÆ캸¾ÒÀ¸¸ç ±âº»ÀûÀÎ ´ëĪ¾Ë°í¸®ÁòÀÇ °³³äÀÌ
¹«¾ùÀÎÁö¸¸ ¾Ë°í À־ ³î»õ~°¡ ¿©·¯ºÐµéÀ» º¸´Â ±âÁØ¿¡¼ º° ¹«¸®°¡ ¾ø¾î º¸Àϵí ÇÏ´Ù.
´ÙÀ½¿¡ ¾µ °ÍÀ¸·Î´Â À¯´Ð½º Æнº¿öµåÀÇ ÇüÅ·Π¸¹ÀÌ ¾²ÀÌ´Â ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¹æ¹ýÀ»
°£´ÜÇÑ ÀÚ¹ÙÄÚµùÀ» ÀÌ¿ëÇÏ¿© ó¸®Çغ¸°Ú´Ù.
À§ÀÇ °æ¿ì À¥»çÀÌÆ®¸¦ Á÷Á¢ ¸¸µé¾úÀ» °æ¿ì »ç¿ëÀڵ鿡 ´ëÇÑ user id, password¸¦
µ¥ÀÌÅͺ£À̽º¿¡ Á÷Á¢ÀúÀåÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó universal keyÀÇ °³³äÀ¸·Î º¯È¯ÇÏ¿©
ó¸®ÇÏ´Â »ùÇÃÀ» º¸µµ·Ï ÇÏ°Ú´Ù..
|