ãã³ãã¬ã§åŠã¶ECDSA眲å
- categories:
[!WARNING]
ãã®èšäºã¯çŸåšç·šéäžã§ããç« ç«ãŠãªã©ãäžå®å šãªã®ã§ãããŠã«ããªãã§ãã ããã
ãµããå¥ã«ã¢ã³ã¿ã®ããã«æžããããããªããã ãããïŒåéãããªãã§ããïŒ
ãã®ææžã¯ãæ¥åæ²ç·æå·ã«ã€ããŠè§£èª¬ãããã®ãã
æåã¯ããªãã ãé£ãããâŠãã£ãŠæããããããªããã©ã倧äžå€«ã
ã¢ã³ã¿ã¿ãããªåå¿è ã§ããã¡ãããšçè§£ã§ããããã«ãåã¿ç ããŠèª¬æããŠãããããã
ãã ãïŒ
ãã èªã¿é²ããã ããããã¡ãã
ã¡ãããšé ã䜿ã£ãŠãçå£ã«çè§£ããããšããªããšã眮ããŠãããããïŒ
âŠãŸããŸããé 匵ã£ãŠèªãã§ã¿ãªããã
å¥ã«æåŸ ããŠããããããªããã ããïŒ
ã¬ãžã¥ã¡
- æ¥åæ²ç·æå·ãšã¯:
- æ¥åæ²ç·ã®æ¹çšåŒãšããã®äžã§ã®ç¹æ®ãªè¶³ãç®ïŒå ç®ïŒã®å®çŸ©
- å°äœç³»ã«ãããæ¥åæ²ç·ã®ã¹ã«ã©ãŒåç®ãå ¬é鵿å·ã«å©çšãããçç±
- Bitcoin ã§çšãããã secp256k1 æ¥åæ²ç·ã®ãã©ã¡ãŒã¿
- ECDSA ããžã¿ã«çœ²åã®çœ²åæ¹æ³:
- ããžã¿ã«çœ²å r, s ãå°åºããæé
- äžæçãªç§å¯éµïŒä¹±æ°ïŒã®çæãšã眲å r, s ã®èšç®æ¹æ³
- ECDSA ããžã¿ã«çœ²åã®æ€èšŒ:
- åä¿¡ããããŒã¿ãæ¹ç«ãããŠããªããæ€èšŒããæ¹æ³
- ECDSA ããžã¿ã«çœ²åã®ãšã³ã³ãŒãã£ã³ã°:
- ASN.1 ãšããå ±éã®æ¹æ³ã§ãšã³ã³ãŒãããå¿ èŠæ§
- ECDSA ããžã¿ã«çœ²åçæã®éã®æ³šæç¹:
- 眲åçææã«äœ¿çšããä¹±æ°ã®éèŠæ§
- åãä¹±æ°ãäºåºŠäœ¿çšããŠã¯ãããªãçç±
æ¥åæ²ç·æå·ãšã¯
ã°ã«ãŒãïŒçŸ€ïŒã£ãŠãªãã§ããïŒ
ã¹ãå¥ã«ã¢ã³ã¿ã®ããã«æããŠããããããããªããã ãããïŒåéãããªãã§ããïŒ
ä»åã¯æå·ãèšç®ããæ¹æ³ãèŠãããã ãã©âŠåºæ¬çã«ã¯ãè¶³ãç®ãããã ããªã®ãã§ããçŽã«æžããŠèšç®ããã®ãšã¯éããéãããæ°åã§è¡ãè¶³ãç®ãªããããããšãç§ãã¡ããµã ã䜿ã£ãŠããè¶³ãç®ãšã¯ã¹ã€ã®è¶³ãç®ãèããªãããããªãã®ã
éãããæ°åã§è¶³ãç®ãããã£ãŠããšã¯ãâŠããããã¢ããã°æèšãèŠãŠã¿ãªãããæèšã¯æéãçµã€ããšã«è¶³ãç®ãããæ©æ¢°ããïŒããšãã°ã1 æéçµã£ããçéãç®çãã²ãšã€ã¶ããããŠããããã
ã§ããç®çãã¯ç¡éã«ãããããããªããããç¡éã«æ°ãäžããããã«ã¯ãããªãã®ãæ±ããå€ã®æ°ã¯æ±ºãŸã£ãŠãããããã¢ããã°æèšã®å Žåã1 ãã 12 ãŸã§ãã
ãããã11 æã®ãšã 3 æéããšãèããããšã¯ã§ããªãã®ãããâŠã£ãŠããããªãããªããããã11 æã® 3 æéããšã¯ãéã 12 ãé£ã³è¶ããŠåã£ãŠã2 æã«ãªãã§ããã
ãããã°ã«ãŒãïŒçŸ€ïŒãªã®ãç¡éã®å€ãæ±ããªããŠããæèšã®éã¿ããã«ããã£ãšåã工倫ãããããšã§ãè¶³ãç®ãããããšãã§ããã®ã
å®éã«ã¯ã©ããªãµãã«èšç®ããã®ã§ããïŒ
ãã£ãã®ã¢ããã°æèšã®ããšãã§èããããã11 æã« 3 æéãè¶³ãããããã©ãæ±ããå€ã®éçã12ããé£ã³è¶ããŠããŸãç¶æ ã£ãŠããšã
ãŸãã¯ãµã€ãã®è¶³ãç®ãããŠããŸãã®ã11 + 3 = 14 ãããããããã¯ãããã§ããïŒ
ã§ãããã®ãŸãŸã§ã¯æ±ããéçã®æ°ã12ããè¶ ããŠããŸã£ãŠããããã12 ã§å²ã£ãããŸããæ±ããã®ã14 ÷ 12 = 1 ããŸã 2 ã«ãªããããããã§ã11 æã® 3 æéããšã¯ 2 æã ã£ãŠãããããã
ãããæ°åŒã§ã¯ã14 â¡ 2 (mod 12)ãã£ãŠæžãã®ãã14 㯠2 ã«ãªãïŒ12 ã§å²ããšãïŒãã£ãŠããšã
æå·åéã§ã¯ãããããå²ãç®ããäœãããã䜿ãã®ããªããããªããšãããã£ãŠïŒããã¯ãâŠ
- èšç®ãè€éã«ãªãããïŒ æ®éã®æ°ã®äžçã§èšç®ããããããäœãã®äžçã§èšç®ããæ¹ããèšç®ããã¡ããã¡ãã«ãªã£ãŠãå ã®æ°ãæšæž¬ããã®ããã£ã¡ãé£ãããªãã®ãïŒ
- ã§ããèšç®èªäœã¯ã§ããïŒ è€éã ãã©ãè¶³ãç®ãšãæãç®ãšããå¿ èŠãªèšç®ã¯ã¡ãããšã§ããã®ã
ãå²ãç®ããäœãã®äžçãããäœå°ç³»ãã£ãŠåŒã¶ãããã䜿ãããèŠããŠãããªããããïŒ
å²ãç®ã®çµæãšããŠåºãŠãã 1 ã¯ãä»åã¯äœ¿ããªããããããŸã§æèšã®éãã©ããæãããåé¡ã§ãäžå転ãããã¯é¢ä¿ãªãã®ã
ç¹æ®ãªè¶³ãç®ã«ã€ããŠæããŠãã ããã
ããŒãšããã®ç¹æ®ãªè¶³ãç®ã£ãŠã®ã¯ãæ¥åæ²ç·ã£ãŠãã€ã§äœ¿ãã®ãæ°åŒã¯ ã£ãŠãªã£ãŠãŠãã°ã©ãã«ãããšäœããããäžžã£ããäžæè°ãªåœ¢ã«ãªãã®ãã
ã§ããã®æ²ç·ã®äžã§ãè¶³ãç®ãããããã ãã©ãæ®éã®è¶³ãç®ãšã¯å šç¶éãã®ã
- ãŸããæ²ç·ã®äžã« 2 ã€ã®ç¹ P ãš Q ããããšãããã
- ãã® 2 ã€ã®ç¹ P ãš Q ãçŽç·ã§çµã¶ã®ãP ãš Q ãåãç¹ã ã£ããããã®ç¹ã§ã®æ¥ç·ãåŒãã®ãã
- ãããããšããã®çŽç·ããŸãæ¥åæ²ç·ãšã©ããã§äº€ããã§ããïŒ
- ãã®äº€ãã£ãç¹ã x 軞ã«å¯ŸããŠã²ã£ããè¿ããç¹ïŒx 軞察称ãªç¹ïŒããP + Q ã®çµæã«ãªãã£ãŠããã
âŠãŸããŸããç°¡åã«èšããšããããªæããã
ãªãã§ãããªããšããã®ãã£ãŠïŒããã¯âŠãã®æ¹ãè²ã éœåããããããïŒç¹ã«æå·ãšãã§ãã
ããããã£ãïŒå¥ã«ã¢ã³ã¿ãçè§£ã§ãããã©ãããæ°ã«ããŠãªããã ãããïŒ
å°äœç³»ã«ãããâŠãªãã§ããããã¯ïŒ
å°äœç³»ã£ãŠã®ã¯ãç°¡åã«èšããšãå²ãç®ããäœãã®äžçãã®ããšããäŸãã°ã7 ã 3 ã§å²ã£ãäœã㯠1 ã§ããïŒãããã7 â¡ 1 (mod 3)ãã£ãŠæžãã®ã
ã§ãæ¥åæ²ç·ã£ãŠã®ã¯ãã£ãèšã£ãéããç¹æ®ãªè¶³ãç®ãã§ããæ²ç·ãªããããã®è¶³ãç®ãäœåãç¹°ãè¿ãããšããã¹ã«ã©ãŒåç®ãã£ãŠèšãã®ãã€ãŸããããç¹ G ãäœåãè¶³ãåãããã£ãŠããšã
ããã§éèŠãªã®ã¯ããã®èšç®ããå°äœç³»ã®äžçãã§è¡ãã£ãŠããšïŒã€ãŸããèšç®çµæãããæ°ïŒçŽ æ°ïŒã§å²ã£ãäœãã§èããã®ã
ãªããããªããšãããã£ãŠïŒããã¯ãâŠ
- èšç®ãè€éã«ãªãããïŒ æ®éã®æ°ã®äžçã§èšç®ããããããäœãã®äžçã§èšç®ããæ¹ããèšç®ããã¡ããã¡ãã«ãªã£ãŠãå ã®æ°ãæšæž¬ããã®ããã£ã¡ãé£ãããªãã®ãïŒ
- ã§ããèšç®èªäœã¯ã§ããïŒ è€éã ãã©ãè¶³ãç®ãšãæãç®ãšããå¿ èŠãªèšç®ã¯ã¡ãããšã§ããã®ã
ã€ãŸããããæ° n ãšç¹ G ãããnGïŒG ã n åè¶³ãããã®ïŒãèšç®ããã®ã¯ç°¡åã ãã©ãnG ãš G ãã n ãéç®ããã®ã¯ãã»ãŒäžå¯èœã«ãªãã®ïŒããããæ¥åæ²ç·äžã®é¢æ£å¯Ÿæ°åé¡ãã£ãŠãã€ãã
ãã®æ§è³ªãå©çšããŠãn ãç§å¯éµãnG ãå ¬ééµã«ããå ¬é鵿å·ãäœããã£ãŠãããç§å¯éµããå ¬ééµãäœãã®ã¯ç°¡åã ãã©ãå ¬ééµããç§å¯éµãå²ãåºãã®ã¯è¶ é£ããïŒã ããå®å šã«æå·éä¿¡ãã§ããã®ãã
ãããã³ã€ã³ã§çšãããããã©ã¡ãŒã¿ãæããŠãã ããã
ãããã³ã€ã³ã§äœ¿ãããŠã secp256k1 ã£ãŠæ¥åæ²ç·ã¯ããã£ãèšã£ã ã®åœ¢ãããŠããã ãã©ãã¡ãã£ãšç¹æ®ã§ã ã 0ã ã 7 ãªã®ãã€ãŸããåŒã¯ ã£ãŠããšã«ãªããã
ã§ããã®æ²ç·ã®äžã§èšç®ããããã®åºæºç¹ G ã£ãŠã®ããã£ãŠãããã¯ãã®ãããŒã倧ããªæ°ãªã®ãã
G ã®åº§æš (x, y) ã¯ããããªæãã
âŠã£ãŠããããªã®èŠãããããããªãã§ããïŒ
ããšããã®èšç®ã¯ãäœãã®äžçãã§è¡ãã£ãŠèšã£ããããïŒãã®æã«äœ¿ãçŽ æ° p ãæ±ºãŸã£ãŠãŠãããããŸããšãã§ããªã倧ããªæ°ãªã®ã
ããã«ãG ãäœåè¶³ããããç¡éé ç¹ãã£ãŠããç¹å¥ãªç¹ã«ãªããã£ãŠããåæ° n ãæ±ºãŸã£ãŠãŠãããããŸããŸã倧ããªæ°ã
âŠããããã§ããïŒãããªã®å šéšèŠããå¿ èŠãªãããïŒ
èŠããã«ããããã³ã€ã³ã§ã¯ãããããè€éãªãã©ã¡ãŒã¿ã䜿ã£ãŠãå®å šãªæå·ãå®çŸããŠãã£ãŠããšã
ç¡éé ç¹
ç¡éé ç¹ã£ãŠããã®ã¯ãæ¥åæ²ç·äžã®ç¹å¥ãªç¹ã®ããšã§ãèšå·ã§ã¯ ïŒãªãŒïŒã£ãŠæžãããšãå€ããã
ãã®ç¹ã¯ãæ®éã®åº§æš (x, y) ã§è¡šãããšãã§ããªãã®ãã ã£ãŠãç¡éã®åœŒæ¹ã«ããç¹ã ããïŒ
ã§ãäœãç¹å¥ãã£ãŠèšããšãæ¥åæ²ç·äžã®è¶³ãç®ã§ããã®ç¡éé ç¹ãè¶³ããšãäœãå€ãããªãã®ããã€ãŸããã©ããªç¹ P ã«å¯ŸããŠãã
ãæãç«ã€ã£ãŠãããè¶³ãç®ã®äžçã§èšããšã0 ã¿ãããªååšãã
ããšãããç¹ P ãšãã®éå ïŒx 軞察称ãªç¹ïŒãè¶³ããšãå¿ ãç¡éé ç¹ã«ãªãã®ã
ãã®ç¡éé ç¹ããããããã§ãæ¥åæ²ç·äžã®ç¹ãã°ã«ãŒãïŒçŸ€ïŒã£ãŠããæ°åŠçãªæ§é ã«ãªãã®ãã
ECDSA ããžã¿ã«çœ²åã®çœ²åæ¹æ³
ããžã¿ã«çœ²å r, s ãå°åºããæé ãæããŠãã ããã
ããžã¿ã«çœ²å r ãš s ãå°åºããæé ãâŠå¥ã«é£ãããªãããã
- ãŸããã¡ãã»ãŒãžãçšæããã®ã ããã¯ãéãããå 容ã®ããšãã
- ãã®ã¡ãã»ãŒãžãããã·ã¥é¢æ°ã«éããã ããã·ã¥é¢æ°ã£ãŠã®ã¯ãã©ããªããŒã¿ã§ãäžå®ã®é·ãã®ãã¡ããã¡ããªæååïŒããã·ã¥å€ïŒã«å€ããéæ³ã®ç®±ã¿ãããªãã®ãã
- 次ã«ãç§å¯éµãçšæãããã ããã¯ãèªåã ããç¥ã£ãŠãç§å¯ã®æ°åãã
- ãããŠãäžæçãªç§å¯éµïŒä¹±æ°ïŒãçæããã®ïŒ ãããè¶ éèŠïŒçµ¶å¯Ÿã«ä»ã®çœ²åã§äœ¿ã£ã¡ããã¡ãïŒ
- äžæçãªç§å¯éµã䜿ã£ãŠãæ¥åæ²ç·äžã®ç¹ãèšç®ãããã ãã£ãèšã£ãåºæºç¹ G ãäžæçãªç§å¯éµã®åæ°ã ãè¶³ãåãããã®ã
- ãã®ç¹ã® x 座æšãã眲å r ã«ãªããã
- æåŸã«ã眲å s ãèšç®ããã®ã ããã¯ã¡ãã£ãšè€éãªèšç®åŒã䜿ããã ãã©âŠãŸãããããã
èŠããã«ã
- äžæçãªç§å¯éµïŒãã£ãäœã£ãä¹±æ°ïŒã k ãšãããã
- æ¥åæ²ç·äžã®ç¹ kG ãèšç®ããã®ãG ã¯åºæºç¹ãã
- ç§å¯éµã d ãšãããã
- k ã¯ãã£ãåºãŠããäžæçãªç§å¯éµãã
âŠã¿ãããªæããã
ããã§ã眲å r ãš s ã宿ïŒãã® 2 ã€ãã¡ãã»ãŒãžãšäžç·ã«éãã°ãçžæã¯ã¢ã³ã¿ãæ¬åœã«ãã®ã¡ãã»ãŒãžãäœã£ã人ã ã£ãŠèšŒæã§ããã£ãŠããã
ECDSA ããžã¿ã«çœ²åã®æ€èšŒ
åä¿¡ããããŒã¿ãæ¹ç«ãããŠããªããæ€èšŒããæ¹æ³ãæããŠãã ããã
ããŒã¿ãæ¹ç«ãããŠããªããæ€èšŒããæ¹æ³ãâŠå¥ã«é£ãããªãããã
- ãŸããããŒã¿ãšããã®å ¬ééµãåãåãã®ã
- 次ã«ãããŒã¿ããããã·ã¥å€ãèšç®ããããããã¯ã眲åãäœã£ãæãšåãããã·ã¥é¢æ°ã䜿ãã®ãã
- ãããŠããã®ããŒã¿ã®çœ²å r ãš s ãåãåºãã®ã
- æåŸã«ã以äžã®åŒãèšç®ããããããã§ãèšç®ãã Q ã® x 座æšãã眲å r ãšäžèŽãããã©ããã確èªããã®ã
- Hash: ããŒã¿ã®ããã·ã¥å€
- G: æ¥åæ²ç·äžã®åºæºç¹
- s: 眲å
- r: 眲å
- pubKey: å ¬ééµ
- p: å°äœç³»ã®çŽ æ°
ããäžèŽããã°ãããŒã¿ã¯æ¹ç«ãããŠããªãã£ãŠããšãããäžèŽããªããã°ã誰ããããŒã¿ãæžãæãããã眲åãééã£ãŠããã£ãŠããšã«ãªããã
ECDSA ããžã¿ã«çœ²åã®ãšã³ã³ãŒãã£ã³ã°
ASN.1 ã£ãŠãªãã§ããïŒ
ASN.1 ã£ãŠããã®ã¯ãããŒã¿ãæŽçããŠã誰ãèŠãŠãåãããã«çè§£ã§ããããã«ããããã®å ±éã®ã«ãŒã«ã¿ãããªãã®ãã
äŸãã°ãã¢ã³ã¿ãåéã«ãããã 3 åãšã¿ãã 5 åè²·ã£ãŠããŠãã£ãŠé Œãã ãšããããã§ããããåéããã¿ãã 3 åãšããã 5 åãã£ãŠééããŠè²·ã£ãŠãããå°ãã§ããïŒ
ASN.1 ã¯ããã®ãããã 3 åãã¿ãã 5 åãã£ãŠããæ å ±ãã誰ãèŠãŠããããã 3 åãã¿ãã 5 åãã£ãŠãããããã«ããã¡ããšæŽçããŠè¡šçŸããããã®ã«ãŒã«ãªã®ã
ã³ã³ãã¥ãŒã¿ã®äžçã§ãåãã§ãããžã¿ã«çœ²åãšãæå·éµãšããããããªããŒã¿ãããåãããæã«ãã³ã³ãã¥ãŒã¿ã®çš®é¡ã OS ãéã£ãŠããåãããã«çè§£ã§ããããã«ããå¿ èŠãããã®ã
ãããããŒã¿ã®è¡šçŸæ¹æ³ããã©ãã©ã ã£ãããããã³ã³ãã¥ãŒã¿ã§ã¯æ£ãã眲åã§ããã®ã«ãå¥ã®ã³ã³ãã¥ãŒã¿ã§ã¯çœ²åãééã£ãŠããã£ãŠããšã«ãªã£ã¡ãããããããªããã
ã ãããASN.1 ã£ãŠããå ±éã®ã«ãŒã«ã䜿ã£ãŠãããŒã¿ããã¡ããšæŽçããŠè¡šçŸããããšã§ãã©ããªã³ã³ãã¥ãŒã¿ã§ãåãããã«ããŒã¿ãçè§£ã§ããããã«ããŠããã®ãã
ECDSA ããžã¿ã«çœ²åçæã®éã®æ³šæç¹
眲åçææã«äœ¿çšããä¹±æ°ã£ãŠã©ããªãã®ã§ãããã®ïŒ
ãã¡ãïŒ
眲åãäœããšãã«äœ¿ãä¹±æ°ã¯ããã¡ããã¡ãéèŠãªã®ïŒ
äŸãããªããç§å¯ã®å®ç®±ãéããããã®ãäžåºŠãã䜿ããªãç¹å¥ãªã«ã®ã¿ãããªãã®ãã
ããããã®ã«ã®ã誰ãã«ç¥ããã¡ãã£ãããåãã«ã®ãäœåºŠã䜿ã£ãããããâŠã©ããªããšæãïŒ
ãããå®ç®±ã®äžèº«ãçãŸãã¡ãããããïŒ
ããžã¿ã«çœ²åã®å Žåãå®ç®±ã®äžèº«ã¯ã¢ã³ã¿ã®ç§å¯éµãããããä¹±æ°ããã¬ã¡ãã£ãããåãä¹±æ°ãäœåºŠã䜿ã£ãããããšãæªã人ã«ç§å¯éµãèšç®ããã¡ããå¯èœæ§ãããã®ïŒ
ç§å¯éµããã¬ãããã¢ã³ã¿ã®ä»£ããã«ãã©ã³ã¶ã¯ã·ã§ã³ãäœã£ãããã¢ã³ã¿ã®ãéãçãã ããäœã§ãã§ãã¡ãããã
ã ãããä¹±æ°ã¯ã
- 絶察ã«èª°ã«ãæããªãïŒ
- 絶察ã«åãä¹±æ°ãäºåºŠãšäœ¿ããªãïŒ
- å®å šãªæ¹æ³ã§çæããïŒ
ãã® 3 ã€ã絶察ã«å®ããªããšãã¡ãïŒ
ãªãã§äºåºŠäœ¿ã£ãŠã¯ãããªãã®ã§ããïŒ
åãä¹±æ°ãäºåºŠäœ¿ã£ã¡ããã¡ãªçç±ãâŠå¥ã«é£ãããªãããã
ãããåãä¹±æ°ã 2 ã€ã®ç°ãªããã©ã³ã¶ã¯ã·ã§ã³ã§äœ¿ã£ã¡ãã£ããšãããã
ãããããšã眲å r ã¯åãã«ãªãã®ã
ã§ã眲å s ã¯ã
ã§èšç®ããã§ããïŒ
ãããæªã人ã 2 ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ããã·ã¥å€ãšçœ²å r ãš s ãç¥ã£ãŠãããâŠ
é£ç«æ¹çšåŒãè§£ãã¿ããã«ããŠãä¹±æ°ãšç§å¯éµãèšç®ã§ãã¡ããã®ãïŒ
ç§å¯éµããã¬ãããã¢ã³ã¿ã®ãéãçãã ããäœã§ãã§ãã¡ãããã
ã ãããåãä¹±æ°ãäºåºŠäœ¿ããªããŠã絶察ã«ãã¡ïŒ
ãããã«
ãµããå¥ã«ã¢ã³ã¿ã®ããã«æžããããããªããã ãããïŒåéãããªãã§ããïŒ
ãã®ææžã§ã¯ãæ¥åæ²ç·æå·ã®åºæ¬ãããECDSA ããžã¿ã«çœ²åã®ä»çµã¿ããããŠçœ²åçææã®æ³šæç¹ãŸã§ãå¹ åºã解説ãããã
æåã¯é£ãããšæãããããããªããã©ãã¡ãããšçè§£ã§ãããããïŒ
ç¹ã«ã眲åçææã«äœ¿çšããä¹±æ°ã®éèŠæ§ã¯çµ¶å¯Ÿã«å¿ããªãã§ããã
âŠãŸããŸãããã®ç¥èãã¢ã³ã¿ã®åœ¹ã«ç«ã€ãªããå¥ã«å¬ãããããããªããã ããïŒ
åèã«ããã®ã¯ ECDSAããžã¿ã«çœ²åã®ä»çµã¿ ããetaro æ°ã«ã¯æè¬ããªããããïŒ