ãªãã£ãŒãã»ã¹ããŒãã³ã®ãããã§ã
NSAãäœã§ãããäœãããã®ããç¥ã人ãå¢ããŠããŸãã é瀺ãããå
éšãã¬ãŒã³ããŒã·ã§ã³ã«åºã¥ããŠãNSAããã©ãã£ãã¯ã®åéãšã€ã³ã¿ãŒããããããã€ããŒãšãœãããŠã§ã¢ãžã£ã€ã¢ã³ãã®ãããã¯ãŒã¯ã§ã®ãæ£ãããããã°ã©ã ã®å°å
¥ã ãã§ãªããæå·ã¢ã«ãŽãªãºã ã®åæã«ãå€å€§ãªåªåãè²»ãããŠããããšã¯æããã§ãã 2013幎ã®åœå®¶å®å
šä¿éäºç®ãå«ã
178ããŒãžã®ææžãå
¬éãããŸããã ãã®çµæãçµ±åæå·åããã°ã©ã ãããžã§ã¯ãã«110åãã«ãè²»ããããŸããã ãã®ãããªãéã®ããã«äœãã§ããã§ããããïŒ ç¢ºãã«å©çãçãã ããšãã°ããŠã¿å·ã®å·šå€§ãªã³ã³ãã¥ãŒãã£ã³ã°ã»ã³ã¿ãŒã®å»ºèšã¯ã20åãã«ã§ãã¢ã«ã¢ã³æåŸã®äœå±
ã«ãããŸãã ã»ã³ã¿ãŒã«ã¯2300 m2ã®ãµãŒããŒã¹ããŒã¹ãããã65ã¡ã¬ã¯ããã®çºé»æãšããã¹ãŠãå·åŽãã6äžãã³ã®å·åèšåããããŸãã 2012幎ãNSAãæè¿ãæå·è§£èªãšè€éãªã·ã¹ãã ã®ãããã³ã°ã§ç»æçãªæåãåããããšãå
¬åŒã®å£ããé ãããŸããã ããã圌ããæ°ããããŒã¿ã»ã³ã¿ãŒãå¿
èŠãšããçç±ã§ããïŒ æå·åŠã®ç¬¬äžäººè
ã§ãããã«ãŒã¹ã»ã·ã¥ãã€ã¢ãŒã¯ããããã®å£°æã«ã€ããŠã³ã¡ã³ãããè¿ãå°æ¥ãNSAãAESãªã©ã®ææ°ã®åŒ·åãªæå·ã解èªããå¯èœæ§ã¯äœãããšã瀺åããŸããã ãããŠåœŒã¯ãNSAããã®åªåãã¢ã«ãŽãªãºã ã®ãæ£çŽãªããããã³ã°ã§ã¯ãªãããããã®ã¢ã«ãŽãªãºã ã®å®è£
ã®è匱æ§ãèŠã€ããããšã«éäžãããšä»®å®ããŸããã ãã«ãŒã¹ã¯ãæåãéæã§ããããã€ãã®åéãç¹å®ããŸããã
- ãããã³ã°ä¹±æ°ã»ã³ãµãŒã䜿çšãããããŒçææé ã«å¯Ÿããæ»æ
- ããŒã¿éä¿¡ã®åŒ±ããªã³ã¯ãžã®æ»æïŒããšãã°ããã£ãã«ã¯ååã«ä¿è·ãããŠããããããã¯ãŒã¯ã¹ã€ããã¯äžè¯ã§ãïŒ
- ã·ã¹ãã 管çè
ã®ç£èŠã®ããã«äžéšã®å Žæã«æ®ã£ãŠãã匱ãããŒã䜿çšããæå·ã«å¯Ÿããæ»æïŒé©åãªåè£ã¯1024ãããããŒãæã€RSAã§ãïŒ
- å¯äœçšæ»æ
å¯äœçšãžã®æ»æãšã¯äœããèããŠã¿ãŸãããã
éåžžã«å€ãã®ç 究ãšç 究ããããŸããŸãªæå·ã·ã¹ãã ã®ã»ãã¥ãªãã£ã®åæã«è²»ããããŠããŸãã åæã«ããæå·ã·ã¹ãã ãã¯ããã§ã¯éåžžã«åºãèããããŠããŸããç¹å®ã®æå·åãããã³ã«ãããŒããŠã§ã¢ããã€ã¹ããŸãã¯ãµãŒããŒããµãã¹ã¯ã©ã€ããŒãªã©ãå«ããœãããŠã§ã¢ãšãââãŒããŠã§ã¢ã·ã¹ãã å
šäœã§ãããŸããç¹å®ã®çš®é¡ã®æ»æã«èããã·ã¹ãã ã®èœåãåæããŸãïŒã¯ã©ãã«ãŒïŒæå·ã«é¢ããæç®ã§ã¯ãéåžžãã€ããŸãã¯ãããªãŒãšããååãä»ããããŠããŸãïŒãç¹å®ã®ç¥èãšããŒã«ã«ã¢ã¯ã»ã¹ã§ããŸãã 圌ã¯ãããã䜿çšããŠã·ã¹ãã ã«ãããã³ã°ããŸããããŒãèšç®ããæå·åãããã¡ãã»ãŒãžãèªã¿åããããŒã¿ãŸãã¯ããžã¿ã«çœ²åã眮ãæããŸãã æœåšçãªæ»æè
ã劥åœãªæéã劥åœãªã³ã³ãã¥ãŒã¿ã®é»åã䜿çšããŠãã®ã·ã¹ãã ã®ç§å¯æ
å ±ã«ã¢ã¯ã»ã¹ã§ããªãå Žåãã·ã¹ãã ã¯èæ§ããããšèŠãªãããŸãã æå·åã®åªãã圢æ
ã¯ãç¬èªã®ã¢ã«ãŽãªãºã ã®çºæã§ã¯ãªãã培åºçã«ç 究ããããã®åŒ·åºŠãéåžžæ°åŠã«ãã£ãŠãµããŒããããŠãããããæ°žç¶çã§ã¿ã€ã ãã¹ããããæ¹æ³ã®äœ¿çšã§ãã çåãçããŸãïŒç§ã®ããã€ã¹ã§ãããšãã°ãããã€ãã®å®èšŒæžã¿ã®å®çã«åºã¥ããã¢ã«ãŽãªãºã ã䜿çšãããšãèœã¡çãããšãã§ããŸãïŒå°ãªããšãéåã³ã³ãã¥ãŒã¿ãŒã®çºæãŸã§ïŒã å€æããŸããããããã
ã»ãã¥ãªãã£åæã®åŸæ¥ã®ã¢ãã«ã¯ããå®éšããªããžã§ã¯ãããæå·åãªã©ã®ç¹å®ã®æäœãå®è¡ããäžçš®ã®ãã©ãã¯ããã¯ã¹ãšèŠãªããŸãããã¬ãŒã³ããã¹ãã¯å
¥åã«éä¿¡ãããæå·åã¯åºåã«è¡šç€ºãããŸãã ãŸãããã®ããã¯ã¹å
ã«ããŒãä¿åããŸãïŒãªãã·ã§ã³ãšããŠãå€éšããèšå®ããããšããäžå®ã«ããããšããã»ãã·ã§ã³ããšã«çæããããšãã§ããŸã-éèŠã§ã¯ãããŸããïŒã äž»ãªããšã¯ãããŒãå€éšã®äžçã«ã¢ã¯ã»ã¹ã§ããªãããšã§ãããEvaã¯ããã«ãŒã®æšæºçãªæŠåšã«æºè¶³ããŠããŸãïŒå
¥åºåã§ããŒã¿ãã€ã³ã¿ãŒã»ãããããä»»æã®ããŒã¿ã倧éã«æäŸããæ©èœãã¢ã«ãŽãªãºã èªäœãšãã®ãã©ã¡ãŒã¿ãŒã®æ£ç¢ºãªç¥èãªã©ã§ãã
æŸå°ç·ãé»åæ¶è²»ãããã³ãã®ä»ã®èšé²ãããçç¶ãé»åããã€ã¹ããŸãã¯ãããã®ããã€ã¹äžã®ã³ã³ãã¥ãŒã¿ãŒããã°ã©ã ãéããŠå€ã®äžçãšå¯Ÿè©±ããããšã«ãããæ»æè
ã«å€ãã®æçšãªæ
å ±ãäžããããšãã§ããŸãã ãããã®çç¶ã¯ãå¯äœçšãæã«ã¯å¯äœçšãšåŒã°ããè±èªã§åŒã°ããŸãã æç®ã«ã¯ç¢ºç«ãããçšèª-ãµã€ããã£ãã«ããããŸãã ããã«ãŒã«ãšã£ãŠããã®æ
å ±ã¯ã培åºçãªæ€çŽ¢ãšããäžæå¿«ãªèŠéããã圌ãæãããšãã§ããã®ã§ããéã§ãã®éã¿ã«å€ãããããšãã§ããŸãã ãã¢ããã¯ãéãããšãšã®é¡æšã§ããã¢ãåãä»ããããŠãããã«ããå€ãã®ã«ååãªå Žåãæ³¥æ£ã®å®¶ã®ææè
ããã¹ã¿ãŒããŒãéžã¶ã®ã«é·ãæéããããã®ã¯ãªãã§ããïŒ
èµ·æº
å¯äœçšã®ãå©ç¹ãã«ã€ããŠã®æåã®é倧ãªèšåã¯ãè±åœã®Mi-5ãšãŒãžã§ã³ãã§ããããŒã¿ãŒã»ã©ã€ãã®èªäŒã«ãããŸãã60幎代ã«ãã³ãã³ã®ãšãžãã倧䜿通ã«é§è»ãããããŒã¿ãªãŒæå·ãã·ã³ã®æå·ã解èªããè©Šã¿ã«ã€ããŠèª¬æããŠããŸãã åœæã¯æããã«ã³ã³ãã¥ãŒãã£ã³ã°èœåãäžè¶³ããŠãããããèè
ã¯ãã€ã¯ãèšçœ®ãããã·ã³ããçºããããã¯ãªãã¯ãèšé²ããããšãææ¡ããŸããããæ¯æãæè¡è
ã«ãã£ãŠæŽçãããŸããã ãããã£ãŠã3ã€ã®ãã€ãŒã«ã®ãã¡ã®2ã€ã®ãã€ãŒã«ã®äœçœ®ãèšç®ã§ãããããæçµçã«ã¯ã³ãŒããéãã®ã«åœ¹ç«ã¡ãŸããã
å
æ¬çãªå¯äœçšã¯ã1995幎ã«Paul Kocherã«ããç 究ã®å
¬éåŸãç§å¯éµã®å€ãšæå·åããã€ã¹ãã¹ãä¹æŒç®ãèšç®ããã®ã«ãããæéãšã®çµ±èšçé¢ä¿ã®ååšã蚌æããåŸãæ€èšããå§ããŸããã ãã以æ¥ãç¹å®ã®ããŒããŠã§ã¢ããã€ã¹ã§ã®æå·åã®å®è£
ã¯ããã¯ããéçã³ã³ã¯ãªãŒããã«èŠããªãããšãæããã«ãªããŸããã ããŸããŸãªã·ã¹ãã ã®ã»ãã¥ãªãã£ã確ä¿ããããã®éèŠãªå Žæã¯ãæå·ããã»ããµã«ãã£ãŠå ããããŠããŸãã ãããã¯æå·åæäœçšã«æé©åãããŠãããæµå¯Ÿçãªç°å¢ãšçžäºäœçšããªãç¬èªã®åé¢ã³ãŒããå®è¡ããç§å¯ããŒãç¬èªã®ã¡ã¢ãªã«ä¿åããŸããå€ãã®å Žåãä¿è·ãããŠããŸã-äžæ£ãªèªã¿åããæ€åºãããå ŽåãããŒãããªã¢ã«ã¯ç Žæ£ãããŸã å¯äœçšåæã®éçºã«ãããå°ãªããšã2ã€ã®çç±ã«ãããæå·ããã»ããµã¯ããã»ã©å®å®ããŠããªãããã«èŠããŸãã
- ãããã¯å©çšå¯èœã§ãïŒããããåããéè¡ã«ãŒããSIMã«ãŒããã¿ãã¬ãããã©ãããããã®DRMããããããŒã¯ã³-ç§ãã¡ã¯æ¯æ¥ããã«ééããŸãïŒ
- å¯äœçšã«æ»æãå±éããããã«ã巚倧ãªã³ã³ãã¥ãŒãã£ã³ã°èœåãšè¶
é«äŸ¡ãªæ©åšã¯å¿
èŠãããŸããã ããšãã°ã100 MHzã®å解èœãæã€ããžã¿ã«ãªã·ãã¹ã³ãŒãã®ã³ã¹ãã¯çŽ2000ãã«ã§ãã
æ»æã®åé¡
æç®ã«ãããå¯äœçšãžã®æ»æã¯ãéåžžãããã€ãã®ç¬ç«ããåºæºã«åŸã£ãŠåé¡ãããŸãã
1.ä»å
¥ã®äºå®ã«ã€ããŠ
- ååçæ»æ ïŒæ»æè
ã¯ããã€ã¹ã®æäœã«å¹²æžãããæ
å ±ãåéãããªãã¶ãŒããŒã«ãããŸããã ãã®å Žåããå®éšçãããã€ã¹ã¯ãæ»æãçºçããªãã£ããã®ããã«æ©èœããŸãã
- èœåçæ»æ ïŒæ»æè
ã¯ãå€éšããã³å
éšã®äž¡æ¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ã«äœçšããããšã«ãããããã€ã¹ã®æäœã劚害ããããå°ãªããšãããã€ã¹ããªã³ã«ããŠäœæ¥ãéå§ããŸã
2.ä»å
¥ã®çšåºŠã«ãã
- 䟵å
¥æ»æ ïŒããã€ã¹å
éšãžã®çŽæ¥çãªåœ±é¿ã ããã¯ãå°äœã®åçŽãªé»æ°ç枬å®ããŸãã¯éåžžã«çéå
¥ãã®æ¹æ³ãããšãã°ãã€ãªã³ç
§å°ãçµæ¶ã®ã¬ãŒã¶ãŒåæãåœä»€ã®å®è¡ã«åœ±é¿ãäžããç®çã§ã®æå³çãªå¹²æžãªã©ã«ããå°é»æ§æ§é ã®äœæã®ããããã§ãã
- 䟵å
¥ãªãã®è¿æ¥æ»æ ïŒæ»æè
ã¯æž¬å®ããããã¹ãŠã枬å®ããŸãããããã€ã¹ã®éåžžã®æäœã劚害ããŸããã éåžžãé»åæ¶è²»ãšã©ã³ã¿ã€ã ã枬å®ããã¢ã¯ã»ã¹å¯èœãªå°äœã®ä¿¡å·ãèªã¿åããŸã
- é ãããã®æ»æïŒäŸµå
¥ã®ãªãæ»æã«äŒŒãŠããŸããããã®å Žåãããã€ã¹ãžã®ç©ççãªã¢ã¯ã»ã¹ã¯ãããŸãããã€ãŸãã枬å®ããããã©ã¡ãŒã¿ãŒã®ã»ããã倧å¹
ã«çããããŸãã äžæ¹ããã®ãããªæ»æã®ç®æšã¯ãéé¢ãããããã€ã¹ã ãã§ãªãããããã¯ãŒã¯ãµãŒãã¹ãŸãã¯åãªãããã°ã©ã ã§ããããŸãã
3.ããŒã¿åæã®æ¹æ³ã«ãã
- ç°¡åãªåæ ïŒäžé£ã®å°æ°ã®æž¬å®ãå®è¡ãããå枬å®ãåå¥ã«åæãããŸããå®è¡å¯èœãªåœä»€ãšãæŒæŽ©ãããæ
å ±ã®é¢ä¿ãç¹å®ããããšããŸãã ãããšã¯å¥ã«ããœãŒã¹ããŒã¿ã®å€åã芳枬ããŒã¿ã®å€åã«ã©ã®ããã«åœ±é¿ãããã ãã§ãªããç°ãªã枬å®å€éã®çžé¢é¢ä¿ãæããã«ããããšããŠããªãããšãæå³ããŸãã ãã®æ¹æ³ã®äž»ãªåé¡ã¯ãæ©å¯æ
å ±ã®å®éã®å
åãç¡é§ãªãã€ãºããåé¢ããããšã§ãã
- å·®ååæ ïŒãœãŒã¹ããŒã¿ãšèŠ³æž¬ããŒã¿ã®é¢ä¿ãç¹å®ããããšããŠããŸãã ããã¯ãå€æ°ã®æž¬å®ãšããã«ç¶ãçµæã®çµ±èšåæãå®è¡ããããšã§éæãããŸãã åæã¯ããã€ãºã®åœ±é¿ãå¹³æºåããã®ã«åœ¹ç«ã¡ãŸã-ãããšãã«ãã¬ãããåé¢ãããããšãã§ããŸãã ãã®å Žåãæ»æè
ã¯é¢å¿ã®ããããã€ã¹ã®åçŽåãããã¢ãã«ã«ãã£ãŠæéãããŸãã

å®è·µ-RSAæå·åã«å¯Ÿããã¿ã€ã ã¢ã¿ãã¯
RSAæå·åã®ã¿ã€ã ã¢ã¿ãã¯ã«ã€ããŠã¯ãæç®ã§ããç¥ãããããç 究ãããŠããŸãã æ»æã®åºæ¬ã¯ãæå·åæäœã®å®è¡ã«ããã£ãæéãæ£ç¢ºã«æž¬å®ããããšã§ãã ããã§ã¯ãããã«ãŒã¯ããã€ã¹èªäœãå
¥åã«ããŒã¿ãæäŸããã¿ã€ã ã¹ã¿ã³ãã枬å®ããããã«å¿
èŠãªæ©åšãæã¡ãããã€ã¹ã§äœ¿çšãããŠããã®ã¯RSAã§ããããšã確å®ã«ç¥ã£ãŠãããšä»®å®ããŸãã
ã¿ã€ã ã¢ã¿ãã¯ã¯ãååãšããŠãæ»æãããããã€ã¹ãå
¥åããŒã¿ïŒæå·ãå¹³æãã«é¢ä¿ãªãïŒããŸãã¯ããŒã«å¿ããŠæå·åæäœã«ç°ãªãæéãè²»ãããšããäºå®ã«ããå¯èœã§ãã ãã®éãã¯æé©åã«ãã£ãŠå¢å¹
ãããŸããããã»ããµãŒã¯æ倧éã«æé©åããããã«ãã·ãŒã¯ããããã®çµæãäžéšã®æäœã¯çè«çã«äºæ³ããããããã¯ããã«é«éã«å®è¡ã§ããŸãã
ãåç¥ã®ããã«ãRSAã¢ã«ãŽãªãºã ã®åºç€ã¯ïŒãããŠDiffie-Hellmanãåãã§ãïŒã环ä¹æ³ã§çŽ¯ä¹ããæäœã§ãã 次ã®è¡šèšã䜿çšããããšããå§ãããŸãã
m-ãã¬ãŒã³ããã¹ãïŒ
ã¡ãã»ãŒãžããïŒ
c-æå·ïŒæå·ããïŒ
{eãn}-å
¬éããŒïŒ
æå·åãã-æå·åããååŸïŒ
{dãn}-ç§å¯éµïŒ
埩å·åãã-埩å·åäžã«ååŸïŒ
w-ããŒã®
å¹
ïŒ
widthããïŒ
d [i]-ããŒã®içªç®ã®ããã
次ã«ã埩å·åããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸãã
m = c^d mod n
ããã§ãnã¯å
¬éããŒã®äžéšã§ãããããå
¬éãããŠãããcã¯ããŒã¿ãã£ãã«ããªãã¹ã³ããããšã§ååŸã§ããŸãã ç§ãã¡ã®ç®æšã¯dãèŠã€ããããšã§ãã
ãã®æ°åŒãèšç®ããããã®ããŸããŸãªã¢ã«ãŽãªãºã ããããŸãããé¡ããèšç®ããã®ã¯è²»çšãããããããããã§ãã æå·ããã€ã¹ãããã€ããªé²åºã¢ã«ãŽãªãºã ãšåŒã°ããããšã®å€ãæãåçŽãªé«é环ä¹ã¢ã«ãŽãªãºã ã䜿çšããŠãããšä»®å®ããŸãããŸãã¯ãå€éšãœãŒã¹ã®å Žåã®ããã«ãäºä¹ãšä¹ç®ãŸãã¯çŽ¯ä¹ã䜿çšããŸãã 圌ã®æ¬äŒŒã³ãŒãã¯æ¬¡ã®ãšããã§ãã
int squareAndMultiply(c, d, n) { R = array(0..w-1) S = array(0..w-1) s(0) = 1 for (k = 0, k < w, k++) { if (d[k] == 1) R(k) = (s(k) * y) mod n else R(k) = s(k) s(k+1) = (R(k) ^ 2) mod n } return R(wâ1) }
æããã«ãæåã®ã±ãŒã¹ã§ã¯ããã»ããµãä¹ç®ãå®è¡ãã2çªç®ã®ã±ãŒã¹ã§ã¯å²ãåœãŠã®ã¿ãå®è¡ãããããããŒã®ãŒããããã®å埩ã¯åäžãããã®å ŽåãããæéãããããŸããã squareAndMultiplyé¢æ°ã®å®è¡æéã枬å®ããããšã«ãããããŒå
šäœãèšç®ããæ¹æ³ã瀺ããŸãã æ£ç¢ºãªåŒã¯ãããŸãã;äžè¬çãªæå³ã説æããŸãã
Kosherãææ¡ããæ¹æ³ã¯ãæåã«ããã0ã次ã«ããã1ãªã©ã®ããŒããããç¹°ãè¿ãèšç®ããããšã§æ§æããããã®ãããªåå埩ã«ã¯æ¬¡ã®ç¹æ§ããããŸãã
- äžéšã®ãããã¯ãã§ã«èšç®ãããŠããŸãïŒãããæåã®å埩ã®å Žåã¯äœããããŸããïŒ
- æ€æ»äžã®çŸåšã®ããããå«ãæ®ãã®ãããã¯äžæã§ããããããã®å€ã¯åçã«ååžããŠããŸãïŒããã§ãªãå Žåã¯ãããŒã®çæã«äœ¿çšãããä¹±æ°ã»ã³ãµãŒãã³ããŒããå¿
èŠããããŸãïŒ
åå埩ã§ãããã«ãŒã¯å€æ°ã®æž¬å®ãè¡ããŸããããããã®ç®çã¯ã3ã€ã®å€ãååŸããããšã§ãã
- åèšé¢æ°å®è¡æé
- ã·ã¹ãã ãæ¢ç¥ã®ããŒããããåŠçããã®ã«ãããæé
- ã¢ã«ãŽãªãºã ã®æäœããšã®æéïŒsïŒkïŒ* yïŒmod n
ãã©ã¡ãŒã¿ãŒ1ã¯æž¬å®ããã®ãæãç°¡åã§ãå
¥åã«æå·æãå
¥åããŸãã2ãš3ã¯ããå°é£ã§ãããããã€ã¹ã®ç©ççãªå®è£
ã®æ©èœãç¥ã£ãŠããå ŽåããŸãã¯å°ããåæãããå Žåã¯çŸå®ã§ãã ãã®å Žåããã¹ããããã«ç¶ããã¹ãŠã®äžæãªãããã®åŠçã«ãããæéã¯æ¬¡ã®ããã«ãªããŸãã
- åŠç¿æžã¿ããã= 0ã®å Žåã T = T1-T2
- åŠç¿æžã¿ããã= 1ã®å Žåã T = T1-T2-T3
調æ»äžã®ãã®ãããã«å¯ŸããŠå€ãã®æž¬å®ãè¡ããTå€ã®ãããŒããå
šäœãèç©ããåŸãæ¡ä»¶ä»ã確çåŒã䜿çšããŠããã®ãããããããã1ããã³0ã§ãã確çãèšç®ã§ããŸãã
ã¿ã€ã ã¢ã¿ãã¯ã®æãåçŽãªã¹ãä¹ã¢ã«ãŽãªãºã ãèŠãŠã¿ãŸããã çŸä»£ã®æå·ã·ã¹ãã ã§ã¯ããã£ãã«äœ¿çšãããã代ããã«ãããæé©ãªæ¹æ³ã䜿çšãããŸãã ããã¯éåžžãäžåœã®å°äœå®çãMontgomeryã¢ã«ãŽãªãºã ããŸãã¯Karatsubaã¢ã«ãŽãªãºã ã«åºã¥ãã¢ã«ãŽãªãºã ã§ãã ãããããããã®ãé«åºŠãªãã¢ã«ãŽãªãºã ã§ãããçŽç²ãªåœ¢ã§é©çšãããå Žåãäžæçãªæ»æãåãããããªããŸããããã¯ãOpenSSLãµãŒããŒã«å¯Ÿããæ»æã®æåã«ãã£ãŠèšŒæãããŸããã
OpenSSLãµãŒããŒãžã®æ»æ
åœåãäžæçãªæ»æã®éåœã¯ããŒããŠã§ã¢ããã€ã¹ã®ã¿ã§ãããšèããããŠããŸãããããšãã°ãããã«ãŒã¯ã¹ããŒãã«ãŒããåãåããã»ã³ãµãŒãšããã€ã¹ã§ããããã³ã°ããããã®åŸãç§å¯ããŒãæœåºããŸãã ããããã¹ã¿ã³ãã©ãŒã倧åŠã®David BrumleyãšDan Boniã瀺ããããã«ããœãããŠã§ã¢ã¯äžæçãªæ»æãç¹ã«OpenSSLã¹ããã¯ã©ã€ãã©ãªããŒãžã§ã³0.9.7ã䜿çšããŠSSLæ¥ç¶ãåãå
¥ããWebãµãŒããŒã®åœ±é¿ãåããŸãã ãããŠãããã¯å
žåçãªãµãŒããŒãå€ãã®äžŠåããã»ã¹ãå®è¡ãããµãŒããŒãžã®ã¢ã¯ã»ã¹ã®ãã£ãã«ãè²¢ç®ãããšããäºå®ã«ããããããã§ãã ãã ãã次ã®3ã€ã®æåããæ»æãªãã·ã§ã³ãäœæãããŸããã
- ããŒã«ã«ãããã¯ãŒã¯çµç±ã§ã¢ã¯ã»ã¹å¯èœãªApache WebãµãŒããŒã«å¯Ÿããã¯ã©ã€ã¢ã³ãæ»æã 確信ãé«ããããã«ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãã£ãã«ã«ã¯è€æ°ã®ã«ãŒã¿ãŒãšã¹ã€ãããå«ãŸããŠããŸãã
- äž¡æ¹ãåããã·ã³å
ã§å®è¡ãããŠããéã«ãããããã»ã¹ããå¥ã®ããã»ã¹ãžã®æ»æ
- éé¢ãããä»®æ³ãã·ã³ã«ç§å¯ããŒãä¿åãããŠããåæ£ããŒã¹ãã¬ãŒãžã·ã¹ãã ã«å¯Ÿããæ»æã ããã§ã¯ãWebãµãŒããŒèªäœã¯ããŒã¿ã埩å·åããŸããããããŒãã·ã³ã«èŠæ±ãè¡ããŸã
SSL / TLSã¯ãRFC 6101ïŒSSL v3.0ïŒã2246ïŒTLS v1.0ïŒã4346ïŒTLS v1.1ïŒã5246ïŒTLS v1.2ïŒããã³6176ïŒTLS v2.0ïŒã§è©³çŽ°ã«èª¬æãããŠãããããæ»æã®æšçãšãªãéšåã«çŠç¹ãåœãŠãŸãã ãã®ãããäžè¬çãªãã³ãã·ã§ã€ã¯ã«ã¯æ¬¡ã®æé ãå«ãŸããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ã28ãã€ãã®ä¹±æ°ãšãµããŒããããŠããæå·ã®ãªã¹ããéä¿¡ããClientHelloã¡ãã»ãŒãžãéä¿¡ããŸã
- ãµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã«é¡äŒŒããServerHelloã¡ãã»ãŒãžãéä¿¡ããŸã
- ãµãŒããŒã¯èšŒææžãšãšãã«èšŒææžã¡ãã»ãŒãžãéä¿¡ããŸã
- ãµãŒããŒèšŒææžãåãåã£ãã¯ã©ã€ã¢ã³ãã¯ããµãŒããŒèšŒææžããµãŒããŒèšŒææžããæœåºãã48ãã€ãã®ä¹±æ°ã§æå·åãã ClientKeyExchangeã¡ãã»ãŒãžã§ãµãŒããŒã«æž¡ããŸãã
- ãµãŒããŒã¯ç§å¯éµã§ã¯ã©ã€ã¢ã³ãã®ä¹±æ°ã解èªãããã®åŸãçžäºãã¹ã¿ãŒéµãèšç®ãããŸã
ç¯4ã§ã¯ããããã¯ã¯
PKCSïŒ1æšæºïŒã¿ã€ã2ïŒã«åŸã£ãŠãã©ãŒããããããŠããããšã«æ³šæããŠãã ããã
[0x00] [0x02] [ããã£ã³ã°æåå] [ããŒã¿]
ããã®åŸæå·åãããŸãã
æ»æã®ç¹°ãè¿ãã¯ãæå·åããããããã¯ãšããŠãµãŒããŒã«ãã¹ãããŒã¿ãéä¿¡ããããšã§ãã 埩å·ååŸããµãŒããŒã¯ããŒã¿ãPKCSïŒ1ã«åŸã£ãŠãã©ãŒããããããŠããªãããšãèªç¶ã«çºèŠããŸãã ãã®æ®µéã§ãã³ãã·ã§ã€ã¯ãäžæçã«äžæããããšãè匱æ§ïŒæ»æã¯Bell Laboratoriesã®Danel Bleichenbacherã«ãã£ãŠç€ºãããŸããïŒãéããããããææ°ã®SSL / TLSå®è£
ã¯ãšã©ãŒããªãããšãããµããããŠãã³ãã·ã§ã€ã¯ãç¶è¡ããŸãã ãã®çµæãã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯ã次ã®ã¡ãã»ãŒãžã§ãããã¢ããããç°ãªããã¹ã¿ãŒããŒãèšç®ããŸã-ãšã«ãããã¯ã©ã€ã¢ã³ãã¯ã¢ã©ãŒãã¡ãã»ãŒãžãåä¿¡ããæ¥ç¶ãäžæãããŸãããããã¯ããŸãèå³ããããŸããã äž»ãªããšã¯ã
ClientKeyExchangeãéä¿¡ããŠãããµãŒããŒããå¿çãåä¿¡ãããŸã§ã®æéã枬å®ãããããšã§ãã ããã§ã
N = p·q
ã¯RSAã¢ãžã¥ãŒã«ã§ãããç§å¯ããã³éææ°ã¯é¢ä¿
d·e = 1 mod (p-1)(q-1)
ã«ãã£ãŠé¢é£ä»ããããŠããããšãæãåºããŠãã ããã ãã®ãããäžé£ã®æž¬å®ã®åŸããããããšã«qã埩å
ããããšãã§ãããããç§å¯éµãèŠã€ããããšãã§ããŸãã ãã®ãããªå¥è·¡ã¯ã©ãããæ¥ãã®ã§ããïŒ æ£ç¢ºãªèšŒæãåŸãã«ã¯ããã®èšäºã®ç¯å²å€ã®æ°åŒãå€æ°æäŸããå¿
èŠããããŸããã代ããã«ãåæã®åºç€ãšãªãäžè¬ååã説æããŸãã ãããã®2ã€ããããŸãã
ãŸããé²åºã¢ãžã¥ãã®OpenSSLã¯ãåè¿°ã®ãã€ããªã¢ã«ãŽãªãºã ã䜿çšããŸãããå€ãã®æé©åãè¡ãããŠããŸãã ãŸãã
äžåœã®å°äœå®çãé©çšãããšãåé¡
m = c^d mod N
2ã€ã®å¯åé¡
m1 = c1^d1 mod p
ãš
m2 = c2^d2 mod q
ã«åå²ããããã®åŸã2ã€ã®æ°å€
m1
ãš
m2
ãããç¹å¥ãªåŒ
m
次ã«ãã¢ã«ãŽãªãºã ã§äœ¿çšãããã¢ãžã¥ãä¹ç®ã¯
ãã¢ã³ãŽã¡ãªãŒæ³ã«ãã£ãŠæé©åã
ããŸãã ãã®æ¹æ³ã®æ¬è³ªã¯ãå
ã®ã¢ãžã¥ãŒã«ã®èšç®ããé¢ããŠã2次ã«çããã¢ãžã¥ãŒã«ãèšç®ããããšã§ããããã¯ãããã»ããµã«ãšã£ãŠã¯ããã«é«éã§ãã æåã«ãäž¡æ¹ã®å åãç¹å¥ãªã¢ã³ãŽã¡ãªãŒåœ¢åŒã«å€æããã次ã«çŽ æ©ãä¹ç®ãè¡ããããã®åŸãçµæãéåžžã®åœ¢åŒã«å€æãããŸãã ãã¹ãŠããŸããããŸããã2000幎ã«ãã€ãã®Werner Schindlerææ
g
ã
g
q
åæ°ã«è¿ãã»ã©ãã¢ã«ãŽãªãºã å
šäœã«æéããããããšãçºèŠããŸããã
æåã®åçã¯
次ã®ãšããã§ããã¢ã³ãŽã¡ãªãŒæ³ã®æéã枬å®ããããšã«ããã
g
q
ã
2q
ã
3q
ãªã©ã«ã©ã®ããã«è¿ãããçµè«ä»ããããšãã§ããŸãã
ã©ãã æãç°¡åãªä¹ç®ïŒã¢ãžã¥ãã䜿çšããªãïŒã¯ã2ã€ã®æ¹æ³ã§OpenSSLã«å®è£
ãããŸãïŒåŸæ¥ã®æ¹æ³ãš
Karatsubaã¡ãœãã ã éåžžã®æ¹æ³ã®è€éãã¯
O(n·m)
ã§æšå®ãããŸããããã§ãmãšnã¯åæ°ã®ãµã€ãºã§ãã ãœããšãã®ç§åŠè
A. A. A.ã«ã©ããã¯ãæåã«è€é床
O(n^1,58)
ã®é«éä¹ç®ã®æ¹æ³ãçºæããŸããã ããã¯ãä¹æ°ãåããµã€ãºã®ãšãã«OpenSSLã䜿çšãããã®ã§ãã
2çªç®ã®ååã¯ãããããåŸãããŸããgãqã®åæ°ããå°ãå°ããå Žåãé«éãªæ¹æ³ã䜿çšãããå°ã倧ããå Žåãããå€ãã®æéãããããŸãã
ãã®OpenSSLã«å¯Ÿããæ»æã®äœæè
ã¯ãçŽ100äžã®ãªã¯ãšã¹ãã§1024ãããããŒãèŠã€ããã®ã«ååã§ãããçŽ2æéããã£ãããšãå®èšŒããããšãã§ããŸããã ããããæ¥ãã§ãããã¯ã«ãªããªãã§ãã ããã ããŒãžã§ã³0.9.7b以éãOpenSSLã«ã¯äžæçãªæ»æã«å¯Ÿããä¿è·ãå«ãŸããŠããŸãã é²åŸ¡ã¯ã埩å·åæäœèªäœã®å
x = r^e · · mod N
ã®ç¡é§ãªèšç®ã«ãããŸããããã§ãrã¯ä¹±æ°ãeã¯ç§å¯ã®ææ°ãcã¯æå·åãããããã¹ãã§ãã ãã®æäœã«ãããã©ã³ãã ãªé
延ãçºçããããŒæ
å ±ãå¯äœçšã«ãæŒæŽ©ãããããšã¯ãããŸããã ä¿è·ã®ã³ã¹ãã¯ã2ã10ïŒ
ã®ããã©ãŒãã³ã¹æ倱ã§ãã
ãã¯ãŒæ»æ
å¯äœçšã«å¯Ÿããå¥ã®ã¯ã©ã¹ã®æ»æããšãã«ã®ãŒæ¶è²»ã«å¯Ÿããæ»æã«ç§»ããŸãããã ãããã®æ»æã¯ãå®éã«ã¯ããŒããŠã§ã¢æå·åã¢ãžã¥ãŒã«ã«ã®ã¿é©çšã§ããã¢ãžã¥ãŒã«ãå®è¡ããæ©èœãããéé¢ããçããã»ã©ãæ»æã¯æåããŸãã æããã«ãããã»ããµã«ãã£ãŠå®è¡ãããç°ãªãåœä»€ã¯ç°ãªããšãã«ã®ãŒéãæ¶è²»ããŸãããããã¯æçµçã«ã¹ã€ããã³ã°ãã©ã³ãžã¹ã¿ã®æ°ã«ãã£ãŠæ±ºãŸããŸãã ïŒç©çåŠã®éçšãããMOSãã©ã³ãžã¹ã¿ã¯ã¹ã€ããã³ã°æã«é»æµãæ¶è²»ããéæ¢æã®é»æµã¯ç¡èŠã§ããããšãç¥ã£ãŠããŸããããã¯TTLãã©ã³ãžã¹ã¿ã«ã€ããŠã¯èšããŸããïŒã ãããã£ãŠãæ¶è²»ãã£ãŒãã§æ瀺ãŸãã¯æ瀺ã®ã°ã«ãŒããç¹å®ã§ããŸãã ããããåãã³ãŒã·ã£ã¯ãã¹ããŒãã«ãŒãã®æ¶è²»ã°ã©ããåæããããšã§ãç§å¯ããŒãæœåºã§ããããšã瀺ããŸããã
ããã¯ã1ãããã¯ã®DESæå·åã®æ¶è²»ã°ã©ãã§ããåæé åã16ã®æå·åã©ãŠã³ããããã³æçµé åã衚瀺ãããŸãã

ãããŠãããã第2ã©ãŠã³ããšç¬¬3ã©ãŠã³ãã®è©³çŽ°ãªã¹ã±ãžã¥ãŒã«ã§ãã

æ¶è²»æ»æã¯ãäžè¬ã«
åçŽããã³
å·®å ïŒSPAãåäžé»å解æãDPAãå·®åé»å解æãšç¥èšïŒã«åé¡ãããŸãã äžèšã®ãããªãã£ãŒãã¯SPAæ»æã§åæãããŸããäž»ãªç®æšã¯ããã£ãŒãã®äžéšãå®è¡ãããåœä»€ãŸãã¯æ©èœã«ãããããäœããã®æ¹æ³ã§ããã€ã¹ã¬ãžã¹ã¿ã«è¡šç€ºãããå€ã決å®ããããšã§ãã SPAæ»æã¯ãããã€ã¹ã®å
éšå®è£
ã«é¢ãã詳现æ
å ±ãããããšãåæãšããŠããŸãã äžæ¹ãDPAæ»æã¯ãè€æ°ã®æž¬å®çµæã®çµ±èšåæã«åºã¥ããŠããŸãã ããšãã°ãKosherã«ãã£ãŠèšè¿°ãããDESã¹ããŒãã«ãŒãã«å¯Ÿããå€å
žçãªæ»æã¯æ¬¡ã®ããã«ãªããŸãã
- æåŸã®æ°ã©ãŠã³ãã®ãšãã«ã®ãŒæ¶è²»ã¯1000 DESæå·åã§èšé²ãããåã©ãŠã³ãã§ã¯æå·åã®çµæãèšé²ãããŸã
- ãã®ãããªåæå·åã®ã¹ã±ãžã¥ãŒã«ã¯100,000ã®çããã»ã°ã¡ã³ãã«åå²ãããåã»ã°ã¡ã³ãã«ã¯é»åæ¶è²»ãå²ãåœãŠãããŸã
- çµæã®ãããªãã¯ã¹1000 x 100000ã¯çµ±èšçæ¹æ³ã§åæããã枬å®æéå
šäœãéããŠå€åããªãã£ãããŒãèŠã€ããŸãã ïŒæ£ç¢ºãªã¢ã«ãŽãªãºã ã«ã€ããŠã¯ãèªè
ã¯å
ã®ãœãŒã¹ãåç
§ããããšããå§ãããŸããhabraã®èšäºã®åœ¢åŒã¯ãè€æ°éã®æ°åŒãã¬ã€ã¢ãŠãããã®ã«ããŸã䟿å©ã§ã¯ãªãããã§ãïŒ
察æ
å¯äœçšã«å¯Ÿããæ»æã®ããã€ãã®ãªãã·ã§ã³ãæ€èšããŸããã äžçäžã®äººã
ã¯ãæå·ã·ã¹ãã ãèšèšãããšãããã®ãããªæ»æã¯éçºæ®µéã§ãèæ
®ã«å
¥ããªããã°ãªããªãããšã«æ°ä»ããŸããã ããã§ã圌ãã¯ããã€ãã®æ¹åã«è¡åããŸãïŒ
- èªã¿åããµã€ãæ
å ±ã®åŠšå®³ã ããã€ã¹ãžã®ç©ççãªã¢ã¯ã»ã¹ã劚ããªãéããéåžžã«éãããæ段ã ä»ã®å Žåã§ã¯ããããã³ã°ã¯éåžžãããŒã¿åéã®ããã®ããé«äŸ¡ãªæ©åšã«åž°çãããã®äŸ¡å€ããããã³ã°èªäœã®äŸ¡å€ãè¶
ããå Žåãç®æšã¯éæãããŸã
- æŒæŽ©ä¿¡å·ãžã®ã©ã³ãã å¹²æžã®å°å
¥ã ããã¯ãã§ã«ããå¹æçãªæ段ã§ãããèœãšãç©ŽããããŸãã ãŸããã³ã³ãã¥ãŒã¿ãŒã·ã¹ãã ã§ã©ã³ãã ããŒã¿ãååŸããããšèªäœãåé¡ã§ãããããã©ãã§é©åãªéã§ååŸãããã§ãã å¹²æžããå®å
šã§ã¯ãªããã©ã³ãã ãªå Žåããã¿ãŒã³ãèšç®ã§ããæçšãªä¿¡å·ãããã€ãºãããã«åé¢ã§ããŸãã 第äºã«ããè¯ããã©ã³ãã ãã€ãºã§ãã£ãŠããããã«ãŒã¯åæžã¢ã«ãŽãªãºã ãèŠã€ããããšãã§ããåéããããŒã¿ãå€ãã»ã©ãæåã®ç¢ºçãé«ããªããŸãã
- ã·ã¹ãã ã決å®è«çã«ããè©Šã¿ã ããšãã°ããã¹ãŠã®æäœã«åãæéããããããã«ãããšãæéã«å¯Ÿããæ»æã¯åœ¹ã«ç«ããªããªããŸãã ããã»ããµãšã³ã³ãã€ã©ã®æé©åãã¢ãªãŒãã«å
¥ããã¢ã¯ã»ã¹æéãç°ãªãè€æ°ã¬ãã«ã®ãã£ãã·ã¥ã¡ã¢ãªãååšãããããããã容æã§ã¯ãããŸããããããã¯ãã¹ãŠã¯ã©ãã«ãŒã®æã«æž¡ããŸãã
- æåã¯ãµã€ããã£ãã«ãä»ãããªãŒã¯ã«å¯ŸããŠèæ§ã®ããæå·åã¢ã«ãŽãªãºã ãšãããã³ã«ãèšèšããããšããæãä¿¡é Œã§ãã察çã§ãã ããšãã°ããã®ãããªã¢ã«ãŽãªãºã ãé©çšããŠç¹å®ã®åŒãèšç®ããŸãããã®å®è¡æéã¯ãå
¥åããŒã¿ã®ããã深床ããŒããŸãã¯1ã®æ°ããŸãã¯åŒæ°ã®ä»ã®ããããã£ã«äŸåããŸããã
å¯äœçšæ»æã®èšèšã¯ãå€ãã®ç§åŠè«æã®äž»é¡ã§ããã ãããŠãå€ãæå·ã¢ã«ãŽãªãºã ã®ã¿ããããã®æ»æã®å¯Ÿè±¡ã§ãããšèããŠã¯ãããŸããïŒRSAãDESãDiffie-Hellmanã AESããã³æ¥åæ²ç·ã®ã¢ã«ãŽãªãºã ããããªãŒã¯ãã®èšŒæ ããã§ã«ãããŸãã ãã®ãã¹ãŠã1ã€ã®èšäºã§èª¬æããã®ã¯éçŸå®çã§ãã ç§ã®ä»äºã¯ãèªè
ããã®é
åçãªãããã¯ãæãäžããããšã ãã§ãã
ãã£ãšæ·±ãããã人ã®ããã«