å
¬ééµæå·ã«ç²ŸéããŠãã人ã¯ãããããé åèª
ECC ã
ECDHãããã³
ECDSAã«ç²ŸéããŠããã§ãããã æåã¯æ¥åæ²ç·æå·ïŒæ¥åæ²ç·ã®æå·ïŒã®ç¥èªã§ãæ®ãã¯ããã«åºã¥ãã¢ã«ãŽãªãºã ã®ååã§ãã
ä»æ¥ãæ¥åæ²ç·æå·ã·ã¹ãã ã¯ã
TLS ã
PGP ãããã³
SSHã§äœ¿çšãããŠã
ãŸã ããããã¯ãçŸä»£ã®Webããã³ITã®äžçãåºç€ãšããæãéèŠãªæè¡ã§ãã
ãããã³ã€ã³ããã®ä»ã®æå·é貚ã«ã€ããŠã¯è©±ããŠããªãã
ECCãæ®åããåã¯ãã»ãšãã©ãã¹ãŠã®å
¬éããŒã¢ã«ãŽãªãºã ã¯ãã¢ãžã¥ã©ãŒæŒç®ã«åºã¥ã代æ¿æå·ã·ã¹ãã ã§ããRSAãDSAãããã³DHã«åºã¥ããŠããŸããã RSAãšäŒç€Ÿã¯ä»ã§ã人æ°ããããå€ãã®å ŽåECCãšçµã¿åãããŠäœ¿çšââãããŸãã ããããRSAãé¡äŒŒã®ã¢ã«ãŽãªãºã ã®åºç€ãšãªãéæ³ã¯å€ãã®äººã«èª¬æããããç解ããããã
倱瀌ãªå®è£
ã¯éåžžã«ç°¡åã«
æžãããŠãããšããäºå®ã«ãããããããECCã®åºæ¬ã¯ãŸã ã»ãšãã©ã®äººã«ãšã£ãŠè¬ã§ãã
ãã®äžé£ã®èšäºã§ã¯ãæ¥åæ²ç·ã®æå·åã®äžçã®åºç€ã玹ä»ããŸãã ç§ã®ç®æšã¯ãECCã®å®å
šã§è©³çŽ°ãªã¬ã€ããäœæããããšã§ã¯ãªãïŒã€ã³ã¿ãŒãããã¯ãã®ãããã¯ã«é¢ããæ
å ±ã§ãã£ã±ãã§ãïŒã
ECCã®ç°¡åãªæŠèŠãšããããå®å
šã§ãããšèããããçç±ã®èª¬æã§ã ã é·ãæ°åŠç蚌æãéå±ãªå®è£
ã®è©³çŽ°ã«æéãè²»ãããŸããã ãŸã
ãèŠèŠçãªã€ã³ã¿ã©ã¯ãã£ãããŒã«ãšã¹ã¯ãªããã䜿çšãã
䟿å©ãªäŸã瀺ããŸãã
ç¹ã«ã次ã®ãããã¯ãæ€èšããŸãã
- å®æ°ãšçŸ€åäžã®æ¥åæ²ç·
- æéäœäžã®æ¥åæ²ç·ãšé¢æ£å¯Ÿæ°åé¡
- ããŒãã¢ã®çæãš2ã€ã®ECCã¢ã«ãŽãªãºã ïŒECDHããã³ECDSA
- ECCãããã³ã°ã¢ã«ãŽãªãºã ãšRSAãšã®æ¯èŒ
ãã®èšäºãç解ããã«ã¯ãéåè«ã幟äœåŠãã¢ãžã¥ã©ãŒç®è¡ã®åºç€ãç解ãã察称ããã³é察称æå·åã®åçãç解ããå¿
èŠããããŸãã æåŸã«ããåçŽãªãã¿ã¹ã¯ãšãè€éãªãã¿ã¹ã¯ãäœã§ããããããã³æå·åã«ããããããã®åœ¹å²ãæ確ã«ç解ããå¿
èŠããããŸãã
æºåã¯ããïŒ ããå§ããŸãããïŒ
ããŒã1ïŒå®æ°ãšçŸ€åäžã®æ¥åæ²ç·
æ¥åæ²ç·
ãŸããæ¥åæ²ç·ãšã¯äœã§ããïŒ Wolfram MathWorldã«ã¯åªããå
æ¬çãª
å®çŸ©ããããŸãã ããããæ¥åæ²ç·ã¯
ãæ¹çšåŒã§èšè¿°ãããç¹ã®ã»ããã§ããã ãã§ååã§ãã
y 2 = x 3 + a x + b
ã©ãã§
4 a 3 + 27 b 2 n e 0 ãïŒããã¯
ç¹å¥ãªæ²ç·ãé€å€ããããã«å¿
èŠã§ãïŒã äžèšã®æ¹çšåŒã¯ãæ¥åæ²ç·ã®
éåžžã®ã¯ã€ãšã«ã·ã¥ãã©ã¹å®åŒåãšåŒã°ããŸãã
æ¥åæ²ç·ã®ç°ãªã圢ç¶ïŒ b = 1 ã a 2ãã-3ãŸã§å€åããŸããç¹åŸŽã®çš®é¡ïŒå·ŠåŽ-æ»ãç¹ã®ããæ²ç·ïŒå°ç¹ïŒïŒ y 2 = x 3 ïŒ å³åŽã«ã¯èªå·±äº€å·®æ²ç·ïŒ Y 2 = X 3 - 3 X + 2 ïŒ ãããã®äŸã¯äž¡æ¹ãšãå®å
šãªæ¥åæ²ç·ã§ã¯ãããŸãããå€ã«å¿ããŠ
a ãããŠ
b æ¥åæ²ç·ã¯ãå¹³é¢äžã§ç°ãªã圢ç¶ãåãããšãã§ããŸãã ç°¡åã«ç¢ºèªããã³æ€èšŒã§ããããã«ãæ¥åæ²ç·ã¯è»žã«å¯ŸããŠå¯Ÿç§°ã§ãã
X ã
ç®çã®ããã«ã
ç¡éé ç¹ ïŒçæ³ç¹ãšãåŒã°ããïŒ
ãæ²ç·ã®äžéšã§ããå¿
èŠããããŸãã ããããã¯ãã·ã³ãã«0ïŒãŒãïŒã§ç¡éé ã®ãã€ã³ãã瀺ããŸãã
ç¡é倧ã®ç¹ãæ瀺çã«èæ
®ããå¿
èŠãããå Žåãæ¥åæ²ç·ã®å®çŸ©ã¯æ¬¡ã®ããã«æ確ã«ã§ããŸãã
\å·Š\ {ïŒxãyïŒ\ in \ mathbb {R} ^ 2 \ | \ y ^ 2 = x ^ 3 + ax + bã\ 4 a ^ 3 + 27 b ^ 2 \ ne 0 \å³\ } \ \ã«ãã\ \å·Š\ {0 \å³\}
\å·Š\ {ïŒxãyïŒ\ in \ mathbb {R} ^ 2 \ | \ y ^ 2 = x ^ 3 + ax + bã\ 4 a ^ 3 + 27 b ^ 2 \ ne 0 \å³\ } \ \ã«ãã\ \å·Š\ {0 \å³\}
ã°ã«ãŒã
æ°åŠã§ã¯ãã°ã«ãŒãã¯ãå ç®ããšåŒã°ãã+ã§è¡šããããã€ããªæŒç®ãå®çŸ©ããã»ããã§ãã èšå®ããã«ã¯
mathbbG ã°ã«ãŒãã§ãã£ãå Žåã次ã®4ã€ã®ããããã£ã«å¯Ÿå¿ããããã«è¿œå ãå®çŸ©ããå¿
èŠããããŸãã
- åè·¯ïŒ if a ãã㊠b å«ãŸããŠããŸã mathbbG ãããã a+b ã«å«ãŸãã mathbbG ;
- çµåæ§ïŒ ïŒa+bïŒ+c=a+ïŒb+cïŒ ;
- ãŠãããèŠçŽ 0ãããã a+0=0+a=a ;
- åèŠçŽ ã«ã¯éå€ããããŸã ãã€ãŸãã a ãã®ãããªãã®ããããŸã b ãã a+b=0 ã
5çªç®ã®èŠä»¶ãè¿œå ããå ŽåïŒ
- å¯ææ§ïŒ a+b=b+a ã
ãã®ã°ã«ãŒãã¯
ã¢ãŒãã«çŸ€ãšåŒã°ããŸãã
éåžžã®è¿œå ã§ã¯ãæŽæ°ã®ã»ãã
mathbbZ ã°ã«ãŒãã§ãïŒããã«ãããã¯ã¢ãŒãã«ã®ã°ã«ãŒãã§ãïŒã å€ãã®èªç¶æ°
mathbbN ãã ãã4çªç®ã®ããããã£ãæºãããªããããã°ã«ãŒãã§ã¯ãããŸããã
ã°ã«ãŒãã¯ã4ã€ã®ããããã£ãã¹ãŠã«æºæ ããŠããããšã蚌æããããšããè² è·ã«å¯ŸããŠãä»ã®ããããã£ãèªåçã«åãåããšããç¹ã§äŸ¿å©ã§ãã ããšãã°ã
åäžã®èŠçŽ ã¯äžæã§ãã ããã«ã
çžäºã®å€ã¯äžæã§ã ãã€ãŸããããããã«å¯ŸããŠ
a ãã äžã€
b ãã®ãããª
a+b=0 ïŒãããŠç§ãã¡ã¯æžãããšãã§ããŸã
b ã©ããã£ãŠ
âa ïŒ çŽæ¥çãŸãã¯éæ¥çã«ããããããã³ã°ã«ãŒãã®ä»ã®ããããã£ã¯ãå°æ¥çã«éåžžã«åœ¹ç«ã¡ãŸãã
æ¥åæ²ç·ã®çŸ€å
æ¥åæ²ç·ã®ã°ã«ãŒããå®çŸ©ã§ããŸãã ããªãã¡ïŒ
- ã°ã«ãŒãã®èŠçŽ ã¯æ¥åæ²ç·ã®ç¹ã§ãã
- åäžã®èŠçŽ ã¯ç¡éé ç¹0ã§ãã
- ç¹ã®éæ° P 軞ã«é¢ããŠå¯Ÿç§°ãªç¹ã§ã x ;
- å ç®ã¯ã次ã®ã«ãŒã«ã«ãã£ãŠå®çŸ©ãããŸãã3ã€ã®éãŒããã€ã³ãã®åèš P ã Q ãã㊠R äžçŽç·äžã«æšªããããšçãã P+Q+R=0 ã
1ã€ã®çŽç·äžã«ãã3ã€ã®ãã€ã³ãã®åèšã¯0ã§ããæåŸã®ã«ãŒã«ã§ã¯ã1ã€ã®çŽç·äžã«3ã€ã®ãã€ã³ãã®ã¿ãå¿
èŠã§ããããããã®3ã€ã®ãã€ã³ãã®é åºã¯éèŠã§ã¯ãªãããšãèæ
®ãã䟡å€ããããŸãã ããã¯ã3ã€ã®ãã€ã³ãã
P ã
Q ãããŠ
R äžçŽç·äžã«æšªããã
P+ïŒQ+RïŒ=Q+ïŒP+RïŒ=R+ïŒP+QïŒ= cdots=0 ã ãããã£ãŠã
æŒç®å+ãçµåæ§ãšå¯ææ§ã®ç¹æ§ãæã£ãŠããããšãçŽæçã«èšŒæã
ãŸããïŒç§ãã¡ã¯ã¢ãŒãã«çŸ€ã«å±ããŠããŸãã
ãããŸã§ã®ãšããããã¹ãŠãé 調ã«é²ãã§ããŸãã ãããã2ã€ã®ä»»æã®ãã€ã³ãã®åèšãã©ã®ããã«èšç®ããŸããïŒ
幟äœåŠçãªå ç®
ç§ãã¡ã¯ã¢ãŒãã«çŸ€ã«å±ããŠãããšããäºå®ã®ããã«ãç§ãã¡ã¯æžãããšãã§ããŸã
P+Q+R=0 ã©ããã£ãŠ
P+Q=âR ã ãã®åœ¢åŒã®ãã®æ¹çšåŒã«ããã2ç¹ã®åèšãèšç®ãã幟äœåŠçãªæ¹æ³ãå°ãåºãããšãã§ããŸãã
P ãããŠ
Q ïŒ
ãä»ããŠç·ãåŒãå Žå P ãã㊠Q ããã®ç·ã¯æ²ç·ã®3çªç®ã®ç¹ãšäº€å·®ããŸã R ïŒããã¯ã
P ã
Q ãããŠ
R åãè¡ã«ãããŸãïŒ
ã ãã®ç¹ã®éæ°ããšããš âR ç§ãã¡ã¯éãèŠã€ããŸã P+Q ã
çŽç·ãæã P ãã㊠Q ã ç·ã¯3çªç®ã®ç¹ã暪åã R ã 圌女ã®ãã€ã³ãã«å¯Ÿç§° âR çµæã§ã P+Q ã幟äœåŠçææ³ã¯æ©èœããŸãããæ¹åãå¿
èŠã§ãã ç¹ã«ãããã€ãã®è³ªåã«çããå¿
èŠããããŸãã
- ããã P=0 ãŸã㯠Q=0 ïŒ ãã¡ãããçŽç·ãæãããšã¯ã§ããŸããïŒ0ã¯å¹³é¢äžã«ãããŸãã xy ïŒ ãããã0ãåäžã®èŠçŽ ãšããŠå®çŸ©ããããã P+0=P ãã㊠0+Q=Q ã®ããã« P ããã³ Q ã
- ããã P=âQ ïŒ ãã®å Žåã2ã€ã®ãã€ã³ããéãç·ã¯åçŽã§ã3çªç®ã®ãã€ã³ããšäº€å·®ããŸããã ãããããã P ã¯ã®éã§ã Q ãããã P+Q=P+ïŒâPïŒ=0 çžäºã®å®çŸ©ããã
- ããã P=Q ïŒ ãã®å Žåãç¡éã®æ°ã®ç·ãç¹ãééããŸãã ããã§ã¯ãäºæ
ã¯ããå°ãè€éã«ãªããŸãã ãããããã®ãã€ã³ããæ³åããŠãã ãã Qâ² neP ã 匷å¶ãããšã©ããªããŸãã Qâ² åªåãã P 圌女ã«è¿ã¥ããŠïŒ
2ã€ã®ç¹ãäºãã«è¿ã¥ããšãããããéãç·ã¯æ²ç·ã®æ¥ç·ã«ãªããŸãã
ä»¥æ¥ Qâ² ã«ã³ããã P ãŸã£ããã« P ãã㊠Qâ² æ²ç·ã®æ¥ç·ã«ãªããŸãã ããã«ç
§ãããŠãç§ãã¡ã¯ãããèšãããšãã§ããŸã P+P=âR ã©ã㧠R æ²ç·ãšæ²ç·ã®æ¥ç·ãšã®äº€å·®ç¹ã¯ P ã - ããã P neQ ãããã第äžã®ãã€ã³ã R ããïŒ ãã®å Žåãç¶æ³ã¯åã®ç¶æ³ãšäŒŒãŠããŸãã å®éããã®ç¶æ³ã§ã¯ãééããã©ã€ã³ã¯ P ãã㊠Q æ²ç·ã®æ¥ç·ã§ãã
ç·ã2ç¹ã®ã¿ãšäº€å·®ããå Žåãããã¯æ²ç·ã«æ¥ããŠããããšãæå³ããŸãã å ç®ã®çµæã2ã€ã®ãã€ã³ãã®ããããã«å¯Ÿç§°ã«ãªãæ¹æ³ã¯ç°¡åã«ããããŸãã
ãšä»®å®ãã P ã¿ãããã€ã³ãã§ãã åã®ã±ãŒã¹ã§ã¯ãèšé²ããŸãã P+P=âQ ã ãã®æ¹çšåŒã¯ã次ã®ããã«ãªããŸãã P+Q=âP ã äžæ¹ãé£çµ¡å
ã Q æ¹çšåŒã¯æ£ããã§ããã P+Q=âQ ã
ããã§å¹ŸäœåŠçææ³ãå®æãããã¹ãŠã®ã±ãŒã¹ãèæ
®ãããŸãã éçãšå®èŠã䜿çšããŠãæ¥åæ²ç·ã®ãã¹ãŠã®ç¹ãè¿œå ã§ããŸãã è©ŠããŠã¿ããå Žå
ã¯ãæ¥åæ²ç·ã®åèšãèšç®ããããã«äœæããHTML5 / JavaScriptããžã¥ã¢ã«ããŒã«ãã芧ãã ãã ã
代æ°å ç®
ã³ã³ãã¥ãŒã¿ãŒã«ç¹ã®è¿œå ãåŠçãããã«ã¯ã幟äœåŠçææ³ã代æ°çææ³ã«å€æããå¿
èŠããããŸãã äžèšã®ã«ãŒã«ãäžé£ã®æ¹çšåŒã«å€æããããšã¯ç°¡åã«æãããããããŸããããå®éã«ã¯ã3次æ¹çšåŒã解ãå¿
èŠããããããããªãé¢åã§ãã ãããã£ãŠãçµæã®ã¿ã衚瀺ããŸãã
å§ããããã«ãæãåä»ãªãããããã¯ãåãé€ããŸãããã ç§ãã¡ã¯ãã§ã«ãããç¥ã£ãŠããŸã
P+ïŒâPïŒ=0 ããããŠç§ãã¡ã¯ãããç¥ã£ãŠããŸã
P+0=0+P=P ã ãããã£ãŠãæ¹çšåŒã§ã¯ããããã®2ã€ã®ã±ãŒã¹ãåé¿ãã2
ã€ã®éãŒãã®é察称ãã€ã³ãã®ã¿ãèæ
®ããŸãã
P=ïŒxPãyPïŒ ãã㊠Q=ïŒxQãyQïŒ ã
ãã P ãã㊠Q äžèŽããªã ïŒ
xP nexQ ïŒãããããéãçŽç·ã«ã¯
åŸé
ããã
ãŸã ïŒ
m= fracyPâyQxPâxQ
ãã®ç·ãšæ¥åæ²ç·
ã®äº€ç¹ã 3çªç®ã®ç¹ã§ã
R=ïŒxRãyRïŒ ïŒ
beginarrayrclxRïŒ=ïŒm2âxPâxQyRïŒ=ïŒyP+mïŒxRâxPïŒ endarray
ãŸãã¯åæ§ã«ïŒ
yR=yQ+mïŒxRâxQïŒ
ã ãã
ïŒxPãyPïŒ+ïŒxQãyQïŒ=ïŒxRãâyRïŒ ïŒå
åã«æ³šæãæãããããèŠããŠãããŠãã ãã
P+Q=âR ïŒ
çµæã®æ£ç¢ºæ§ãæ€èšŒããå¿
èŠãããå Žåã次ã®ããšã確èªããå¿
èŠããããŸãã
R æ²ç·ãšãã©ãã
P ã
Q ãããŠ
R äžçŽç·äžã«ã 1è¡ã§ããããšã®æ€èšŒã¯ç°¡åã§ãæå±ã®æ€èšŒã¯
R æ²ç·-ãããã3次æ¹çšåŒã解ããªããã°ãªããªãã®ã§ãããã¯å®å
šã«æ²ããããšã§ãã
代ããã«ãäŸãè©ŠããŠã¿ãŸãããïŒ
èŠèŠããŒã«ã«ãããšã
P=ïŒ1ã2ïŒ ãããŠ
Q=ïŒ3,4ïŒ æ²ç·ã«å±ãã
y2=x3â7x+10 ããããã®åèšã¯çãã
P+Q=âR=ïŒâ3,2ïŒ ã ãããæ¹çšåŒãšäžèŽãããã©ããã確èªããŸãããïŒ
beginarrayrclmïŒ=ïŒ fracyPâyQxPâxQ= frac2â41â3=1xRïŒ=ïŒm2âxPâxQ=12â1â3=â3yRïŒ=ïŒyP+mïŒxRâxPïŒ=2+1 cdotïŒâ3â1ïŒ=â2ïŒ=ïŒyQ+mïŒxRâxQïŒ=4+1 cdotïŒâ3â3ïŒ=â2 endarray
ã¯ããããã§ãïŒ
ãããã®æ¹çšåŒã¯ã
ãã€ã³ãã P ãŸã㯠Q ã¿ãããã€ã³ãã§ãã 確èªããŸããã
P=ïŒâ1ã4ïŒ ãããŠ
Q=ïŒ1ã2ïŒ ã
beginarrayrclmïŒ=ïŒ fracyPâyQxPâxQ= frac4â2â1â1=â1xRïŒ=ïŒm2âxPâxQ=ïŒâ1ïŒ2âïŒâ1ïŒâ1=1yRïŒ=ïŒyP+mïŒxRâxPïŒ=4+â1 cdotïŒ1âïŒâ1ïŒïŒ=2 endarray
çµæãåºãŸããã
P+Q=ïŒ1ãâ2ïŒ ã
èŠèŠããŒã«ã§åŸãããçµæãšäžèŽã
ãŸã ã
ãã®æ©äŒã« P=Q å°ãç°ãªãæ¹æ³ã§åŠçããå¿
èŠããããŸãã xR ãããŠ
yR åããŸãŸã§ããããããèæ
®ããŠ
xP=xQ åŸæã«ã¯å¥ã®æ¹çšåŒã䜿çšããå¿
èŠããããŸãã
m= frac3x2P+a2yP
ãæ³åã®ãšããããã®åŒã¯
m ã¯äžé埮åã§ãïŒ
yP= pm sqrtx3P+axP+b
ãã®çµæã®æ£ç¢ºæ§ã蚌æããã«ã¯ã次ã®ããšãæ€èšŒããã ãã§ååã§ãã
R æ²ç·ã«å±ãããã®ç·ãééãã
P ãããŠ
R æ²ç·ãšã®äº€å·®ç¹ã¯2ã€ã ãã§ãã ããããããã§ãããã蚌æããã代ããã«äŸãåæããŸãã
P=Q=ïŒ1ã2ïŒ ã
beginarrayrclmïŒ=ïŒ frac3x2P+a2yP= frac3 cdot12â72 cdot2=â1xRïŒ=ïŒm2âxPâxQ=ïŒâ1ïŒ2â1â1=â1yRïŒ=ïŒyP+mïŒxRâxPïŒ=2+ïŒâ1ïŒ cdotïŒâ1â1ïŒ=4 endarray
ç§ãã¡ã«äžãããã®
P+P=âR=ïŒâ1ãâ4ïŒ ã
ããïŒçµæãååŸããæé ã¯éåžžã«é¢åã§ãããæ¹çšåŒã¯éåžžã«ç°¡åã§ãã ããã¯ãã¹ãŠãWeierstrassã®éåžžã®å®åŒåã®ãããã§ããããããªããšããããã®æ¹çšåŒã¯éåžžã«é·ãè€éã«ãªããŸãã
ã¹ã«ã©ãŒä¹ç®
å ç®ã«å ããŠãå¥ã®æŒç®ãå®çŸ©ã§ããŸãïŒ
ã¹ã«ã©ãŒä¹ç® ãã€ãŸãïŒ
nP=\ã¢ã³ããŒãã¬ãŒã¹P+P+ cdots+Pn texttimes
ã©ãã§
n èªç¶æ°ã§ãã ãŸããã¹ã«ã©ãŒä¹ç®çšã®
èŠèŠããŒã«ãäœæããã®ã§ãè©ŠããŠã¿ãŠãã ããã
ãã®åœ¢åŒã§æžããšããèšç®ã¯æããã§ã
nP ãå¿
èŠã§ã
n è¿œå ã ãã
n ããæã
k å°æ°ç¹ä»¥äžã®å Žåãã¢ã«ãŽãªãºã ã¯è€éã«ãªããŸã
OïŒ2kïŒ ããŸãè¯ããããŸããã ããããããé«éãªã¢ã«ãŽãªãºã ããããŸãã
ãããã®1ã€ã¯ã
åå å ç®ã¢ã«ãŽãªãºã ã§ãã ãã®åäœã®åçã¯ãäŸã䜿çšããŠç°¡åã«èª¬æã§ããŸãã åã
n=151 ã ãã€ããªåœ¢åŒã§ã¯ã次ã®åœ¢åŒã«ãªããŸã
100101112 ã ãã®ãããªãã€ããªåœ¢åŒã¯ã2ã®çŽ¯ä¹ã®åèšãšããŠè¡šãããšãã§ããŸãã
beginarrayrcl151ïŒ=ïŒ1 cdot27+0 cdot26+0 cdot25+1 cdot24+0 cdot23+1 cdot22+1 cdot21+1 cdot20ïŒ=ïŒ27+24+22+21+20 endarray
ïŒãã¹ãŠã®2é²æ°ãåããŸãã
n 2ã®ã¹ãä¹ãæããŸããïŒ
ããã念é ã«çœ®ããŠã次ã®ããã«èšè¿°ã§ããŸãã
151 cdotP=27P+24P+22P+21P+20P
åå ã¢ã«ãŽãªãºã ã¯ã次ã®æé ãå®çŸ©ããŸãã
- åã P ã
- ååŸããã«ã¯ããã« 2P ã
- æããŸã 2P ãã㊠P ïŒçµæãåŸãããã« 21P+20P ïŒ
- ããã« 2P ååŸãã 22P ã
- çµæã«è¿œå ããïŒååŸãã 22P+21P+20P ïŒ
- ããã« 22P åŸã 23P ã
- ã§è¿œå ãå®è¡ããªãã§ãã ãã 23P ã
- ããã« 23P ååŸãã 24P ã
- çµæã«è¿œå ããïŒååŸãã 24P+22P+21P+20P ïŒ
- ...
ãã®çµæãèšç®ããŸã
151 cdotP 7åã®åå¢ãš4åã®è¿œå ã ããå®äºããŸããã
ãããå®å
šã«æ確ã§ãªãå Žåããã®ã¢ã«ãŽãªãºã ãå®è£
ããPythonã¹ã¯ãªããã次ã«ç€ºããŸãã
def bits(n): """ n, . bits(151) -> 1, 1, 1, 0, 1, 0, 0, 1 """ while n: yield n & 1 n >>= 1 def double_and_add(n, x): """ n * x, -. """ result = 0 addend = x for bit in bits(n): if bit == 1: result += addend addend *= 2 return result
åå¢ãšå ç®ãæŒç®ã®å Žå
OïŒ1ïŒ ãã®ã¢ã«ãŽãªãºã ã¯è€éã§ã OïŒ lognïŒ ïŒãŸãã¯
OïŒkïŒ ãããé·ãèæ
®ããŠïŒãããã¯ããªãè¯ãã§ãã ãããŠãã¡ãããå
ã®ã¢ã«ãŽãªãºã ãããã¯ããã«åªããŠããŸã
OïŒnïŒ ïŒ
察æ°
äžãããã
n ãããŠ
P å°ãªããšã1ã€ã®å€é
åŒèšç®ã¢ã«ãŽãªãºã ããããŸã
Q=nP ã ããããéåé¡ã¯ã©ãã§ããïŒ
ããç¥ã£ãŠããã Q ãã㊠P ããããŠæ±ºå®ããå¿
èŠããããŸã n ïŒ ãã®åé¡ã¯
察æ°åé¡ãšããŠç¥ãã
ãŠããŸã ã ä»ã®æå·ã·ã¹ãã ãšã®äžè²«æ§ã®ããã«ããé€ç®ããšããçšèªã®ä»£ããã«ã察æ°ããšããèšèã䜿çšããŸãïŒä¹ç®ã§ã¯ãªãã¹ãä¹ã䜿çšãããŸãïŒã
察æ°åé¡ã解決ããããã®åäžã®ãåçŽãªãã¢ã«ãŽãªãºã ã¯ç¥ããŸãããã
ä¹ç®ãå®éšãããš ãããã€ãã®ãã¿ãŒã³ãç°¡åã«æ€åºã§ããŸãã ããšãã°ãæ²ç·ãæã
y2=x3â3x+1 ãããŠãã€ã³ã
P=ïŒ0ã1ïŒ ã ããã«ç¢ºèªã§ããŸã
n å¥åŠãª
nP å·Šåå¹³é¢ã®æ²ç·äžã«ãããŸãã ãã
n ããã§ã
nP -å³åå¹³é¢ã ããã«å®éšãè¡ããšããã®æ²ç·ã®å¯Ÿæ°ãå¹ççã«èšç®ããããã®ã¢ã«ãŽãªãºã ãæžãããšã«ã€ãªããä»ã®ãã¿ãŒã³ãèŠã€ããããšãã§ããŸãã
ãããã察æ°åé¡ã«ã¯ããªãšãŒã·ã§ã³ããããŸãã
é¢æ£å¯Ÿæ°åé¡ã§ãã 次ã®éšåã§èŠãããã«ãæ¥åæ²ç·ã®å®çŸ©ã®é åãæžãããšã
ã¹ã«ã©ãŒä¹ç®ã¯ãåçŽãã®ãŸãŸã§ãããé¢æ£å¯Ÿæ°ã¯ãé£ãããã¿ã¹ã¯ã«ãªããŸã ã ãã®ãããªäºéæ§ã¯ãæ¥åæ²ç·ã®æå·åã®éèŠãªç¹åŸŽã§ãã
次ã®ããŒãã§ã¯ã
æéäœãš
é¢æ£å¯Ÿæ°åé¡ãããã³å®éšã®äŸãšããŒã«ã調ã¹
ãŸã ã
ããŒã2ïŒæéäœäžã®æ¥åæ²ç·ãšé¢æ£å¯Ÿæ°åé¡
åã®ããŒãã§ã¯ãå®æ°äžã®æ¥åæ²ç·ã䜿çšããŠã°ã«ãŒããå®çŸ©ããæ¹æ³ã«ã€ããŠèª¬æããŸããã ã€ãŸãããã€ã³ãã®å ç®ã«ãŒã«ã決å®ããŸããã1ã€ã®çŽç·äžã«ãã3ã€ã®ãã€ã³ãã®åèšã¯ãŒãã§ãïŒ
P+Q+R=0 ïŒ ãã€ã³ãã®å ç®ãèšç®ããããã®å¹ŸäœåŠçããã³ä»£æ°çææ³ãå°ãåºããŸããã
次ã«ãã¹ã«ã©ãŒä¹ç®ã®æŠå¿µãå°å
¥ããŸããïŒ
nP=P+P+ cdots+P ïŒãããŠãã¹ã«ã©ãŒä¹ç®ãèšç®ããããã®ãåçŽãªãã¢ã«ãŽãªãºã ã§ããã2åå ç®ãèŠã€ããŸããã
次ã«ãæ¥åæ²ç·ãå®æ°ã§ã¯ãªã
æéäœã«å¶éãããã®å€åã確èªããŸãã
pãæ³ãšããæŽæ°ã®ãã£ãŒã«ã
æåŸã®ãã£ãŒã«ãã¯ããŸããæéæ°ã®èŠçŽ ã®ã»ããã§ãã æéäœã®äŸã¯ãã¢ãžã¥ãã䜿ã£ãæŽæ°ã®ã»ããã§ã
p ã©ãã§
p çŽ æ°ã§ãã äžè¬çã«ãããã¯
mathbbZ/p ã
GfïŒpïŒ ãŸãã¯
mathbbFp ã æåŸã®ãšã³ããªã䜿çšããŸãã
ãã£ãŒã«ãã«ã¯ãå ç®ïŒ+ïŒãšä¹ç®ïŒã»ïŒã®2ã€ã®äºéæŒç®ããããŸãã ã©ã¡ããéããããŠãããé£æ³çã§å¯æã§ãã äž¡æ¹ã®æäœã«åºæã®ãŠãããèŠçŽ ããããåèŠçŽ ã«éå€ã®åºæã®èŠçŽ ããããŸãã ãããŠæåŸã«ãä¹ç®ã¯å ç®ã«é¢ããŠåé
çã§ãïŒ
x cdotïŒy+zïŒ=x cdoty+x cdotz ã
ã¢ãžã¥ãæŽæ°ã»ãã
p 0ããã®ãã¹ãŠã®æŽæ°ã§æ§æãããŸã pâ1 ã å ç®ãšä¹ç®ã¯ã
ã¢ãžã¥ã©ãŒæŒç®ã®ããã«æ©èœããŸãã 以äžã«æäœã®äŸãããã€ã瀺ããŸã
mathbbF23 ïŒ
- è¿œå ïŒ ïŒ18+9ïŒ bmod23=4
- æžç®ïŒ ïŒ7â14ïŒ bmod23=16
- ä¹ç®ïŒ 4 cdot7 bmod23=5
- å æ³åè»¢ïŒ â5 bmod23=18 ã 確ãã«ïŒ ïŒ5+ïŒâ5ïŒïŒ bmod23=ïŒ5+18ïŒ bmod23=0
- ä¹æ³åè»¢ïŒ 9â1 bmod23=18
ãããã®æ¹çšåŒã«äžæ
£ãã§ãã¢ãžã¥ã©ãŒç®è¡ã®åºç€ãåŠã³ããå Žåã¯
ãã«ãŒã³ã¢ã«ãããŒã§ã³ãŒã¹ãåè¬ã
ãŠãã ãã ã
æŽæ°ãæ³ãšããŠèšã£ãããã«
p ãã£ãŒã«ãã§ãããããäžèšã®ããããã£ã¯ãã¹ãŠä¿åãããŸãã ãã®èŠä»¶ã¯
p çŽ æ°ã§ãããéåžžã«éèŠã§ãïŒ 4ãæ³ãšããæŽæ°ã®éåã¯äœã§ã¯ãããŸããïŒ2ã¯ä¹æ³ã®å転ãæã¡ãŸããïŒããªãã¡ãæ¹çšåŒ
2 cdotx bmod4=1 決å®ã¯ãããŸããïŒã
ã¢ãžã¥ãp
ããã«æ¥åæ²ç·ãå®çŸ©ããŸã
mathbbFp ããããæåã«ãããæ確ã«ç解ããå¿
èŠããããŸã
x/y æå³ãã
mathbbFp ã ç°¡åã«èšãã°ïŒ
x/y=x cdotyâ1 ããŸãã¯ãã¬ãŒã³ããã¹ãã§ã
x ååãš
y åæ¯ã®
x åã®éæ°
y ã ããã¯é©ãããšã§ã¯ãããŸããããé€ç®ãè¡ãç°¡åãªæ¹æ³ãæäŸããŸãïŒ
æ°å€ã®éæ°ãèŠã€ããŠãããåçŽãªä¹ç®ãè¡ããŸãã
éæ°èšç®ã¯ã
æ¡åŒµãŠãŒã¯ãªããã¢ã«ãŽãªãºã ã䜿çšããŠãåçŽã«ãå®è¡ã§ããŸããææªã®å Žåã¯è€éã«ãªããŸã
OïŒ logpïŒ ïŒãŸãã¯
OïŒkïŒ ãããé·ãèæ
®ããå ŽåïŒã
ãŠãŒã¯ãªããæ¡åŒµã¢ã«ãŽãªãºã ã®è©³çŽ°ã«ã¯è§ŠããŸãããããã¯èšäºã®äžéšã§ã¯ãããŸããããPythonã§ã®å®çšçãªå®è£
ã玹ä»ããŸãã
def extended_euclidean_algorithm(a, b): """ (gcd, x, y), , a * x + b * y == gcd, gcd - a b. O(log b). """ s, old_s = 0, 1 t, old_t = 1, 0 r, old_r = b, a while r != 0: quotient = old_r // r old_r, r = r, old_r - quotient * r old_s, s = s, old_s - quotient * s old_t, t = t, old_t - quotient * t return old_r, old_s, old_t def inverse_of(n, p): """ n p. m, (n * m) % p == 1. """ gcd, x, y = extended_euclidean_algorithm(n, p) assert (n * x + p * y) % p == gcd if gcd != 1:
æ¥åæ²ç· mathbbFp
ããã§ãæ¥åæ²ç·ããã£ãŒã«ãã«å¶éããããã«å¿
èŠãªãã¹ãŠã®èŠçŽ ãã§ããŸããã
mathbbFp ã åã®ããŒãã§ã¯æ¬¡ã®åœ¢åŒã§ãã£ããã€ã³ãã®ã»ããïŒ
\ begin {array} {rcl} \ left \ {ïŒxãyïŒ\ in \ mathbb {R} ^ 2 \ rightã ïŒ\å·Šã | \å³ã ïŒ\å·Šã y ^ 2 = x ^ 3 + ax + bã\å³ã \\ïŒïŒ\å·Šã 4a ^ 3 + 27b ^ 2 \ ne 0 \ right \} \ \ cup \ \ left \ {0 \ right \} \ end {array}
ä»ã«ãªããŸãïŒ
\ begin {array} {rcl} \ left \ {ïŒxãyïŒ\ inïŒ\ mathbb {F} _pïŒ^ 2 \ rightã ïŒ\å·Šã | \å³ã ïŒ\å·Šã y ^ 2 \ equiv x ^ 3 + ax + b \ pmod {p}ã\å³ã \\ïŒïŒ\å·Šã 4a ^ 3 + 27b ^ 2 \ not \ equiv 0 \ pmod {p} \ right \} \ \ cup \ \ left \ {0 \ right \} \ end {array}
ããã§ã0ã¯ãŸã ç¡é倧ã®ç¹ã§ããã
a ãããŠ
b -2ã€ã®æŽæ°
mathbbFp ã
æ²ç· y2 equivx3â7x+10 pmodp ãš p=19ã97ã127ã487 ã ããããã«æ³šæããŠãã ãã x æ倧2ã€ã®ãã€ã³ãããããŸãã 察称æ§ã«ã泚ç®ããŠãã ãã y=p/2 ãæ²ç· y2 equivx3 pmod29 åæ°åœ¢ã§ãããäžã«äžéç¹ããã ïŒ0ã0ïŒ ã çã®æ¥åæ²ç·ã§ã¯ãããŸããã以åã¯é£ç¶æ²ç·ã§ãã£ããã®ããå¹³é¢äžã®åã
ã®ç¹ã®ã»ããã«ãªããŸãã
xy ã ããããå®çŸ©ã®é åã®å¶éã«ããããããã
æ¥åæ²ç·ã mathbbFp ãŸã ã¢ãŒãã«ã°ã«ãŒããäœæããŸã ã
ãã€ã³ãå ç®
æããã«ãè¿œå ã®å®çŸ©ãå°ãä¿®æ£ããŠã
mathbbFp ã å®æ°ã«ã€ããŠã¯ã1è¡ã®3ç¹ã®åèšããŒãïŒ
P+Q+R=0 ïŒ ãã®å®çŸ©ãç¶æããããšã¯ã§ããŸãããäžã®1ã€ã®çŽç·äžã«3ã€ã®ãã€ã³ãããããšã¯ã©ãããæå³ã§ãã
mathbbFp ïŒ
ããããçµã¶ç·ãããã°ã3ç¹ã¯åãç·äžã«ãããšèšã
ãŸã ã ãã¡ããããŸã£ãã
mathbbFp äžèšã®è¡ãšã¯ç°ãªããŸã
mathbbR ã äžèšã®è¡ãšèšããŸã
mathbbFp ããããã®ãã€ã³ãã§ã
ïŒxãyïŒ æ¹çšåŒãæºãã
ax+by+c equiv0 pmodp ïŒããã¯ãè¿œå ãããéšåãæã€è¡ã®æšæºæ¹çšåŒã§ã
ïŒ textmod pïŒ "ïŒã
æ²ç·ã«ç¹ãè¿œå ãã y2 equivx3âx+3 pmod127 㧠P=ïŒ16ã20ïŒ ãã㊠Q=ïŒ41ã120ïŒ ã æ¥ç¶ç·ãã©ã®ããã«ãã€ã³ããããã«æ³šæ y equiv4x+83 pmod127 é£è¡æ©ã§ãç¹°ãè¿ãããç§ãã¡ããŸã ã°ã«ãŒãã«ããããšãèãããšããã€ã³ãã®è¿œå ã¯ãã§ã«ç¥ã£ãŠããããããã£ãä¿åããŸãïŒ
- Q+0=0+Q=Q ïŒåäžã®èŠçŽ ã®å®çŸ©ããïŒã
- ã®ããã« Q çžäºã® âQ 暪座æšã¯åãã§ããã瞊座æšãéã®ãã€ã³ãã§ãã ãŸãã¯ãå¿
èŠã«å¿ããŠã âQ=ïŒxQãâyQ bmodpïŒ ã ããšãã°ãæ²ç·ãçµãã£ãå Žå mathbbF29 ãã€ã³ãããããŸã Q=ïŒ2ã5ïŒ ãã®é㯠âQ=ïŒ2ãâ5 bmod29ïŒ=ïŒ2ã24ïŒ ã
- ãŸã P+ïŒâPïŒ=0 ïŒçžäºã®å®çŸ©ããïŒã
代æ°ã®é
ãã€ã³ãã®è¿œå ãå®è¡ããããã®æ¹çšåŒã¯ãåã®éšåãšãŸã£ããåãã§ãããååŒã®æåŸã«è¿œå ããå¿
èŠãããããšãé€ããŸãã
\ããã¹ãmod p ãããããã£ãŠã
P=ïŒxPãyPïŒ ã
Q=ïŒxQãyQïŒ ãããŠ
R=ïŒxRãyRïŒ ãããã
P+Q=âR 次ã®ããã«èšç®ã§ããŸãã
beginarrayrclxRïŒ=ïŒïŒm2âxPâxQïŒ bmodpyRïŒ=ïŒ[yP+mïŒxRâxPïŒ] bmodpïŒ=ïŒ[yQ+mïŒxRâxQïŒ] bmodp endarray
ãã
P neQ ãã®åŸãæé¢
m 次ã®åœ¢åŒãåããŸãã
m=ïŒyPâyQïŒïŒxPâxQïŒâ1 bmodp
ããã§ãªããã°ã
P=Q ç§éã¯åŸãïŒ
m=ïŒ3x2P+aïŒïŒ2yPïŒâ1 bmodp
æ¹çšåŒã¯å€æŽãããŠããããããã¯å¶ç¶ã§ã¯ãããŸãããå®éããããã®æ¹çšåŒã¯ãæéããã³ç¡éã®äž¡æ¹ã®ãã£ãŒã«ãã§æ©èœããŸãïŒãã ãã
mathbbF2 ãããŠ
mathbbF3 ç¹å¥ãªã±ãŒã¹ã§ãïŒã 説æããå¿
èŠããããšæããŸãã ããããåé¡ããããŸããã°ã«ãŒãæ³ã®èšŒæã«ã¯éåžžãè€éãªæ°åŠçæŠå¿µãå¿
èŠã§ãã ããããæãåçŽãªæŠå¿µã®ã¿ã䜿çšãã
Stefan Friedlã®èšŒæãèŠã€ããŸããã ãããã®æ¹çšåŒãã©ã®ãã£ãŒã«ãã§ãïŒã»ãŒïŒåäœããçç±ã«èå³ãããå Žåã¯ãããããèªã¿ãã ããã
æ²ç·ã«æ»ããŸããã-幟äœåŠçãªæ¹æ³ã決å®ããŸãããå®éãåé¡ãçºçããŸãã ããšãã°ãåã®éšåã§ã¯ãèšç®ããããšãèšã£ã
P+P æ²ç·ã®æ¥ç·ã
P ã ããããé£ç¶æ§ããªãå Žåããæ¥ç·ããšããèšèã¯ãã¹ãŠã®æå³ã倱ããŸãã ãã®åé¡ãä»ã®åé¡ãåé¿ããæ¹æ³ãèŠã€ããããšãã§ããŸãããçŽç²ã«å¹ŸäœåŠçãªæ¹æ³ã¯è€éãããŠå®å
šã«éå®çšçã§ãã
代ããã«ã
ãã€ã³ããè¿œå ããããã«äœæã
ã察話åããŒã«ãè©Šãããšãã§ããŸãã
æ¥åæ²ç·ã®ã°ã«ãŒãé åº
æéäœäžã«å®çŸ©ãããæ¥åæ²ç·ã¯æéæ°ã®ç¹ãæã£ãŠãããšèšããŸããã éèŠãªè³ªåã«çããå¿
èŠ
ããããŸããããã«ã¯ããã€ã®ãã€ã³ãããããŸããïŒæåã«ãã°ã«ãŒãå
ã®ãã€ã³ãã®æ°ãã°ã«ãŒã
é åºãšåŒã³ãŸãã
å¯èœãªãã¹ãŠã®å€ã確èªãã
x 0ããã®ç¯å²ã§
pâ1 ãã€ã³ããã«ãŠã³ãããããšã¯äžå¯èœãªæ¹æ³ã«ãªããŸãã
OïŒpïŒ æ¬¡ã®å Žåããã®ã¿ã¹ã¯ã¯ãé£ããã
p 倧ããªçŽ æ°ã§ãã
幞ããªããšã«ãé åºãèšç®ããããã®ããé«éãªã¢ã«ãŽãªãºã ããããŸãïŒ
Schoofã®ã¢ã«ãŽãªãºã ã ç§ã¯ãã®è©³çŽ°ã«ã¯ç«ã¡å
¥ããŸãã-äž»ãªããšã¯ããããå€é
åŒæéã§è¡ãããããšã§ããããããæã
ãå¿
èŠãªããšã§ãã
ã¹ã«ã©ãŒä¹ç®ãšå·¡åãµãã°ã«ãŒã
å®æ°ã®å Žåãä¹ç®ã¯æ¬¡ã®ããã«å®çŸ©ã§ããŸãã
nP=\ã¢ã³ããŒãã¬ãŒã¹P+P+ cdots+Pn texttimes
ç¹°ãè¿ãã«ãªããŸãããåå ã¢ã«ãŽãªãºã ã䜿çšããŠãä¹ç®ãå®è¡ã§ããŸãã
OïŒkïŒ ã©ãã§
k ãããæ°ã§ã
n ïŒ
ã¹ã«ã©ãŒä¹ç®ã®ããã®ã€ã³ã¿ã©ã¯ãã£ãããŒã«ãæžããŸã
ã ã
æ¥åæ²ç·äžã®ç¹ã®ä¹ç®
mathbbFp èå³æ·±ãç¹æ§ããããŸãã æ²ç·ãæã
y2 equivx3+2x+3 pmod97 ãããŠãã€ã³ã
P=ïŒ3ã6ïŒ ã ããã§ã次ã®åæ°ã§ãããã¹ãŠã®å€ã
èšç®ããŸã
P ïŒ
ãã¹ãŠã®å€ã¯ã®åæ°ã§ã P=ïŒ3ã6ïŒ 5ã€ã®ç°ãªããã€ã³ãïŒ 0 ã P ã 2P ã 3P ã 4P ïŒåšæçã«ç¹°ãè¿ãããŸãã æ¥åæ²ç·ã®ã¹ã«ã©ãŒä¹ç®ãšã¢ãžã¥ã©ãŒæŒç®ã®å ç®ã®é¡äŒŒæ§ã«æ°ä»ãã®ã¯ç°¡åã§ãã- 0P=0
- 1P=ïŒ3ã6ïŒ
- 2P=ïŒ80ã10ïŒ
- 3P=ïŒ80ã87ïŒ
- 4P=ïŒ3ã91ïŒ
- 5P=0
- 6P=ïŒ3ã6ïŒ
- 7P=ïŒ80ã10ïŒ

- 9P=ïŒ3ã91ïŒ
- ...
ããã«2ã€ã®æ©èœã«æ°ä»ãããšãã§ããŸãããŸããå€ã®åæ°ã®å€
P ã5ã€ã®ã¿ïŒæ¥åæ²ç·ã®ä»ã®ç¹ã¯æ±ºããŠãããã«ãªããŸããã 第äºã«ããããã¯
åšæçã«ç¹°ãè¿ãããŸãã ããªãã¯æžãããšãã§ããŸãïŒ
- 5kP=0
- ïŒ5k+1ïŒP=P
- ïŒ5k+2ïŒP=2P
- ïŒ5k+3ïŒP=3P
- ïŒ5k+4ïŒP=4P
å
šäœãšããŠ
k ã å°äœé€ç®æŒç®åã®ãããã§ããããã®5ã€ã®æ¹çšåŒã¯1ã€ã«ãçµããããšãã§ããŸãã
kP=ïŒk bmod5ïŒP ã
ããã«ã
ãããã®5ã€ã®ãã€ã³ããå ç®æäœã«é¢ããŠéããŠããããšãããã«ç€ºãããšãã§ã
ãŸã ã ããã¯ã©ãããæå³ã§ããïŒèŠçŽããŠã
0 ã
P ã
2P ã
3P ãŸãã¯
4P ãçµæã¯åžžã«ããã5ã€ã®ãã€ã³ãã®ããããã«ãªããŸãã ç¹°ãè¿ããŸãããæ¥åæ²ç·ã®ä»ã®ãã¹ãŠã®ç¹ãçµæã«ãªãããšã¯ãããŸããã
åãããšãä»ã®ãã¹ãŠã®ãã€ã³ãã«ãåœãŠã¯ãŸããŸãã
P=ïŒ3ã6ïŒ ã å®éãç§ãã¡ãåãã°
P äžè¬çãªåœ¢åŒã§ã¯ïŒ
nP+mP=\äžæ¬åŒ§P+ cdots+Pn texttimes+\äžæ¬åŒ§P+ cdots+Pm texttimes=ïŒn+mïŒP
ã€ãŸãïŒã®
åæ°ã§ãã2ã€ã®å€ãè¿œå ãããš P ããã®åŸã P ïŒã€ãŸããå€ã®åæ°ã§ããå€
P å ç®æäœã«é¢ããŠéããããŠããŸãïŒã ããã¯
ãè€æ°ã®
ã»ããã P å€ã¯ ãæ¥åæ²ç·ã«ãã£ãŠåœ¢æãããã°ã«ãŒãã®
埪ç°ãµãã°ã«ãŒãã§ã ã
ããµãã°ã«ãŒããã¯ãå¥ã®ã°ã«ãŒãã®ãµãã»ããã§ããã°ã«ãŒãã§ãã ã埪ç°ãµãã°ã«ãŒããã¯ãåã®äŸã§ç€ºããããã«ãèŠçŽ ã埪ç°çã«ç¹°ãè¿ããããµãã°ã«ãŒãã§ãã ãã€ã³ã
P 埪ç°ãµãã°ã«ãŒãã®
ãžã§ãã¬ãŒã¿ãŸãã¯
ããŒã¹ãã€ã³ããšåŒã°ããŸãã
ãµã€ã¯ãªãã¯ãµãã°ã«ãŒãã¯ãECCããã³ãã®ä»ã®æå·ã·ã¹ãã ã®åºç€ã§ãã åŸã§ããããªããããªã®ãã説æããŸãã
ãµãã°ã«ãŒã泚æ
ãã€ã³ãã«ãã£ãŠçæããããµãã°ã«ãŒãã®é åºã¯äœã ãããšæããããããŸãã
P ïŒãŸãã¯ãèšãæããã°ãé åºã¯äœã§ãã
P ïŒ ãã®è³ªåã«çããããã«Schoofã¢ã«ãŽãªãºã ã䜿çšããããšã¯ã§ããŸããããã®ã¢ã«ãŽãªãºã ã¯æ¥åæ²ç·å
šäœã«å¯ŸããŠã®ã¿æ©èœãããµãã°ã«ãŒãã«ã¯æ©èœããªãããã§ãã åé¡ã®è§£æ±ºã«é²ãåã«ãããã«æ
å ±ãå¿
èŠã§ãã
- ãããŸã§ãé åºãã°ã«ãŒãå
ã®ãã€ã³ãã®æ°ãšããŠå®çŸ©ããŸããã ãã®å®çŸ©ã¯ãŸã æå¹ã§ããã埪ç°ãµãã°ã«ãŒãã§ã¯ãæ°ããåæ§ã®å®çŸ©ãæå®ã§ããŸãã P æå°ã®æ£ã®æŽæ°ã§ã n ãã®ãã㪠nP=0 ã
å®éãåã®äŸãèŠããšããµãã°ã«ãŒãã¯5ã€ã®ãã€ã³ãã§æ§æãããŠããã 5P=0 ã - ã泚æ P ã©ã°ã©ã³ãžã¥å®çã«ããæ¥åæ²ç·ã®æ¬¡æ°ã«æ¥ç¶ãããŠããŸããããã«å¿ããŠããµãã°ã«ãŒãã®æ¬¡æ°ã¯å
ã®ã°ã«ãŒãã®æ¬¡æ°ã®çŽæ°ã§ã ã
èšãæããã°ãæ¥åæ²ç·ã N ãã€ã³ããããã³ãµãã°ã«ãŒãã®1ã€ã«å«ãŸãã n ãããã n ä»åãã§ã N ã
ãããã®2ã€ã®äºå®ã«ãããåºç¹ãæã€ãµãã°ã«ãŒãã®é åºã決å®ããæ©äŒãåŸãããŸãã
P ïŒ
- æ¥åæ²ç·ã®æ¬¡æ°ãèšç®ãã N Schufã¢ã«ãŽãªãºã ã䜿çšããŸãã
- ãã¹ãŠã®ä»åããèŠã€ãã N ã
- åé€æ°ã«ã€ã㊠n 秩åºã® N èšç®ãã nP ã
- æå° n ãã®ãã㪠nP=0 ã¯ããµãã°ã«ãŒãã®é åºã§ãã
ããšãã°ãæ²ç·
y2=x3âx+3 ãã£ãŒã«ãäž
mathbbF37 é åºããããŸã
N=42 ã ãã®ãµãã°ã«ãŒãã¯ç§©åºããããããããŸãã
n=1 ã
2 ã
3 ã
6 ã
7 ã
14 ã
21 ãŸãã¯
42 ã
代çšããã°
P=ïŒ2ã3ïŒ ããããç§ãã¡ã¯ãããèŠãã§ããã
P ne0 ã
2P ne0 ã...ã
7P=0 ã€ãŸããé åº
P çãã
n=7 ã
ã©ã³ãã ãªé€æ°ã§ã¯ãªããæå°ã®ãã®ãåãããšãéèŠã§ãã
ããšãèæ
®ã
ãŠãã ããã ã©ã³ãã ã«éžæãããšãååŸã§ããŸã
n=14 ãããã¯ãµãã°ã«ãŒãã®é åºã§ã¯ãªããè€æ°ã®é åºã®1ã€ã§ãã
å¥ã®äŸïŒæ¹çšåŒã«ãã£ãŠå®çŸ©ãããæ¥åæ²ç·
y2=x3âx+1 ãã£ãŒã«ãäž
mathbbF29 é åºããããŸã
N=37 çŽ æ°ã§ãã ãã®ãµãã°ã«ãŒãã¯æ³šæã®ã¿å¯èœã§ã
n=1 ãŸãã¯
37 ã æšæž¬ã§ããããã«
n=1 ããµãã°ã«ãŒãã«ã¯ç¡éé ç¹ã®ã¿ãå«ãŸããŸãã ãã€
n=N ããµãã°ã«ãŒãã«ã¯æ¥åæ²ç·ã®ãã¹ãŠã®ç¹ãå«ãŸããŸãã
ããŒã¹ãã€ã³ãæ€çŽ¢
ECCã¢ã«ãŽãªãºã ã«ã¯ãé«æ¬¡ã®ãµãã°ã«ãŒããå¿
èŠã§ãã ãããã£ãŠãéåžžãæ¥åæ²ç·ãéžæããããã®æ¬¡æ°ãèšç®ãããŸãïŒ
N ïŒãã°ã«ãŒãã®é åºïŒ
n ïŒå€§ããªé€æ°ãéžæãããé©åãªããŒã¹ãã€ã³ããèŠã€ãããŸãã ã€ãŸããåºç¹ãéžæããââããã®é åºãèšç®ããåŸãéã®æäœãå®è¡ããŸãããŸããããªãé©åãªé åºãéžæããŠãããé©åãªåºç¹ãæ¢ããŸãã ãããè¡ãæ¹æ³ïŒ
æåã«ãå¥ã®æŠå¿µãå°å
¥ããå¿
èŠããããŸãã ã©ã°ã©ã³ãžã¥ã®å®çã¯ããã®æ°ã
h=N/n åžžã«å
šäœ ïŒãªããªã
n -ä»åã
N ïŒ æ°
h ããã¯ããèªèº«ã®ååãæã£ãŠããŸãïŒããã¯
ãµãã°ã«ãŒãè£å åã§ãã
ããã§ãæ¥åæ²ç·ã®åç¹ã«å¯ŸããŠã
NP=0 ã ããã¯æ¬åœã§ã
N å¯èœãªåæ°ã§ã
n ã è£å åã®å®çŸ©ã«åºã¥ããŠã次ã®ããã«èšè¿°ã§ããŸãã
nïŒhPïŒ=0
ä»ããããä»®å®ããŸã
n -çŽ æ°ïŒèšäºã®æåã®éšåã§è¿°ã¹ãããŠããçç±ãããåçŽãªæ³šæã奜ãïŒã ãã®åœ¢åŒã§æžããããã®æ¹çšåŒã¯ã
G=hP é åºã®ãµãã°ã«ãŒããäœæããŸã
n ïŒé€ã
G=hP=0 ãµãã°ã«ãŒãã®é åºã¯1ïŒã§ãã
ããã«ç
§ãããŠã次ã®ã¢ã«ãŽãªãºã ãå®çŸ©ã§ããŸãã
- 泚æãèšç®ãã N æ¥åæ²ç·ã
- 泚æãéžæããŠãã ãã n ãµãã°ã«ãŒãã ã¢ã«ãŽãªãºã ãæ©èœããã«ã¯ãæ°å€ãçŽ æ°ã§é€æ°ã§ããå¿
èŠããããŸã N ã
- è£å åãèšç®ãã h=N/n ã
- æ²ç·äžã®ã©ã³ãã ãªç¹ãéžæããŸã P ã
- èšç®ãã G=hP ã
- ãã G 0ã«çããå Žåãã¹ããã4ã«æ»ããŸãããã以å€ã®å Žåã次æ°ãæã€ãµãã°ã«ãŒããžã§ãã¬ãŒã¿ãŒãèŠã€ãããŸããã n ãããŠè£å å h ã
ã¢ã«ãŽãªãºã ã¯æ¬¡ã®å Žåã«ã®ã¿æ©èœããããšã«æ³šæããŠãã ããã
n ã·ã³ãã«ã å Žåã®ã¿
n 泚æã¯ç°¡åã§ã¯ãªãã£ã
G ä»åãã®1ã€ã§ããå¯èœæ§ããããŸã
n ã
é¢æ£å¯Ÿæ°
é£ç¶æ¥åæ²ç·ã®å Žåãšåæ§ã«ã次ã®è³ªåã«ã€ããŠè°è«ããå¿
èŠããããŸãã
P ãã㊠Q ããããäœã«ãªããŸã k ãã®ãã㪠Q=kP ïŒæ¥åæ²ç·ã®
é¢æ£å¯Ÿæ°åé¡ãšããŠç¥ããããã®ã¿ã¹ã¯ã¯ããè€éãã§ãããšèŠãªãããåŸæ¥ã®ã³ã³ãã¥ãŒã¿ãŒã§å®è¡ãããŠããå€é
åŒæéã¢ã«ãŽãªãºã ã¯èŠã€ãããŸããã§ããã ãã ãããã®ãã¥ãŒã«ã¯æ°åŠç蚌æ ã¯ãããŸããã
ãã®ã¿ã¹ã¯ã¯ãããžã¿ã«çœ²åã¢ã«ãŽãªãºã ïŒDSAïŒãDiffie-Hellmanãããã³ã«ïŒDHïŒãEl-Gamalã¹ããŒã ãªã©ã®ä»ã®æå·ã·ã¹ãã ã§äœ¿çšãããé¢æ£å¯Ÿæ°åé¡ã«äŒŒãŠããŸãã ã¿ã¹ã¯ã®ååã¯å¶ç¶äžèŽããŸããã ãããã®éãã¯ããããã®ã¢ã«ãŽãªãºã ãã¹ã«ã©ãŒä¹ç®ã§ã¯ãªãã环ä¹æ³ã䜿çšããããšã§ãã ãããã®é¢æ£å¯Ÿæ°åé¡ã¯æ¬¡ã®ããã«å®åŒåã§ããŸãïŒæ¢ç¥ã®å Žå
a ãããŠ
b ããããäœã«ãªããŸã
k ãã®ãããª
b=ak bmodp ïŒ
ãããã®åé¡ã¯äž¡æ¹ãšããæééåïŒããå
·äœçã«ã¯åŸªç°ãµãã°ã«ãŒãïŒã䜿çšããããããé¢æ£ãã§ãã ãããŠããããã¯éåžžã®å¯Ÿæ°ã«äŒŒãŠãããããã察æ°ãã§ãã
ECCã¯ãçŸæç¹ã§ã¯ãæ¥åæ²ç·ã®é¢æ£å¯Ÿæ°åé¡ãæå·åã§äœ¿çšãããä»ã®åæ§ã®ã¿ã¹ã¯ãšæ¯èŒããŠãããè€éãã§ãããšããç¹ã§èå³æ·±ãã§ãã ããã¯ãå
šäœãšããŠå¿
èŠãªããããå°ãªãããšãæå³ããŸã
k ä»ã®æå·ã·ã¹ãã ãšåãã¬ãã«ã®ä¿è·ãåŸãããã«ããã®èšäºã®æåŸã®ç¬¬4éšã§ããã詳现ã«æ€èšããŸãã
ããŒã3ïŒECDHããã³ECDSA
ã¹ã³ãŒããã©ã¡ãŒã¿ãŒ
æ¥åæ²ç·ã¢ã«ãŽãªãºã ã¯ãæéäœäžã®æ¥åæ²ç·ã®åŸªç°ãµãã°ã«ãŒãã§æ©èœããŸãã ãããã£ãŠãã¢ã«ãŽãªãºã ã«ã¯æ¬¡ã®ãã©ã¡ãŒã¿ãŒãå¿
èŠã§ãã
- ã·ã³ãã« p æçµãã£ãŒã«ãã®ãµã€ãºãå®çŸ©ããŸãã
- ãªã㺠a ãã㊠b æ¥åæ²ç·æ¹çšåŒã
- åºç¹ G ãµãã°ã«ãŒããçæããŸãã
- ã泚æ n ãµãã°ã«ãŒãã
- ã³ãã¡ã¯ã¿ãŒ h ãµãã°ã«ãŒãã
ãã®çµæãã¢ã«ãŽãªãºã ã®ãã¡ã€ã³ã®ãã©ã¡ãŒã¿ãŒã¯6 (p,a,b,G,n,h) ã
ã©ã³ãã æ²ç·
é¢æ£å¯Ÿæ°åé¡ããè€éãã ãšèšã£ããšããç§ã¯å®å
šã«æ£ç¢ºã§ã¯ãããŸããã§ãããããªã匱ãæ¥åæ²ç·ã®ã¯ã©ã¹ããããç¹æ®ãªã¢ã«ãŽãªãºã ã䜿çšããŠé¢æ£å¯Ÿæ°åé¡ãå¹æçã«è§£æ±ºã§ããŸããããšãã°ãp=hnïŒã€ãŸããæçµãã£ãŒã«ãã®æ¬¡æ°ã¯æ¥åæ²ç·ã®æ¬¡æ°ã«çããïŒãã¹ããŒãæ»æã«å¯ŸããŠè匱ã§ããããã¯ãå€å
žçãªã³ã³ãã¥ãŒã¿ãŒã§å€é
åŒæéã®é¢æ£å¯Ÿæ°ã解ãããã«äœ¿çšã§ããŸããä»ãã«ãŒãå®çŸ©ãšãªã¢ã®ãã©ã¡ãŒã¿ãäžãããšä»®å®ããŸãã誰ã«ãç¥ãããŠããªãæ°ããã¯ã©ã¹ã®åŒ±ãæ²ç·ãçºèŠããå¯èœæ§ãããããããããæ²ç·ã®é¢æ£å¯Ÿæ°ãèšç®ããããã®ãé«éãã¢ã«ãŽãªãºã ãäœæããŸãããã©ãããã°ãã®å察ãã€ãŸã è匱æ§ã«ã€ããŠç¥ããªãã®ã§ããïŒæ²ç·ããä¿è·ãããŠãããããšãã©ã®ããã«ä¿èšŒã§ããŸããïŒèªåã®æ»æã«äœ¿çšã§ããªããšããæå³ã§ïŒããã®åé¡ã解決ããã«ã¯ãå®çŸ©ãšãªã¢ã®è¿œå ãã©ã¡ãŒã¿ãŒã䜿çšããå¿
èŠãããå ŽåããããŸããã·ãŒãå€ S ã
ããã¯ãä¿æ°ã®çæã«äœ¿çšãããä¹±æ°ã§ãã a ãããŠ
b ãŸãã¯åºç¹ GãŸãã¯äž¡æ¹ããããã®ãã©ã¡ãŒã¿ãŒã¯ãããã·ã¥èšç®ã«ãã£ãŠçæãããŸããS ã
ããã·ã¥ã¯ããåãã®ãšãããèšç®ã¯ãç°¡åãã§ãããå
ã«æ»ãã®ã¯ãå°é£ãã§ããçæå€ããã©ã³ãã æ²ç·ãçæããããã®åçŽãªã¹ããŒã ïŒä¹±æ°ããã·ã¥ã䜿çšããŠãæ²ç·ã®ããŸããŸãªãã©ã¡ãŒã¿ãŒãèšç®ããŸããå®çŸ©ãšãªã¢ã®ãã©ã¡ãŒã¿ãŒããããã·ã¥ãããŒãããŠåäœæãããå Žåããå°é£ãªãåé¡ã解決ããå¿
èŠããããŸãïŒããã·ã¥ãéã«ãããçæå€ã䜿çšããŠçæãããæ²ç·ã¯ãã©ã³ãã ã«ãã§ãã¯ãšåŒã°ããŸããããã·ã¥ã䜿çšããŠãã©ã¡ãŒã¿ãçæããåçã¯ããç§ã®è¢ã«äœããªãããšããŠç¥ãããŠãããæå·åã§åºã䜿çšãããŠããŸãããã®ããªãã¯ã¯ãäœè
ã«ç¥ãããŠããè匱æ§ãæã€ãããªæ¹æ³ã§æ²ç·ãç¹å¥ã«äœæãããªãã£ããšããç¹å®ã®ä¿èšŒãäžããŸããå®éãçæå€ãšäžç·ã«æ²ç·ãäžãããšããã©ã¡ãŒã¿ãŒãarbitrarilyæçã«éžæã§ããªãã£ãããšãæå³ããŸãa ãããŠ
bããããŠããªãã¯ç§ãç¹å¥ãªæ»æã䜿çšã§ããªãããšãæ¯èŒçå·éã«ããããšãã§ããŸãããçžå¯Ÿããšããèšèã䜿çšããçç±ã«ã€ããŠã¯ã第4éšã§èª¬æããŸããã©ã³ãã æ²ç·ãçæããã³ãã§ãã¯ããããã®æšæºåãããã¢ã«ãŽãªãºã ã¯ãANSI X9.62ã§èª¬æãããŠãããSHA-1ã«åºã¥ããŠããŸããèå³ãããå Žåã¯ãSECGä»æ§ã§ãã¹ãå¯èœãªã©ã³ãã æ²ç·ãçæããããã®ã¢ã«ãŽãªãºã ã«ã€ããŠèªãããšãã§ããŸãïŒãæ€èšŒå¯èœãªã©ã³ãã æ²ç·ãšããŒã¹ãã€ã³ããžã§ãã¬ãŒã¿ãŒããåç
§ïŒãOpenSSLã«å梱ãããŠãããã¹ãŠã®ã©ã³ãã æ²ç·ããã§ãã¯ããå°ããªPythonã¹ã¯ãªãããäœæããŸãããç§ã¯ãããèŠãããšã匷ããå§ãããŸãïŒæ¥åæ²ç·æå·
ç§ãã¡ã¯å€ãã®æéãè²»ãããŸããããã€ãã«ããã«çããŸããïŒç°¡åã§ãïŒ- ç§å¯éµã¯ã©ã³ãã ãªæŽæ°ã§ãd ããéžæ {1,âŠ,nâ1} ïŒã©ã n -ãµãã°ã«ãŒãã®é åºïŒã
- å
¬ééµããã€ã³ãã§ãH=dG ïŒã©ã G -ãµãã°ã«ãŒãã®åºç¹ïŒã
ã»ã ç¥ã£ãŠããã°d ãããŠ
G ïŒå®çŸ©ãã¡ã€ã³ã®ä»ã®ãã©ã¡ãŒã¿ãŒãšäžç·ã«ïŒã次ã«èŠã€ããŸã Hãã·ã³ãã«ããããããç§ãã¡ãç¥ã£ãŠããã°H ãããŠ
Gãç§å¯éµãæ€çŽ¢ d é¢æ£å¯Ÿæ°åé¡ã解ãå¿
èŠãããããããé£ãããåé¡ã§ãã次ã«ããã®åçã«åºã¥ãã2ã€ã®å
¬éããŒã¢ã«ãŽãªãºã ã«ã€ããŠèª¬æããŸãïŒæå·åã«äœ¿çšãããECDHïŒæ¥åæ²ç·ã®æ¥åæ²ç·Diffie-HellmanãDiffie-Hellmanãããã³ã«ïŒãããã³ããžã¿ã«çœ²åã«äœ¿çšãããECDSAïŒæ¥åæ²ç·ããžã¿ã«çœ²åã¢ã«ãŽãªãºã ïŒãECDHã䜿çšããæå·å
ECDHã¯ãæ¥åæ²ç·çšã®Diffie-Hellmanã¢ã«ãŽãªãºã ã®ããªãšãŒã·ã§ã³ã§ããå®éãæå·åã¢ã«ãŽãªãºã ã§ã¯ãªããéµåæãããã³ã«ã§ããå¯èœæ§ãé«ããªããŸããæ¬è³ªçã«ãããã¯ECDHãããŒãçæããã³äº€æããé åºãïŒããçšåºŠãŸã§ïŒå®çŸ©ããããšãæå³ããŸãããã®ãããªããŒã䜿çšããŠãããŒã¿ãæå·åããæ¹æ³ãèªåã§éžæã§ããŸãã次ã®åé¡ã解決ããŸãã2è
ïŒéåžžã¯AliceãšBobïŒã¯ã第äžè
ïŒä»²ä»è
ãMan In the MiddleïŒãæ
å ±ãååã§ããã解èªã§ããªãããã«ãæ
å ±ãå®å
šã«äº€æããããããšãã°ãããã¯TLSã®ååã®1ã€ã§ããä»çµã¿ã¯æ¬¡ã®ãšããã§ãã
- ãŸããã¢ãªã¹ãšããã¯ãèªåã®ç§å¯éµãšå
¬ééµãçæããŸããã¢ãªã¹ã«ã¯ç§å¯éµããããŸãdA ããã³å
¬ééµ HA=dAG ããã«ã¯éµããããŸã dB ãã㊠HB=dBG ã ã¢ãªã¹ãšããã®äž¡æ¹ãåãå®çŸ©é åãã©ã¡ãŒã¿ãŒã䜿çšããããšã«æ³šæããŠãã ããïŒ1ã€ã®ããŒã¹ãã€ã³ã G åãæéäœã®1ã€ã®æ¥åæ²ç·äžã
- ã¢ãªã¹ãšããã¯å
¬ééµã亀æããŸã HA ãã㊠HB ä¿è·ãããŠããªããã£ãã«ãéããŠã仲ä»ïŒäžéè
ïŒååHA ãã㊠HB ããããã©ã¡ããèå¥ã§ããŸãã dA ãŸã dB é¢æ£å¯Ÿæ°åé¡ã解ãããšãªãã
- ã¢ãªã¹èšç® S=dAHB ïŒããèªèº«ã®ç§å¯éµãšããã®å
¬ééµã䜿çšïŒãããã¯èšç®ããŸã S=dBHA ïŒã¢ãªã¹èªèº«ã®ç§å¯éµãšã¢ãªã¹ã®å
¬ééµã䜿çšïŒãã«æ³šæããŠãã ããSã¢ãªã¹ãšããã®äž¡æ¹ã§åãã§ããå®éã«ã¯ïŒ
S=dAHB=dA(dBG)=dB(dAG)=dBHA
ãã ãã仲ä»è
㯠HA ãããŠ
HBïŒå®çŸ©ãã¡ã€ã³ã®ä»ã®ãã©ã¡ãŒã¿ãšäžç·ã«ïŒã圌ã¯å
±æç§å¯éµãèŠã€ããããšãã§ããªããªããŸã S ã
ããã¯Diffie-Hellmanåé¡ãšåŒã°ãã次ã®ããã«å®åŒåã§ããŸããçµæã¯ã©ããªããŸãã abP 3ç¹ P ã aP ãã㊠bP ïŒ
ãŸãã¯åæ§ã«ïŒçµæã¯ã©ããªããŸãã kxy 3ã€ã®å
šäœã®ããã« k ã kx ãã㊠ky ïŒ
ïŒåŸè
ã®å®åŒåã¯ãã¢ãžã¥ã©ãŒæŒç®ã«åºã¥ããå
ã®Diffie-Hellmanã¢ã«ãŽãªãºã ã§äœ¿çšãããŸããïŒDiffie-Hellmanãããã³ã«ïŒã¢ãªã¹ãšããã¯å
±æç§å¯ããŒããåçŽã«ãèšç®ã§ããŸããã仲ä»è
ã¯ãå°é£ãªãåé¡ã解決ããå¿
èŠããããŸããDiffie-Hellmanåé¡ã®æ ¹åºã«ããåçã¯ãYouTubeã®åªããKhan Academyãããªã§ã説æãããŠããŸãããã®ãããªã§ã¯ãåŸã§ã¢ãžã¥ã©ãŒæŒç®ïŒæ¥åæ²ç·ã§ã¯ãªãïŒã«é©çšãããDiffie-Hellmanã¢ã«ãŽãªãºã ã«ã€ããŠèª¬æããŠããŸããæ¥åæ²ç·ã®Diffie-Hellmanåé¡ã¯ãè€éããšèŠãªãããŸããé¢æ£å¯Ÿæ°åé¡ãšåãããããè€éãã§ãããšèããããŠããŸãããããã«ã€ããŠã®æ°åŠç蚌æ ã¯ãããŸããã察æ°åé¡ã解ãããšã¯Diffie-Hellmanåé¡ã解ãæ¹æ³ã§ããããããé£ããããªãããšã¯ã§ããªããšèªä¿¡ãæã£ãŠèšãããšãã§ããŸããå
±æç§å¯ããŒãåãåã£ãã¢ãªã¹ãšããã¯ã察称æå·åã§ããŒã¿ã亀æã§ããŸããããšãã°ã座æšã䜿çšã§ããŸãx ã㌠SAESã3DESãªã©ã®å®å
šãªæå·ã§ã¡ãã»ãŒãžãæå·åããããã®ããŒãšããŠããããTLSã®æ©èœã§ããéãã¯ãTLSã座æšãæ¥ç¶ããããšã§ãx æ¥ç¶ã«é¢é£ããä»ã®æ°å€ã䜿çšããŠãçµæã®ãã€ãæååã®ããã·ã¥ãèšç®ããŸããECDHå®éš
ç§ã¯æ¥åæ²ç·äžã§ç§å¯/å
¬ééµãšå
±æç§å¯éµãèšç®ããå¥ã®Pythonã¹ã¯ãªãããæžããŸãããåè¿°ã®äŸãšã¯ç°ãªãããã®ã¹ã¯ãªããã§ã¯ãå°ããªãã£ãŒã«ãã®åçŽãªæ²ç·ã§ã¯ãªããæšæºåãããæ²ç·ã䜿çšããŸããç§ã¯ã«ãŒãéžãã secp256k1
ã°ã«ãŒãSECGïŒããŒã¹ã«å¹ççãªæå·åã°ã«ãŒãã®ããã®èŠæ Œã§ã» ã®CerticomïŒãåãæ²ç·ãããã眲åã§ããžã¿ã«çœ²åã«äœ¿çšãããŸããã¹ã³ãŒãã®ãªãã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã- p = 0xffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f
- a = 0
- b = 7
- xG = 0x79be667e f9dcbbac 55a06295 ce870b07 029bfcdb 2dce28d9 59f2815b 16f81798
- yG = 0x483ada77 26a3c465 5da4fbfc 0e1108a8 fd17b448 a6855419 9c47d08f fb10d4b8
- n = 0xffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141
- h = 1
ïŒãããã®çªå·ã¯OpenSSLãœãŒã¹ã³ãŒãããååŸãããŸããïŒãã¡ãããã¹ã¯ãªãããå€æŽããå®çŸ©é åã®ä»ã®æ²ç·ãšãã©ã¡ãŒã¿ãŒã䜿çšã§ããŸããåçŽãªãã£ãŒã«ããšéåžžã®Weierstrasså®åŒã䜿çšããŠãã ãããããããªããšãã¹ã¯ãªããã¯æ©èœããŸããããã®ã¹ã¯ãªããã¯éåžžã«ã·ã³ãã«ã§ãäžèšã®ã¢ã«ãŽãªãºã ã®äžéšïŒãã€ã³ãã®è¿œå ãåå ãECDHïŒãå«ãŸããŠããŸããå匷ããŠå®è¡ããããšããå§ãããŸããããã次ã®åºåãäœæãããŸãã Curve: secp256k1 Alice's private key: 0xe32868331fa8ef0138de0de85478346aec5e3912b6029ae71691c384237a3eeb Alice's public key: (0x86b1aa5120f079594348c67647679e7ac4c365b2c01330db782b0ba611c1d677, 0x5f4376a23eed633657a90f385ba21068ed7e29859a7fab09e953cc5b3e89beba) Bob's private key: 0xcef147652aa90162e1fff9cf07f2605ea05529ca215a04350a98ecc24aa34342 Bob's public key: (0x4034127647bb7fdab7f1526c7d10be8b28174e2bba35b06ffd8a26fc2c20134a, 0x9e773199edc1ea792b150270ea3317689286c9fe239dd5b9c5cfd9e81b4b632) Shared secret: (0x3e2ffbc3aa8a2836c1689e55cd169ba638b58a3a18803fcf7de153525b28c3cd, 0x43ca148c92af58ebdb525542488a4fe6397809200fe8c61b41a105449507083)
ãšãã§ã¡ã©ã«ECDH
ECDHã§ã¯ãªãECDHEã«ã€ããŠèããããšããã人ããããããããŸãããECHDEã®ãEãã¯ãEphemeralãïŒäžæïŒãè¡šããéä¿¡ãããããŒãäžæçã§ãããéçã§ã¯ãªããšããäºå®ã«ãããã®ã§ããECDHEã¯ãããšãã°ãTLSã§äœ¿çšãããŸããTLSã§ã¯ãæ¥ç¶ã確ç«ãããšãã«ãã¯ã©ã€ã¢ã³ããšãµãŒããŒããã®å Žã§ç§å¯/å
¬éããŒãã¢ãçæããŸãã次ã«ãéµã¯TLS蚌ææžïŒæ¿èªçšïŒã§çœ²åãããåœäºè
éã§è»¢éãããŸããECDSAã§çœ²åãã
ã·ããªãªã¯æ¬¡ã®ãšããã§ããã¢ãªã¹ã¯èªåã®ç§å¯éµïŒdAïŒãããã¯ã¢ãªã¹ã®å
¬ééµã§çœ²åãæ€èšŒãããïŒHA ïŒ
ã¢ãªã¹ä»¥å€ã¯æå¹ãªçœ²åãäœæã§ããªãã¯ãã§ãã誰ãã眲åãæ€èšŒã§ããã¯ãã§ããã¢ãªã¹ãšããã¯åã³åãã¹ã³ãŒããã©ã¡ãŒã¿ãŒã䜿çšããŸããæ¥åæ²ç·ã«é©çšãããããžã¿ã«çœ²åã¢ã«ãŽãªãºã ã®äžçš®ã§ããECDSAã¢ã«ãŽãªãºã ãèŠãŠãããŸããECDSAã¯ãã¡ãã»ãŒãžèªäœã§ã¯ãªããã¡ãã»ãŒãžããã·ã¥ã§æ©èœããŸããããã·ã¥é¢æ°ã®éžæã¯æ®ããŸãããæããã«ãæå·åããã·ã¥é¢æ°ãéžæããå¿
èŠããããŸããããã·ã¥ãããé·ããããé·ãšåãã«ãªãããã«ãã¡ãã»ãŒãžããã·ã¥ãåãæšãŠãå¿
èŠããããŸãnïŒãµãã°ã«ãŒãã®é åºïŒãåãæšãŠãããããã·ã¥ã¯æŽæ°ã§ããã次ã®ããã«ç€ºãããŸã z ãã¢ãªã¹ãã¡ãã»ãŒãžã«çœ²åããããã«å®è¡ããã¢ã«ãŽãªãºã ã¯ã次ã®ããã«æ©èœããŸãã- ã©ã³ãã ãªæŽæ°ãåã k ããéžæ {1,âŠ,nâ1} ïŒã©ã n -ããã¯ãŸã ã°ã«ãŒãã®é åºã§ãïŒã
- ãã€ã³ããèšç®ãã P=kG ïŒã©ã G -ãµãã°ã«ãŒãã®åºç¹ïŒã
- æ°ãèšç®ããŸã r = x P mod n ïŒã©ã xP 座æšã§ã xP ïŒ
- ãã r=0 ãå¥ã®ãã®ãéžæ k ããäžåºŠããçŽããŠãã ããã
- èšç®ãã s=kâ1(z+rdA)modn ïŒã©ã dA -ã¢ãªã¹ã®ç§å¯éµãããã³ kâ1 -ä¹æ³å転 k ã¢ãžã¥ã n ïŒ
- ãã s=0 ãå¥ã®ãã®ãéžæ k ããäžåºŠããçŽããŠãã ããã
倫婊 (r,s) ã¯çœ²åã§ããã¢ãªã¹ã¯ããã·ã¥ã«çœ²åããŸã z ç§å¯éµã䜿çšãã dA ãããŠã©ã³ãã k ã ããã¯ã¢ãªã¹ã®å
¬ééµã䜿çšããŠã¡ãã»ãŒãžã®çœ²åãæ€èšŒããŸã HA ãç°¡åã«èšãã°ããã®ã¢ã«ãŽãªãºã ã¯æåã«ç§å¯éµïŒ k ïŒ
ãã€ã³ãã®ä¹ç®ã®ãããã§ïŒããã¯ãç§ãã¡ãç¥ã£ãŠããããã«ãäžæ¹åã¯ãåçŽãã§ãå察æ¹åã¯ãè€éãã§ãïŒãç§å¯éµã¯ r ã ãããã
r æ¹çšåŒã«ãã£ãŠã¡ãã»ãŒãžããã·ã¥ã«æ·»ä» s=kâ1(z+rdA)modn ã
èšç®ããããšã«æ³šæããŠãã ãã s éæ°ãèšç®ããŸãã k ã¢ãžã¥ã n ã
åã®éšåã§è¿°ã¹ãããã«ãããã¯æ¬¡ã®å Žåã«ã®ã¿æ©èœããããšãä¿èšŒãããŠããŸãã n çŽ æ°ã§ãã
ãµãã°ã«ãŒããè€çŽ æ°ã®ãªãŒããŒã§ããå ŽåãECDSAã¯äœ¿çšã§ããŸããããã¹ãŠã®æšæºåãããæ²ç·ãåçŽãªé åºãæã£ãŠããããšã¯å¶ç¶ã§ã¯ãªããå°é£ãªé åºãæã€ããšã¯ECDSAã«é©çšãããŸããã眲åæ€èšŒ
眲åãæ€èšŒããã«ã¯ãã¢ãªã¹ã®å
¬ééµãå¿
èŠã§ã HA ãïŒåãæšãŠãããïŒããã·ã¥ z ãããŠæããã«çœ²å (r,s) ã
- æŽæ°ãèšç®ããŸã u1=sâ1zmodn ã
- æŽæ°ãèšç®ããŸã u2=sâ1rmodn ã
- ãã€ã³ããèšç®ãã P=u1G+u2HA ã
眲åã¯æ¬¡ã®å Žåã«ã®ã¿æå¹ã§ã r=xPmodn ã
ã¢ã«ãŽãªãºã ã®æ£ç¢ºã
äžèŠãã¢ã«ãŽãªãºã ã®ããžãã¯ã¯æããã§ã¯ãªããããããŸãããã以åã«æžãçãããã¹ãŠã®æ¹çšåŒãçµã¿åããããšããã¹ãŠãæ確ã«ãªããŸããã§å§ãŸãP=u1G+u2HA ã
å
¬ééµã®å®çŸ©ãããç§ãã¡ã¯ãããç¥ã£ãŠããŸã HA=dAG ïŒã©ã
dA-ç§å¯éµïŒãããªãã¯æžãããšãã§ããŸãïŒP=u1G+u2HA=u1G+u2dAG=(u1+u2dA)G
å®çŸ©ã®å¯Ÿè±¡ u1 ãããŠ
u2 æžãããšãã§ããŸãïŒP=(u1+u2dA)G=(sâ1z+sâ1rdA)G=sâ1(z+rdA)G
ããã§ã¯ãã mod n "ãç°¡æœããšããã€ã³ãã«ãã£ãŠçæããã埪ç°ãµãã°ã«ãŒã G é åºããããŸã n ãã€ãŸãã mod nãåé·ã以åã«æ±ºå®ããs=kâ1(z+rdA)modn ã
æ¹çšåŒã®äž¡åŽã«ä¹ç®ãã k ãããŠãé€ç® s ç§éã¯åŸãïŒ k=sâ1(z+rdA)modn ã
ãã®çµæã次ã®æ¹çšåŒã«ä»£å
¥ããŸã P ç§éã¯åŸãïŒP=sâ1(z+rdA)G=kG
ããã¯åãæ¹çšåŒã§ãã P 眲åçæã¢ã«ãŽãªãºã ã®ã¹ããã2ã§ååŸãããã®ã§ãïŒçœ²åãçæããŠãã§ãã¯ãããšããåããã€ã³ããèšç®ããŸãPãã¡ããã©ç°ãªãæ¹çšåŒã®ã»ããããããã¢ã«ãŽãªãºã ãæ©èœããçç±ã§ããECDSAã®å®éš
ãã¡ããã眲åãçæããã³æ€èšŒããPythonã¹ã¯ãªãããäœæããŸãããã³ãŒãã¯ãECDHã¹ã¯ãªããã®äžéšãç¹ã«å®çŸ©é åã®ãã©ã¡ãŒã¿ãŒãšç§å¯/å
¬éããŒãã¢ãçæããã¢ã«ãŽãªãºã ãã³ããŒããŸãããã®ã¹ã¯ãªããã«ãã£ãŠçæãããåºåã¯æ¬¡ã®ãšããã§ãã Curve: secp256k1 Private key: 0x9f4c9eb899bd86e0e83ecca659602a15b2edb648e2ae4ee4a256b17bb29a1a1e Public key: (0xabd9791437093d377ca25ea974ddc099eafa3d97c7250d2ea32af6a1556f92a, 0x3fe60f6150b6d87ae8d64b78199b13f26977407c801f233288c97ddc4acca326) Message: b'Hello!' Signature: (0xddcb8b5abfe46902f2ac54ab9cd5cf205e359c03fdf66ead1130826f79d45478, 0x551a5b2cd8465db43254df998ba577cb28e1ee73c5530430395e4fba96610151) Verification: signature matches Message: b'Hi there!' Verification: invalid signature Message: b'Hello!' Public key: (0xc40572bb38dec72b82b3efb1efc8552588b8774149a32e546fb703021cf3b78a, 0x8c6e5c5a9c1ea4cad778072fe955ed1c6a2a92f516f02cab57e0ba7d0765f8bb) Verification: invalid signature
ã芧ã®ãšãããã¹ã¯ãªããã¯æåã«ã¡ãã»ãŒãžïŒãã€ãæååãHelloïŒãïŒã«çœ²åãã次ã«çœ²åããã§ãã¯ããŸãã次ã«ã圌ã¯å¥ã®ã¡ãã»ãŒãžã®åã眲åãæ€èšŒããããšããŸãïŒ "ããã«ã¡ã¯ïŒ"ïŒæ€èšŒã¯å€±æããŸããæåŸã«ã圌ã¯æ£ããã¡ãã»ãŒãžã®çœ²åã®æ€èšŒãæ€èšŒããããšããŸãããå¥ã®ã©ã³ãã ãªå
¬ééµã䜿çšããŠãæ€èšŒã倱æããŸããéèŠåºŠk
ECDSA眲åãçæãããšãã¯ãç§å¯ã«ããŠããããšãéèŠã§ã kæ¬åœã«ç§å¯ã䜿çšããå Žåkãã¹ãŠã®çœ²åãŸãã¯ä¹±æ°ãžã§ãã¬ãŒã¿ãŒãããçšåºŠäºæž¬å¯èœã§ããã°ãæ»æè
ã¯ç§å¯éµã決å®ã§ããŸãïŒãœããŒã¯æ°å¹Žåã«åæ§ã®ééããç¯ããŸãããPlayStation 3ã²ãŒã ã³ã³ãœãŒã«ã§ã¯ãECDSAã¢ã«ãŽãªãºã ã䜿çšããŠSonyã«ãã£ãŠçœ²åãããã²ãŒã ã®ã¿ãå®è¡ã§ããŸãããã€ãŸããPlayStation 3çšã®æ°ããã²ãŒã ãäœæããå ŽåãSonyã®çœ²åããªããŠãŒã¶ãŒã«é
åžããããšã¯ã§ããŸãããåé¡ã¯ãSonyã«ãã£ãŠäœæããããã¹ãŠã®çœ²åãéçã䜿çšããŠçæãããããšã§ããk ã
ïŒããã¯ãä¹±æ°ãžã§ãã¬ãŒã¿ã®äœæè
ãããœããŒã«è§Šçºããããã®ãšæãXKCDããŸãã¯ãã£ã«ããŒããïŒãã®ãããªç¶æ³ã§ãããªãã¯ç°¡åã«ç§å¯éµãå埩ããããšãã§ããŸãdS ãœããŒã¯ã眲åæžã¿ã®ã²ãŒã ã2ã€ã ã賌å
¥ããåŸãããã·ã¥ãæœåºããŸãïŒ z1 ãããŠ
z2 ïŒããã³çœ²åïŒ (r1,s1) ãããŠ
(r2,s2) ïŒãã¡ã€ã³ã®ãã©ã¡ãŒã¿ãšäžç·ã«ã ããã¯æ¬¡ã®ããã«è¡ãããŸãã
- ãŸãããããèæ
®ããå¿
èŠããããŸã r1=r2 ïŒãªããªã r=xPmodn ãã㊠P=kG äž¡æ¹ã®çœ²åã§åãïŒã
- åãå
¥ãã (s1âs2)modn=kâ1(z1âz2)modn ïŒãã®çµæã¯ã s ïŒ
- æ¹çšåŒã®äž¡åŽã«ä¹ç®ãã k ïŒ k(s1âs2)modn=(z1âz2)modn ã
- ã§å²ã£ã (s1âs2) ååŸãã k=(z1âz2)(s1âs2)â1modn ã
æåŸã®æ¹çšåŒã«ãããèšç®ããããšãã§ããŸã kããã·ã¥ãšããã«å¯Ÿå¿ãã眲åã2ã€ã ãã§ããä»ã®æ¹çšåŒã䜿çšããŠs ç§å¯éµãååŸã§ããŸããs=kâ1(z+rdS)modn â dS=râ1(skâz)modn
åæ§ã®ææ³ã¯æ¬¡ã®å Žåã«é©çšã§ããŸãã k éçã§ã¯ãããŸããããäœããã®åœ¢ã§äºæž¬å¯èœã§ããããŒã4ïŒECCä¿è·ããããã³ã°ããããã®ã¢ã«ãŽãªãºã ãšRSAãšã®æ¯èŒ
åã®ããŒãã§ã¯ã2ã€ã®ã¢ã«ãŽãªãºã ïŒECDHãšECDSAïŒã調ã¹ãæ¥åæ²ç·ã®é¢æ£å¯Ÿæ°åé¡ããã®å®å
šæ§ã«éèŠãªåœ¹å²ãæããçç±ãèŠã€ããŸãããããããèŠããŠãããªããé¢æ£å¯Ÿæ°åé¡ã®è€éãã®æ°åŠç蚌æã¯ãªããšèšã£ããããã¯ãè€éãã§ãããšä¿¡ããŠããããããã«ã€ããŠã¯ç¢ºä¿¡ããªããèšäºã®æåã®éšåã§ã¯ãçŸä»£ã®æè¡ã§å®éã«ã©ãã ããé£ãããããè©äŸ¡ããããšããŸããã第äºéšã§ã¯ãRSAïŒããã³ã¢ãžã¥ã©ãŒæŒç®ã«åºã¥ãä»ã®æå·ã·ã¹ãã ïŒãããŸãæ©èœããå Žåããªãæ¥åæ²ç·ã®æå·åãå¿
èŠãªã®ããšãã質åã«çããããšããŸãããé¢æ£å¯Ÿæ°ã®ãããã³ã°
次ã«ãæ¥åæ²ç·äžã®é¢æ£ã¢ã«ãŽãªãºã ãèšç®ããããã®æãå¹ççãª2ã€ã®ã¢ã«ãŽãªãºã ããã€ããŒã¹ãããã¢ã«ãŽãªãºã ããžã£ã€ã¢ã³ãã¹ãããã¢ã«ãŽãªãºã ãããã³ãã©ãŒãÏã¢ã«ãŽãªãºã ãæ€èšããŸããéå§ããåã«ãé¢æ£å¯Ÿæ°åé¡ãäœã§ããããæãåºããŸãã2ã€ã®äžããããç¹ãèŠã€ãã P ãã㊠Q æŽæ° x æ¹çšåŒãæºãã Q=xP ã
ç¹ã¯ãåºç¹ãæã€æ¥åæ²ç·ã®ãµãã°ã«ãŒãã«å±ããŸã G ãããŠæ³šæ n ã
ãããŒã¹ãããããžã£ã€ã¢ã³ãã¹ããã
ãŸããç°¡åãªè°è«ãããŸãããã€ã§ããã¹ãŠãæžãçããããšãã§ããŸã x ã©ããã£ãŠ x=am+b ã©ãã§
a ã
m ãããŠ
b-3ã€ã®ä»»æã®æŽæ°ãããšãã°ã次ã®ããã«æžãããšãã§ããŸã10=2â
3+4 ã
ããã念é ã«çœ®ããŠãé¢æ£å¯Ÿæ°åé¡ã®æ¹çšåŒã次ã®ããã«æžãæããããšãã§ããŸããQ=xPQ=(am+b)PQ=amP+bPQâamP=bP
ãããŒã¹ããããžã£ã€ã¢ã³ãã¹ãããã¯ããäžéäŒè°ãã¢ã«ãŽãªãºã ã§ããç·åœããæ»æïŒãã¹ãŠã®ãã€ã³ããèšç®ããå¿
èŠãããïŒãšã¯ç°ãªãxP ããããã«ã€ã㊠x èŠã€ãããŸã§ Q ïŒããè€æ°ã®ãå€ãèšç®ããããšãå¯èœã§ã bP ããã³ãããã€ãã®ãå€ QâamPäžèŽãèŠã€ãããŸã§ãã¢ã«ãŽãªãºã ã¯æ¬¡ã®ããã«æ©èœããŸãã- èšç®ãã m=âânâ
- ããããã«ã€ã㊠b ãã 0,âŠ,m èšç®ãã bP çµæãããã·ã¥ããŒãã«ã«ä¿åããŸãã
- ããããã«ã€ã㊠a ãã 0,âŠ,m ïŒ
- èšç®ãã amP ;
- èšç®ãã QâamP ;
- ããã·ã¥ããŒãã«ããã§ãã¯ããŠãã€ã³ããæ¢ã bP ãã®ãã㪠QâamP=bP ;
- ãã®ãããªç¹ãååšããå Žåãç§ãã¡ã¯èŠã€ããŸãã x=am+b ã
ã芧ã®ãšãããæåã«ãã€ã³ããèšç®ããŸã bPä¿æ°ã®å°ããªå¢åïŒããããŒã¹ããããïŒb ïŒ
1P ã
2P ã
3Pã...ïŒãã¢ã«ãŽãªãºã ã®2çªç®ã®éšåã§ã¯ããã€ã³ããèšç®ããŸãamP倧ããªå¢åïŒããžã£ã€ã¢ã³ãã¹ããããããžã£ã€ã¢ã³ãã¹ããããïŒã§am ïŒ
1mP ã
2mP ã
3mP ã... m -å€æ°ïŒããããŒã¹ãããããžã£ã€ã¢ã³ãã¹ãããã¢ã«ãŽãªãºã ïŒæåã«ãå°ããªã¹ãããã§ããã€ãã®ãã€ã³ããèšç®ããããããããã·ã¥ããŒãã«ã«ä¿åããŸãã次ã«ã倧ããªã¹ããããå®è¡ããŠãæ°ãããã€ã³ããããã·ã¥ããŒãã«å
ã®ãã€ã³ããšæ¯èŒããŸãã察å¿ãèŠã€ãã£ãããé
ã®åçŽãªé åã«ããé¢æ£ã¢ã«ãŽãªãºã ãèšç®ã§ããŸããã¢ã«ãŽãªãºã ãã©ã®ããã«æ©èœããããç解ããããã«ããã°ããã®éãbP ãã£ãã·ã¥ãããæ¹çšåŒãåããŸã Q=amP+bP ã
ãããã次ã®ããšãèæ
®ããŠãã ããã- 㧠a=0 ç§ãã¡ã¯ãã§ãã¯ããŸã Q æ° bP ã©ã㧠b -0ã0ã®æŽæ°ã®ãããã m ã ã ããç§ãã¡ã¯æ¯èŒããŸã Q ãã¹ãŠã®ãã€ã³ããã 0P åã« mP ã
- 㧠a=1 ç§ãã¡ã¯ãã§ãã¯ããŸã Q æ° mP+bP ã æ¯èŒãã Q ãã¹ãŠã®ãã€ã³ããã mP åã« 2mP ã
- 㧠a=2 ç§ãã¡ã¯æ¯èŒããŸã Q ãã¹ãŠã®ãã€ã³ããã 2mP åã« 3mP ã
- ...
- 㧠a=mâ1 ç§ãã¡ã¯æ¯èŒããŸã Q ãã¹ãŠã®ãã€ã³ããã (mâ1)mP åã« m2P=nP ã
ãã®çµæããã¹ãŠã®ãã€ã³ãããã§ãã¯ããŸãã 0P åã« nP ïŒã€ãŸããå¯èœãªãã¹ãŠã®ãã€ã³ãïŒãã以äžå®äºããããšã«ãã 2m å ç®ãšä¹ç®ïŒæ£ç¢ºã«m ãåäŸã®æ©ã¿ãã®ããã«ããã mããžã£ã€ã¢ã³ãã¹ããããã®å ŽåïŒãããã·ã¥ããŒãã«ã®æ€çŽ¢ã«æéãããããšä»®å®ããO(1)ãã®ã¢ã«ãŽãªãºã ã«ã¯æéçããã³ç©ºéçãªè€éæ§ãããããšãç°¡åã«ããããŸã O(ân) ïŒãŸã㯠O(2k/2) ãããé·ãèæ
®ããŠïŒãããã¯ãŸã ææ°é¢æ°çãªæéã§ããããã«ãŒããã©ãŒã¹æ»æãããã¯ããã«åªããŠããŸããå®éã®ãããŒã¹ãããã®ãžã£ã€ã¢ã³ãã¹ããã
è€éãã®æå³ãç解ããããšã¯çã«ããªã£ãŠããŸãã O(ân)å®éã«ãæšæºåãããæ²ç·ãåããŸãïŒprime192v1
ïŒshe secp192r1
ãansiX9p192r1
ïŒããã®æ²ç·ã¯ç§©åºã§ãn= 0xffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831ãã®å¹³æ¹æ ¹n-ããã¯çŽ7.922816251426434ã»10 28ïŒã»ãŒ80ãªã¯ãã£ãªãªã³ [çŽTransl .:çãã¹ã±ãŒã«ã§]ïŒã§ããæ ŒçŽãããã®ãæ³åããŠãã ããânããã·ã¥ããŒãã«å
ã®ãã€ã³ããåãã€ã³ããæ£ç¢ºã«32ãã€ããå æãããšããŸããããã·ã¥ããŒãã«ã«ã¯çŽ2.5ã»10 30ãã€ãã®ã¡ã¢ãªãå¿
èŠã§ããã€ã³ã¿ãŒããããæ€çŽ¢ãããšãäžçäžã®ãã©ã€ãã®çŸåšã®åèšå®¹éããŒã¿ãã€ãïŒ10 21ãã€ãïŒçšåºŠã§ããããšãããããŸããããã¯ãããã·ã¥ããŒãã«ã«å¿
èŠãªã¡ã¢ãªéãããã»ãŒ10æ¡å°ãªãã§ãïŒãã€ã³ãããããã1ãã€ããå ããŠãããšããŠãããã¹ãŠãä¿åããããšã¯ã§ããŸããã§ãããããã¯å°è±¡çã§ãããèŠããŠãããªãããã«å°è±¡çã§ãprime192v1
-ããã¯æå°æ¬¡æ°ãæã€æ²ç·ã®1ã€ã§ããsecp521r1
ïŒå¥ã®æšæºNISTæ²ç·ã®ïŒæ¬¡æ°ã¯çŽ6.9ã»10 156ã§ãïŒãããŒã¹ããããžã£ã€ã¢ã³ãã¹ãããã®å®éš
ç§ãæžããã®Pythonã«ã¹ã¯ãªãããã¢ã«ãŽãªãºã ãããŒã¹ããããžã£ã€ã¢ã³ãã»ã¹ãããã䜿çšããŠãé¢æ£å¯Ÿæ°ãèšç®ãããæããã«ãããã¯å°ããªæ¬¡æ°ã®æ²ç·ã§ã®ã¿æ©èœãsecp521r1
ãŸãMemoryError
ãååŸãããå Žåãé€ãã䜿çšããªãã§ãã ãããã¹ã¯ãªããã¯ãããã次ã®åºåãçæããŸãã Curve: y^2 = (x^3 + 1x - 1) mod 10177 Curve order: 10331 p = (0x1, 0x1) q = (0x1a28, 0x8fb) 325 * p = q log(p, q) = 325 Took 105 steps
Ïãã©ãŒã
Ïãã©ãŒãã¯ãé¢æ£å¯Ÿæ°ãèšç®ããããã®å¥ã®ã¢ã«ãŽãªãºã ã§ããåã挞è¿çãªæéã®è€éããæã¡ãŸããO(ân) ãããŒã¹ãããã®ãžã£ã€ã¢ã³ãã¹ãããã§ããããã®ç©ºéçãªè€éã㯠O(1) ã
巚倧ãªã¡ã¢ãªèŠä»¶ã®ããã«ããããŒã¹ããããžã£ã€ã¢ã³ãã¹ããããé¢æ£å¯Ÿæ°ã解決ã§ããªãã£ãå ŽåãÏãã©ãŒãã¯ãããåŠçã§ããŸããïŒç¢ºèªããŸããã...æåã«ãé¢æ£å¯Ÿæ°åé¡ãããäžåºŠæãåºãããŠãã ããïŒfind for givenP ãããŠ
Q å
šäœ x ãã®ãã㪠Q=xP ã
ãã©ãŒãÏã¢ã«ãŽãªãºã ã§ã¯ããããã«ç°ãªãåé¡ã解決ããŸãã P ãããŠ
Q å
šäœ a ã b ã A ãã㊠B ãã®ãã㪠aP+bQ=AP+BQ ã
4ã€ã®æŽæ°ãèŠã€ãã£ããã次ã®æ¹çšåŒã䜿çšã§ããŸãã Q=xP èšç®ãã x ïŒ
aP+bQ=AP+BQaP+bxP=AP+BxP(a+bx)P=(A+Bx)P(aâA)P=(Bâb)xP
ä»ãç§ãã¡ã¯åãé€ãããšãã§ããŸã P ã
ãããããããè¡ãåã«ããµãã°ã«ãŒããåšæçã§ãããé åºãããããšãå¿ããªãã§ãã ãã n ãã€ãŸãããã€ã³ãã®ä¹ç®ã«äœ¿çšãããä¿æ°ã¯ã¢ãžã¥ãã§ååŸãããŸã n ïŒ
aâAâ¡(Bâb)x(modn)x=(aâA)(Bâb)â1modn
Oll Pollardã®æäœåçã¯åçŽã§ãããã¢ã®æ¬äŒŒã©ã³ãã ã·ãŒã±ã³ã¹ãå®çŸ©ããŸã (a,b) ã
ãã®ãã¢ã®ã·ãŒã±ã³ã¹ã䜿çšããŠããã€ã³ãã®ã·ãŒã±ã³ã¹ãçæã§ããŸãã aP+bQ ã 以æ¥
P ãããŠ
Q1ã€ã®åŸªç°ãµãã°ã«ãŒãã®èŠçŽ ãç¹ã®ã·ãŒã±ã³ã¹ aP+bQ ãŸããåšæçãããã¯ããã¢ã®æ¬äŒŒã©ã³ãã ã·ãŒã±ã³ã¹ãåãå Žå(a,b)é
ããæ©ããããµã€ã¯ã«ãèŠã€ãããŸããã€ãŸãããã¢ãèŠã€ãããŸã (a,b) ãããŠå¥ã®ã㢠(A,B) ãã®ãã㪠aP+bQ=AP+BQ ã
åããã€ã³ããå¥ã
ã®ãã¢ïŒäžèšã®æ¹çšåŒãé©çšããŠå¯Ÿæ°ãèŠã€ããããšãã§ããŸãã課é¡ã¯ãå¹ççãªæ¹æ³ã§ã«ãŒããæ€åºããæ¹æ³ã§ããïŒã«ã¡ãšãŠãµã®
ã«ãŒããæ€åºããããã«ããã¹ãŠã®å¯èœãªå€ã確èªã§ããŸã a ãããŠ
bãã¢å€æé¢æ°ã䜿çšããŸãããn2 ãã®ãããªãã¢ãã¢ã«ãŽãªãºã ã¯è€éã«ãªããŸã OïŒn2ïŒãããã¯åçŽãªç·åœããæ»æãããã¯ããã«æªãã§ããããããããé«éãªæ¹æ³ããããŸãïŒã¿ãŒãã«ã¢ã³ããŠãµã®ã¢ã«ãŽãªãºã ïŒããã€ããµã€ã¯ã«æ€çŽ¢ã¢ã«ãŽãªãºã ãšãåŒã°ããŸãïŒãäžã®å³ã¯ããã©ãŒãÏã¢ã«ãŽãªãºã ã®åºã«ãªã£ãŠããã«ã¡ãšãŠãµã®ã®æ¹æ³ã®åäœåçã瀺ããŠããŸããæ²ç·ããããŸã y2â¡x3+2x+3(mod97) ãšãã€ã³ã P=(3,6) ãã㊠Q=(80,87) ã ãã€ã³ãã¯5次ã®åŸªç°ãµãã°ã«ãŒãã«å±ããŸãã2ã€ã®ç°ãªããã¢ãèŠã€ãããŸã§ãç°ãªãé床ã®ãã¢ã®ã·ãŒã±ã³ã¹ãå·¡åããŸãã (a,b) ãã㊠(A,B) ã¯ã³ãã€ã³ããäžããŸãããã®å Žåããã¢ãèŠã€ãããŸãã (3,3) ãã㊠(2,0) ã察æ°ã次ã®ããã«èšç®ã§ããŸã x=(3â2)(0â3)â1mod5=3 ã ãããŠå®éãç§ãã¡ã¯ããããã£ã Q=3P ãæ¬è³ªçã«ã¯ããã¢ã®æ¬äŒŒã©ã³ãã ã·ãŒã±ã³ã¹ã䜿çšããŸã (a,b) 察å¿ãããã€ã³ãã®ã·ãŒã±ã³ã¹ãšãšãã« aP+bQ ã
ãã¢ã®ã·ãŒã±ã³ã¹ (a,b) 埪ç°ããå Žåãããªãå ŽåããããŸããããã€ã³ãã®ã·ãŒã±ã³ã¹ã¯æ£ç¢ºã«åŸªç°ããŸãã P ãããŠ
Q1ã€ã®åºç¹ããçæããããµãã°ã«ãŒãã®ããããã£ãããã¹ã«ã©ãŒã®ä¹ç®ãšå ç®ã«ãã£ãŠã®ã¿ãµãã°ã«ãŒãããããšã¹ã±ãŒããã§ããªãããšãããããŸãã次ã«ãã«ã¡ãšãŠãµã®ã®2å¹ã®åç©ãåããå·Šããå³ã«é çªã«åããŸããã«ã¡ïŒç»åã®ç·è²ã®ç¹ïŒã¯é
ããåç¹ã次ã
ã«èªã¿åããŸããããŠãµã®ïŒèµ€ãç¹ïŒã¯éãããã¹ãŠã®ã¹ãããã§ç¹ãã¹ãããããŸãããã°ãããããšãã«ã¡ãšããŠãµã®ã¯1ã€ã®ãã€ã³ããèŠã€ããŸãããä¿æ°ã®ãã¢ã¯ç°ãªããŸãããŸãã¯ãæ¹çšåŒã«å
¥ããããã«ãã«ã¡ã¯ãã¢ãèŠã€ããŸã(a,b) ãŠãµã®ã¯ã«ããã«ã§ã (A,B) ãã®ãã㪠aP+bQ=AP+BQ ã
ã©ã³ãã ã·ãŒã±ã³ã¹ãã¢ã«ãŽãªãºã ãä»ããŠïŒéçã«æ ŒçŽãããŠããªãïŒæ±ºå®ãããå Žåãæäœã®ååã«ã¯ãã¹ãŠãå¿
èŠã§ããããšãç°¡åã«ããããŸãã O(logn) ã¹ããŒã¹ã挞è¿æéã®è€éãã®èšç®ã¯ããã»ã©åçŽã§ã¯ãããŸããããæéã®è€éãã瀺ã確çç蚌æãæ§ç¯ã§ããŸã O(ân ïŒãç§ãã¡ãèšã£ãããã«ãÏãã©ãŒãã®å®éš
PollardÏã¢ã«ãŽãªãºã ã䜿çšããŠé¢æ£å¯Ÿæ°ãèšç®ããPythonã¹ã¯ãªãããäœæããŸãããããã¯åæã®ÏPollardã®å®è£
ã§ã¯ãªãããã®ããããªããªãšãŒã·ã§ã³ã§ãïŒããå¹ççãªæ¹æ³ã§ãã¢ã®æ¬äŒŒã©ã³ãã ã·ãŒã±ã³ã¹ãçæããŸããïŒãã¹ã¯ãªããã«ã¯äŸ¿å©ãªã³ã¡ã³ãããããŸãã®ã§ãã¢ã«ãŽãªãºã ã®è©³çŽ°ã«èå³ãããå Žåã¯èªãã§ãã ããããã®ã¹ã¯ãªããã¯ããããŒã¹ããããžã£ã€ã¢ã³ãã¹ããããšåæ§ã«ãå°ããªæ²ç·ã«å¯ŸããŠæ©èœããåãåºåãçæããŸãããã»ãã©ãŒãã®å®è·µ
巚倧ãªã¡ã¢ãªèŠä»¶ã®ããããããŒã¹ãããã®ãžã£ã€ã¢ã³ãã¹ãããã¯å®éã«ã¯äœ¿çšã§ããªããšè¿°ã¹ãŸãããäžæ¹ãPollardã®roã¢ã«ãŽãªãºã ã¯ãã»ãšãã©ã¡ã¢ãªãå¿
èŠãšããŸãããã©ã®ãããå®çšçã§ããïŒ1998幎ã«ãCerticomã¯ãããé·ã109ã369ã®æ¥åæ²ç·ã®é¢æ£å¯Ÿæ°ãèšç®ããããã®ç«¶äºãéå§ããŸãããçŸåšãŸã§ã109ãããã®ã¿ãæ£åžžã«è§£èªãããŠããŸããæåŸã«æåããè©Šã¿ã¯2004幎ã«è¡ãããŸããããŠã£ãããã£ã¢ãåŒçšããã«ã¯ïŒãã®è³ã¯2004幎4æ8æ¥ã«ãã¯ãªã¹ã¢ãã³ã代衚ãšããçŽ2,600人ã«æäžãããŸããããŸãããã©ãŒãã®äžçš®ã®äžŠååãããroã¢ã«ãŽãªãºã ã䜿çšããŸããããã®èšç®ã«ã¯17ãæã®ã«ã¬ã³ããŒæéãããããŸããã
å
ã»ã©èšã£ãããã«ãprime192v1
ããã¯ãæå°ã®ãæ¥åæ²ç·ã®1ã€ã§ãããŸããÏãã©ãŒãã«ã¯äžæçãªè€éãããããŸãO(ân) ã
Chris Monikoãšåãææ³ïŒåãã¢ã«ãŽãªãºã ãåãæ©åšããã·ã³æ°ïŒã䜿çšããå Žåã察æ°ãèšç®ããã®ã«ã©ããããæéããããprime192v1
ãŸããïŒ17 Ãâ2192â2109â5â
1013
åŸãããçµæã¯ããèªäœãç©èªã£ãŠããããã®ãããªæè¡ã䜿çšããŠé¢æ£å¯Ÿæ°ã解èªããããšãããã«é£ããããæ確ã«ããŸããÏãã©ãŒããšãã€ããŒã¹ããããžã£ã€ã¢ã³ãã¹ãããã®æ¯èŒ
ç§ãçµåããããšã決ããã¹ã¯ãªããã¹ãããã®èµ€ã¡ããã¹ãããã®å·šäººããã©ãŒãROã¹ã¯ãªããããã³ç¡å¹åã¹ã¯ãªãããäžã«ç¬¬åã¹ã¯ãªãã圌ãã®ããã©ãŒãã³ã¹ãæ¯èŒããŸãããã®4çªç®ã®ã¹ã¯ãªããã¯ãç°ãªãã¢ã«ãŽãªãºã ã䜿çšããŠãå°ããªãæ²ç·äžã®ãã¹ãŠã®ãã€ã³ãã®ãã¹ãŠã®å¯Ÿæ°ãèšç®ãããããããã£ãæéãå ±åããŸãã Curve order: 10331 Using bruteforce Computing all logarithms: 100.00% done Took 2m 31s (5193 steps on average) Using babygiantstep Computing all logarithms: 100.00% done Took 0m 6s (152 steps on average) Using pollardsrho Computing all logarithms: 100.00% done Took 0m 21s (138 steps on average)
ãæ³åã®ãšãããåææ¹æ³ã¯ä»ã®2ã€ã«æ¯ã¹ãŠéåžžã«é
ãã§ãããããŒã¹ããããžã£ã€ã¢ã³ãã¹ãããã¯ããé«éã§ããããã©ãŒãã®roã¢ã«ãŽãªãºã ã¯ããããŒã¹ããããžã£ã€ã¢ã³ãã¹ãããããã3å以äžé
ããªããŸãïŒãã ãã䜿çšããã¡ã¢ãªã¯ã¯ããã«å°ãªããå¹³åããŠå°ãªãã¹ãããã§ãïŒãã¹ãããæ°ãèŠãŠã¿ãŸãããããã«ãŒããã©ãŒã¹ã§å察æ°ãèšç®ããã«ã¯ãå¹³åã§5193ã¹ããããå¿
èŠã§ããã5193ã¯10331/2ã«éåžžã«è¿ãïŒæ²ç·ã®æ¬¡æ°ã®ååïŒããããŒã¹ãããã®ãžã£ã€ã¢ã³ãã¹ããããšãã»ãã©ãŒãã¯ããããã152ã¹ããããš138ã¹ãããã䜿çšããŸããããããã®2ã€ã®æ°å€ã¯ã10331ïŒ101.64ïŒã®å¹³æ¹æ ¹ã«éåžžã«è¿ãå€ã§ãããããªãèæ
®äºé
ãããã®ã¢ã«ãŽãªãºã ã®èª¬æã§ã¯ãå€ãã®æ°åã䜿çšããŸãããããããèªããšãã¯ã泚æããããšãéèŠã§ããå€ãã®é¢ã§ã¢ã«ãŽãªãºã ã倧å¹
ã«æé©åã§ããŸããæ©åšãæ¹åãããå ŽåããããŸããç¹æ®ãªæ©åšãäœæã§ããŸããã¢ãããŒããä»æ¥å®çšçã§ãªããšæãããå Žåãããã¯æ¹åã§ããªããšããæå³ã§ã¯ãããŸãããããã¯ãä»ã®ããè¯ãã¢ãããŒãããªãããšãæå³ããŸããïŒé¢æ£å¯Ÿæ°åé¡ã®è€éãã®èšŒæ ããªãããšãå¿ããªãã§ãã ããïŒãã·ã§ã¢ã¢ã«ãŽãªãºã
ææ°ã®æè¡ãé©çšã§ããªãå Žåãè¿ãå°æ¥ã®æè¡ã«ã€ããŠã¯ã©ãã§ããããïŒç¶æ³ã¯ãŸããŸãæžå¿µãåŒãèµ·ãããŠããŸãïŒå€é
åŒæéã§é¢æ£å¯Ÿæ°ãèšç®ã§ããéåã¢ã«ãŽãªãºã ããã§ã«ãããŸãïŒæéã®è€éããæã€ã·ã§ã¢ã¢ã«ãŽãªãºã O((logn)3) ãšç©ºéã®è€éã O(logn) ã
éåã¢ã«ãŽãªãºã ã®å¹çã¯ãç¶æ
ã®éãåããã«ãããŸããå€å
žçãªã³ã³ãã¥ãŒã¿ãŒã§ã¯ãã¡ã¢ãªã»ã«ïŒãããïŒã®å€ã¯1ãŸãã¯0ã§ãããããã®éã«äžéç¶æ
ã¯ãããŸãããäžæ¹ãéåã³ã³ãã¥ãŒã¿ãŒïŒãã¥ãŒãããïŒã®ã¡ã¢ãªã»ã«ã¯ãäžç¢ºå®æ§ã®åçã«åŸããŸãã枬å®ããããŸã§ãå®å
šã«å®çŸ©ãããç¶æ
ã¯ãããŸãããç¶æ
ã®éãåããã¯ãåéåããããå€0ãš1ãåæã«æã€ããšãã§ããããšãæå³ããŸããïŒã€ã³ã¿ãŒãããã§ããæžãããŠããããã«ïŒãã€ãŸãããã¥ãŒãããã枬å®ãããšãã0ã芳枬ãã確çãš1ã芳枬ãã確çããããŸããéåã¢ã«ãŽãªãºã ã®ä»äºã¯ãåãã¥ãŒãããã®ç¢ºçãå€æŽããããšã§ãããã®å¥åŠãªããšã¯ãéãããæ°ã®ãã¥ãŒãããã§ãå€ãã®å¯èœãªå
¥åããŒã¿ãåæã«åŠçã§ããããšãæå³ããŸããããšãã°ãéåã³ã³ãã¥ãŒã¿ãŒã«æ°åãããããšãäŒããããšãã§ããŸãx 0ãš nâ1 ã
å¿
èŠãªãã®ãã¹ãŠ logn 代ããã«ãã¥ãŒããã nlogn ãããã
次ã«ãéåã³ã³ãã¥ãŒã¿ãŒã«ã¹ã«ã©ãŒä¹ç®ãå®è¡ããããã«åœä»€ããããšãã§ããŸã xP ã
çµæãšããŠããã¹ãŠã®ç¹ã«ãã£ãŠäžããããç¶æ
ã®éãåããã 0P åã«
(nâ1)P ã€ãŸããããã§ãã¹ãŠã®ãã¥ãŒãããã枬å®ãããšã次ã®ããããã®ãã€ã³ããååŸãããŸãã 0P åã«
(nâ1)P 確ç㧠1/n ã
ç¶æ
ã®éãåããã®å®å
šãªåãç解ã§ããããã«ãããã«ã€ããŠè©±ããŸãããShoreã®ã¢ã«ãŽãªãºã ã¯ãã®ããã«ã¯æ©èœããŸãããå®éãããè€éã§ããããµãããããããšã¯ã§ããŸãããn åæã«ãããã€ãã®æ®µéã§ããã®ç¶æ
ã®æ°ãããã€ãã«æžããå¿
èŠããããŸããåºåã§ã¯ãæ°ã§ã¯ãªã1ã€ã®æ°ãå¿
èŠãªããã§ãïŒã€ãŸãã1ã€ã®å¯Ÿæ°ãç¥ã£ãŠããå¿
èŠããããããããå€ãã®èª€ã£ã察æ°ã¯å¿
èŠãããŸããïŒãECCããã³RSA
ããŠãéåã³ã³ãã¥ãŒãã£ã³ã°ã«ã€ããŠã¯å¿ããŸããããããã¯ãŸã æ·±å»ãªåé¡ã«ã¯ãªããŸãããç§ã¯æ¬¡ã®è³ªåã«çããããšæããŸãïŒRSAãæ¢ã«ããŸãæ©èœ ããã®ã«ããªãæ¥åæ²ç·ã«æ©ãŸãããã®ã§ããïŒNISTã¯ãåãã¬ãã«ã®ä¿è·ãåŸãããã«å¿
èŠãªRSAãšECCããŒã®ãµã€ãºãæ¯èŒããè¡šãæ瀺ããããšã§ãç°¡åãªçããåºããŸãããRSAããŒãµã€ãºïŒãããïŒ | ECCããŒãµã€ãºïŒãããïŒ |
---|
1024 | 160 |
2048 | 224 |
3072 | 256 |
7680 | 384 |
15360 | 521 |
RSAããŒãµã€ãºãšECCããŒãµã€ãºã®éã«ç·åœ¢é¢ä¿ã¯ãªãããšã«æ³šæããŠãã ããïŒã€ãŸããRSAããŒãµã€ãºã2åã«ããå ŽåãECCããŒãµã€ãºã2åã«ããå¿
èŠã¯ãããŸããïŒããã®è¡šã¯ãECCã䜿çšããã¡ã¢ãªãå°ãªãã ãã§ãªããããã«ãµã€ã³ã€ã³ããããŒã®çæãã¯ããã«é«éã§ããããšã瀺ããŠããŸããããããããã¯ãªãã§ããïŒçãã¯ãæ¥åæ²ç·äžã®é¢æ£ã¢ã«ãŽãªãºã ãèšç®ããããã®æéã®ã¢ã«ãŽãªãºã ã¯ããã©ãŒãÏã¢ã«ãŽãªãºã ãšãã€ããŒã¹ããããžã£ã€ã¢ã³ãã¹ãããã§ãããRSAã®å Žåã¯ããé«éãªã¢ã«ãŽãªãºã ã§ãããšããããšã§ããç¹ã«ããããã®1ã€ã¯ãæ°å€ãã£ãŒã«ãããµããäžè¬çãªæ¹æ³ã§ããïŒé¢æ£å¯Ÿæ°ã®èšç®ã«äœ¿çšã§ããæŽæ°ã®å æ°å解ã¢ã«ãŽãªãºã ãæ°å€ãã£ãŒã«ãããµããã«ãããäžè¬çãªæ¹æ³ã¯ãæŽæ°ãå æ°å解ããããã®ã¯ããã«é«éãªã¢ã«ãŽãªãºã ã§ããããã¯ãã¹ãŠãDSAãDiffie-HellmanãEl-Gamalãªã©ãã¢ãžã¥ã©ãŒæŒç®ã«åºã¥ããä»ã®æå·ã·ã¹ãã ã«é©çšãããŸããNSAã®é ããè
åš
ããã§ã¯ãé£ããéšåã«ç§»ããŸãããããããŸã§ãã¢ã«ãŽãªãºã ãšæ°åŠã«ã€ããŠèª¬æããŠããŸããã人ã
ãšè©±ãåãæãæ¥ãã®ã§ãäºæ
ã¯ããã«è€éã«ãªã£ãŠããŸããèŠããŠãããªãã第3éšã§æ¥åæ²ç·ã®ããã€ãã®ã¯ã©ã¹ã匱ããšèšã£ãã®ã§ãçããããœãŒã¹ããä¿¡é Œã§ããæ²ç·ãååŸããåé¡ã解決ããããã«ãå®çŸ©ãã¡ã€ã³ã®ãã©ã¡ãŒã¿ãŒã«ã©ã³ãã ã·ãŒãå€ãè¿œå ããŸãããŸããæšæºã®NISTæ²ç·ãèŠããšãæ€èšŒå¯èœãªã©ã³ãã ã§ããããšãããããŸãããè¢ã«äœããªãããšããååã«ã€ããŠãŠã£ãããã£ã¢ã®ããŒãžãèªããšã次ã®ããšãããããŸãã- MD5ã®ä¹±æ°ã¯ãæŽæ°ã®ãµã€ã³ããååŸãããŸãã
- Blowfishã®ä¹±æ°ã¯ãæåã®æ°åããååŸãããŸãã Ï ã
- RC5ã®ä¹±æ°ã¯æ¬¡ããååŸãããŸã e ãããŠé»éæ¯ã
ãããã®çªå·ã¯åçã«ååžããŠãããããã©ã³ãã ã§ãããããŠã圌ãã«ã¯æ£åœåãããã®ã§ã圌ãã¯çããåŒãèµ·ãããŸãããããã§ã次ã®çåãçããŸããNISTæ²ç·ã®ã©ã³ãã çæå€ã¯ã©ãããæ¥ãã®ã§ããããïŒåçïŒæ®å¿µãªãããç§ãã¡ã¯ç¥ããŸããããããã®å€ã«ã¯çç±ããããŸãããNISTããããªã倧ããªãã¯ã©ã¹ã®åŒ±ãæ¥åæ²ç·ãçºèŠããå€ãçæããããŸããŸãªå¯èœæ§ã®ããããªãšãŒã·ã§ã³ãè©Šããè匱ãªæ²ç·ãèŠã€ããå¯èœæ§ã¯ãããŸããïŒç§ã¯ãã®è³ªåã«çããããšã¯ã§ããŸããããããã¯è«ççã§éèŠãªè³ªåã§ãã NISTãè匱ãªä¹±æ°ãžã§ãã¬ãŒã¿ãŒãå°ãªããšãæ£åžžã«æšæºåããããšãããã£ãŠããŸããïŒãžã§ãã¬ãŒã¿ãŒã¯ãå¥åŠãªããšã«ãæ¥åæ²ç·ã«åºã¥ããŠããŸãïŒããããã圌ã¯å€ãã®åŒ±ãæ¥åæ²ç·ãæ£åžžã«æšæºåããã®ã§ããããïŒç¢ºèªæ¹æ³ã¯ïŒ ãŸããã
ãæ€èšŒå¯èœãªã©ã³ãã ããšãä¿è·ããããã¯å矩èªã§ã¯ãªãããšãç解ããããšãéèŠã§ãã察æ°ã¿ã¹ã¯ã®è€éããããŒã®é·ãã¯é¢ä¿ãããŸãããã¢ã«ãŽãªãºã ããããã³ã°ãããå Žåãç§ãã¡ã«ã§ããããšã¯äœããããŸãããããã«é¢ããŠãæªçšãããå¯èœæ§ã®ããç¹å¥ãªãã¡ã€ã³ãã©ã¡ãŒã¿ãå¿
èŠãšããªããããRSAãåã¡ãŸãã RSAïŒä»ã®ã¢ãžã¥ã©ãŒç®è¡ã·ã¹ãã ãšåæ§ïŒã¯ãåœå±ãä¿¡é Œã§ãããå®çŸ©ãã¡ã€ã³çšã«ç¬èªã®ãã©ã¡ãŒã¿ãŒãäœæã§ããªãå Žåã«é©ãã代æ¿æ段ãšãªããŸãã奜å¥å¿ã匷ãå ŽåïŒã¯ããTLSã¯NISTæ²ç·ã䜿çšã§ããŸãã Googleã«ãã§ãã¯ã€ã³ãããšãæ¥ç¶æã«ECDHEãšECDSAãprime256v1
ïŒã«åºã¥ããŠããsecp256p1
ïŒã«åºã¥ã蚌ææžãšãšãã«äœ¿çšãããããšãããããŸãã以äžã§ãïŒ
ãã®èšäºãã楜ãã¿ãã ãããæ¥åæ²ç·äžã®æå·ã®çŸåšã®ç¶æ
ãç解ããããã«å¿
èŠãªåºæ¬æ
å ±ãçšèªãä»®å®ã玹ä»ããããšããŸãããç§ãæåããã°ãæ¢åã®ECCããŒã¹ã®æå·ã·ã¹ãã ã«å¯ŸåŠããããæ·±ãããã¥ã¡ã³ããèªãããšã§ç¥èãåºããããšãã§ããŸãããã®èšäºãæžããšããç§ã¯å€ãã®è©³çŽ°ãã¹ãããããç°¡ç¥åãããçšèªã䜿çšããŸããããããã§ãªããã°ãã€ã³ã¿ãŒãããäžã«æ瀺ãããæ
å ±ãç解ããŠããªãã ãããšæããŸãããç§ã¯ãæ
å ±ã®åçŽããšå®å
šæ§ã®éã®è¯ã劥åç¹ãèŠã€ããããšãã§ãããšä¿¡ããŠããŸãããã ãããã®èšäºã ããèªãã åŸã¯ãECCã«åºã¥ããå®å
šãªæå·åã·ã¹ãã ãå®è£
ã§ããªãããšã«æ³šæããŠãã ãããã»ãã¥ãªãã£ã«ã¯ãå€ãã®åŸ®åŠã§ã¯ãããéèŠãªè©³çŽ°ã«é¢ããç¥èãå¿
èŠã§ããã¹ããŒãæ»æãšSonyãšã©ãŒã®èŠä»¶ãèŠããŠãããŠãã ããããããã¯ãå®å
šã§ãªãã¢ã«ãŽãªãºã ãäœæããæ¹æ³ãšãããããç°¡åã«æªçšã§ããæ¹æ³ã®2ã€ã®äŸã§ããããã§ã¯ãECCã®äžçãããã«æ·±ãæãäžããŠã¿ãããšãèããªããã©ãããå§ããŸããïŒãŸããåçŽãªãã£ãŒã«ãäžã®ã¯ã€ãšã«ã·ã¥ãã©ã¹æ²ç·ãèŠãŸããããä»ã®ã¿ã€ãã®æ²ç·ãšãã£ãŒã«ããããããšãç¥ã£ãŠããå¿
èŠããããŸãã- Koblitzã¯ãã€ããªãã£ãŒã«ãäžã§æ²ç·ãæããŸãããããã¯æ¥å圢ã®æ²ç·ã§ãy2+xy=x3+ax2+1 ïŒã©ã a -0ãŸãã¯1ïŒãå«ãæéäœäž 2m èŠçŽ ïŒãã㧠m â ). .
nistk163
, nistk283
nistk571
( , 163, 283 571 ). - . x2+xy=x3+x2+b ïŒã©ã b â , ). , .
nistb163
, nistb283
nistb571
.
, , , . - x2+y2=1+dx2y2 ïŒã©ã d â 0 1). , , , , ( Pâ Q ã P=Q ã P=âQ , ...). (side-channel attack), , , .
( 2007 ), , Certicom NIST, . - Curve25519ãšEd25519ã¯ãããããECDHãšECDSAããªã¢ã³ãçšã«äœæããã2ã€ã®ç¹å¥ãªæ¥åæ²ç·ã§ãããšãã¯ãŒãºæ²ç·ãšåæ§ã«ããããã®2ã€ã®æ²ç·ã¯é«éã§ããããµãŒãããŒãã£ã®ãã£ãã«ã«å¯Ÿããæ»æãé²ãã®ã«åœ¹ç«ã¡ãŸãããšãã¯ãŒãºæ²ç·ãšåæ§ã«ããããã®2ã€ã®æ²ç·ã¯ãŸã æšæºåãããŠããããäžè¬çãªãœãããŠã§ã¢ã§ã¯äœ¿çšãããŠããŸããïŒ2014幎以éEd25519ããŒãã¢ããµããŒãããŠããOpenSSHãé€ãïŒã
ECCã®å®è£
ã®è©³çŽ°ã«èå³ãããå Žåã¯ãOpenSSLããã³GnuTLSã®ãœãŒã¹ãèªãããšããå§ãããŸãããããŠæåŸã«ãã¢ã«ãŽãªãºã ã®å®å
šæ§ãšå¹çã§ã¯ãªããæ°åŠçãªè©³çŽ°ã«èå³ãããå Žåã¯ã次ã®ããšãç¥ãå¿
èŠããããŸãã- æ¥åæ²ç·ã¯ãå±1ã®ä»£æ°å€æ§äœã§ãã
- å°åœ±å¹ŸäœåŠã§ã¯ç¡éé ç¹ãç 究ãããŸãããããã¯ãåäžãªåº§æšã䜿çšããŠè¡šãããšãã§ããŸãïŒãã ããæ¥åæ²ç·ã®æå·åã«ã¯å°åœ±å¹Ÿäœã®ã»ãšãã©ã®ããããã£ã¯å¿
èŠãããŸããïŒã
ãããŠãå Žã®çè«ãšãšãã«æéã®å Žãç 究ããããšãå¿ããªãã§ãã ããããã®ãããã¯ã«èå³ãããå Žåã¯ããã®ãããªããŒã¯ãŒããæ¢ã䟡å€ããããŸãããã®èšäºã¯æ£åŒã«çµäºããŸãããã¬ã³ããªãŒãªã³ã¡ã³ãããã€ãŒããæçŽãããããšããå€ãã®äººããé¢é£ãããããã¯ã«é¢ããä»ã®èšäºãæžããã©ããå°ããŸãããç§ã®çãã¯ïŒå€åãããªãã¯ããªãã®ææ¡ãéãããšãã§ããŸãããç§ã¯äœãçŽæããŸããã