æ°è«ã®é åçãªäžçãæ¢æ±ããæå·åã«ããããžã¿ã«éä¿¡ã®ä¿è·ã«ãããçŽ æ°ã®éèŠãªåœ¹å²ã«çŠç¹ãåœãŠãŸããæå¥œå®¶ãå°éå®¶åãã®å æ¬çãªã¬ã€ãã
æ°è«ïŒçŽ æ°ãšãã®çŸä»£æå·ã«ããã圹å²ã®è§£æ
æ°è«ã¯ããæ°åŠã®å¥³çããšèŠãªãããããšãå€ããäž»ã«æŽæ°ãšãã®ç¹æ§ã®ç ç©¶ã«å°å¿µããçŽç²æ°åŠã®äžåéã§ããæœè±¡çã«èŠãããããããŸããããæ°è«ã¯å€ãã®çŸå®äžçã®ã¢ããªã±ãŒã·ã§ã³ãæ¯ããŠãããæã泚ç®ãã¹ãã¯æå·ã®åéã§ãããã®èšäºã§ã¯ãæ°è«ã®åºæ¬çãªæŠå¿µãç¹ã«çŽ æ°ãæ¢æ±ããããžã¿ã«äžçãä¿è·ããäžã§ã®ãã®éèŠãªåœ¹å²ã瀺ããŸãã
æ°è«ãšã¯ïŒ
æ°è«ã¯ã次ã®ãããªåºç¯ãªãããã¯ãç¶²çŸ ããŠããŸãã
- å¯é€æ§ãšçŽ æ°
- åååŒãšã¢ãžã¥ã©æŒç®
- ãã£ãªãã¡ã³ãã¹æ¹çšåŒ
- 代æ°çæ°è«
- è§£æçæ°è«
ãã®æ žå¿ã«ãããŠãæ°è«ã¯æŽæ°ã®ç¹æ§ãšé¢ä¿ã調æ»ããŸãããã®ãšã¬ã¬ã³ããªèšŒæãšãæ°åŠããã³ã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ã®ä»ã®åéãšã®äºæ³å€ã®ã€ãªããã¯ããããé åçãªäž»é¡ã«ããŠããŸãã
çŽ æ°ïŒæŽæ°ã®æ§æèŠçŽ
çŽ æ°ãšã¯ã1 ãšããèªäœä»¥å€ã®æ£ã®çŽæ°ãæããªãã1 ãã倧ããèªç¶æ°ã§ããçŽ æ°ã®äŸãšããŠã¯ã2ã3ã5ã7ã11ã13ã17 ãªã©ããããŸããçŽ æ°ã§ãªãæ°ã¯åææ°ãšåŒã°ããŸãã
çŽ æ°ã¯ãä»ã®ãã¹ãŠã®æŽæ°ã®æ§æèŠçŽ ã§ãããããåºæ¬çãªãã®ã§ããç®è¡ã®åºæ¬å®çã¯ã1 ãã倧ãããã¹ãŠã®æŽæ°ã¯ãå æ°ã®é åºãé€ããŠãçŽ æ°ã®ç©ãšããŠäžæã«è¡šçŸã§ãããšè¿°ã¹ãŠããŸããäŸïŒ
12 = 2 Ã 2 Ã 3 = 22 Ã 3
30 = 2 Ã 3 Ã 5
100 = 2 Ã 2 Ã 5 Ã 5 = 22 Ã 52
ãã®äžæãªçŽ å æ°åè§£ã¯ãå€ãã®æå·åã¢ã«ãŽãªãºã ãæ§ç¯ãããåºç€ã§ãã
çŽ æ°ã®çºèŠ
çŽ æ°ãç¹å®ããããšã¯ãæ°åŠè ãäœäžçŽã«ãããã£ãŠé äºããŠããŸãããçŽ æ°ãèŠã€ããããã®ããã€ãã®æ¹æ³ããããŸããããã«ã¯ä»¥äžãå«ãŸããŸãã
- 詊è¡é€ç®ïŒæ° n ã 2 ãã ân ãŸã§ã®ãã¹ãŠã®æŽæ°ã§å²ããŸãããããã®ãããã n ãåçã«å²ããªãå Žåãn ã¯çŽ æ°ã§ããããã¯åçŽã§ããã倧ããªæ°ã«ã¯éå¹ççã§ãã
- ãšã©ãã¹ããã¹ã®ç¯©ïŒæå®ãããæŽæ°ãŸã§ã®ãã¹ãŠã®çŽ æ°ãèŠã€ããããã®å¹ççãªã¢ã«ãŽãªãºã ãæåã®çŽ æ°ã§ãã 2 ããå§ããŠãåçŽ æ°ã®åæ°ãå埩çã«ããŒã¯ããããšã«ãã£ãŠæ©èœããŸãã
- çŽ æ°å€å®ãã¹ãïŒããæŽç·Žãããã¢ã«ãŽãªãºã ãããšãã°ãã©ãŒ-ã©ãã³çŽ æ°å€å®ãã¹ãïŒç¢ºççãã¹ãïŒãAKSçŽ æ°å€å®ãã¹ãïŒæ±ºå®çãã¹ãïŒã¯ãéåžžã«å€§ããªæ°ãçŽ æ°ã§ãããã©ããã倿ããããã«äœ¿çšãããŸãã
çŽ æ°ã®ååž
çŽ æ°ã¯ãæŽæ°ã®äžã§åçã«ååžããŠããŸãããæ°ã倧ãããªãã«ã€ããŠãçŽ æ°ã®å¯åºŠã¯æžå°ããŸããçŽ æ°å®çã¯ãäžããããæ° x 以äžã®çŽ æ°ã®æ°ãÏ(x) ã§ç€ºãããæ°ã®æŒžè¿çãªæšå®å€ãäžããŸãã
Ï(x) â x / ln(x)
ãã®å®çã¯ãçŽ æ°ååžã®é·æçãªåäœã«é¢ããæŽå¯ãæäŸããŸãã
æå·ïŒçŽ æ°ã§æ å ±ãä¿è·ãã
æå·ãšã¯ãæµã®ååšäžã§å®å šãªéä¿¡ãè¡ãããã®æè¡ã®å®è·µãšç ç©¶ã§ããçŸä»£ã®æå·ã¯ãæ°åŠçæŠå¿µã«å€§ããäŸåããŠãããçŽ æ°ã¯å€ãã®æå·åã¢ã«ãŽãªãºã ã§äžå¿çãªåœ¹å²ãæãããŠããŸãã
å€ãã®æå·ã·ã¹ãã ã®ã»ãã¥ãªãã£ã¯ãç¹å®ã®æ°è«çåé¡ãç¹ã«çŽ å æ°åè§£åé¡ãšé¢æ£å¯Ÿæ°åé¡ã®èšç®ã®é£ããã«åºã¥ããŠããŸãããããã®åé¡ã¯ãåŸæ¥ã®ã³ã³ãã¥ãŒã¿ã§ãããã解決ããããã®å¹ççãªïŒå€é åŒæéïŒã¢ã«ãŽãªãºã ãç¥ãããŠããªãããããé£ããããšèŠãªãããŠããŸãã
RSAïŒå ¬é鵿å·ã®åºç€
RSAïŒãªãã¹ã-ã·ã£ãã¢-ãšã€ãã«ãã³ïŒã¢ã«ãŽãªãºã ã¯ãæãåºã䜿çšãããŠããå ¬é鵿å·ã·ã¹ãã ã® 1 ã€ã§ãããã®ã»ãã¥ãªãã£ã¯ã倧ããªåææ°ããã®çŽ å æ°ã«åè§£ããããšã®é£ããã«äŸåããŠããŸãã
RSA ã®ä»çµã¿ã®ç°¡åãªæŠèŠã次ã«ç€ºããŸãã
- éµã®çæïŒ
- 2 ã€ã®ç°ãªã倧ããªçŽ æ° p ãš q ãéžæããŸãã
- n = p à q ãèšç®ããŸãããããæ³ã§ãã
- Ï(n) = (p - 1) à (q - 1) ãèšç®ããŸããããã§ãÏ ã¯ãªã€ã©ãŒã®ããŒãã£ãšã³ã颿°ã§ãã
- 1 < e < Ï(n) ã§ãããgcd(e, Ï(n)) = 1ïŒe ãš Ï(n) ã¯äºãã«çŽ ïŒã§ããæŽæ° e ãéžæããŸããe ã¯å ¬éææ°ã§ãã
- d ããÏ(n) ãæ³ãšãã e ã®ã¢ãžã¥ã©ä¹æ³éæ°ãšããŠèšç®ããŸããã€ãŸããd à e â¡ 1 (mod Ï(n)) ã§ããd ã¯ç§å¯ææ°ã§ãã
- å ¬ééµã¯ (n, e) ã§ãã
- ç§å¯éµã¯ (n, d) ã§ãã
- æå·åïŒ
- ã¡ãã»ãŒãž mïŒæŽæ°ãšããŠè¡šãããïŒãæå·åããã«ã¯ãc = me mod n ãèšç®ããŸããããã§ãc ã¯æå·æã§ãã
- 埩å·åïŒ
- æå·æ c ã埩å·åããã«ã¯ãm = cd mod n ãèšç®ããŸãã
RSA ã®ã»ãã¥ãªãã£ã¯ãç¹ã« p ãš q ãååã«å€§ããå ŽåïŒæ°çŸãŸãã¯æ°åæ¡ïŒã倧ããªæ° n ããã®çŽ å æ° p ãš q ã«åè§£ããããšãèšç®äžé£ãããšããäºå®ã«äŸåããŠããŸããæ»æè ã n ãå æ°åè§£ã§ããå ŽåãÏ(n) ãç°¡åã«èšç®ããç§å¯éµ d ãæ±ºå®ã§ããŸãã
äŸïŒ p = 61ãq = 53 ãéžæãããšããŸãã
- n = 61 * 53 = 3233
- Ï(n) = (61-1) * (53-1) = 60 * 52 = 3120
- e = 17ïŒ3120 ãšäºãã«çŽ ïŒãéžæããŸãããã
- (17 * d) mod 3120 = 1 ãšãªã d ãèŠã€ããå¿ èŠããããŸããæ¡åŒµãŠãŒã¯ãªããã¢ã«ãŽãªãºã ã䜿çšãããšãd = 2753 ãèŠã€ãããŸãã
- å ¬ééµïŒïŒ3233ã17ïŒ
- ç§å¯éµïŒïŒ3233ã2753ïŒ
ã¡ãã»ãŒãž m = 123 ãæå·åããå ŽåïŒ
c = 12317 mod 3233 = 855
埩å·åããã«ã¯ïŒ
m = 8552753 mod 3233 = 123
ãã®äŸã§ã¯ã説æã®ããã«å°ããªæ°ã䜿çšããŠããŸããå®éã® RSA å®è£ ã§ã¯ãã»ãã¥ãªãã£ã確ä¿ããããã«ãã¯ããã«å€§ããªçŽ æ°ã䜿çšããŸãã
Diffie-Hellman éµäº€æ
Diffie-Hellman éµäº€æã¯ã2 ã€ã®åœäºè ãå®å šã§ãªããã£ãã«ãä»ããŠå ±æç§å¯éµã確ç«ã§ããæå·ãããã³ã«ã§ãããã®å ±æç§å¯éµã䜿çšããŠã察称éµã¢ã«ãŽãªãºã ã䜿çšããŠåŸç¶ã®éä¿¡ãæå·åã§ããŸãã
Diffie-Hellman ã®ã»ãã¥ãªãã£ã¯ãçŽ æ°ãšã¢ãžã¥ã©æŒç®ã«é¢é£ãã颿£å¯Ÿæ°åé¡ã®é£ããã«äŸåããŠããŸãã
ç°¡åãªèª¬æã次ã«ç€ºããŸãã
- ã¢ãªã¹ãšããã¯ã倧ããªçŽ æ° p ãšããŒã¹ g (ããã§ãg ã¯æ³ p ã«é¢ããåå§æ ¹) ã«åæããŸããp ãš g ã¯å ¬éãããŠããŸãã
- ã¢ãªã¹ã¯ç§å¯ã®æŽæ° a ãéžæããA = ga mod p ãèšç®ããŸããã¢ãªã¹ã¯ A ãããã«éä¿¡ããŸãã
- ããã¯ç§å¯ã®æŽæ° b ãéžæããB = gb mod p ãèšç®ããŸãããã㯠B ãã¢ãªã¹ã«éä¿¡ããŸãã
- ã¢ãªã¹ã¯å ±æç§å¯éµ s = Ba mod p ãèšç®ããŸãã
- ããã¯å ±æç§å¯éµ s = Ab mod p ãèšç®ããŸãã
ã¢ãªã¹ãšããã®äž¡æ¹ã¯ãç§å¯ã®æŽæ° a ãš b ãçŽæ¥äº€æããããšãªããåãå ±æç§å¯éµ s ã«å°éããŸããpãgãAãããã³ B ãç¥ã£ãŠããçèŽè ã¯ã颿£å¯Ÿæ°åé¡ãè§£ã㊠a ãŸã㯠b ãèšç®ããå ±æç§å¯éµ s ãæ±ºå®ããå¿ èŠããããŸãã
äŸïŒ p = 23ãg = 5 ãšããŸãããã
- ã¢ãªã¹ã¯ a = 6 ãéžæããŸããA = 56 mod 23 = 8
- ãã㯠b = 15 ãéžæããŸããB = 515 mod 23 = 19
- ã¢ãªã¹ã¯ 8 ãããã«éä¿¡ãããã㯠19 ãã¢ãªã¹ã«éä¿¡ããŸãã
- ã¢ãªã¹ã¯ s = 196 mod 23 = 2 ãèšç®ããŸã
- ãã㯠s = 815 mod 23 = 2 ãèšç®ããŸã
å ±æç§å¯ã¯ 2 ã§ããç¹°ãè¿ããŸãããå®éã®æ§æã§ã¯ãã¯ããã«å€§ããªçŽ æ°ã䜿çšããŸãã
æ¥åæ²ç·æå·ïŒECCïŒ
æ¥åæ²ç·æå·ïŒECCïŒã¯ãæéäœäžã®æ¥åæ²ç·ã®ä»£æ°æ§é ã«åºã¥ãå ¬é鵿å·ã·ã¹ãã ã§ããECC ã¯ãRSA ãšåçã®ã»ãã¥ãªãã£ãããå°ããªéµãµã€ãºã§æäŸãããããã¢ãã€ã«ããã€ã¹ãçµã¿èŸŒã¿ã·ã¹ãã ãªã©ããªãœãŒã¹ãå¶çŽãããç°å¢ã«é©ããŠããŸããECC ãæ°è«ãšãæ¥åæ²ç·é¢æ£å¯Ÿæ°åé¡ã®é£ããã«äŸåããŠããŸãã
ECC ã§ã¯ãã¢ãžã¥ã©ææ°æŒç®ã䜿çšãã代ããã«ãæå·åæŒç®ã¯æ¥åæ²ç·æŒç®ïŒç¹å ç®ãšã¹ã«ã©ãŒä¹ç®ïŒã«åºã¥ããŠããŸããECC ã®ã»ãã¥ãªãã£ã¯ãæ¥åæ²ç·äžã® 2 ã€ã®ç¹ãé¢é£ä»ããã¹ã«ã©ãŒåæ°ãèŠã€ããããšãå«ããæ¥åæ²ç·é¢æ£å¯Ÿæ°åé¡ãè§£ãããšãèšç®äžé£ãããšããäºå®ã«äŸåããŠããŸãã
ECC ã¯ã次ã®ãããªããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã§åºã䜿çšãããŠããŸãã
- ããžã¿ã«çœ²å (äŸ: ECDSA)
- éµäº€æ (äŸ: ECDH)
- æå·å
æå·ãšçŽ æ°ã®æªæ¥
éåã³ã³ãã¥ãŒã¿ã®ç¶ç¶çãªéçºã¯ãçŸåšã®å€ãã®æå·åã¢ã«ãŽãªãºã ã«å€§ããªè åšããããããŠããŸããéåã¢ã«ãŽãªãºã ã§ããã·ã§ã¢ã®ã¢ã«ãŽãªãºã ã¯ã倧ããªæ°ãå¹ççã«å æ°åè§£ãã颿£å¯Ÿæ°åé¡ã解決ã§ãããããRSAãDiffie-Hellmanãããã³ ECC ã广çã«ç Žå£ããŸãã
ãã®è åšã«å¯Ÿå¿ããŠãç ç©¶è ã¯èéåæå·ïŒPQCïŒãç©æ¥µçã«éçºããŠããŸããããã«ã¯ãåŸæ¥ã®ã³ã³ãã¥ãŒã¿ãšéåã³ã³ãã¥ãŒã¿ã®äž¡æ¹ããã®æ»æã«èæ§ããããšä¿¡ããããŠããæå·åã¢ã«ãŽãªãºã ãå«ãŸããŸããå€ãã® PQC ã¢ã«ãŽãªãºã ã¯ãæ ŒåããŒã¹ã®æå·ãã³ãŒãããŒã¹ã®æå·ãå€å€æ°æå·ãããã·ã¥ããŒã¹ã®æå·ãªã©ãRSA ããã³ ECC ã§äœ¿çšãããŠãããã®ãšã¯ç°ãªãæ°åŠçåé¡ã«åºã¥ããŠããŸãã
éåã³ã³ãã¥ãŒãã£ã³ã°ã®æä»£ã§ããæ°è«ãç¹ã«çŽ æ°ã¯ãæå·ã§åœ¹å²ãæããç¶ããå¯èœæ§ããããŸããããšãã°ãçŽ æ°ã¯ãæ ŒåããŒã¹ã®æå·ã®æ Œåæ§é ã®æ§ç¯ããããã·ã¥ããŒã¹ã®æå·ã®ããã·ã¥é¢æ°ã®èšèšã«äœ¿çšãããå ŽåããããŸãã
çŸå®äžçã®ã¢ããªã±ãŒã·ã§ã³
説æããååã¯ãã°ããŒãã«ã«å®è£ ãããŠããŸããæ¬¡ã«ãããã€ãã®å€æ§ãªäŸã瀺ããŸãã
- å®å šãªãªã³ã©ã€ã³ååŒïŒã¯ã¬ãžããã«ãŒãã䜿çšããŠãªã³ã©ã€ã³ã§ååãè³Œå ¥ããå ŽåãååŒã¯éåžžãTLS / SSL ãããã³ã«ã«äŸåãã HTTPS ã䜿çšããŠä¿è·ãããŸãããããã®ãããã³ã«ã¯ãå€ãã®å ŽåãRSA ãŸã㯠ECC ã䜿çšããŠãã©ãŠã¶ãš Web ãµãŒããŒã®éã®å®å šãªæ¥ç¶ã確ç«ããçèŽããæ©å¯æ å ±ãä¿è·ããŸãã
- ããžã¿ã«çœ²åïŒããžã¿ã«çœ²åã¯ãããžã¿ã«ããã¥ã¡ã³ãã®ä¿¡é Œæ§ãšæŽåæ§ãæ€èšŒããããã«äœ¿çšãããŸããRSA ã ECDSAïŒæ¥åæ²ç·ããžã¿ã«çœ²åã¢ã«ãŽãªãºã ïŒãªã©ã®ã¢ã«ãŽãªãºã ã¯ãçŽ æ°ãšã¢ãžã¥ã©æŒç®ã䜿çšããŠãåœé ãå°é£ãªããžã¿ã«çœ²åãäœæããŸããããã¯ãã·ã³ã¬ããŒã«ãªã©ã®åœã®æ³çææåã®ããå¥çŽããæ¬§å·é£åã®é»åããã¥ã¡ã³ãã®æ€èšŒã«äœ¿çšãããŸãã
- å®å šãªéä¿¡ã¢ããªïŒ Signal ã WhatsApp ãªã©ã®å€ãã®ã¡ãã»ãŒãžã³ã°ã¢ããªã¯ããšã³ãããŒãšã³ãã®æå·åã䜿çšããŠãäŒè©±ã®ãã©ã€ãã·ãŒãä¿è·ããŸãããããã®ã¢ããªã¯ãå€ãã®å ŽåãDiffie-Hellman éµäº€æãŸã㯠ECC ã䜿çšããŠãå®å šãªéä¿¡ãã£ãã«ã確ç«ããŸãã
- æå·éè²šïŒ Bitcoin ãªã©ã®æå·é貚ã¯ãæ¥åæ²ç·æå·ïŒå ·äœçã«ã¯ãsecp256k1 æ²ç·ã䜿çšãã ECDSAïŒã䜿çšããŠããã©ã³ã¶ã¯ã·ã§ã³ãä¿è·ããããžã¿ã«è³ç£ã®æææš©ãå¶åŸ¡ããŸããBitcoin ã®ã°ããŒãã«ãªã¢ã¯ã»ã¹æ§ãšåæ£åã¯ããããã®ååã®å¹ åºãã¢ããªã±ãŒã·ã§ã³ã瀺ããŠããŸãã
- VPNïŒä»®æ³ãã©ã€ããŒããããã¯ãŒã¯ïŒïŒ VPN ã¯æå·ãããã³ã«ã䜿çšããŠãããã€ã¹ãšãªã¢ãŒããµãŒããŒã®éã«å®å šãªãã³ãã«ãäœæããã€ã³ã¿ãŒããããã©ãã£ãã¯ãååããä¿è·ããŸããVPN ã¯éåžžã察称æå·åã« AESïŒAdvanced Encryption StandardïŒãªã©ã®ã¢ã«ãŽãªãºã ã䜿çšããéµäº€æã« RSA ãŸã㯠ECC ã䜿çšããŸããVPN ã¯ãæ€é²ãå³ããåœã§ã®å®å šãªã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ã«äžå¯æ¬ ã§ãã
- Secure ShellïŒSSHïŒïŒ SSH ã¯ããªã¢ãŒããµãŒããŒã«å®å šã«ã¢ã¯ã»ã¹ããŠç®¡çã§ããæå·åãããã¯ãŒã¯ãããã³ã«ã§ããSSH ã¯ãèªèšŒãšéµäº€æã« RSA ã ECC ãªã©ã®ã¢ã«ãŽãªãºã ã䜿çšããŸãã
çµè«
çŽ æ°ã«çŠç¹ãåœãŠãæ°è«ã¯ãåãªãæœè±¡çãªæ°åŠåéã§ã¯ãããŸãããããã¯çŸä»£ã®æå·ã®åºæ¬çãªæ±ã§ãããªã³ã©ã€ã³ååŒã®ä¿è·ããæ©å¯éä¿¡ã®ä¿è·ãŸã§ãçŽ æ°ã¯ããžã¿ã«äžçã®æ©å¯æ§ãæŽåæ§ãããã³ä¿¡é Œæ§ã確ä¿ããäžã§éèŠãªåœ¹å²ãæãããŠããŸãããã¯ãããžãŒãé²åãç¶ããã«ã€ããŠãæ°è«ãšæå·ã®çžäºäœçšã¯ãæ å ±ãä¿è·ãããŸããŸãçžäºæ¥ç¶ããã瀟äŒã«ãããä¿¡é Œãç¶æããããã«äžå¯æ¬ ãªãŸãŸã«ãªããŸããèéåæå·ã®ç¶ç¶çãªç ç©¶éçºã¯ãæ°ããªè åšã«çŽé¢ããŠããããžã¿ã«ãªæªæ¥ãä¿è·ãããšããã³ãããã¡ã³ãã瀺ããŠããŸãã
ããã«åŠç¿ãã
- æžç±ïŒ
- ãæ°è«å ¥éãG.H.ããŒãã£ãšE.M.ã©ã€ãè
- ãåçæ°è«ãããããã»Mã»ããŒãã³è
- ãæå·çè«ãšå®è·µããã°ã©ã¹ã»ã¹ãã£ã³ãœã³ãšã¢ãŒã©ã»ãã¿ãŒãœã³è
- ãªã³ã©ã€ã³ã³ãŒã¹ïŒ
- CourseraïŒãã³ã»ããŒãã«ããæå·IïŒIIïŒã¹ã¿ã³ãã©ãŒã倧åŠïŒ
- edXïŒã¯ãªã¹ããã»ããŒã«ã«ããæå·å ¥éïŒã«ãŒã«å€§åŠããŒãã ïŒ
- ãŠã§ããµã€ãïŒ
- ãŠã£ãããã£ã¢ïŒæ°è«ãçŽ æ°ãæå·ãRSA
- ã«ãŒã³ã¢ã«ãããŒïŒæ°è«