Re: Áú¹®ÀÖ¾î¿ä..

2013/8/9 yslee <yslee@pentasecurity.com>

> ¾È³çÇϼ¼¿ä.
> Áö³­ ¹ø Çà»ç¶§ óÀ½ ¸¸³ª¼­ µÇÁöµµ ¾Ê´Â ÀÌ·± Àú·± Áú¹®µéÀ» Çß¾ú´Âµ¥.. Ȥ
> ½Ã ±â¾ïÇÏ½Ç Áö ¸ð¸£°Ú½À´Ï´Ù.
> À̹ø ±³À° ¶§ session I, II °¡ ÁøÇàµÇÁö ¾Ê¾Æ ¸Å¿ì ¾Æ½¬¿ü½À´Ï´Ù.
>
> Àú´Â º¸¾È °ü·Ã ¾÷ü¿¡¼­ °³¹ßÀ» ÇÏ°í Àִµ¥¿ä.
> À¥¿¡ ´ëÇÑ ÀÌÇØ°¡ ª¾Æ¼­ Áú¹®ÀÌ ÀÌ»óÇÏ´õ¶óµµ »ì¦ ÀÌÇØÇØ ÁÖ½Ã±æ ºÎŹµå¸³´Ï´Ù.
>
> HTML 5¿¡ º¸¸é CryptoAPI °¡ Á¦°øµÇ´Âµ¥¿ä.
> Á¦°¡ ±Ã±ÝÇÑ °ÍÀº ³­¼ö ºÎºÐÀÔ´Ï´Ù.
> ³­¼ö´Â º¸Åë Block cipher¿¡¼­ key¸¦ ¸¸µé°Å³ª, °ø°³Å° ƯÈ÷ RSA¿¡¼­ short
> message attackÀ» ¹æÁöÇϱâ À§ÇÑ de facto standardÀÎ RSA-OAEP(ÇöÀç´Â
> RSAES)¿¡¼­ »ç¿ëµÇ±â ¶§¹®¿¡ Çʼö¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.
>
> ¾Æ½Ã°ÚÁö¸¸, ³­¼ö´Â entropy È®º¸¸¦ À§ÇÏ¿© ³­¼ö¸¦ »ý¼ºÇÏ´Â seed(block
> cipherÀÇ ÇÑ Á¾·ùÀÎ SEED°¡ ¾Æ´Ï¶ó ³­¼ö¸¦ »ý¼ºÇϱâ À§ÇÑ ¾¾¾Ñ °ªÀ» ¸»ÇÕ´Ï
> ´Ù.)°¡ ¸Å¿ì Áß¿äÇÕ´Ï´Ù.
>
> ÇöÀç ¿ì¸®³ª¶ó¿¡¼­ ÀÎÁ¤Çϴ ǥÁØÀº ISO/IEC 18033-2:2006ÀÔ´Ï´Ù.(±âÁ¸¿¡´Â
> "FIPS PUB 186-2 Addendix 3¿¡ ¸í½ÃµÈ ³­¼ö¹ß»ý±âÀÇ º¯Çü ¸ðµ¨ Áß SHA-1À» ÀÌ
> ¿ëÇÑ GÇÔ¼ö »ç¿ë ¸ðµ¨"À̾ú½À´Ï´Ù.)
>
> ±¹Á¤¿ø¿¡¼­´Â ÃÖ¼Ò 256ÀÇ entropy¸¦ È®º¸Çϵµ·Ï ÇÏ°í Àִµ¥, À̸¦ À§Çؼ­
> CPU Clock, PID, TID, memory address, mouse pointer À§Ä¡ µîÀÇ °ªµéÀ» °¡Á®
> ¿É´Ï´Ù.
>
> Á¦ Áú¹®ÀÇ ¿äÁö´Â HTML 5¿¡¼­ Àú·± systemÀÇ °ªµéÀ» °¡Á®¿Ã ¼ö ÀÖ´À³Ä´Â °ÍÀÔ
> ´Ï´Ù.
> °¡Á®¿Ã ¼ö ¾ø´Ù¸é ¿ì¸®°¡ "³­¼ö"¶ó°í ºÎ¸¦ ¼ö ÀÖ´Â °ÍµéÀ» »ý¼ºÇϱ⠾î·Æ±â
> ¶§¹®ÀÔ´Ï´Ù.
>
> ±âÁ¸¿¡ Javascript µîÀ¸·Î ¾ÏÈ£ ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÏ°í ½Í¾îµµ ÇÒ ¼ö ¾ø¾ú´ø ÀÌ
> À¯°¡ ³­¼ö¸¦ Á¦´ë·Î ¸¸µé ¼ö ¾ø¾î¼­¿´½À´Ï´Ù.
>
> HTML 5¿¡¼­ ÀÌ ¹®Á¦¸¦ ¾î¶»°Ô ÇØ°áÇÏ°í ÀÖ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.
> ¾Æ½Ã´Â ºÐµé ÀÖÀ¸½Ã¸é ´äº¯ ºÎŹµå¸±²²¿ä.
>

¾Ïȣȭ¿¡ ´ëÇؼ­ Àü¹®°¡´Â ¾Æ´ÑÁö¶ó ÇãÁ¢ÇÑ ´äº¯ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù¸¸, ¿äºÎÅÍ ¸»¾¸µå¸®¸é ¼ø¼ö
javascript·Î´Â ¾ð±ÞÇϽŠÁ¢±Ù ¹æ¹ý ÀÚü¸¦ ±×´ë·Î ±¸ÇöÇÏ´Â°Ç ºÒ°¡´ÉÇÏ´Ù°í º¾´Ï´Ù.

´Ù¸¸,  °¡Àå ±ÙÁ¢ÇÑ°ÍÀÌ window.crypto.getRandomValues°¡ µÇ´Âµ¥, ÀÌ°ÍÀÇ ÇÏÀ§ ´Ü¿¡ À־
±¸Çö ¹æ¹ý ÀÚü´Â ºê¶ó¿ìÀú ±×¸®°í ȯ°æ¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ¾ð±ÞÇϽŠ¹æ¹ýÀ» true multi process
+ multi threading ȯ°æ¿¡¼­ ±¸ÇöÇÒ °æ¿ì ÇØ´ç ¹æ¹ý°ú À¯»çÇÑ ¶Ç´Â Ãß°¡ÀûÀÎ ¿ä¼ÒµéÀÌ Æ÷Ç﵃ °ÍÀ¸·Î
»ý°¢µË´Ï´Ù. ¹Ý´ë·Î RTOS¿Í °°Àº cooperative multi tasking ȯ°æÀÇ °æ¿ì¿¡´Â ´Ù¸£°Ô ±¸ÇöÀ» Çؾß
ÇÒ°ÍÀ¸·Î »ý°¢µË´Ï´Ù.

ÀÌÀ¯ÀÎÁôÀº, cooperative multi tasking ȯ°æÀÇ °æ¿ì¿¡´Â PID°¡ ¾ø°í, TIDµµ ¾ø°í, memory
addressÀÇ °æ¿ì ´ëºÎºÐ Á¤ÇØÁø Àý´ë ÁÖ¼Ò¿¡ ¸ÅÇÎÀÌ µÇ´Â Áö¶ó ÇØ´ç ¿ä¼ÒµéÀÇ º¯µ¿ ¿©Áö°¡ ±²ÀåÈ÷
Àû±â ¶§¹®¿¡ getRandomValues() ÀÇ ±¸Çö ´Ü¿¡¼­ ´Ù¸¥ ¹æ¹ýÀ¸·Î Á¢±ÙÀ» ÇؾßÇÒ °ÍÀ¸·Î »ý°¢µË´Ï´Ù.
±âº»ÀûÀ¸·Î´Â ÇöÀç »óȲ¿¡¼­´Â getRandomValues()¸¦ »ç¿ëÇÏ°í ³ª¸ÓÁö´Â ºê¶ó¿ìÀú¿¡ ¸Ã±â¼Å¾ß ÇÕ´Ï´Ù.

Ãß°¡ÀûÀ¸·Î Math.random()ÀÇ °æ¿ì ´ë´Ù¼ö ºê¶ó¿ìÀú¿¡¼­ °¡Àå ¼Óµµ°¡ ºü¸¥ PRNG¸¦ »ç¿ëÇÏ´Â °æ¿ì°¡
´ëºÎºÐÀ̹ǷΠ¾ÏÈ£¿ë entropy·Î »ç¿ëÇÏ´Â°Ç ´ë´ÜÈ÷ À§ÇèÇÕ´Ï´Ù. ¾Æ¿ï·¯ ¾Ïȣȭ¿Í ¹«°üÇϸ鼭µµ ³­¼ö¼ºÀÌ
³ô¾Æ¾ß¸¸ ÇÏ´Â ÇÁ·Î±×·¥À» ±¸ÇöÇϴµ¥¿¡µµ »ç¿ëÇϱⰡ ¾î·Æ½À´Ï´Ù. ÀÌ°Í ¶§¹®¿¡ ÀÌÀü¿¡ [1] mersenne
twister¸¦ javascript·Î ±¸ÇöÇÑÀûÀÌ ÀÖ½À´Ï´Ù. ´Ù¸¸ MTµµ ¾Ïȣȭ¿ëÀ¸·Î´Â »ç¿ëÇϱâ´Â ¾î·Á¿ï°ÍÀ¸·Î
»ý°¢ÇÕ´Ï´Ù.

¼ø¼öÇÑ ¿©´ãÀÌÁö¸¸ CPU clockÀ̶ó°í ¸»¾¸ÇÏ½Å°Ç clock speed°¡ ¾Æ´Ï¶ó tick count°ÚÁö¿ä? clock
speed¸¦ entropy¿ëÀ¸·Î »ç¿ëÇÏ°í ÀÖ´Ù¸é ÃÖ±Ù »óȲ¿¡¼­´Â ³­¼ö¼ºÀÌ Àû´Ù°í º¾´Ï´Ù¸¸... (tick count¶Ç´Â
ÇÁ·Î¼¼½º ½ÃÀÛ ½ÃÁ¡ºÎÅÍÀÇ Á¤¹ÐÇÑ ´ÜÀ§ÀÇ monotonic timer¸¦ ÀÌ¿ëÇϴ°Ŷó¸é ±¦Âú°ÚÁö¸¸¿ä)

(ƯÈ÷ CPU Á¾·ù°¡ ±×´Ú ¸¹Áö ¾ÊÀº ¸ð¹ÙÀÏÀ̳ª Mac ȯ°æ¿¡¼­´Â ´õ¿í ¹®Á¦°¡ µÉ °ÍÀ¸·Î »ý°¢ÇÕ´Ï´Ù¸¸..)

¸¸¾à¿¡ javascript·Î ³­¼ö¼ºÀÌ ³ôÀº Á¤º¸¸¦ °¡Á®¿À°í ½Í´Ù¸é 1) »ç¿ëÀÚ ÀÔ·ÂÀ» À¯µµÇؼ­ ±× ÀԷ½Ã
¹ß»ýÇÏ´Â key/mouse/touch/pointer events 2) deviceorientation events 3) sensor
apis
±×¸®°í 4) webrtcÀÇ getusermedia ¸¦ ÀÌ¿ëÇؼ­ Ä«¸Þ¶ó¿¡¼­ µé¾î¿À´Â µ¥ÀÌÅÍ µîÀ» Àû´ç¤¾»ç¿ëÇÏ´Â
¹æ¹ýÀÌ ÀÖÀ»°ÍÀ¸·Î »ý°¢µË´Ï´Ù. (geolocationµµ »ç¿ëÀÌ °¡´ÉÇÒ °Í °°±ä ÇÕ´Ï´Ù¸¸, ±âº»ÀûÀ¸·Î
triangulation ÀÌ µÈ µ¥ÀÌÅ͸¦ ¹Þ´ÂÁö¶ó ¿øÇÏ´Â ¸¸Å­ ³­¼ö¼ºÀÌ ³ôÀ»Áö´Â Àß ¸ð¸£°Ú½À´Ï´Ù.)

°¨»çÇÕ´Ï´Ù.
¹®»óȯ ¹è»ó

[1] https://github.com/cynthia/mt.js

Received on Friday, 9 August 2013 12:07:36 UTC