흠...
이건 한 20년전부터 사용하던 방식입니다..
db에 패스워드를 저장 하는것이 올바른것인지 아닌지의 관점에서 보기에는 좀 그렇습니다..
왜냐면 패스워드 저장 방식은 개발자의 자의적인 방식이기 때문에 보편적인것만 안따르면 해킹에서도 자유로울수도 있습니다.
저는 db에 저장하는 사용자 패스워드에 관해서 적겠습니다.
db 필드
아이디 패스워드 가입일 시간분초
이렇게 4가지를 저장한다고 가정합니다.
아이디 : test
패스워드 : 아몰라 (텍스트 나 이진수나 16진수)
가입일 :20160712
시간분초 : 120000
그럼 여기서 어떻개 저장이 되냐가 중요 합니다.
일단 사용자 입력 텍스트를 봅니다.
아이디 :test
패스워드 : babo
그다음 저장만 눌리지요..
그러면 위에 db에 어떤식으로 저장을 하는냐는 어느정도 눈치를 을듯 합니다.
babo를 원하는 진수로 변경을 합니다.
16진수를 좋어러 하면 16진수로 바求
그다음 가입일을 곱하거나 나누거나 더하거나 기터 등등 합니다.
거기에 사건분초 까지 적용을 시킵니다.
그러면 나오는 값을 패스워드에 저장을 합니다
이때 가입일이나 가입시간분초를 같이 저장 해주시면 됩니다.
지금은 이런 알고리즘을 적어 놓았기 때문에 아쉽네 하시지만 모를경우는 그 암호가 어떻게 나왔는지 알수가 없다는 것입니다.
사용자는 자기가 알고있는 babo 만 입력하면 접속이 되지요..
아 물론 패스워드에서 패스워드 찾는 툴을 돌려 찾는 방법도 있습니다..
물론 그때는 3번 이상 틀리면 아이디 차단을 시키면 됩니다.
강좌한 방법은 db가 털려도 어떻게 알수 있는 방법이 없습니다..
가입일 시간분초 를 이용해서 다른 개인정보중 중요한 것을 연산시켜 저장 하시면 알아낼 방법이 없습니다.
함수로 로직을 만드시고 값을 대입하면 됩니다.
±×·±µ¥ ²À »ç¿ëÀÚÀÇ ¾ÏÈ£¸¦ ¼¹ö°ü¸®ÀÚ°¡ ¾Ë ÇÊ¿ä°¡ ÀÖÀ»±î¿ä.
±×¸®º¸¸é °£´ÜÇÏ°Ô bcrypt ½ÃÄѼ ÀúÀåÇØ µÎ´Â°Ô ³ªÀ» °Í °°½À´Ï´Ù.
¸¸¾à ²À decryptionÀÇ Çʿ伺ÀÌ ÀÖ´Ù¸é rsa ¸¦ ÀÌ¿ëÇؼ ÀÚ½ÅÀÇ public key ·Î ¾ÏÈ£È ½ÃÄѼ ³ªÁß¿¡ ÀÚ½ÅÀÇ private key ·Î¸¸ º¹È£È ½Ãų¼ö ÀÖµµ·Ï ÇÏ´Â °Íµµ ¹æ¹ýÀÌ°ÚÁÒ.
ÀÌ·¡Àú·¡ ¾î·Á¿î Á¡ÀÌ ¾ÏÈ£È °°½À´Ï´Ù.
ÀÌ·± ¹æ¹ýÀº ¾Ë°í¸®µëÀÌ ÅзÁµµ key°¡ ¾øÀÌ´Â º¹È£ÇÏ ½Ãų¼ö ¾ø´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Â µíÇÕ´Ï´Ù.
¾Æ¿ï·¯ ·Î±×ÀÎ ½Ãµµ Ƚ¼ö¿¡ Á¦ÇÑµÑ ÇÊ¿äµµ ¾ø¾îÁö°ÚÁÒ.
´ë½Å Æнº¿öµå ÀúÀå ±æÀÌ´Â ±æ¾îÁúµí ÇÕ´Ï´Ù.
¸î ¹ø ½ÃµµÇغ¸¸é ·ÎÁ÷À» ¾Ë ¼ö ÀÖ½À´Ï´Ù
Á¢¼Ó½Ãµµ Â÷´ÜÀ» ÇÑ´Ù°í Çصµ
db°¡ ÅзÁ¼ ³ª°¡¹ö¸®¸é ¹æ¹ýÀÌ ¾ø±¸¿ä
Æнº¿öµå ÀúÀåÀº ¹«Á¶°Ç Çؽ¬°¡ ´Ü¿¬ ÁÁ½À´Ï´Ù
DB µµµÏ ¸Â¾Æµµ ¾ÈÀüÇÕ´Ï´Ù...
°³¹ßÀÚ°¡ ÀڽŸ¸ÀÇ ¹æ½ÄÀ¸·Î ¾Ïȣȸ¦ ÇϰԵǸé, ±× ¾ÏÈ£È ¹æ¹ýÀÌ È®ÀεǴ ¼ø°£ ¸ðµç »ç¶÷ÀÇ ¾ÏÈ£°¡ ´Ù °ø°³µÉ ¼ö ÀÖ½À´Ï´Ù.
±×°Íº¸´Ù´Â °ø°³ÀûÀÎ ¹æ¹ýÀ» »ç¿ëÇÑ°ÍÀÌ ´õ ³ªÀ»°Í °°½À´Ï´Ù.
ÇؽÃÇÔ¼ö¸¦ »ç¿ëÇÏ°Ô µÇ¸é »ç¿ëÇÑ ÇؽÃÇÔ¼ö¿Í ±× ÇØ½ÃµÈ °ªÀÌ °ø°³µÇ¾îµµ ½ÇÁ¦ password´Â ³ëÃâÀÌ ¾ÈµË´Ï´Ù.
(´Ü, ¾ÏÈ£¸¦ Decrypt ÇÏÁö ¾Ê¾Æµµ µÈ´Ù´Â ÀüÁ¦ÇÏ¿¡¼¿ä.)
MD5°¡ ¿äÁòÀÇ ComputingÀ¸·Î´Â ¾î´ÀÁ¤µµ Decrypt°¡ °¡´ÉÇÏ´Ù°í´Â ÇÏÁö¸¸, ¾ÆÁÖ ÂªÀº ¾ÏÈ£°¡ ¾Æ´Ï¸é ½ÇÁ¦·Î´Â °ÅÀÇ Èûµé´Ù°í »ý°¢µË´Ï´Ù.
(¾ÏÈ£°¡ ªÀ¸¸é MD5 º¹È£È ÇØ ÁÖ´Â »çÀÌÆ®¿¡¼ ¾î´ÀÁ¤µµ °¡´ÉÇÑ °æ¿ì°¡ ÀÖ½À´Ï´Ù.)
¿äÁòÀº MD5º¸´Ù´Â SHA°è¿ ÇؽÃÇÔ¼ö¸¦ »ç¿ëÇÏ´Â°Í °°½À´Ï´Ù.
±×¸®°í ¿©±â¿¡ ȲÁø¿ì´ÔÀÌ ¸»¾¸ÇÏ½Å°Í °°Àº Ãß°¡Á¤º¸(½Ã°£, ÄÄÇ»ÅÍÀÇ °íÀ¯ID µî)¸¦ ÇÔ²² ÇؽÌÇÏ°Ô µÇ¸é ´õ ¾ÈÀüÇÑ ¾ÏÈ£°¡ µÉ °Í°°½À´Ï´Ù.
ÀúÀ§¿¡ ¹æ½ÄÀ¸·Î ÀúÀåµÈ ¾ÏÈ£¸¦ ½´ÆÛÄÄÀÌ Ç®¶ó°í Çϸé ÇÑ 100³âÀº °É¸±°Ì´Ï´Ù..
»ç¿ëÀÚº° °ªÀÌ ´Ù ´Ù¸¨´Ï´Ù... ¿¡ÈÞ..
ÆÐÅÏÀ» ¾Ë¾Æµµ ã±â°¡ Èûµì´Ï´Ù...
»ç¿ëÀÚ°¡ »ç¿ëÇÏ´Â ºñ¹Ð¹øÈ£µµ ¾Ë¾Æ¾ßµË´Ï´Ù..
µðºñ°¡ Åи®°í »çÀÌÆ®µµ Åи®´Â ¼ø°£ºÎÅÍ´Â ½´ÆÛÄÄÀÌ ¾Æ´Ñ ÀϹÝÄÄÀ¸·Î ¾ó¸¶µçÁö ¾Ë¼ö ÀÖ½À´Ï´Ù.(µµ´ëü ½´ÆÛÄÄÀ¸·Î 100³âÀº ¾îµð¼ ³ª¿Â ±Ù°ÅÀÎÁö´Â ¸ô¸£°Ú½À´Ï´Ù.)
¹¹ ¹æÁ¤½Ä °°Àº°ÅÁÒ ³» ºñ¹øÀº ÀÌ·±µ¥ ¾î¶»°Ô ÀúÀåµÇ¾î ÀÖ´Ù ´Ù¸¥°Ç ¹¹ À̵ûÀ§´Â ±Ý¹æ Ç®¸³´Ï´Ù.
ÆÐÅÏ ºÐ¼®ÀÌ°ÍÁö¿ä. »óÀ§ÀÇ Á¶°ÇÀº ¼ýÀÚÇüµ¥ÀÌÅ͸¦ °öÇϰųª ´õÇÏ´Â ¹æ½ÄÀº ´õ´õ¿í ¹®Á¦Á¡ÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
ȲÁø¿ì´ÔÀÇ ¸»¾¸Àº ¸ðµç °ªÀÌ µðºñ¿¡ Á¸ÀçÇϱ⿡ °í·Î Ç®±â¿£ ¾ó¸¶ °É¸®Áö ¾Ê½À´Ï´Ù.
¿ä»õ´Â ±×³É º¹È£ÈÀ¾´Â ¾ÏÈ£ÈÇÏ°í ÀúÀåÇÏ°í »ç¿ëÀÚ ÀÔ·ÂÀ» ¾ÏÈ£ÈÇؼ ºñ±³ÇÏ´Â ¹æ¹ýÀ¸·Î »ç¿ëÇÏ°í ÀÖ¾î¿ä.
Àý´ë µðºñ¾È¿¡ ÀÖ´Â °ªÀ¸·Î¸¸ ¾ÏÈ£ÈÇÏÁö ¾Ê½À´Ï´Ù.!
¼¼»ó¿¡ ip´Â ¾ó¸¶µçÁö ¸¹½À´Ï´Ù. ±×¸®°í ¾ó¸¶µçÁö ¾ÆÀ̵𸦠»ý¼º°¡´ÉÇϱ¸¿ä.
¸ðµç ¾ÏÈ£°¡ ÄÄÇ»ÅÍ°¡ ÀνÄÇÒ¼ö ÀÖ´Â ¸ðµç ÄÚµåÀÇ ÁýÇÕÀ¸·Î ÀÌ·ç¾î ÀúÀÖÀ¸´Ï ¸ðµç ÄÚµå·Î ºÐ¼®À» Çϸé¾ß ±Ý¹æ ãÁö¿ä..
°£´ÜÇÏ°Ô »ý°¢ÇÏ¸é °Å±â¼ °Å±âÀÔ´Ï´Ù.. ÇÏÇÏÇÏ
ÇѺñÆ®ÀÇ °ªÀ» ã´Â °æ¿ìÀÇ ¼ö°¡ ¸ðµç ÄÚµå·Î Á¤ÇØÀúÀֱ⠶§¹®¿¡ ±Ý¹æ ãÁö¿ä...
ÀÌ°É Å¬·¯½ºÅ͸µÀ¸·Î ¾à 200´ëÁ¤µµ°¡ ¼öÁÖ°¡ °É¸°´Ù±¸ Çϱ¸¿ä.
¾ÏÈ£¿¡ ´ëÇÑ Á¢±Ù¹æ½ÄÀº ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î Á¢±ÙÇÕ´Ï´Ù. ÆÐÅÏÀ̳ª ºñÆ®¼ö ±×¿Ü ´Ù¾çÇÑ.
ÀÚ¼¼ÇÑ ³»¿ëÀº ÀÌ ±Û¿¡¼ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
http://blog.suminb.com/post/cryptography/
https://msdn.microsoft.com/ko-kr/library/ms173744(v=sql.110).aspx
¾ð¾î¸¶´Ù µû·Î ¾ÏÈ£È ÇÔ¼ö¸¦ Á¦°øÇϴ°͵µ ÀÖ°í¿ä
º¸Åë ±¹Á¤¿ø °°Àºµ¥¼´Â º¹È£ÈÇÒ ÇÊ¿ä°¡ ¾ø´Â ºñ¹Ð¹øÈ£°°Àº°Ç ´Ü¹æÇâ ¾Ïȣȸ¦ ±ÇÀåÇÏÁÒ
°³ÀÎÁ¤º¸ °°Àº°Ç ±×·±°É ±×³É ÀÌ¿ëÇÕ´Ï´Ù. ³ªº¸´Ù ´õ ¶È¶ÈÇÑ »ç¶÷µéÀÌ °í¹ÎÀ» ¸¹ÀÌ ÇÏ°í
¸¸µé¾î³½ °á°ú¹°ÀÎ ÇÔ¼öµéÀÌ ´õ ¾ÈÀüÇÒ°Å °°½À´Ï´Ù.
À¯Àú ÀÔÀå¿¡¼± ´Ü¹æÇâ ¾ÏȣȰ¡ ¿Ö Áß¿äÇÑÁö ¾Ë¾Æ ÁÖ¼ÌÀ¸¸é Çϳ׿ä..
http://starplatina.tistory.com/m/entry/ºñ¹Ð¹øÈ£-Çؽÿ¡-¼Ò±ÝÄ¡±â-¹Ù¸£°Ô-¾²±â
¼Ò½ºÄڵ忡´Â ¾î¶² Çؽø¦ »ç¿ë ÇÏ´ÂÁöµµ ³ª¿É´Ï´Ù.
¾Æ¹«¸® Çؽÿ¡ Çؽø¦ »ç¿ë ÇÑ´Ù°í Çصµ ¼Ò½º°¡ °Å» ´çÇÏ¸é ¾ÈÇ®¸®´Â ¾ÏÈ£´Â ¾ø½À´Ï´Ù.
¼Ò½ºÄÚµå ±îÁö °Å» ´çÇÏ¸é »õ·Î ¸¸µé¾îµµ ¹æ¹ýÀ» ´Ù½Ã Çؾߵ˴ϴÙ.
¸»¾¸ÇϽŠ¹æ¹ýÀº ÀüÇüÀûÀÎ [Security by obscurity](https://en.wikipedia.org/wiki/Security_through_obscurity) ÀÇ ¿¹·Î, Çö´ë ¾ÏÈ£Çп¡¼´Â ±²ÀåÈ÷ **³ª»Û** practice ·Î ¿©°ÜÁý´Ï´Ù.
´ëºÎºÐÀÇ Çö´ë ¾ÏÈ£ÀÇ ÇÁ¸®¹ÌƼºê´Â ¾ÏÈ£È ¾Ë°í¸®ÁòÀÌ °ø°³µÇ¾î ÀÖÀ¸¸ç, º¸¾ÈÀº ¾Ë°í¸®Áò¿¡ ³»ÀçµÈ ½Ã°£ º¹Àâµµ (¿äÁòÀº ÀαâÀÖ´Â Ç׸ñÀ¸·Î »õ·ÎÀÌ Ãß°¡µÈ °ø°£ º¹Àâµµ)¿¡ ÀÇÁ¸ÇÕ´Ï´Ù. ´ëºÎºÐÀÇ Çؽà ¾Ë°í¸®ÁòÀÇ °æ¿ì, ¼öÇÐÀûÀ¸·Î ¿ªÇÔ¼ö¸¦ ¾Ë¾Æ³»±â ±²ÀåÈ÷ ¾î·Æ°Ô ¼³°èµÇ¾î ÀÖÀ¸¸ç, ¿ªÇÔ¼ö¸¦ ¾Ë¾Æ³»°Å³ª, collision À» ÀÏÀ¸Å°´Â generic ÇÑ ¹æ¹ýÀÌ ¹àÇôÁú °æ¿ì, ÇØ´ç Çؽà ÇÔ¼ö´Â ´õ ÀÌ»ó cryptographically safe ÇÏÁö ¾Ê´Ù°í º¸°Ô µË´Ï´Ù. (MD5 °¡ ´õ ÀÌ»ó ¾²ÀÌÁö ¾Ê´Â ÀÌÀ¯)
ÀÌ·¯ÇÑ Æнº¿öµå¸¦ 'º¹È£È' ÇÏ´Â ¹æ¹ýÀº (Çؽà ¾Ë°í¸®Áò ÀÚüÀÇ °áÇÔÀ¸·Î ÀÎÇØ, ºü¸¥ ¼Óµµ·Î Çؽà Ãæµ¹ ȤÀº ¿ªÇÔ¼ö¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Â °æ¿ì¸¦ Á¦¿ÜÇϸé) Çؽà ¾Ë°í¸®ÁòÀÇ ÀÎDz¿¡ ¹«Â÷º° ´ëÀÔÀ» ÅëÇØ, °°Àº Çؽð¡ ³ª¿Ã ¶§±îÁö °è¼Ó ½ÃµµÇÏ´Â ¹æ½Ä (¹«Â÷º° ´ëÀÔ °ø°Ý, brute force attack)Àε¥, ÀÔ·Â Æнº¿öµå°¡ ÃæºÐÈ÷ ¹«°Ì°í, ÁÁÀº Æнº¿öµå ÇØ½Ì ¾Ë°í¸®Áò (e.g. Argon2, bcrypt) ¸¦ »ç¿ëÇÏ¿´À» ¶§, ÃæºÐÈ÷ ¿À·£ ½Ã°£ µ¿¾È (Nvidia Titan X ±âÁØ 120kH/s, 44bit entropy password °¡Á¤ ½Ã, 4³â ¹Ý ¼Ò¿ä, https://gist.github.com/epixoip/9d9b943fd580ff6bfa80e48a0e77520d) Áö¿¬½Ãų ¼ö ÀÖ°Ô µË´Ï´Ù.
À̸¦ ÇØ°áÇϱâ À§ÇÑ Argon2 ÀÇ °æ¿ì, pseudo-random memory access¿Í º´·ÄÈ ÆĶó¹ÌÅ͸¦ ÅëÇØ, FPGA ȤÀº GPU ¿¡°Ô Å« µð½º¾îµå¹êƼÁö¸¦ °¡ÇÏ°Ô µË´Ï´Ù. (¸Þ¸ð¸® ¾×¼¼½º ½Ã°£Àº ±²ÀåÈ÷ ºñ½Î±â ¶§¹®) ÀÌ °æ¿ì, Argon2i t=3 m=1536 ±âÁØ 1kH/s(https://www.openwall.com/lists/john-dev/2015/08/17/62) Á¤µµ°¡ ³ª¿À°Ô µÇ°í, ÀÌ´Â 44ºñÆ® Æнº¿öµå Çص¶ ¼Ò¿ä ½Ã°£À¸·Î ¾à 558³âÀ» ÇÊ¿ä·Î ÇÏ°Ô µË´Ï´Ù)
ÇÏÁö¸¸, ÁÖ¾îÁø ¹æ¹ýÀÇ °æ¿ì, ¼Ò½º ÄÚµå ´©Ãâ »Ó¸¸ ¾Æ´Ï¶ó, ´Ü¼øÇÑ °íÀü ¾ÏÈ£Çп¡ »ç¿ëµÇ¾ú´ø cryptanalysis ¸¸À¸·Î (³×, °íÀü ¾ÏÈ£´Â ¿¾Àú³á¿¡ ³¡Àå³ Áö ¿À·¡´Ï±î¿ä) ¾à°£ÀÇ Àΰ£ ³ë°¡´Ù¸¦ ¼¯¾îÁÖ¸é ¼Õ½±°Ô º¹È£ÈÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÀÌ´Â Çö´ë »çÀÌÆÛ ´ëºñ ¾ÏÈ£ÇÐÀûÀ¸·Î ¸Å¿ì ³ª»Û ÆÛÆ÷¸Õ½º¸¦ º¸¿©ÁÖ°ÚÁÒ.
Àúµµ ¿©±â¿¡´Â °³·«ÀûÀÎ °Í¸¸ Àû¾ú°í (Á¦°¡ ±³¾ç ¼öÁØÀÇ Å©¸³Åä±×·¡ÇÇ Áö½Ä¸¸À» °¡Áö°í Àֱ⵵ ÇÏ°í) ´õ ¾Ë°í ½ÍÀ¸½Ã´Ù¸é
óÀ½ ¹è¿ì´Â ¾ÏÈ£È - Àå Çʸ®ÇÁ ¿À¸¶¼Û (ISBN: 9791162249451) °ú °°Àº ¾ÏÈ£ÇÐ ÀÔ¹®¼¸¦ Àо½Ã´Â °É Ãßõµå¸³´Ï´Ù.