Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®èšäºã§ã¯ãClickOnce ãããã§ã¹ããªã©ã.NET ã§ãµããŒããããæå·åæ¹æ³ãšãã©ã¯ãã£ã¹ã®æŠèŠã«ã€ããŠèª¬æããŸãã
æå·åã®æŠèŠ
ã€ã³ã¿ãŒããããªã©ã®ãããªã㯠ãããã¯ãŒã¯ã§ã¯ããšã³ãã£ãã£éã®ã»ãã¥ãªãã£ã§ä¿è·ãããéä¿¡ææ®µã¯æäŸãããŸããã ãã®ãããªãããã¯ãŒã¯äžã®éä¿¡ã¯ãæ¿èªãããŠããªã第äžè ã«ãã£ãŠèªã¿åããããã倿Žããããããå¯èœæ§ããããŸãã æå·åã¯ãããŒã¿ã衚瀺ãããªãããã«ä¿è·ããããŒã¿ã倿Žããããã©ãããæ€åºããæ¹æ³ãæäŸãããã以å€ã®å Žåã¯ã»ãã¥ãªãã£ã§ä¿è·ãããŠããªããã£ãã«çµç±ã§å®å šãªéä¿¡ææ®µãæäŸããã®ã«åœ¹ç«ã¡ãŸãã ããšãã°ãæå·åã¢ã«ãŽãªãºã ã䜿çšããŠããŒã¿ãæå·åããæå·åãããç¶æ ã§éä¿¡ããåŸã§ç®çã®ããŒãã£ã«ãã£ãŠåŸ©å·åããããšãã§ããŸãã 第äžè ãæå·åãããããŒã¿ãååããå Žåãè§£èªãå°é£ã«ãªããŸãã
.NET ã§ã¯ã System.Security.Cryptography åå空éã®ã¯ã©ã¹ãæå·åã®å€ãã®è©³çްã管çããŸãã ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã å®è£ ã®ã©ãããŒãããã°ãçŽç²ã«ç®¡çãããå®è£ ã§ãããã®ããããŸãã ãããã®ã¯ã©ã¹ã䜿çšããããã«ãæå·åã®å°éå®¶ã§ããå¿ èŠã¯ãããŸããã æå·åã¢ã«ãŽãªãºã ã¯ã©ã¹ã® 1 ã€ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæãããšã䜿ããããããããã«ããŒãèªåçæãããæ¢å®ã®ããããã£ã¯å¯èœãªéãå®å šã§å®å šã§ãã
æå·ããªããã£ã
æå·åã䜿çšãããäžè¬çãªç¶æ³ã§ã¯ã2 ã€ã®ããŒã㣠(Alice ãš Bob) ãã»ãã¥ãªãã£ã§ä¿è·ãããŠããªããã£ãã«ãä»ããŠéä¿¡ããŸãã Alice ãš Bob ã¯ãèããŠããå¯èœæ§ã®ãããã¹ãŠã®ãŠãŒã¶ãŒãã³ãã¥ãã±ãŒã·ã§ã³ãçè§£ã§ããªãããã«ããããšèããŠããŸãã ããã«ãAlice ãš Bob ã¯ãªã¢ãŒãã®å Žæã«ãããããAlice ã¯ãBob ããåä¿¡ããæ å ±ã転éäžã«èª°ã倿ŽãããŠããªãããšã確èªããå¿ èŠããããŸãã ããã«ãBob ãåœè£ ããŠãããŠãŒã¶ãŒã§ã¯ãªããæ å ±ãå®éã« Bob ããéä¿¡ãããŠããããšã確èªããå¿ èŠããããŸãã
æå·åã¯ã次ã®ç®æšãéæããããã«äœ¿çšãããŸãã
æ©å¯æ§: ãŠãŒã¶ãŒã® ID ãŸãã¯ããŒã¿ãèªã¿åãããã®ãé²ãããšãã§ããŸãã
ããŒã¿ã®æŽåæ§: ããŒã¿ã®å€æŽãé²ãããšãã§ããŸãã
èªèšŒ: ããŒã¿ãç¹å®ã®ããŒãã£ããéä¿¡ãããŠããããšã確èªããŸãã
åŠèªäžå¯: ç¹å®ã®ããŒãã£ãã¡ãã»ãŒãžãéä¿¡ããããšãæåŠã§ããªãããã«ããããã
ãããã®ç®æšãéæããããã«ãæå·åããªããã£ããšåŒã°ããã¢ã«ãŽãªãºã ãšãã©ã¯ãã£ã¹ã®çµã¿åããã䜿çšããŠãæå·åã¹ããŒã ãäœæã§ããŸãã æ¬¡ã®è¡šã«ãæå·åããªããã£ããšãã®äœ¿ç𿹿³ã瀺ããŸãã
| æå·åããªããã£ã | çšé |
|---|---|
| ç§å¯éµæå·å (察称æå·å) | ããŒã¿ã«å¯ŸããŠå€æãå®è¡ããŠããµãŒã ããŒãã£ãããŒã¿ãèªã¿åããªãããã«ããŸãã ãã®çš®é¡ã®æå·åã§ã¯ã1 ã€ã®å ±æã·ãŒã¯ã¬ãã ããŒã䜿çšããŠãããŒã¿ã®æå·åãšæå·åè§£é€ãè¡ããŸãã |
| å ¬éããŒæå·å (é察称æå·å) | ããŒã¿ã«å¯ŸããŠå€æãå®è¡ããŠããµãŒã ããŒãã£ãããŒã¿ãèªã¿åããªãããã«ããŸãã ãã®çš®é¡ã®æå·åã§ã¯ãå ¬éããŒãšç§å¯ããŒã®ãã¢ã䜿çšããŠãããŒã¿ã®æå·åãšæå·åè§£é€ãè¡ããŸãã |
| æå·å眲å | ç¹å®ã®ããŒãã£ã«åºæã®ããžã¿ã«çœ²åãäœæããããšã§ãããŒã¿ãç¹å®ã®ããŒãã£ããéä¿¡ãããããšã確èªããã®ã«åœ¹ç«ã¡ãŸãã ãã®ããã»ã¹ã§ã¯ãããã·ã¥é¢æ°ã䜿çšãããŸãã |
| æå·åããã·ã¥ | ä»»æã®é·ãã®ããŒã¿ãåºå®é·ãã€ã ã·ãŒã±ã³ã¹ã«ãããããŸãã ããã·ã¥ã¯çµ±èšçã«äžæã§ããç°ãªã 2 ãã€ã ã·ãŒã±ã³ã¹ã§ã¯ãåãå€ã«ããã·ã¥ãããŸããã |
Secret-Key æå·å
ç§å¯éµæå·åã¢ã«ãŽãªãºã ã§ã¯ã1 ã€ã®ç§å¯éµã䜿çšããŠããŒã¿ã®æå·åãšæå·åè§£é€ãè¡ããŸãã æ¿èªãããŠããªããšãŒãžã§ã³ãã«ããã¢ã¯ã»ã¹ããããŒãã»ãã¥ãªãã£ã§ä¿è·ããå¿ èŠããããŸããããã¯ãããŒãæã€ãã¹ãŠã®ããŒãã£ãããŒã䜿çšããŠããŒã¿ã®æå·åãè§£é€ããããèªåã®ããŒã¿ãæå·åãããããŠãèªåããéä¿¡ãããããŒã¿ãèŠæ±ã§ããããã§ãã
ç§å¯éµã®æå·åã¯ãæå·åãšæå·åè§£é€ã«åãããŒã䜿çšãããããã察称æå·åãšãåŒã°ããŸãã ç§å¯éµæå·åã¢ã«ãŽãªãºã ã¯éåžžã«é«éã§ãã (å ¬éã㌠ã¢ã«ãŽãªãºã ãšæ¯èŒããŠ)ãå€§èŠæš¡ãªããŒã¿ ã¹ããªãŒã ã§æå·å倿ãå®è¡ããã®ã«é©ããŠããŸãã RSA ãªã©ã®é察称æå·åã¢ã«ãŽãªãºã ã¯ãæå·åã§ããããŒã¿ã®éã«æ°åŠçã«å¶éãããŸãã 察称æå·åã¢ã«ãŽãªãºã ã«ã¯ãéåžžããããã®åé¡ã¯ãããŸããã
ãããã¯æå·ãšåŒã°ããç§å¯ã㌠ã¢ã«ãŽãªãºã ã®çš®é¡ã¯ãäžåºŠã« 1 ãããã¯ã®ããŒã¿ãæå·åããããã«äœ¿çšãããŸãã Data Encryption Standard (DES)ãTripleDESãAdvanced Encryption Standard (AES) ãªã©ã®ãããã¯æå·ã¯ã n ãã€ãã®å ¥åãããã¯ãæå·åããããã€ãã®åºåãããã¯ã«æå·ã«ãã£ãŠå€æããŸãã ãã€ãã·ãŒã±ã³ã¹ãæå·åãŸãã¯åŸ©å·åããå Žåã¯ããããã¯ããšã«ãããã¯ããå¿ èŠããããŸãã n ã¯å°ãããã (DES ããã³ TripleDES ã®å Žå㯠8 ãã€ããAES ã®å Žå㯠16 ãã€ã (æ¢å®å€)ã24 ãã€ãããŸã㯠32 ãã€ã)ãn ãã倧ããããŒã¿å€ã¯äžåºŠã« 1 ãããã¯ãã€æå·åããå¿ èŠããããŸãã åŠçããã«ã¯ã n ããå°ããããŒã¿å€ã n ã«å±éããå¿ èŠããããŸãã
ãããã¯æå·ã® 1 ã€ã®åçŽãªåœ¢åŒã¯ãé»åã³ãŒããã㯠(ECB) ã¢ãŒããšåŒã°ããŸãã ECB ã¢ãŒãã¯ãæåã®ãã¬ãŒã³ããã¹ã ãããã¯ãåæåããããã«åæåãã¯ã¿ãŒã䜿çšããªããããã»ãã¥ãªãã£ã§ä¿è·ãããŠãããšã¯èŠãªãããŸããã ç¹å®ã®ç§å¯éµ k ã«ã€ããŠãåæåãã¯ãã«ã䜿çšããªãåçŽãªãããã¯æå·ã¯ããã¬ãŒã³ããã¹ãã®åãå ¥åãããã¯ãåãæå·æã®åºåãããã¯ã«æå·åããŸãã ãããã£ãŠãå ¥åãã¬ãŒã³ããã¹ã ã¹ããªãŒã ã«éè€ãããããã¯ãããå Žåã¯ãåºåæå·ããã¹ã ã¹ããªãŒã ã«éè€ãããããã¯ããããŸãã ãã®ãããªéè€ããåºåãããã¯ãååšãããšãã¢ã«ãŽãªãºã ã§åŒ±ãæå·åã䜿çšãããŠããŠãæ»æãå¯èœãªã¢ãŒãã§ããããšããæ¿èªãããŠããªããŠãŒã¶ãŒã«ããããŸãã ãããã£ãŠãECB æå·ã¢ãŒãã¯åæã«å¯ŸããŠéåžžã«è匱ã§ãããæçµçã«ã¯ããŒæ€åºã«å¯ŸããŠéåžžã«è匱ã§ãã
åºåºã¯ã©ã¹ ã©ã€ãã©ãªã§æäŸããããããã¯æå·ã¯ã©ã¹ã¯ãæå·ããã㯠ãã§ãŒã³ (CBC) ãšåŒã°ããæ¢å®ã®ãã§ãŒã³ ã¢ãŒãã䜿çšããŸãããå¿ èŠã«å¿ããŠãã®æ¢å®å€ã倿Žã§ããŸãã
CBC æå·ã¯ãåæåãã¯ãã« (IV) ã䜿çšããŠãã¬ãŒã³ããã¹ãã®æåã®ãããã¯ãæå·åããããšã§ãECB æå·ã«é¢é£ããåé¡ãå
æããŸãã ãã¬ãŒã³ããã¹ãã®åŸç¶ã®åãããã¯ã¯ãæå·åãããåã«ãåã®æå·ããã¹ã ãããã¯ã§ãããããšã®æä»ç OR (XOR) æäœãåããŸãã ãããã£ãŠãåæå·ããã¹ã ãããã¯ã¯ãåã®ãã¹ãŠã®ãããã¯ã«äŸåããŸãã ãã®ã·ã¹ãã ã䜿çšããå Žåãæ¿èªãããŠããªããŠãŒã¶ãŒã«ç¥ãããŠããå¯èœæ§ãããäžè¬çãªã¡ãã»ãŒãž ããããŒã䜿çšããŠããŒããªããŒã¹ ãšã³ãžãã¢ãªã³ã°ããããšã¯ã§ããŸããã
CBC æå·ã§æå·åãããããŒã¿ã䟵害ãã 1 ã€ã®æ¹æ³ã¯ãèãããããã¹ãŠã®ããŒã培åºçã«æ€çŽ¢ããããšã§ãã æå·åãå®è¡ããããã«äœ¿çšãããããŒã®ãµã€ãºã«å¿ããŠããã®çš®ã®æ€çŽ¢ã¯æéã®ã³ã³ãã¥ãŒã¿ãŒã§ãéåžžã«æéããããããã®ããäžå¯èœã§ãã ã㌠ãµã€ãºã倧ãããããšãè§£èªãå°é£ã«ãªããŸãã æå·åã§ã¯ãæµå¯Ÿè ãæå·åãããããŒã¿ãååŸããããšã¯çè«çã«ã¯äžå¯èœã§ã¯ãããŸãããããããè¡ãã³ã¹ãã¯é«ããªããŸãã æ°æ¥éã ãæå³ã®ããããŒã¿ãååŸããããã«ç¶²çŸ çãªæ€çŽ¢ãå®è¡ããã®ã« 3 ãæãããå Žåãç¶²çŸ çãªæ€çŽ¢æ¹æ³ã¯å®çšçã§ã¯ãããŸããã
ç§å¯éµã®æå·åã®æ¬ ç¹ã¯ã2ã€ã®åœäºè ãããŒãšIVã«åæãããã®å€ãäŒããŠãããšä»®å®ããããšã§ãã IV ã¯ã·ãŒã¯ã¬ãããšã¯èŠãªããããã¡ãã»ãŒãžãšå ±ã«ãã¬ãŒã³ããã¹ãã§éä¿¡ã§ããŸãã ãã ããããŒã¯æ¿èªãããŠããªããŠãŒã¶ãŒããç§å¯ã«ããŠããå¿ èŠããããŸãã ãããã®åé¡ã®ãããç§å¯ããŒæå·åã¯ãå€ãã®å ŽåãããŒãš IV ã®å€ããã©ã€ããŒãã«éä¿¡ããããã«å ¬éããŒæå·åãšå ±ã«äœ¿çšãããŸãã
Alice ãš Bob ãã»ãã¥ãªãã£ã§ä¿è·ãããŠããªããã£ãã«ãä»ããŠéä¿¡ãã 2 ã€ã®åœäºè ã§ãããšä»®å®ãããšãAlice ãš Bob ã¯ãç¹å®ã®ããŒãš IV ã§ 1 ã€ã®ç¹å®ã®ã¢ã«ãŽãªãºã (AES ãªã©) ã䜿çšããããšã«åæããŸãã Alice ã¯ã¡ãã»ãŒãžãäœæããã¡ãã»ãŒãžãéä¿¡ãããããã¯ãŒã¯ ã¹ããªãŒã (ååä»ããã€ããŸãã¯ãããã¯ãŒã¯ ã¡ãŒã«ãªã©) ãäœæããŸãã æ¬¡ã«ãããŒãš IV ã䜿çšããŠããã¹ããæå·åããæå·åãããã¡ãã»ãŒãžãš IV ãã€ã³ãã©ãããçµç±ã§ Bob ã«éä¿¡ããŸãã Bob ã¯ãæå·åãããããã¹ããåãåããIV ã䜿çšããŠæå·åãè§£é€ãã以åã«åæããããŒã䜿çšããŸãã 転éãã€ã³ã¿ãŒã»ãããããå Žåãã€ã³ã¿ãŒã»ãã¿ãŒã¯ããŒãèªèããŠããªããããå ã®ã¡ãã»ãŒãžãå埩ã§ããŸããã ãã®ã·ããªãªã§ã¯ãããŒã®ã¿ãã·ãŒã¯ã¬ããã®ãŸãŸã§ããå¿ èŠããããŸãã å®éã®ã·ããªãªã§ã¯ãAlice ãŸã㯠Bob ãç§å¯ããŒãçæããå ¬éã㌠(é察称) æå·åã䜿çšããŠã·ãŒã¯ã¬ãã (察称) ããŒãçžæã«è»¢éããŸãã å ¬éããŒæå·åã®è©³çްã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
.NET ã«ã¯ãç§å¯éµæå·åã¢ã«ãŽãªãºã ãå®è£ ããæ¬¡ã®ã¯ã©ã¹ãçšæãããŠããŸãã
HMACSHA256ã HMACSHA384 ã HMACSHA512ã (ãããã¯ãæå·åããã·ã¥é¢æ°ãšç§å¯éµãçµã¿åãããŠèšç®ãããã¡ãã»ãŒãžèªèšŒã³ãŒãã衚ãã®ã§ãæè¡çã«ã¯ç§å¯éµã¢ã«ãŽãªãºã ã§ãããã®èšäºã®åŸåã® ããã·ã¥å€ãåç §ããŠãã ãã)ã
Public-Key æå·å
å ¬éããŒæå·åã§ã¯ãæ¿èªãããŠããªããŠãŒã¶ãŒããç§å¯ãä¿æããå¿ èŠãããç§å¯ããŒãšããã¹ãŠã®ãŠãŒã¶ãŒã«å ¬éã§ããå ¬éããŒã䜿çšãããŸãã å ¬éããŒãšç§å¯ããŒã¯æ°åŠçã«ãªã³ã¯ãããŠããŸããå ¬éããŒã§æå·åãããããŒã¿ã¯ç§å¯ããŒã§ã®ã¿åŸ©å·åã§ããç§å¯ããŒã§çœ²åãããããŒã¿ã¯å ¬éããŒã§ã®ã¿æ€èšŒã§ããŸãã å ¬éããŒã¯èª°ã§ã䜿çšã§ããŸããããã¯ãç§å¯ããŒã®ããŒããŒã«éä¿¡ãããããŒã¿ãæå·åããããã«äœ¿çšãããŸãã å ¬éããŒæå·åã¢ã«ãŽãªãºã ã¯ãããŒã¿ãæå·åããããã« 1 ã€ã®ããŒãå¿ èŠã§ãããããŒã¿ã®æå·åãè§£é€ããããã«å¥ã®ããŒãå¿ èŠã§ãããããé察称ã¢ã«ãŽãªãºã ãšãåŒã°ããŸãã åºæ¬çãªæå·åèŠåã§ã¯ããŒã®åå©çšãçŠæ¢ãããŠãããäž¡æ¹ã®ããŒã¯éä¿¡ã»ãã·ã§ã³ããšã«äžæã§ããå¿ èŠããããŸãã ãã ããå®éã«ã¯ãé察称ããŒã¯äžè¬ã«æå¹æéãé·ãã§ãã
2 ã€ã®ããŒã㣠(Alice ãš Bob) ã¯ã次ã®ããã«å ¬éããŒæå·åã䜿çšã§ããŸãããŸããAlice ã¯å ¬éããŒãšç§å¯ããŒã®ãã¢ãçæããŸãã Bob ã Alice ã«æå·åãããã¡ãã»ãŒãžãéä¿¡ããå Žåã¯ãå ¬éããŒãèŠæ±ããŸãã Alice ã¯ã»ãã¥ãªãã£ã§ä¿è·ãããŠããªããããã¯ãŒã¯çµç±ã§ Bob ã«å ¬éããŒãéä¿¡ããBob ã¯ãã®ããŒã䜿çšããŠã¡ãã»ãŒãžãæå·åããŸãã Bob ã¯ãæå·åãããã¡ãã»ãŒãžã Alice ã«éä¿¡ããç§å¯ããŒã䜿çšããŠæå·åãè§£é€ããŸãã Bob ããããªã㯠ãããã¯ãŒã¯ãªã©ã®ã»ãã¥ãªãã£ã§ä¿è·ãããŠããªããã£ãã«ãä»ã㊠Alice ã®ããŒãåãåã£ãå ŽåãBob ã¯äžéè æ»æã«å¯ŸããŠéæŸãããŸãã ãã®ãããBob 㯠Alice ã«å ¬éããŒã®æ£ããã³ããŒãããããšã確èªããå¿ èŠããããŸãã
Alice ã®å ¬éããŒã®éä¿¡äžã«ãæ¿èªãããŠããªããšãŒãžã§ã³ããããŒãååããå¯èœæ§ããããŸãã ããã«ãåããšãŒãžã§ã³ãã Bob ããæå·åãããã¡ãã»ãŒãžãã€ã³ã¿ãŒã»ããããå¯èœæ§ããããŸãã ãã ãããšãŒãžã§ã³ãã¯å ¬éããŒã䜿çšããŠã¡ãã»ãŒãžã埩å·åã§ããŸããã ã¡ãã»ãŒãžã¯ãéä¿¡ãããŠããªã Alice ã®ç§å¯ããŒã§ã®ã¿åŸ©å·åã§ããŸãã å ¬éããŒãæã€ãã¹ãŠã®ãŠãŒã¶ãŒãã¡ãã»ãŒãžã埩å·åã§ãããããAlice ã¯èªåã®ç§å¯ããŒã䜿çšã㊠Bob ãžã®å¿çã¡ãã»ãŒãžãæå·åããŸããã Alice ã Bob ã«ã¡ãã»ãŒãžãéãè¿ãå ŽåãBob ã«å ¬éããŒãèŠæ±ãããã®å ¬éããŒã䜿çšããŠã¡ãã»ãŒãžãæå·åããŸãã Bob ã¯ãé¢é£ä»ããããŠããç§å¯ããŒã䜿çšããŠã¡ãã»ãŒãžã®æå·åãè§£é€ããŸãã
ãã®ã·ããªãªã§ã¯ãAlice ãš Bob ã¯å ¬éã㌠(é察称) æå·åã䜿çšããŠã·ãŒã¯ã¬ãã (察称) ããŒã転éããã»ãã·ã§ã³ã®æ®ãã®éšåã§ç§å¯éµæå·åã䜿çšããŸãã
次ã®äžèЧã§ã¯ãå ¬éããŒæå·åã¢ã«ãŽãªãºã ãšç§å¯éµæå·ã¢ã«ãŽãªãºã ã®æ¯èŒã瀺ããŸãã
å ¬éããŒæå·åã¢ã«ãŽãªãºã ã§ã¯åºå®ãããã¡ãŒ ãµã€ãºã䜿çšãããŸãããç§å¯éµæå·åã¢ã«ãŽãªãºã ã§ã¯å¯å€é·ãããã¡ãŒã䜿çšãããŸãã
å°éã®ããŒã¿ããæå·åã§ããªããããå ¬éã㌠ã¢ã«ãŽãªãºã ã䜿çšããŠãç§å¯ã㌠ã¢ã«ãŽãªãºã ãå¯èœãªæ¹æ³ã§ããŒã¿ãã¹ããªãŒã ã«é£çµããããšã¯ã§ããŸããã ãã®ãããé察称æäœã§ã¯ã察称æäœãšåãã¹ããªãŒãã³ã° ã¢ãã«ã¯äœ¿çšãããŸããã
å ¬éããŒæå·åã«ã¯ãç§å¯éµæå·åãããã¯ããã«å€§ããªããŒã¹ããŒã¹ (ããŒã«äœ¿çšã§ããå€ã®ç¯å²) ããããŸãã ãã®ãããå ¬éããŒã®æå·åã¯ããã¹ãŠã®å¯èœãªããŒã詊ã培åºçãªæ»æã®åœ±é¿ãåãã«ããã§ãã
å ¬éããŒã¯ãéä¿¡è ã® ID ã確èªããããã®äœããã®æ¹æ³ãååšããå Žåãã»ãã¥ãªãã£ã§ä¿è·ããå¿ èŠããªããããç°¡åã«é åžã§ããŸãã
äžéšã®å ¬éã㌠ã¢ã«ãŽãªãºã (RSA ã DSA ãªã©ãDiffie-Hellmanã§ã¯ãªã) ã䜿çšããŠããžã¿ã«çœ²åãäœæããããŒã¿ã®éä¿¡è ã® ID ã確èªã§ããŸãã
å ¬éã㌠ã¢ã«ãŽãªãºã ã¯ãç§å¯éµã¢ã«ãŽãªãºã ãšæ¯èŒããŠéåžžã«äœéã§ããã倧éã®ããŒã¿ãæå·åããããã«ã¯èšèšãããŠããŸããã å ¬éã㌠ã¢ã«ãŽãªãºã ã¯ãéåžžã«å°éã®ããŒã¿ã転éããå Žåã«ã®ã¿åœ¹ç«ã¡ãŸãã éåžžãå ¬éããŒæå·åã¯ãç§å¯éµã¢ã«ãŽãªãºã ã«ãã£ãŠäœ¿çšãããããŒãš IV ãæå·åããããã«äœ¿çšãããŸãã ããŒãš IV ã転éããããšãã»ãã·ã§ã³ã®æ®ãã®éšåã§ç§å¯éµæå·åã䜿çšãããŸãã
.NET ã«ã¯ãå ¬éã㌠ã¢ã«ãŽãªãºã ãå®è£ ããæ¬¡ã®ã¯ã©ã¹ãçšæãããŠããŸãã
RSA ã§ã¯æå·åãšçœ²åã®äž¡æ¹ãå¯èœã§ãããDSA ã¯çœ²åã«ã®ã¿äœ¿çšã§ããŸãã DSA 㯠RSA ã»ã©å®å šã§ã¯ãªããããRSA ããå§ãããŸãã Diffie-Hellman ã¯ãããŒã®çæã«ã®ã¿äœ¿çšã§ããŸãã äžè¬ã«ãå ¬éã㌠ã¢ã«ãŽãªãºã ã®äœ¿çšã¯ç§å¯ã㌠ã¢ã«ãŽãªãºã ãããå¶éãããŸãã
ããžã¿ã«çœ²å
å ¬éã㌠ã¢ã«ãŽãªãºã ã䜿çšããŠãããžã¿ã«çœ²åã圢æããããšãã§ããŸãã ããžã¿ã«çœ²åã¯ãéä¿¡è ã® ID ãèªèšŒã (éä¿¡è ã®å ¬éããŒãä¿¡é ŒããŠããå Žå)ãããŒã¿ã®æŽåæ§ãä¿è·ããã®ã«åœ¹ç«ã¡ãŸãã Alice ã«ãã£ãŠçæãããå ¬éããŒã䜿çšããŠãAlice ã®ããŒã¿ã®åä¿¡è ã¯ãããžã¿ã«çœ²åãš Alice ã®ããŒã¿ãš Alice ã®å ¬éããŒãæ¯èŒããããšã§ãAlice ãéä¿¡ããããšã確èªã§ããŸãã
å ¬éããŒæå·åã䜿çšããŠã¡ãã»ãŒãžã«ããžã¿ã«çœ²åããã«ã¯ãAlice ã¯ãŸãã¡ãã»ãŒãžã«ããã·ã¥ ã¢ã«ãŽãªãºã ãé©çšããŠã¡ãã»ãŒãž ãã€ãžã§ã¹ããäœæããŸãã ã¡ãã»ãŒãž ãã€ãžã§ã¹ãã¯ãããŒã¿ã®ã³ã³ãã¯ãã§ãŠããŒã¯ãªè¡šçŸã§ãã ãã®åŸãAlice ã¯ç§å¯ããŒã䜿çšããŠã¡ãã»ãŒãž ãã€ãžã§ã¹ããæå·åããå人ã®çœ²åãäœæããŸãã ã¡ãã»ãŒãžãšçœ²åãåä¿¡ãããšãBob 㯠Alice ã®å ¬éããŒã䜿çšããŠçœ²åã埩å·åããŠã¡ãã»ãŒãž ãã€ãžã§ã¹ããå埩ããAlice ã䜿çšããã®ãšåãããã·ã¥ ã¢ã«ãŽãªãºã ã䜿çšããŠã¡ãã»ãŒãžãããã·ã¥ããŸãã Bob ãèšç®ããã¡ãã»ãŒãž ãã€ãžã§ã¹ãã Alice ããåä¿¡ããã¡ãã»ãŒãž ãã€ãžã§ã¹ããšæ£ç¢ºã«äžèŽããå ŽåãBob ã¯ãã¡ãã»ãŒãžãç§å¯ããŒã®ææå ããéä¿¡ãããããŒã¿ã倿ŽãããŠããªãããšãä¿èšŒãããŸãã Alice ãç§å¯ããŒã®ææè ã§ãããš Bob ãä¿¡é ŒããŠããå Žåãã¡ãã»ãŒãžã Alice ããéä¿¡ãããããšãç¥ã£ãŠããŸãã
泚
éä¿¡è ã®å ¬éããŒã¯äžè¬çãªç¥èã§ãããéåžžã¯ããžã¿ã«çœ²å圢åŒã«å«ãŸããŠããããã眲åã¯ã ãã§ãæ€èšŒã§ããŸãã ãã®ã¡ãœããã¯ãã¡ãã»ãŒãžã®ç§å¯ãä¿æããŸãããã¡ãã»ãŒãžãã·ãŒã¯ã¬ããã«ããã«ã¯ãæå·åããå¿ èŠããããŸãã
.NET ã«ã¯ãããžã¿ã«çœ²åã¢ã«ãŽãªãºã ãå®è£ ããæ¬¡ã®ã¯ã©ã¹ãçšæãããŠããŸãã
ããã·ã¥å€
ããã·ã¥ ã¢ã«ãŽãªãºã ã¯ãä»»æã®é·ãã®ãã€ããªå€ããããã·ã¥å€ãšåŒã°ããåºå®é·ã®å°ãããã€ããªå€ã«ãããããŸãã ããã·ã¥å€ã¯ãããŒã¿ã®äžéšã®æ°å€è¡šçŸã§ãã ãã¬ãŒã³ããã¹ãã®æ®µèœãããã·ã¥ããæ®µèœã® 1 æåã§ã倿ŽãããšãåŸç¶ã®ããã·ã¥ã«ãã£ãŠç°ãªãå€ãçæãããŸãã ããã·ã¥ãæå·çã«åŒ·åãªå Žåããã®å€ã¯å€§å¹ ã«å€æŽãããŸãã ããšãã°ãã¡ãã»ãŒãžã® 1 ãããã倿Žãããå Žåã匷åãªããã·ã¥é¢æ°ã«ãã£ãŠ 50% ç°ãªãåºåãçæãããå ŽåããããŸãã å€ãã®å ¥åå€ãåãåºåå€ã«ããã·ã¥ãããå ŽåããããŸãã ãã ããåãå€ã«ããã·ã¥ãã 2 ã€ã®åå¥ã®å ¥åãèŠã€ããããšã¯ãèšç®äžäžå¯èœã§ãã
2 ã€ã®ããŒã㣠(Alice ãš Bob) ã¯ãããã·ã¥é¢æ°ã䜿çšããŠã¡ãã»ãŒãžã®æŽåæ§ã確ä¿ã§ããŸãã ã¡ãã»ãŒãžã«çœ²åããããã·ã¥ ã¢ã«ãŽãªãºã ãéžæããŸãã Alice ã¯ã¡ãã»ãŒãžãæžã蟌ã¿ãéžæããã¢ã«ãŽãªãºã ã䜿çšããŠãã®ã¡ãã»ãŒãžã®ããã·ã¥ãäœæããŸãã ãã®åŸã次ã®ããããã®æ¹æ³ã«åŸããŸãã
Alice ã¯ããã¬ãŒã³ããã¹ã ã¡ãã»ãŒãžãšããã·ã¥ã¡ãã»ãŒãž (ããžã¿ã«çœ²å) ã Bob ã«éä¿¡ããŸãã Bob ã¯ã¡ãã»ãŒãžãåä¿¡ããŠããã·ã¥ãããã®ããã·ã¥å€ãš Alice ããåä¿¡ããããã·ã¥å€ãæ¯èŒããŸãã ããã·ã¥å€ãåäžã®å Žåãã¡ãã»ãŒãžã¯å€æŽãããŸããã§ããã å€ãåäžã§ãªãå ŽåãAlice ãã¡ãã»ãŒãžãæžã蟌ãã åŸã«ã¡ãã»ãŒãžã倿ŽãããŸããã
æ®å¿µãªããããã®æ¹æ³ã§ã¯éä¿¡è ã®ä¿¡é Œæ§ã¯ç¢ºç«ãããŸããã 誰ã§ã Alice ãåœè£ ããBob ã«ã¡ãã»ãŒãžãéä¿¡ã§ããŸãã åãããã·ã¥ ã¢ã«ãŽãªãºã ã䜿çšããŠã¡ãã»ãŒãžã«çœ²åã§ããŸãããã¹ãŠã® Bob ã¯ãã¡ãã»ãŒãžããã®çœ²åãšäžèŽããããšã倿ã§ããŸãã ããã¯ãäžéè æ»æã® 1 ã€ã®åœ¢åŒã§ãã 詳现ã«ã€ããŠã¯ãã æå·åã®æ¬¡äžä»£ (CNG) ã»ãã¥ãªãã£ã§ä¿è·ãããéä¿¡ã®äŸããåç §ããŠãã ããã
Alice ã¯ãã»ãã¥ãªãã£ã§ä¿è·ãããŠããªããããªã㯠ãã£ãã«çµç±ã§ãã¬ãŒã³ããã¹ã ã¡ãã»ãŒãžã Bob ã«éä¿¡ããŸãã 圌女ã¯ãã»ãã¥ãªãã£ã§ä¿è·ããããã©ã€ããŒã ãã£ãã«çµç±ã§ Bob ã«ããã·ã¥ãããã¡ãã»ãŒãžãéä¿¡ããŸãã Bob ã¯ãã¬ãŒã³ããã¹ã ã¡ãã»ãŒãžãåä¿¡ããããã·ã¥ãããã©ã€ããŒãã«äº€æãããããã·ã¥ãšããã·ã¥ãæ¯èŒããŸãã ããã·ã¥ãäžèŽããå ŽåãBob ã¯æ¬¡ã® 2 ã€ã®ããšãèªèããŸãã
ã¡ãã»ãŒãžã¯å€æŽãããŸããã§ããã
ã¡ãã»ãŒãžã®éä¿¡è (Alice) ã¯æ¬ç©ã§ãã
ãã®ã·ã¹ãã ãæ©èœãããã«ã¯ãAlice 㯠Bob ãé€ããã¹ãŠã®é¢ä¿è ããå ã®ããã·ã¥å€ãé衚瀺ã«ããå¿ èŠããããŸãã
Alice ã¯ãã»ãã¥ãªãã£ã§ä¿è·ãããŠããªããããªã㯠ãã£ãã«çµç±ã§ãã¬ãŒã³ããã¹ã ã¡ãã»ãŒãžã Bob ã«éä¿¡ããããã·ã¥ãããã¡ãã»ãŒãžããããªãã¯ã«è¡šç€ºå¯èœãª Web ãµã€ãã«é 眮ããŸãã
ãã®ã¡ãœããã¯ã誰ããããã·ã¥å€ã倿Žã§ããªãããã«ããããšã§ãã¡ãã»ãŒãžã®æ¹ãããé²ããŸãã ã¡ãã»ãŒãžãšãã®ããã·ã¥ã¯ã ãã§ãèªã¿åãããšãã§ããŸãããããã·ã¥å€ã¯ Alice ã«ãã£ãŠã®ã¿å€æŽã§ããŸãã Alice ãåœè£ ããæ»æè ã¯ãAlice ã® Web ãµã€ãã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãã
åã®æ¹æ³ã§ã¯ãAlice ã®ã¡ãã»ãŒãžããã¬ãŒã³ããã¹ãã§éä¿¡ãããããã誰ãã Alice ã®ã¡ãã»ãŒãžãèªãã®ã劚ãããã®ã¯ãããŸããã å®å šãªã»ãã¥ãªãã£ã«ã¯ãéåžžãããžã¿ã«çœ²å (ã¡ãã»ãŒãžçœ²å) ãšæå·åãå¿ èŠã§ãã
.NET ã«ã¯ãããã·ã¥ ã¢ã«ãŽãªãºã ãå®è£ ããæ¬¡ã®ã¯ã©ã¹ãçšæãããŠããŸãã
.NET ã§ã¯ã MD5 ãš SHA1ãæäŸãããŸãã ãã ããMD5 ã¢ã«ãŽãªãºã ãš SHA-1 ã¢ã«ãŽãªãºã ã¯å®å šã§ãªãã代ããã« SHA-2 ãæšå¥šãããããã«ãªããŸããã SHA-2 ã«ã¯ãSHA256ãSHA384ãSHA512 ãå«ãŸããŠããŸãã
ä¹±æ°ã®çæ
ä¹±æ°ã®çæã¯ãå€ãã®æå·åæäœã«äžå¯æ¬ ã§ãã æå·åããŒã¯ãåçŸãäžå¯èœã«ãªããããå¯èœãªéãã©ã³ãã ã§ããå¿ èŠããããŸãã æå·ä¹±æ°ãžã§ãã¬ãŒã¿ãŒã¯ãååããåªãã確çã§äºæž¬ããããã«èšç®äžå¯èœãªåºåãçæããå¿ èŠããããŸãã ãããã£ãŠã次ã®åºåããããäºæž¬ããæ¹æ³ã¯ãã©ã³ãã ãªæšæž¬ãããåªããããã©ãŒãã³ã¹ãçºæ®ããŠã¯ãªããŸããã .NET ã®ã¯ã©ã¹ã¯ãä¹±æ°ãžã§ãã¬ãŒã¿ãŒã䜿çšããŠæå·åããŒãçæããŸãã
RandomNumberGenerator ã¯ã©ã¹ã¯ãä¹±æ°ãžã§ãã¬ãŒã¿ãŒ ã¢ã«ãŽãªãºã ã®å®è£ ã§ãã
ãã©ãŠã¶ãŒ WebAssembly ã§ã¯ãéç RandomNumberGenerator ã¡ãœãããšã RandomNumberGenerator.Create() ã«ãã£ãŠè¿ãããæ¢å®ã®å®è£
ã¯ããã©ãŠã¶ãŒã® Web Crypto API crypto.getRandomValues() ã¡ãœãããä»ããŠã©ã³ãã ãã€ããååŸããŸãã çæãããå€ã®ã»ãã¥ãªãã£ã¯ããã©ãŠã¶ãŒããã® API ãæ£ããå®è£
ããŠãããã©ããã«äŸåããŸãã
ClickOnce ãããã§ã¹ã
æ¬¡ã®æå·åã¯ã©ã¹ã䜿çšãããšã ClickOnce ãã¯ãããžã䜿çšããŠé 眮ãããã¢ããªã±ãŒã·ã§ã³ã®ãããã§ã¹ã眲åã«é¢ããæ å ±ãååŸããŠç¢ºèªã§ããŸãã
ManifestSignatureInformation ã¯ã©ã¹ã¯ãVerifySignature ã¡ãœããã®ãªãŒããŒããŒãã䜿çšãããšããããã§ã¹ã ã·ã°ããã£ã«é¢ããæ å ±ãååŸããŸãã
ManifestKindsåæã䜿çšããŠãæ€èšŒãããããã§ã¹ããæå®ã§ããŸãã æ€èšŒã®çµæã¯ã SignatureVerificationResult åæå€ã®ããããã«ãªããŸãã
ManifestSignatureInformationCollection ã¯ã©ã¹ã¯ãæ€èšŒæžã¿ã·ã°ããã£ã®ManifestSignatureInformation ãªããžã§ã¯ãã®èªã¿åãå°çšã³ã¬ã¯ã·ã§ã³ãæäŸããŸãã
ããã«ã次ã®ã¯ã©ã¹ã¯ç¹å®ã®ã·ã°ããã£æ å ±ãæäŸããŸãã
StrongNameSignatureInformation ã¯ããããã§ã¹ãã®å³å¯ãªååçœ²åæ å ±ãä¿æããŸãã
AuthenticodeSignatureInformation ã¯ããããã§ã¹ãã® Authenticode çœ²åæ å ±ã衚ããŸãã
TimestampInformation ã«ã¯ãAuthenticode 眲åã®ã¿ã€ã ã¹ã¿ã³ãã«é¢ããæ å ±ãå«ãŸããŠããŸãã
TrustStatus ã§ã¯ãAuthenticode 眲åãä¿¡é ŒãããŠãããã©ãããç°¡åã«ç¢ºèªã§ããŸãã
æå·å次äžä»£ (CNG) ã¯ã©ã¹
Cryptography Next Generation (CNG) ã¯ã©ã¹ã¯ããã€ãã£ã CNG 颿°ã®ãããŒãžã ã©ãããŒãæäŸããŸãã (CNG 㯠CryptoAPI ã®ä»£ããã§ã)ã)ãããã®ã¯ã©ã¹ã¯ãååã®äžéšãšã㊠"Cng" ãæã¡ãŸãã CNG ã©ãã㌠ã¯ã©ã¹ã®äžå¿ãšãªãã®ã¯ãCNG ããŒã®ã¹ãã¬ãŒãžãšäœ¿çšãæœè±¡åãã CngKey ã㌠ã³ã³ãã㌠ã¯ã©ã¹ã§ãã ãã®ã¯ã©ã¹ã䜿çšãããšãã㌠ãã¢ãŸãã¯å ¬éããŒãå®å šã«æ ŒçŽããåçŽãªæåååã䜿çšããŠåç §ã§ããŸãã æ¥åæ²ç·ããŒã¹ã® ECDsaCng ã·ã°ãã㣠ã¯ã©ã¹ãš ECDiffieHellmanCng æå·åã¯ã©ã¹ã§ã¯ã CngKey ãªããžã§ã¯ãã䜿çšã§ããŸãã
CngKey ã¯ã©ã¹ã¯ãããŒã®éããäœæãåé€ããšã¯ã¹ããŒããªã©ãããŸããŸãªè¿œå æäœã«äœ¿çšãããŸãã ãŸãããã€ãã£ã颿°ãçŽæ¥åŒã³åºããšãã«äœ¿çšããåºã«ãªãã㌠ãã³ãã«ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã
.NET ã«ã¯ã次ã®ãããªããŸããŸãªãµããŒã CNG ã¯ã©ã¹ãå«ãŸããŠããŸãã
CngProvider ã¯ã㌠ã¹ãã¬ãŒãž ãããã€ããŒãä¿æããŸãã
CngAlgorithm 㯠CNG ã¢ã«ãŽãªãºã ãç¶æããŸãã
CngProperty ã§ã¯ãé »ç¹ã«äœ¿çšãããã㌠ããããã£ãä¿æãããŸãã
ãã¡ããåç §ãã ãã
- æå·åã¢ãã« - åºæ¬ã¯ã©ã¹ ã©ã€ãã©ãªã«æå·åãå®è£ ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
- ã¯ãã¹ãã©ãããã©ãŒã æå·å
- ããã£ã³ã°ã䜿çšãã CBC ã¢ãŒã察称æå·åè§£é€ã®ã¿ã€ãã³ã°ã®è匱æ§
- ASP.NET ã³ã¢ ããŒã¿ä¿è·