SSLã®ããã«Webãµã€ãã§äœ¿çšããããã¹ãŠã®å ¬éããŒã®çŽ0.4ïŒ ããªã¢ãŒãã§äŸµå®³ããããšãã§ããŸããã 䟵害ããããã¹ãŠã®ããŒã¯ãäºæž¬å¯èœãªãä¹±æ°ãã䜿çšããŠèª€ã£ãŠçæããããããæã ç¹°ãè¿ãããŸããã åèšã§ã2çš®é¡ã®åé¡ãåºå¥ã§ããŸããäºæž¬å¯èœãªã©ã³ãã æ§ã§çæãããããŒãšãã©ã³ãã æ§ã®æ¬ åŠã«ããæ»æè ãå ¬éããŒããã°ãããã¡ã¯ã¿ãªã³ã°ããŠç§å¯ããŒãååŸã§ãããããã®ããŒã®ãµãã»ããã§ãã æ»æè ã¯ç§å¯éµãæã£ãŠãããããWebãµã€ãã«ãªãããŸãããã®Webãµã€ãã«åããããæå·åããããã©ãã£ãã¯ãè§£èªã§ããå¯èœæ§ããããŸãã æ°æéã§ããã®æ»æã«å¯ŸããŠè匱ãªãã¹ãŠã®ãã¹ãã«å¯ŸããŠå ¬ééµãåè§£ããç§å¯éµãçºè¡ã§ããããã°ã©ã ãéçºããŸããã
ãã ããåé¡ã¯äž»ã«ã«ãŒã¿ãŒãVPNãªã©ã®çµã¿èŸŒã¿ã·ã¹ãã ã«åœ±é¿ããæ¬æ ŒçãªãµãŒããŒã«ã¯åœãŠã¯ãŸããªãããããããã¯ã«é¥ããªãã§ãã ããã ïŒãããã«ãããããã¯ééããªãã New York Timesã瀺åããŠããããã«ãé»ååååŒã®å§ä»»ç¶ã倱ãçç±ã«ã¯ãªããŸããïŒã æ®å¿µãªãããã»ãŒãã¹ãŠã®ã¡ãŒã«ãŒãããã®åé¡ã®ããããã€ã¹ãèŠã€ãããŸãããããŒã¿ã®ãã¹ãŠã®ããŒã®4.1ïŒ ã衚ãçŽ200,000å°ã®ããã€ã¹ããããŒã®çæã«äœãšã³ããããŒã䜿çšãããšèããããŸãã ããã€ã¹ã«ãã£ãŠçæãããè匱ãªããŒã¯ããããã®ããã€ã¹ã®ã¯ã©ã¹å šäœãé©åãªåæã«ããæ»æã«å¯ŸããŠè匱ã§ããããšã瀺åããŠããŸãã
ãã¹ãŠã®ã¡ãŒã«ãŒã«é£çµ¡ããåã«è匱ãªããã€ã¹ã®å®å šãªãªã¹ãã¯æäŸããŸãããããã§ã«å ¬éãããŠããè³æã䜿çšãããšãæ»æãç°¡åã«åçŸã§ããŸãã ãã®ãããçŸåšãã䜿ãã®ããã€ã¹ãè匱ãã©ããã倿ããWebãµã€ããäœæäžã§ãã
å¿é ããªãã§ãã ãããéè¡ã®éµã¯ã»ãšãã©ã®å Žåå®å šã§ãã
SSLã¯ã€ã³ã¿ãŒãããäžã®ãã¹ãŠã®å€§èŠæš¡ãµã€ãã§äœ¿çšãããŠããŸãããåæçµæã瀺ãããã«ããããã®ããŒã¯ãã®æçš¿ã§èª¬æãããŠããåé¡ã®åœ±é¿ãåããŸããã
ã§ã¯ãã©ã®ã·ã¹ãã ãå±éºã«ãããããŠããŸããïŒ è匱ãªããŒã®ã»ãšãã©ã¯ãã«ãŒã¿ãŒããã¡ã€ã¢ãŠã©ãŒã«ãªã©ã®çµã¿èŸŒã¿ã·ã¹ãã ã§çæããã³äœ¿çšãããéè¡ã®Webãµã€ããé»åã¡ãŒã«ã§ã¯äœ¿çšãããŸããã§ããã è匱ãªSSLããŒã®1ã€ã ããèšŒææ©é¢ã«ãã£ãŠçœ²åãããæ¢ã«æéãåããŠããŸãã ãŸããéè€ããŒã䜿çšããŠçœ²åãããèšŒææžãããã€ãèŠã€ããŸããã è匱ãªããã€ã¹ã«ãã£ãŠçæããããã®ãããã°ãæ æã«åŒ±ããšãµã€ãææè ã«ãã£ãŠçœ²åããããã®ããããè¯ã説æãæãä»ããªããã®ããããŸãã
誰ãããçµã¿èŸŒã¿ã·ã¹ãã ã«ã¯ãšã³ããããŒã«åé¡ãããããšãç¥ã£ãŠããŸãã ãã ãããããŸã§ã¯ããããã®åé¡ãã€ã³ã¿ãŒãããã«æ¥ç¶ãããŠããå®éã®ããã€ã¹ã§ã©ã®ããã«äžè¬çã§ãããã¯æç¢ºã§ã¯ãããŸããã§ããã
ããŒçæ
Webãµã€ããšãããã¯ãŒã¯ã³ã³ãã¥ãŒã¿ãŒã¯ãå ¬é鵿å·ã·ã¹ãã ã䜿çšããŠèå¥ããŸãã ããã«ãã¯ã©ã€ã¢ã³ããæ¥ç¶ãããã¯ã©ã€ã¢ã³ãã§ããããšãã¯ã©ã€ã¢ã³ãã«èšŒæããããã«ããµãŒããŒãã¯ã©ã€ã¢ã³ãã«èšŒææžãæäŸããå Žåã®èå¥ã®ã¿ã€ãã«ã€ããŠèª¬æããŸãã æ»æè ãç§å¯ããŒãç¥ã£ãŠããå Žåãæ»æè ã¯å®éã®ã·ã¹ãã ã«ãªãããŸãããšãã§ããã»ãšãã©ã®å Žåãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãã©ãã£ãã¯ãè§£èªã§ããŸãã
RSAã¯ããããã®ç®çã§æãäžè¬çã«äœ¿çšãããæå·ã·ã¹ãã ã§ãã RSAæå·ã·ã¹ãã ä¿è·ã¯ã倿°ã®å æ°åè§£ã«åºã¥ããŠæ§ç¯ãããŠããŸãã RSAå ¬ééµã¯ãäžå¯Ÿã®æŽæ°ã§æ§æãããŸãïŒãªãŒãã³ææ°eãšã2ã€ã®å€§ããªçŽ æ°pãšqã®ç©ã§ããã¢ãžã¥ãŒã«Nã§ãã æ»æè ãNãpããã³qã«æ»ãããšãã§ããå Žåãå ¬ééµã§æå·åãããããã¹ããè§£èªããããšãã§ããŸãã ãã ããæéã®å æ°åè§£ã¢ã«ãŽãªãºã ã䜿çšããŠãã1024ãããã¢ãžã¥ãŒã«ãå æ°åè§£ããããšã¯ã§ããŸããã§ããã
ããŒã»ãã¥ãªãã£ã®éèŠãªéšåã¯ãããŒçææ®µéã§ã®ã©ã³ãã å ¥åã®ååšã§ãã ãã®å ¥åã«ååãªãšã³ããããŒããªãå Žåãæ»æè ã¯ããããæšæž¬ããããšãã§ãããããã£ãŠãæ°Nã®èŠçãªå æ°åè§£ãªãã§ç§å¯éµãååŸã§ããŸãã
ææ°ã®ã³ã³ãã¥ãŒã¿ãŒããã³ãµãŒããŒã§ã¯ãããŒçæããã°ã©ã ã¯ãããŠã¹ãããŒããŒããããŒããã©ã€ãããããã¯ãŒã¯ã€ãã³ãããã®ä»ã®äºæž¬äžå¯èœãªãœãŒã¹ãªã©ãå€ãã®ç©çãœãŒã¹ïŒã»ãšãã©ã®å Žåãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã䜿çšïŒããååŸããã©ã³ãã ãªå ¥åããŒã¿ã䜿çšããŸãã ãã ãããœãŒã¹ãå°ãªãå Žåã¯ããšã³ããããŒãäžè¶³ããããŒã¯æ»æã«å¯ŸããŠè匱ã«ãªãå¯èœæ§ããããŸãã 匷ããšã³ããããŒãåéãããã®åŒ·åºŠããã¹ãããããšã¯ãé·å¹Žã«ããã£ãŠå€ãã®è匱æ§ãçã¿åºããéåžžã«è€éãªåé¡ã§ãã
åé¡ã®2ã€ã®ããŒãžã§ã³
ãã®åé¡ãã©ãã»ã©äžè¬çãã調æ»ããããã«ããã¹ãŠã®IPv4ã¢ãã¬ã¹ãã¹ãã£ã³ããåSSLèšŒææžãšSSHããŒã®ã³ããŒãåéããŸããã éµãšèšŒææžã®åéã«ã¯1æ¥ãããããŸããã§ãããæåã«æšæºã®nmapã䜿çšããŠå¯Ÿå¿ããéããŠããããŒããæã€ãã¹ããèŠã€ããæ¬¡ã«æé©åãããããã°ã©ã ã䜿çšããŠãããã®ãã¹ããããŒãªã³ã°ããŸããã åèšã§ã580äžã®SSLèšŒææžãš1,000äžã®SSHããŒãåéããŸããã
çºèŠããããã«ããšã³ããããŒã®åé¡ã¯ã2ã€ã®ç°ãªãã¿ã€ãã®åŒ±ç¹ã«ã€ãªãããŸãã
å ¬ééµãéè€ããŠããŸãã
ãã¹ãŠã®RSAããŒã®çŽ1ïŒ ãç¹°ãè¿ãæ€åºãããŸããããããã¯ãããããšã³ããããŒã®åé¡ãåå ã§ãã 2ã€ã®ããã€ã¹ãåãå ¬éããŒãæã£ãŠããå Žåãããããåãç§å¯ããŒãæã£ãŠããŸãã å®éãåãããŒãæã€ãã¹ãŠã®ããã€ã¹ã¯åãäœçœ®ã«ãããŸã-æ»æè ã¯ãããã®æã匱ãããã€ã¹ã䟵害ããä»ã®ãã¹ãŠã®ãŠãŒã¶ãŒã«ããŒãååŸã§ããŸãã ãã®åé¡ã«ã€ããŠã¯é·ãéç¥ãããŠããŸãããããããŸã§ã®ãšãããå ¬éãããæç®ã«ãããã©ãã»ã©åºãŸã£ãŠããããèšé²ãã人ã¯ããŸããã§ããããšã³ããããŒã®åé¡ã«ãã59,000åã®ããŒãç¹°ãè¿ãããŠããããšãæåã§ç¢ºèªããŸãããããã¯ããã¹ãŠã®èšŒææžã®çŽ1ïŒ ããŸãã¯ãã¹ãŠã®èªå·±çœ²åèšŒææžã®2.6ïŒ ã«çžåœããŸãã ãŸãããã¹ãŠã®ããã€ã¹ã®4.6ïŒ ïŒ585,000èšŒææžïŒãããã©ã«ãã§ã€ã³ã¹ããŒã«ãããèšŒææžã䜿çšããŠããããšãããããŸããã ãããã®ããã€ã¹ã¯äœãšã³ããããŒã§çæãããããŒã䜿çšããŸããã§ãããããããã®ç§å¯ããŒã¯ãã¹ãŠã®ã¢ãã«ã§åãã§ãããããåãæ»æãåããŸãã 倿°ã®ãµã€ããé©åãªæ¡ä»¶ã§éè€ããŒã䜿çšããŠããããããŠãŒã¶ãŒã«å±éºããããããªããããããããã¹ãŠã®ããŒãæåã§ãã§ãã¯ããŸããã
ãã¡ã¯ã¿ãªã³ã°å¯èœãªå ¬éããŒã
ããã«é©ãã¹ãããšã«ããšã³ããããŒã®åé¡ã«ãããç¹å¥ãªã¢ã¯ã»ã¹ãªãã«ãªã¢ãŒãæ»æè ãã€ã³ã¿ãŒãããã§äœ¿çšããããã¹ãŠã®RSAããŒã®ããªãã®éšåããã¡ã¯ã¿ãªã³ã°ã§ããããšãããããŸããã SSLèšŒææžã®ãã¹ãŠã®RSAããŒã®0.4ïŒ ãåè§£ã§ããŸããã ãããè¡ãããã«ãã€ã³ã¿ãŒãããäžã®RSAå ¬éããŒããã¢ãžã¥ãŒã«ã®ãã¹ãŠã®ãã¢ã®æå€§å ¬çŽæ°ïŒgcdïŒãèšç®ããŸããã1724ã®å ±éã®èŠå ãç¹å®ããŸãããããã«ããã24.816ã®SSLããŒãš2422ã®SSHã®ããŒãã¡ã¯ã¿ãªã³ã°ã®ããã®301ã®å ±éã®èŠå ããã¡ã¯ã¿ãªã³ã°ã§ããŸããã ããã¯ãSSLã«äœ¿çšãããRSAããŒã®ã»ãŒ0.5ïŒ ã®ç§å¯ããŒãèšç®ã§ããããšãæå³ããŸãã ããã«ãèšç®ã®ä»çµã¿ã説æããŸãã
ç¹å®ã®è匱ãªããã€ã¹
çµã¿èŸŒã¿ã·ã¹ãã ã¯ãå€ãã®å Žåãæåã®ããŒãæã«æå·åããŒãçæããŸãããã®å Žåããã¹ãŠã®ã¹ããŒã¿ã¹ã¯å·¥å Žã§äºåã«æ±ºå®ã§ããŸãã ãã®ç ç©¶ã§èª¬æãããŠããããã«ããšã³ããããŒã§ãã®ãããªåé¡ãåŒãèµ·ããå¯èœæ§ããããã®ã
SSLèšŒææžã®æ å ±ã䜿çšããŠãè匱ãªããŒãçæããåŸåãããããã€ã¹ã®çš®é¡ãç¹å®ããããšãã§ããŸããã ãããããããŒãåè§£ã§ããªãä»ã®å€ãã®ããã€ã¹ããããŸããããããã¯ãŸã 匱ãããŒãçæããåŸåããããé åºãªæ»æè ã«ãã£ãŠäŸµå®³ãããå¯èœæ§ããããŸãã ç§ãã¡ãç¹å®ã§ããè匱ãªããã€ã¹ã®å®å šãªãªã¹ãã¯ãæ¥çã®ã»ãšãã©ãã¹ãŠã®å€§æã¡ãŒã«ãŒãå«ã30瀟以äžã®ã¡ãŒã«ãŒã§æ§æãããŠããŸãã åé¡ã®ããããã€ã¹ã®çš®é¡ã«ã¯ããã¡ã€ã¢ãŠã©ãŒã«ãã«ãŒã¿ãŒãVPNããã€ã¹ããªã¢ãŒããµãŒããŒç®¡ççšã®ããã€ã¹ãããªã³ã¿ãŒããããžã§ã¯ã¿ãŒãVOIPé»è©±ãªã©ããããŸãã
éç¥ãããŸã§ããã€ã¹åã¯ãªã¹ãããŸãããã以äžã«ããã€ãäŸã瀺ããŸãã
ãã¡ã€ã¢ãŠã©ãŒã«X ïŒ
SSLããŒã¿ã®52.055ãã¹ã
åäžã®ããŒãæã€6.730
åè§£å¯èœãªããŒã䜿çšãã12.880
ãŠãŒã¶ãŒã¬ãã«ã«ãŒã¿ãŒY ïŒ
SSLããŒã¿ã®26.952ãã¹ã
9.345ãšåäžã®ããŒ
å æ°åè§£å¯èœãªããŒã䜿çšãã4.792
äŒæ¥åãã®ãªã¢ãŒãã¢ã¯ã»ã¹ãœãªã¥ãŒã·ã§ã³Z
SSLããŒã¿ã®1.648ãã¹ã
åãããŒã§24
å æ°åè§£å¯èœãªããŒã§0
ããã¯ã©ãããŠèµ·ããã®ã§ããããïŒ
ãšã³ããããŒã®åé¡ããç°¡åã«å æ°åè§£ã§ããéèŠãªåé¡ã«ã©ã®ããã«ã€ãªãããã¯å®å šã«ã¯æããã§ã¯ãããŸããã ä»ãç§ãã¡ã¯ããã奜å¥å¿itiveçãªèªè ã«ãããèµ·ããçç±ã説æããŸãã
ããã°ã©ããRSAçšã®ã¢ãžã¥ãŒã«ãçæããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
prgn.seed(seed)
p = prgn.generate_random_prime()
q = generate_random_prime()
N = p*q
æ¬äŒŒä¹±æ°ãžã§ãã¬ãŒã¿ãŒã®ç²åºŠã«äºæž¬å¯èœãªå€ãããå Žåãããã€ãã®ç°ãªãããã€ã¹ãåãNã¢ãžã¥ãŒã«ãæã€ããšãã§ããŸãããè¯ãæ¬äŒŒä¹±æ°ãžã§ãã¬ãŒã¿ãŒãå ±éã®åãä¿æ°ã§2ã€ã®ç°ãªãNã¢ãžã¥ãŒã«ãçæã§ãããšã¯èããŠããŸããã
ãã ããäžéšã®å®è£ ã§ã¯ãã»ãã¥ãªãã£ã匷åãããšããèãã§ãçŽ æ°pãšqã®çæã®éã«äœåãªã©ã³ãã æ§ã远å ãããŸãã
prgn.seed(seed)
p = prgn.generate_random_prime()
prgn.add_randomness(bits)
q = generate_random_prime()
N = p*q
æåã®ã°ã¬ã€ã³ã貧匱ãªãšã³ããããŒã§çæãããå Žåãããã¯ãè€æ°ã®ããã€ã¹ãåãå åpãšç°ãªãå åqã§æ§æãããç°ãªãã¢ãžã¥ãŒã«ãæã€ãšããäºå®ã«ã€ãªããå¯èœæ§ããããŸãã ãããã£ãŠãGCDã䜿çšããŠäž¡æ¹ã®ã¢ãžã¥ãŒã«ãåè§£ã§ããŸãïŒp = gcdïŒN1ãN2ïŒã
OpenSSLã§ã®RSAéµçæã¯æ¬¡ã®ããã«æ©èœããŸãããšã³ããããŒããŒã«ããã®ã©ã³ãã ãããã䜿çšããŠçŽ æ°pãšqãçæãããã³ã«ãçŸåšã®ç§æ°ãããŒã«ã«è¿œå ãããŸãã ãã¹ãŠã§ã¯ãããŸããããå€ãã®è匱ãªããŒã¯ãOpenSSLãšOpenSSHã䜿çšããŠçæãããOpenSSLã䜿çšããŠRSAããŒãçæããŸãã
ãã¹ãŠã®ããŒãã¢ã®GCDèšç®
ã¢ãžã¥ãŒã«N1ãšN2ã® RSAãã¢ã«åãä¿æ°ãããå Žåãgcdã䜿çšããŠäž¡æ¹ã®ã¢ãžã¥ãŒã«ãåçŽã«å æ°åè§£ã§ããŸãã ãã¹ã¯ãããã³ã³ãã¥ãŒã¿ãŒã§ã¯ã2ã€ã®1024 RSAã¢ãžã¥ãŒã«ã®gcdèšç®æäœã«çŽ17ãã€ã¯ãç§ããããŸãã
æ°åŠã®åŸåããã人ã®ããã«ããã®ã¢ã€ãã¢ã䜿çšããŠå€æ°ã®ããŒãå æ°åè§£ããæ¹æ³ã説æããŸãã
éµåè§£ã®ç°¡åãªã¢ãããŒãã«ã¯ãRSAã¢ãžã¥ãŒã«ã®åãã¢ã®gcdã®èšç®ãå«ãŸããŸãã ãããããããã®èšç®ã«ãããæéãèŠç©ãããšããã¹ã¯ãããã³ã³ãã¥ãŒã¿ãŒã§çŽ24幎ããããŸãã
代ããã«ã2005幎ã«Journal of Algorithmsã§å ¬éãããDan Bursteinã®ã¢ã€ãã¢ã䜿çšããŸããããã«ãããæŽæ°ã®ã°ã«ãŒããçŽ æ°ã«åè§£ã§ãããããæ°æéã§Pythonã®å®è£ ã䜿çšããŠèšç®ãå®è¡ã§ããŸãã ãã®ã¢ã«ãŽãªãºã ã¯å€§ããªç§å¯ã§ã¯ãããŸãããå ¬éããã倿°ã®äœåãã¢ã«ãŽãªãºã ã®æ¹åã«åãçµã¿ãŸããã
ãã®åé¡ã®äž»ãªæ°åŠçã¬ãã¥ãŒã¯ã次ã®åŒã䜿çšããŠãä»ã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ãšäžç·ã«ã¢ãžã¥ãŒã«N1ã® gcdãèšç®ã§ããããšã§ãã
gcd(N1, N2 ... Nm) = gcd(N1, (N1 * N2 * ... Nm mod N1^2)/N1)
倧ããªåé¡ã¯ããã®æ¹çšåŒã®èª€ç®ãè¿ éã«è¡ãæ¹æ³ã§ãããã®èšç®ã®æåã®ã¹ãããã¯ããã¹ãŠã®ããŒã®ç©ã§ãã729çŸäžæ¡ã®æ°åãèŠã€ããããšã§ãã ã·ã³ã°ã«ã³ã¢ããã»ããµã§ã¯18æéã§ãã¹ãŠã®SSLããŒã¿ãåè§£ã§ãã4ã³ã¢ããã»ããµã§ã¯4æéã§SSHããŒã¿ãåè§£ã§ããŸããã
ãããã«
ããã¯ãã¡ããåé¡ã§ãããæ®éã®ãŠãŒã¶ãŒãå¿é ãã¹ãåé¡ã§ã¯ãããŸããã ãã ããçµã¿èŸŒã¿ã·ã¹ãã ã®ã¡ãŒã«ãŒã«ã¯å€ãã®äœæ¥ãå¿ èŠã§ãããäžéšã®ã·ã¹ãã 管çè ãæžå¿µããå¿ èŠããããŸãã ããã¯ãã»ãã¥ãªãã£åéã®äººã ãžã®ç®èŠãã®åŒã³ãããšããŠããŸãããã¹ãŠã®äººã®åã«è匱æ§ãé ãããŠããããšã®ãã¹ãŠãæãåºãããŠãããã¯ãã§ãã