
ã¹ãã£ã³ãã©ã¹ãªMEGAãµãŒãã¹ã®éå§åŸãããçšåºŠãŸã§ããã®ã»ãã¥ãªãã£ã«é¢ãã話ã¯å°ãéå±ããŠèœã¡çããŸããã 仿¥ããã®ãµãŒãã¹ã¯ç¬èªã®ç掻ãéã£ãŠããã誰ããããå£ããŠããŸããã ãã¹ãŠã®äŒè©±ã®ãã¡ãäœããã®çç±ã§ãMEGAãèªããUser Controlled EncryptionãïŒUCEããŸãã¯User Controlled CryptographyïŒãšããçšèªã¯èŠéãããŠããŸããã ãèŠéããããšããèšèã¯ãã¯ã©ã€ã¢ã³ãåŽã®JavaScriptã§å®è¡ãããæå·åãšã³ãžã³ãããããå¯èœæ§ã®ãã¹ãŠãèæ
®ããªãã£ãããšãæå³ããŸãã
ãã¡ãããMEGAãµãŒãã¹èªäœã¯ãæå·åããŒããµãŒããŒã«ä¿åãããŠãããããã¹ãŠ
ã®æå·åããã©ãŠã¶ãŒã®ã³ã³ããã¹ãã§å®è¡ãããããšãæå³ããŸãã åæã«ããµãŒãã¹ã®éå§åŸãäžå®å®ãªæå·åã¢ã«ãŽãªãºã
ã䜿çš
ããäžè¬çã«ãã¹ãŠãäžè¯ã§ãããç§ãã¡å
šå¡ãæ»ã«ãFSBããã¡ã€ã«ãèªã¿åããšããäºå®ã«ã€ããŠå€ãã®è©±ããããŸããã ããã«ããããUCEãã®æŠå¿µãæ¡åŒµããæå·åãå®éã«å¶åŸ¡ããããã«ãªããŸãããã€ãŸãããµãŒãã¹ã®ã»ãã¥ãªãã£ã確ä¿ããããã®ããã€ãã®ã¡ã«ããºã ã眮ãæããããè£è¶³ããããšã«ãªããŸããã
ãã®èšäºã§ã¯ã2ã¡ã¬ãã€ãã®MEGA JavaScriptã³ãŒãã§çºçããéæ³ãéšåçã«æŽçããå¿é
ãæ¢ããŠæå·åãæããããã€ãã®æ¹æ³ãåå®çŸ©ããæ¹æ³ã瀺ããŸãã ãã®çµæã2èŠçŽ èªèšŒãšéèŠãªæ
å ±ã®ããŒããŠã§ã¢æå·åãåããã¯ã©ãŠãããŒã¹ã®ãã¡ã€ã«ã¹ãã¬ãŒãžãµãŒãã¹ãå©çšã§ããŸãã
MEGAãUCEãããã³ãã¹ãŠãã¹ãŠ
ããã§ã¯ããµãŒãã¹ã®ã¯ã©ã€ã¢ã³ãéšåãæ§ç¯ãããŠãããã¯ãããžãŒãæ°èŠãŠãŒã¶ãŒã®ç»é²æ¹æ³ãèªèšŒæžã¿ç»é²ãŠãŒã¶ãŒããã¹ã¯ãŒã倿Žãããã³ãã¡ã€ã«ã®ã¢ããããŒã/ããŠã³ããŒãããèŠãŠãããŸãããã
Javascript
æ¢ã«ãåç¥ãããããŸãããããµãŒãã¹ã®ã¯ã©ã€ã¢ã³ãéšåå
šäœã¯JavaScriptã«åºã¥ããŠããããã©ãŠã¶ã«ãã£ãŠããŒãããããã¹ãŠã®ã¹ã¯ãªãããšããŒãžã®SHA-256ãã§ãã¯ãµã ã¯ã¡ã€ã³ããŒãžã³ãŒãã§èšè¿°ãããŠããŸãã ããŠã³ããŒãèªäœã¯æ¬¡ã®ãšããã§ãããã¹ãŠã®ãã¡ã€ã«ã®ãã§ãã¯ãµã ããã§ãã¯ããããã®åŸããããã¯1ã€ã®BLOBã«çµåããããã©ãŠã¶ã«æäŸãããŸãã js-filesã®ãœãŒã¹ã³ãŒãã¯ãããããç°ãªã人ã
ã«ãã£ãŠæžããããã®ã§ãããã³ããŒïŒããŒã¹ãã®çµæãç¡æå³ãªæ¡ä»¶ãåçŽã«å¥åŠãªå€æ°ãªã©ãæã
é¢çœãçç ãèŠã€ããããšã瀺ããŠããŸãã



ãµã€ãã®ãœãŒã¹ã³ãŒãã調æ»ããéçšã§ãéåžžã«æŽ»çºã«æŽæ°ãããŠããããšã«æ°ä»ããŸãããéçºè
ã¯å°ããªãšã©ãŒãä¿®æ£ãããã§ã«èšè¿°ãããã³ãŒããæé©åããŸããããã¯æå ±ã§ãã ã³ãŒãèªäœã¯éåžžã«åçŽã§ããããã¿ã€ãã®åœ¢ã§äžå¿
èŠã«ã©ããããããšãªãæžãããŠããŸãããµã€ãã¯ã300ã®ã°ããŒãã«å€æ°ãš8000ãè¶
ãã颿°ã§ç®¡çããŠããŸãã ãµã€ãã®ã¢ãŒããã¯ãã£ãçè§£ãããã®ã³ãŒãã倿Žããããšã¯éåžžã«ç°¡åã§ããã
ãµãŒãããŒãã£ã®ãã¬ãŒã ã¯ãŒã¯ã®ãã¡ãMEGAã¯jQueryïŒçŸåšããããªãã§ã¯ååšããŸããïŒãExt JSããã³
SJCLã䜿çšããŠããŸãã åŸè
ã¯ãAESæå·åã«ããæå·åã³ã¢ãå®è£
ããŸãã SJCLã¯ãããŒããã®ä»ã®ãã€ãé
åãæ ŒçŽããããã®è峿·±ã圢åŒãæäŸããŸããéåžžã®é
åã§ãã€ãã远ãããã代ããã«ãa32ãšåŒã°ãã圢åŒã«ãå§çž®ããããŸãã ãã®æ¬è³ªã¯ããã€ãé
åã®å
容ã32ãããã®æ°å€ã«ããã¯ãããããçãé·ãã®é
åã«æžã蟌ãŸããããšã§ãã ã€ãŸããé
åã®4ãã€ãããšã«1ã€ã®éåžžã®æŽæ°ã«å€æãããŸãã ãµã€ãã³ãŒãã«ã¯ã峿ã»ãã{a32é
åãæååãbase64æåå}ã§ããããçš®é¡ã®å€æãå®è¡ãã颿°ããããŸãã
ããŒæ
å ±
ç»é²ããã³èªèšŒããã»ã¹ã®èª¬æã«é²ãåã«ãæå·åã®å¯Ÿè±¡ãšãªãæ
å ±ãã€ãŸã次ã®ããšãèæ
®ãã䟡å€ããããŸãã
- ã¢ã«ãŠã³ããã¹ã¿ãŒã㌠ããŠãŒã¶ãŒç»é²æã«ã©ã³ãã ã«äœæãããé·ãã¯128ãããã§ãã ãããŠãååãšããŠã察称æå·åã«äœ¿çšããããã¹ãŠã®ããŒã®é·ãã¯128ãããã§ãã
- RSAç§å¯éµ ïŒããŠã¹ã®åããšããŒããŒãå
¥åã«åºã¥ããŠç»é²æã«äœæãããŸãã ãã®èšäºã§ã¯ãé察称æå·åã¯ããŠã³ããŒããããã¡ã€ã«ã®å
±æã«äœ¿çšããããããé察称æå·åã«ã¯çŠç¹ãåœãŠãŸããããŸãããŠãŒã¶ãŒããŒã¿ã®èªèšŒãšæå·åã®ããã»ã¹ã倿Žããã¿ã¹ã¯ããããŸããã
- ãµãŒãã¹ã«ã¢ããããŒããããåã
ã®ãã¡ã€ã«ããŒãšãã¡ã€ã«èªäœ ã ããŒã¯ãã¡ã€ã«ã®ã¢ããããŒãæã«ã©ã³ãã ã«äœæããããã®ããŒã¯ãã¡ã€ã«ããŒã¿ã®æå·åã«äœ¿çšãããåã
ã®ãã¡ã€ã«ããŒãšãã®ãã§ãã¯ãµã ã«åºã¥ããŠäœæãããããŒã¯å±æ§ã®æå·åã«äœ¿çšãããŸãã
ã³ãŒãã«ããè¿ã
ããã§ãç»é²ããã»ã¹ãšèªèšŒããã»ã¹ãåæãããã¹ã¿ãŒããŒã®äœææ¹æ³ãšæå·åæ¹æ³ã確èªããããšãææ¡ããŸãã
ããã§ã¯ããããã®ããã»ã¹ãçŽã«æããŠã¿ãŸãããçæ°ã®æ¬è³ªå
šäœãçè§£ããŠãããããã«ãç§ã¯ãã®åçãäœããŸããã

æ°èŠãŠãŒã¶ãŒç»é²
ç»é²ããã»ã¹èªäœã¯ããæ··ä¹±ãæããŸããã¢ã³ã±ãŒãã«èšå
¥ããåŸã匷åãª
api_createuser
ã®é¢æ°ãåŒã³åºãããŸããã
api_createuser
颿°ã«èå³ããããŸãã
ãã®æ©èœã§ã¯ã次ã®ããšã«é¢å¿ããããŸãã
u_k
ãã¹ã¿ãŒããŒèªäœãã°ããŒãã«å€æ°ã api_create_uk
ã«ãã£ãŠäœæããã4ã€ã®32ãããæ°å€ã®é
åssc
ã¯ããã¹ã¿ãŒããŒã§æå·åããããããªãã¯å€ãšé£çµãããŠãµãŒããŒã«éä¿¡ãããã©ã³ãã é
åã§ãã åŸã§ãèªèšŒäžã«ãã¹ã¿ãŒããŒã®æ£ç¢ºæ§ã確èªããããã«äœ¿çšãããŸããsjcl
-AESãå®è£
ããæå·åã©ã€ãã©ãªrand()
-ããŒã«ã«RC4ããŒã¹ã®æ¬äŒŒä¹±æ°ãžã§ãã¬ãŒã¿ãŒã®å®è£
encrypt_key()
ã¯ã察称æå·åãµãŒãã¹ã®åºæ¬æ©èœã§ãã æå·åãããããŒã§åæåãããsjcl
ãªããžã§ã¯ããšé
åãsjcl
ãŸãã æ©èœã³ãŒãã以äžã«ç€ºããŸãããããŸãããã°èª¬æã¯äžèŠã§ãã
ãã®çµæãç»é²åŸã以äžããµãŒããŒã«éä¿¡ãããŸãã
- ã¢ã«ãŠã³ããã¹ã¯ãŒãããæŽŸçããããŒã§æå·åããããã¹ã¿ãŒããŒ
ssc||encrypt_AES-128(u_k, ssc)
ã®åœ¢åŒã®æåå
ãŠãŒã¶ãŒãã°ã€ã³
ããã§ãèªèšŒããã»ã¹ã«ã¹ã ãŒãºã«é²ãããšãã§ããŸãã ã€ãŸããæ¬¡ã®ããã«è¡ãããŸãã
- ãŠãŒã¶ãŒããã°ã€ã³/ãã¹ã¯ãŒããå
¥åããŸã
- æåã®èªèšŒã¹ãããã«åæ Œãããšãæå·åããããã¹ã¿ãŒããŒãšç»é²äžã«äœæãããèªèšŒã·ãŒã±ã³ã¹ïŒ
ssc
ïŒã¯ãµãŒããŒããååŸãããŸã - ãã¹ã¿ãŒããŒã¯ããŠãŒã¶ãŒãå
¥åãããã¹ã¯ãŒãã§åŸ©å·åãããŸã
- èªèšŒã·ãŒã±ã³ã¹ã¯ãã¹ã¿ãŒããŒã§åŸ©å·åããããããªãã¯å€ãšæ¯èŒãããŸããããã«ããããã¹ã¿ãŒããŒãšãã¹ã¯ãŒãã®æ£ç¢ºæ§ããã§ãã¯ãããŸãã
äžèšã®ãã¹ãŠã«ã€ããŠãã³ãŒã«ããã¯é¢æ°
api_getsid2
ã
api_getsid2
ãŸãïŒ
ç»é²/èªèšŒã®ããŒãã¹ãšããŠããã¹ã¯ãŒãã倿Žããããã»ã¹ãèŠãããšãã§ããŸãã
ãã®é¢æ°ã®ã³ãŒãã¯ããèªäœãç©èªã£ãŠããŸããå€ããã¹ã¯ãŒããšæ°ãããã¹ã¯ãŒãããååŸãã2ã€ã®ããŒã§ãã¹ã¿ãŒããŒãæå·åãããããã®å€ããµãŒããŒã«éä¿¡ããŸãã çŸåšã®ãã¹ã¯ãŒããè¿ã¥ããšãæ°ãããã¹ã¯ãŒãã«çœ®ãæããããŸãã ããã§ã¯ã以åã®ãã¹ãŠã®æäœã«æé»çã«ååšããŠãã
prepare_key_pw
颿°ã«ãã£ãšæ³šæãæããããšæããŸããã ãã®ã¿ã¹ã¯ã¯ãæååãã¹ã¯ãŒããa32é
åã«å€æããæ¬¡ã®ããã«ããŒæŽŸçæäœãå®è¡ããããšã§ãã
ãã®é¢æ°ã¯ãç¬èªã®ã¢ã«ãŽãªãºã ã«åºã¥ããŠãããããå€ãã®èŠæ
ãåŒãèµ·ãããŸããã èšäºã®å·çäžã«ããµãŒãã¹ã®äœæè
ã¯ã³ãŒãããããã«å€æŽããããšãã§ããŸããããããã§å€§ããªå€æŽã¯ãããŸããã§ããã ãã®æ¬è³ªã¯ãéä¿¡ããããã¹ã¯ãŒãããã©ã³ãã ããŒãšåºå¥ã§ããªãããŒãååŸããããã«ãäžå®ã®ããŒã§65536åæå·åãããããšã§ãã ãµãŒãã¹ã®äœæè
ãæ¢åã®ã¢ã«ãŽãªãºã ïŒPBKDF2ãªã©ïŒã䜿çšããªãã£ãçç±ã¯è¬ã®ãŸãŸã§ãã
ãã¡ã€ã«ãããŠã³ããŒãããŠæå·åãã
èŠããã«ããã®ããã»ã¹å
šäœã¯æ¬¡ã®ããã«è¡šãããšãã§ããŸãã

ãã®ç»åãé·ãçè§£ããããšã¯è³ã«ãšã£ãŠå±éºã§ãã®ã§ã以äžã§ãããã©ã®ããã«èµ·ãããã説æããŸãã
æ¢ã«è¿°ã¹ãããã«ãã¢ããããŒãäžã«ãåãã¡ã€ã«ã«å¯ŸããŠ6ã€ã®32ãããæ°ããç¬èªã®ã©ã³ãã ããŒé
åãäœæãããŸãã ãã®é
åã®æåã®4ã€ã®èŠçŽ ã¯ããã¡ã€ã«ã®å
容ãæå·åããããã«äœ¿çšãããæåŸã®2ã€ã¯ããã¡ã€ã«ã®ãã§ãã¯ãµã ãèšç®ãããã«ãŠã³ã¿ãŒã®åæå€ãšããŠäœ¿çšãããŸãã ãã®é
åã¯ã
ul_key
ã°ããŒãã«å€æ°ã«æ ŒçŽãããŸãã ãã®å
容ã¯ãJSONã·ãªã¢ã«åãããæåå
ul_KeyNonce
ãããŸãã
æå·åèªäœã¯ãWeb Workerã䜿çšããŠïŒãã©ãŠã¶ããã®ãã¯ãããžããµããŒãããŠããå ŽåïŒããŸãã¯åã«ããŒãžã®ã¡ã€ã³ã³ãŒãå
ã§è¡ãããŸãã ãã¡ã€ã«ãéä¿¡ããæºåãã§ãããããã®å±æ§ãæå·åããããã«ïŒçŸæç¹ã§ã¯ã屿§ã¯ãã¡ã€ã«åã®ã¿ãæå³ããŸãïŒã
ul_key
ãšãã¡ã€ã«ãã§ãã¯ãµã ã«åºã¥ããŠæ°ãããã¡ã€ã«
filekey
ãäœæãããŸãã æ¬¡ã«ããã®ããŒã¯ãã¹ã¿ãŒããŒã§æå·åããããã¡ã€ã«å±æ§ãšãšãã«ãµãŒããŒã«éä¿¡ãããŸãã
initupload3
ããã³
api_completeupload2
颿°ã¯ãããããã¹ãŠã®ã¢ã¯ã·ã§ã³ãæ
åœããŸãã
filekey
ããŒã¯
ul_chunkcomplete
颿°ã§
filekey
ããŸãã以äžã«ãã®äžéšã瀺ããŸãã
ãã¡ã€ã«ãããŠã³ããŒãããŠè§£èªãã
æããã«ããããã®ããã»ã¹ã¯åã«ãã¡ã€ã«æå·åã®éã§ããå¿
èŠããããŸãã è峿·±ãã®ã¯ããµãŒããŒãã
ul_key
ããæå·åããã
filekey
å€ãã
ul_key
ããŒ
ul_key
ååŸããããšã ãã§ãã
ãã¡ã€ã«ã®ããŠã³ããŒãæã«ã¯ããã©ãŠã¶ãŒã³ã³ããã¹ãã«ã¯ã埩å·åããããã¡ã€ã«ããŒãæ ŒçŽãããªããžã§ã¯ããæ¢ã«å«ãŸããŠããŸãã ãããã£ãŠãæåã¯ããŠãŒã¶ãŒèªèšŒã®çŽåŸã«çºçããããã»ã¹ãã€ãŸããã¡ã€ã«ãããŒãžã£ãŒã®ããŠã³ããŒããæ€èšããã®ãçã«ããªã£ãŠããŸãã ãŠãŒã¶ãŒããµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ãããåŸããŠãŒã¶ãŒã¯åœç¶ãèªåã®ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ããããšèããŠããŸãïŒæ¢ã«ããã«ãã¡ã€ã«ããããšä»®å®ããŸãïŒã ãããè¡ãã«ã¯ããŸããã¡ã€ã«ããŒã埩å·åããŠããããã®å±æ§ã埩å·åããå¿
èŠããããŸãã æ¬¡ã®é¢æ°ã®ãã³ãã«ã¯ãããæ±ããŸããããã®ãã¡
loadfm_callback
ãš
process_f_f
ãèå³ãæã£ãŠããŸãã
ç°¡åã«èª¬æãããšããã¡ã€ã«å±æ§ãååŸããããã»ã¹ã¯ã次ã®ã¢ã«ãŽãªãºã ã§èª¬æã§ããŸãã
- ãã¡ã€ã«ãããŒãžã£ãŒãããŒããããã®ãåŸ
ã£ãŠïŒ
loadfm_callback
ïŒãããŠã³ããŒãããããã¹ãŠã®ãã¡ã€ã«ã®èª¬æãå«ãJSONãååŸããŸã - ãã¡ã€ã«æ
å ±ãå«ãé
åãé
眮ãã
farray
é
åãäœæããŸã - åãã¡ã€ã«ã«å¯ŸããŠ
process_f_f
颿°ãïŒååž°çã«ïŒå®è¡ããŸã - ããŒãæã€åãã¡ã€ã«ã«ã€ããŠããã®ããŒãšå±æ§ã埩å·åãïŒ
crypto_processkey
颿°ïŒããããããã¡ã€ã«æ
å ±é
åã«ä¿åããŸã - ãã®åŸã埩å·åãããå€ã
FileStore
倿°ã«FileStore
ãŸãïŒ process_f_f
ã®ååž°ã®çµããïŒ
以äžã«ããã®ã¢ã«ãŽãªãºã ã瀺ãã³ãŒãã®æç²ã瀺ããŸã
ãã®åŸã次ã®ããã«ãã©ãŠã¶ã³ã³ããã¹ããã
ul_key
ãœãŒã¹ããŒã®å€ãååŸã§ããŸãã
dl_keyNonce = JSON.stringify([dl_key[0]^dl_key[4],dl_key[1]^dl_key[5],dl_key[2]^dl_key[6],dl_key[3]^dl_key[7],dl_key[4],dl_key[5]]);
ãã®å€æã¯ã
startdownload
颿°ã§çºçããŸãã
dl_key == filekey
ul_chunkcomplete
颿°ããã®ãã®ã§ãããããã€ãã®åçŽãªã¢ãžã¥ãæŒç®ãå®è¡ããããšã
ul_chunkcomplete
ãããšã
dl_keyNonce
倿°ã¯ãã¡ã€ã«ãã¢ããããŒãããããšãã«çæããã
ul_key
å€ãæ ŒçŽããŸãã ãã®å³ã¯ããã¡ã€ã«ã®ããŠã³ããŒãã«é¢ããã»ã¯ã·ã§ã³ã®åé ã®åçã®é»æ¿ã®å·Šäžé
ã«ãããŸãã
æå·æäœã®ãéè² è·ã
ãã¡ã€ã«ãšããŒãä¿è·ããäžèšã®ååã¯éåžžã«å®å
šã§ãããšããäºå®ã«ããããããã誰ãããµãŒãã¹ãæäŸããã¢ã«ãŽãªãºã ã®å®è£
ã«äŸåããŠããããšã奜ãŸãªããããããŸããã ãã®å Žåããã©ãŠã¶ã®ç¬èªã®æ¡åŒµæ©èœãéçºã§ããŸããããã«ããããµãŒãã¹ã®äžéšã®æ©èœããªãŒããŒã©ã€ãããã远å ã®æå·åãå®è£
ãããŸãã ã€ãŸããGOST 28147-89ã¢ã«ãŽãªãºã ã«åŸã£ãŠãååŸã§ããªãããŒã®ããŒããŠã§ã¢æå·åã䜿çšããŠãããŒæ
å ±ïŒãã¹ã¿ãŒããŒãšãã¡ã€ã«ããŒïŒã®ä¿è·ãå®è£
ããããšã«ããŸããã ããã«å¯ŸããããŒãã¹ã¯ããµãŒãã¹ã«2èŠçŽ èªèšŒãå«ãŸããããšã§ãã
ãããã£ãŠããã®ãŠãŒã¹ã±ãŒã¹ãæ€èšããŠãã ããã
- ãŠãŒã¶ãŒã¯ãµãŒãã¹ã«ç»é²ãããŠããŸã
- 次ã«ãæ¡åŒµæ©èœãã€ã³ã¹ããŒã«ããŸã
- ãã®å©ããåããŠããã¹ã¿ãŒããŒã®ããŒããŠã§ã¢æå·åã¯ãããŒã¯ã³ããæœåºã§ããªãããŒã§å®è¡ãããŸã
- ãã®æ¹æ³ã§æå·åããããã¹ã¿ãŒããŒã¯ãµãŒããŒã«ã¢ããããŒããããŸã
ãã®åŸãããŒã¯ã³ãšãã®PINã³ãŒãããªããã°ããã¹ã¿ãŒããŒã®å€ãååŸããããšã¯ã§ããŸããã ããã«ãã以äžãåŸãããŸãã
- ãµãŒãã¹ã§ã®2èŠçŽ èªèšŒïŒæ£ãã埩å·åããããã¹ã¿ãŒããŒããªããšã
api_getsid2
颿°ã¯ã倱æãããŸãïŒ - ããŒã¯ã³ããªããšãçŸåšã®ã¢ã«ãŠã³ãã®ãã¹ã¯ãŒãã倿Žããããšãã§ããŸãã
次ã®ã¹ãããã¯ããã¡ã€ã«æå·åããŒïŒå¥å
ul_key
ïŒãšãã¡ã€ã«å±æ§ããŒïŒ
filekey
ïŒãããŒã¯ã³ã§æå·åããããšã§ããããŒã¯ã³ã¯ãµãŒããŒã«ä¿åãããŸãã ãããã£ãŠãåãã¡ã€ã«ã¯ãµãŒããŒã«
filekey
ããªãããŒã§æå·åããã
api_completeupload2
颿°ããæå·åããããã¡ã€ã«ããŒã¯
api_completeupload2
ãŸãã ãã¡ã€ã«å±æ§ã¯ãopen
filekey
å€ã§æå·åãããŸãã æç¢ºã«ããããã«ããã¡ã€ã«ãããŠã³ããŒãããããã»ã¹ãç€ºãæ¬¡ã®å³ãã¹ã±ããããŸããã

ããã§éåžžã«æ³šæãå¿
èŠãªæ¹æ³ãé©çšããããšã«æ³šæããŠãã ããã ãã®å Žåãæ»æè
ã¯ããµãŒããŒããéä¿¡ããããã¡ã€ã«ããŒãååãããŠãŒã¶ãŒã®ãã¹ã¿ãŒããŒãç¥ã£ãŠããŠãããã¡ã€ã«ãè§£èªã§ããªãã£ãããšãéèŠã§ãã ãããã£ãŠãããã§ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®æ©èœã詊ããŠãul_keyïŒãŸãã¯dl_keyïŒããŒããŒã¯ã³ããã¡ã€ã«ã®æå·åã«æå·åããŠååŸããul_keyNonceããŒå€ïŒåãdl_keyNonceïŒã䜿çšã§ããŸãã
äœ¿çšæè¡
ããŒããŠã§ã¢æå·åãå®è£
ããããã«ãUSBããŒã¯ã³Rutoken EDSïŒRutoken Webãé©ããŠããŸãïŒããã©ãŠã¶ãŒãã©ã°ã€ã³ãRutoken Web PKI Editionããšãšãã«äœ¿çšãããŸãã
RBSã·ã¹ãã ã® Rutoken WEB PKI Editionããã³
Shield and Swordã®èšäºã§ããã©ã°ã€ã³ã®è©³çްãªèª¬æãæ¢ã«æäŸããŸãã
ã å¿çšãœãªã¥ãŒã·ã§ã³ ã
ãããã®èšäºã®å·ç以æ¥ãGOST 28147-89ã¢ã«ãŽãªãºã ã«åŸã£ãããŒããŠã§ã¢æå·åã®å¯èœæ§ã補åã«è¿œå ãããŸããã GOST 28147-89ã¢ã«ãŽãªãºã ã«æºæ ããããŒããŠã§ã¢æå·åæ©èœãåãããã©ã°ã€ã³ã®ããŒã¿çã¯ã
ããããããŠã³ããŒãã§ã
ãŸã ã ãã®ããŒãžã§ã³ã®ãã©ã°ã€ã³ã¯ãŸã å®å
šã«ã¯ãã¹ããããŠããªããããPMã§éç¥ããããã«æ±ããŠããå Žæã«ãšã©ãŒãããå¯èœæ§ãããããšãèŠåããŸãã
ãã©ã°ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ã§ã¯ã察称æå·åã¯ãæ¬¡ã®æ§æãæã€æå·å颿°ã«ãã£ãŠå®è£
ãããŸãã
encrypt(deviceId, keyLabel, data, resultCallback, errorCallback) â {string}
å
¥åãšããŠã颿°ã¯ä»¥äžãåããŸãã
- ããã€ã¹ID
number
- æå·åã®ããŒã©ãã«ã
number
ïŒãã®ãããªããŒããªãå Žåã¯çæãããŸãïŒ - æå·åãããããŒã¿ã
string
ïŒ "aa:bb:cc:dd"
ã®åœ¢åŒã®ãã€ãé
åãå«ãæååïŒ - æå·åæäœãæ£åžžããã³å€±æã«å®äºããããã®ã³ãŒã«ããã¯é¢æ°
埩å·åã¯ã
decrypt
æ©èœã䜿çšããŠåæ§ã«å®è¡ãããŸã
ããŒã©ãã«ã¯ãã©ã®ããŒã§ããŒã¿ãïŒdecïŒã§æå·åããããæ±ºå®ãããããç¹å¥ãªæ³šæãæãå¿
èŠããããŸãã ã©ãã«ã¯ä»»æã®æååã§ãããäž»ã«äŸ¿å©ãªããŒèå¥ã«äœ¿çšãããŸãã
ãã®å Žåã2ã€ã®ããŒãã¢ã䜿çšããŸãã1ã€ã¯ãã¹ã¿ãŒããŒã®æå·åçšããã1ã€ã¯åã
ã®ãã¡ã€ã«ããŒã®æå·åçšã§ãããã¹ã¿ãŒããŒãæå·åãããŠããããŒã«ã¯ããŠãŒã¶ãŒã®ãã¹ã¯ãŒããšåãã©ãã«ãä»ããŠããŸãïŒçŸåšãæååããããã·ã¥ã䜿çšãããšããèããe-mail||
ãããŸããããè¿ããã¡ã«ä¿®æ£ããŸãïŒãããŠã³ããŒããããã¡ã€ã«ã®ããŒãæå·åããã«ã¯ããã¹ã¿ãŒããŒã®æåå衚çŸãšåãã©ãã«ã®ããŒã䜿çšããŸãïŒããã§ã¯ããã¹ã¿ãŒããŒã®ããã·ã¥ã䜿çšããããšãã§ããŸãïŒãçŽæ¥éçº
ç§ã®ãœãŒã¹ã³ãŒãã«ã€ããŠã³ã¡ã³ããããã ãã§ããå®éã«ã¯ã¢ã«ãã¡çã§ãããäžèšã®æ©èœãå®è£
ããŠããŸããç§ã¯èªåã®ãªã¯ãŒã¯ããµãŒãã¹ã®ä»ã®æ©èœãšã©ãã ãäºææ§ããããã確èªããªãã£ãã®ã§ããã¹ãŠã®ãœãŒã¹ãgithubã«æçš¿ãããã®ã·ã¹ãã ã宿ãããã®ã«ã©ããªå©ãã§ãåãã§ããŸãããããã£ãŠããã®èšäºã巚倧ãªãªã¹ãã§è©°ãŸãããããšã¯ãããæ¡åŒµæ©èœã®äžè¬çãªã¹ããŒã ã®ã¿ã説æããŸãã宿ããæ¡åŒµæ©èœã¯ããããããŠã³ããŒãã§ããŸãã3ã€ã®ãã©ãŠã¶ïŒChromeãFirefoxãIEïŒã®æ¡åŒµæ©èœãæäŸããCrossriderãµãŒãã¹ã䜿çšããŠéçºãããŸããããChromeãŸãã¯Firefoxã§åäœã確èªããæ¹ããããæåã®ã»ããã¯ããã«å®å®ããŠããŸããå¹³å¡ãžã®æ¡åŒµã³ãŒãã¯ç°¡åã§ãããµãŒãã¹ããŒãžã«ãããã©ããããã§ãã¯ããããã§ããã°ã远å ã®ã¹ã¯ãªãããããŒãããã ãã§ãããããã®ã¹ã¯ãªããã¯ãããã€ãã®ãã€ã¢ãã°ã远å ããŠããŒãžã³ãŒãã倿Žããæ¬¡ã®ãµãŒãã¹æ©èœããªãŒããŒã©ã€ãããŸããchangepw
ïŒãã¹ã¯ãŒãã®å€æŽãæ
åœapi_getsid2
ïŒãã°ã€ã³ã³ãŒã«ããã¯ã®1ã€api_completeupload2
ïŒã³ãŒã«ããã¯ãã¡ã€ã«ã®ã¢ããããŒãå®äºloadfm_callback
ïŒã³ãŒã«ããã¯ãã¡ã€ã«ãããŒãžã£ãŒã®ããŠã³ããŒãprocesspacket
ïŒå¥ã®ã³ãŒã«ããã¯ãããŠã³ããŒããããã°ããã®ãã¡ã€ã«ã®å±æ§ããã³ãŒããããŸãparsepage
ïŒè¿œå ã®ãã€ã¢ãã°ã®æç»ãæ
åœdologin
ïŒèªèšŒæ©èœãæ¡åŒµããŸãinitupload3
ïŒãã¡ã€ã«æå·åããŒã®äœæãæ
åœstartdownload
ïŒãã¡ã€ã«ããŒã®éè§£æãšããŠã³ããŒãã®åæå
ç¹°ãè¿ããŸãããæ¡åŒµæ©èœãåäœäžã®ã¢ã«ãŠã³ãã«ãã©ãã°ããªãã§ãã ããïŒãã®ãµãŒãã¹ã䜿çšããŠãããŠãŒã¶ãŒãããå ŽåïŒãããã¹ãã¢ã«ãŠã³ããååŸããããšããå§ãããŸããæ¡åŒµæ©èœãã€ã³ã¹ããŒã«åŸã«äœ¿çšããã«ã¯ã次ã®ãã®ãå¿
èŠã§ãã- å§ããã«ã¯ãRutoken EDSïŒãŸãã¯Rutoken WebïŒãååŸãããã©ãŠã¶ãŒãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããã®ãè¯ã
- æ¡åŒµæ©èœãã€ã³ã¹ããŒã«ãã
- æ¡åŒµæ©èœãç¡å¹ã«ããŠãµãŒãã¹ã«ãã°ã€ã³ããŸã
- ãã©ãŠã¶æ¡åŒµæ©èœãæå¹ã«ãã
- ã¢ã«ãŠã³ãããŒãžã«ç§»å
- ããªã³ã¯ããŒã¯ã³ããã¿ã³ãã¯ãªãã¯ããŸã
- çŸåšã®ãã¹ã¯ãŒããå
¥åããŠããã®æäœãå®è¡ããŸã
æ¡åŒµæ©èœã®ä»£ããã«ã次ã®ããã¯ããŒã¯ã¬ããã䜿çšã§ããŸãïŒChromeãSafariãFirefoxã§ãã¹ãæžã¿ïŒïŒ javascript:(function(){if(document.getElementById('cryptorutokenjs')){alert(' ');return}function loadRemoteScript(url){var script=document.createElement('script');script.type="text/javascript";script.src=url;document.head.appendChild(script)}function loadRemoteStyle(url){var style=document.createElement('link');style.rel='stylesheet';style.type="text/css";style.href=url;document.head.appendChild(style)}loadRemoteStyle("https://mega-crypto.googlecode.com/git/mega.css");loadRemoteScript("https://mega-crypto.googlecode.com/git/util.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/rutoken-extra.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/rutoken-crypto.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/mega.js")})();
äœæ¥å®æŒ
ãŸããäœæç©ããµã€ãã«æ¥ç¶ããŸãã ãããè¡ãã«ã¯ïŒ
ãµãŒãã¹ã«ãã°ã€ã³ãããã¡ã€ã«ãããŒãžã£ãŒããŒãžãéããŸã

æ¡åŒµæ©èœãŸãã¯ããã¯ããŒã¯ã¬ãããæ¥ç¶ãããã®åŸããŒã¯ã³PINãå
¥åããå¿
èŠããããŸã

ã¢ã«ãŠã³ãããŒãžã«ç§»åããããŒã¯ã³ãã¢ã«ãŠã³ãã«ãã€ã³ãããŸã

ãã®åŸããµãŒãã¹ãçµäºããäºèŠçŽ èªèšŒã䜿çšããŠå床ãã°ã€ã³ã詊è¡ã§ããŸãããŠãŒã¶ãŒåãšãã¹ã¯ãŒããå
¥åããŠãã ãã
PINãå
¥åããŠãã ãã

...
å©çïŒ
ãã®å Žåã®èªèšŒã¯ã次ã®ã¹ããŒã ã«åŸã£ãŠè¡ãããŸãã- ãµãŒããŒã§ã®ãã°ã€ã³ãšãã¹ã¯ãŒãã®ãã¢ã®ç¢ºèª
- ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããæ£ããå Žåãæå·åããããã¹ã¿ãŒããŒã¯ãµãŒããŒããååŸãããŸã
- ãã©ã°ã€ã³ã䜿çšããŠãããŒã¯ã³ã®PINãèŠæ±ãããŸã
- PINãæ£ããå
¥åãããå Žåããã¹ã¿ãŒããŒã¯ããŒã¯ã³ã®ããŒã§è§£èªãããŸã
çµè«ã®ä»£ããã«
æ¡åŒµæ©èœã®äœæã®è©³çްãšãã»ãšãã©ã®å Žåã«åæåŒã³åºãã䜿çšãããµãŒãã¹ã«éåææå·åæ©èœãçµã¿èŸŒãããšã®è©³çްã«ã€ããŠã¯èª¬æããªãã£ããããããã§ãç¶ç¶ãã...ããšæžããããšæããŸãããã®èšäºãç· ããããããã«ãã¯ã©ã€ã¢ã³ãåŽã®æå·åãå®è£
ãããšããèãã«ããäžåºŠæ»ããããšæããŸããã¯ã©ã€ã¢ã³ãåŽã§è¿œå ã®æå·åæ©èœãå®è£
ããã¢ãããŒãã¯ããµãŒããŒã«äœãä¿åããããæ°ã«ããªãWebãµãŒãã¹ïŒãã¡ã€ã«ã¹ãã¬ãŒãžãã¡ãŒã«ããŸãã¯åçŽãªãã£ãããªã©ïŒã«é©çšã§ããŸããããšãã°ãCMS圢åŒã®ã¡ãã»ãŒãžæå·åã䜿çšããã¡ãŒã«ãµãŒãã¹ãšãVKO GOST R 34.10-2001ã¢ã«ãŽãªãºã ã䜿çšããããŒäº€æã¡ã«ããºã ã䜿çšããŠãå®å
šãªã¡ãŒã«ãå®è£
ã§ããŸããã質åããæèŠããåŸ
ã¡ããŠãããŸããPSïŒïŒã¢ã¹ã¯ã¯ããã®ïŒæåã®5人ã«ããŒã¯ã³ã§ãã©ã°ã€ã³ããã¹ãããŠããããŸã-PMã«æžã蟌ã¿ãŸãã