ãã¡ãŒã ãŠã§ã¢ã®ã»ãã¥ãªãã£ãSTM ã SGXããã³PSPã«ãã£ãŠã©ã®ããã«åœ¹ç«ã€ãã«ã€ããŠèå³ãããå Žåã¯ã ãæãããŠããŸãã
åæçãªç²Ÿç¥ãèŠããäŒçµ±ãåãåºãããã®ã§ãåã®éšåãžã®èšåã¯ããŸãããèªåã§ãããæ¢ããŠãã ããã
ããŒã7ã æªæ¥ã®æè¡
以äžã«èª¬æãããã¹ãŠã®æè¡ã¯é·ãéå ¬åŒã«çºè¡šãããŠããŸããããéåžžã«å¹³å¡ãªçç±ã§ææ¥ã®æ©äŒãšããŠãããã«ã€ããŠã話ããŸã-UEFIã®ãããªæ¥éã«æé·ããŠããç°å¢ã§ããããã€ãã®æè¡ã®æ瀺ããå°å ¥ãŸã§å¹ŽïŒHaswellã«ç»å ŽãããããŸã é©åã«å®è£ ãããŠããªãPFATãæãåºãã ãã§ååã§ãïŒã
ãã§ã«ç¬¬3éšã®çµããã§SGXãšSTMã«ã€ããŠè¿°ã¹ãã®ã§ããªãã·ã§ã³ã®ãªããã¹ãŠã®æ°ããAMD APUãå«ãPSPãã話ãå§ããŸãã
AMDãã©ãããã©ãŒã ã»ãã¥ãªãã£ããã»ããµ
AMDã¯ãéå»5幎éã«åãããã»ãããšIntel SoCã«æèŒãããŠããIntel Management Engineã®æåãèŠãŠãé²æ©ã«è¿œãã€ããSoCã§ãã®ãããªãã®ãæ§ç¯ããããšã決å®ããŸããã
ããŒããŠã§ã¢ã®ä¿¡é Œã®ã«ãŒããæã¡ãããéåžžã®ä¹±æ°ãžã§ãã¬ãŒã¿ãŒã欲ãããæå·ã¢ã¯ã»ã©ã¬ãŒã¿ãŒãšTPM 2.0ãšãã¥ã¬ãŒã¿ãŒã欲ãã-ããããã®ããšã欲ãããããããã¹ãŠå®è£ ããã®ã¯é£ãããªã-ãã³ããŒããIPã³ã¢ãè³Œå ¥ãããã¡ãŒã ãŠã§ã¢ãæžããŠãã©ãããã©ãŒã ã®ãŠãŒã¶ãŒããããŸãã«ãå€ãã®ãéãæ¯æããããã®ããªãã«ããããšãã決å®ããªãããã«ãããå€ãã®ã·ã¹ãã æ©èœã§ãããåŸ ã¡ãŸãã
ãã®çµæãTrustCoreãã¯ãããžãŒãæèŒããARM Cortex-A5ã³ã¢ãIPã³ã¢ãšããŠè³Œå ¥ããTPM 2.0ã®ãšãã¥ã¬ãŒã·ã§ã³ã®ããã«TrustonicããTEEã³ãŒããè³Œå ¥ããæ®ããå®è£ ããŠãçµæã®SoC-inside-SoCã次ã®UEFIãã©ã°ãã§ã¹ãã§çºè¡šããŸãã ã
TPMããšãã¥ã¬ãŒãããããšã«ã€ããŠã®å ã®PSPã¹ããŒã ã¯ãåœæ話ããŠããŸããã§ããã
UEFIã»ãã¥ãªãã£ã®å Žåããã®åãPSPã¯ãHVBãµãã·ã¹ãã ãS3 BootScriptã®å éšã¹ãã¬ãŒãžãMeasured Bootãå®è£ ããããã®TPMãšãã¥ã¬ãŒã¿ãŒãä¹±æ°ãžã§ãã¬ãŒã¿ãŒãæå·åã¢ã¯ã»ã©ã¬ãŒã¿ãŒãæäŸããŸãã
ããŒããŠã§ã¢æ€èšŒæžã¿ããŒã
ãã®ãã¯ãããžãŒã«ã€ããŠã¯ååã§ãã§ã«èª¬æããŸããããããã§ããã«è©³ãã説æããŸãã ãã®æ¬è³ªã¯åçŽã§ã-PSPã¯BSPã®éå§åã«å¶åŸ¡ãååŸãããã¡ãŒã ãŠã§ã¢ã®ç¬¬2ã¹ããŒãžã®å 容ãšéå§ã³ãŒããå€æŽãããŠããªãããšã確èªããŸããæåããå ŽåãBSPã¯ResetVectorã§éå§ãããã·ã³ã¯éåžžã©ããèµ·åãã倱æããå Žåã¯ãšã©ãŒã³ãŒãã衚瀺ãããŸãPOSTãšã³ã³ãŒããŒãšBSPã¯ããããµã€ã¯ã«ãã¹ãã³ããŠããŒããªã»ãããããã®åŸãã¹ãŠãåã³ç¹°ãè¿ãããŸãã
ãããã£ãŠãHVBã¯ã·ã¹ãã ã®ä¿¡é Œã®ããŒããŠã§ã¢ã«ãŒãã§ããããã®ãã¯ãããžãŒã¯PEIããªã¥ãŒã ã®ã¿ãä¿è·ããä»ã®ãã¹ãŠã®ãã§ãã¯ã¯ãã¡ãŒã ãŠã§ã¢ã®äœæè ã®è¯å¿ã«åºã¥ããŠããŸãã
ãªãªãžãã«ã®AMD HVBåè·¯
ããã©ã«ãã§ã¯ãHVBã¯ãã¹ãŠã®ãã©ãããã©ãŒã ã§ç¡å¹ã«ãªã£ãŠããããã®çµã¿èŸŒã¿ã«ã¯éåžžã«éèŠãªæ§æãå¿ èŠã§ãããã®ãããç§ã¯ãŸã ãã¯ãããžãŒããã¹ãããŠããŸããïŒPSPãæèŒãã第2äžä»£ã®ããã»ããµãŒã®ãã¡ãŒã ãŠã§ã¢ã§çŽæ¥åäœããŸãïŒã ã
çµ±åTPM 2.0
TCGã¯ãŒãã³ã°ã°ã«ãŒãã¯ãWindows 10ã®ãªãªãŒã¹ã«èå³æ·±ãã€ãããŒã·ã§ã³ãæºåããŸããã以å䜿çšãããŠããTISã€ã³ã¿ãŒãã§ã€ã¹ã®ä»£ããã«ãACPIåŒã³åºãã䜿çšããŠTPMã¢ãžã¥ãŒã«ãšããåãã§ããããã«ãªããããã»ããµã¡ãŒã«ãŒã¯å€éšãããã§ã¯ãªããããã»ããã«çŽæ¥TPMãå®è£ ã§ããå®è£ ãœãããŠã§ã¢ã®ååãäœæããããšããå¯èœã ãã®ãããªãœãªã¥ãŒã·ã§ã³ã«ã¯ãSSOP-28ããã±ãŒãžã®TPMãããããããããã»ããã®äº€æãé£ããïŒãšãã¡ãªããïŒãã³ããŒããã¯ã€ã³ïŒã®äž¡æ¹ã®å©ç¹ããããŸãããIntelïŒSkylakeã®å ŽåïŒãšAMDïŒPSPãåããAPUã®å ŽåïŒã§å®è£ ãããŠããŸãã ã TPM 2.0æšæºã¯äž¡æ¹ã®ãœãªã¥ãŒã·ã§ã³ã§å®å šã«ã¯ãµããŒããããŠããŸããããTPMãçµ±åãããã·ã¹ãã ãBitLockerã䜿çšããŠWindows 10 Ready蚌ææžãåä¿¡ã§ããããã«ããããã ãã§ãã ãã ããTPMãŠãŒã¶ãŒã®æ£ã¯ééããªãå°çããŸãã çµ±åãããTPMãšãšãã«ãããŒããŠã§ã¢RNGãšæå·ã¢ã¯ã»ã©ã¬ãŒã¿ãç»å ŽããŸããããããã¯ãå¿ èŠã«å¿ããŠåå¥ã«äœ¿çšã§ããŸãã
ã»ãã¥ã¢ãªS3 BootScriptã¹ãã¬ãŒãž
å¥ã®PSPæ©èœã¯çµã¿èŸŒã¿ã®NVRAMã§ããŠãŒã¶ãŒããŒã¿ãå®å šã«ä¿åã§ããŸãã çŸæç¹ã§ã¯ãAMDã¯S3 BootScriptãä¿åããã·ã¹ãã ãæ»æããä¿è·ããŠããŸãã åæã«ãS3ããã®çµäºæéã¯ãããã«äœäžããŸãããã»ãã¥ãªãã£ã®ããã«50ã100ããªç§äœåã«èš±å®¹ã§ããŸãã
æ®å¿µãªãããPSPã«å ¬éãããŠããããã¥ã¡ã³ããããAMDã¯éåžžã«æ²ãããããæçšãªãªã³ã¯ãæäŸããããšã¯ã§ããŸãããNDAã«éåããããšãªãäŒããããšãã§ãããã¹ãŠã®ããšãæ¢ã«è¿°ã¹ãŸããã
Intel Software Guard Extensions
Intelãã¯ãããžãŒã«æ»ããŸãããã 圌ãã¯çŽ1幎åã«SGXã«ã€ããŠè©±ãå§ããŸãããã次ã®ãã€ã¯ãã³ãŒãã¢ããããŒãã§IntelãSkylakeããã»ããµçšã«ãªã³ã«ãããšããæ°é±éåã«ãšã³ããŠãŒã¶ãŒãå©çšã§ããããã«ãªããŸããã SGXã¯ãã¢ããªã±ãŒã·ã§ã³ããããã ãé£ã³å°ããã€ãŸã ãã®ã¢ã¯ã»ã¹ããªã³ã°0ãSMMãªã©ã®ããç¹æš©çãªå®è¡ã¢ãŒãããè¡ãããå Žåã§ããå€éšã¢ã¯ã»ã¹ããããŒããŠã§ã¢ã§ä¿è·ãããã³ãŒããšããŒã¿ã®ã¡ã¢ãªé åã
ãã®ãã¯ãããžãŒã¯ç解ãšäœ¿çšãéåžžã«è€éã§ããïŒ ããã°ã©ãã³ã°ãªãã¡ã¬ã³ã¹ã®ã»ãŒ200ããŒãž ïŒãæœåšçã«éåžžã«åŒ·åã§ãããããIntelã¯ãããä¿é²ãå§ããŸããã
ãã®ãã¬ãŒã³ããŒã·ã§ã³ã® 200æ以äžã®ã¹ã©ã€ãã®1ã€ã§ããSGXã®åäœåçãã80åã®ãããªåœ¢åŒã§ã ã
ã€ã³ãã«ã¯SGXãããªããŒã¹ãµã³ãããã¯ã¹ããšåŒã³ãŸããã€ãŸããæªæã®ãããœãããŠã§ã¢ãä¿¡é Œã§ããªããœãããŠã§ã¢ãéé¢ãã代ããã«ãSGXã䜿çšããŠããã°ã©ã ã¯ä»ã®äžçããéé¢ã§ããŸãã ãã®èãæ¹ã¯ARM TrustZoneã«äŒŒãŠããŸãããARMã®äžçãéåžžã®ä¿¡é Œã§ãããã®ã«åå²ããã SMCåœä»€ã®åŒã³åºããéããŠã®ã¿çžäºäœçšããç°ãªãã³ã¢ã§å®è¡ãããå ŽåãIntelã¯åãã³ã¢ãæã¡ãŸãããã¡ã¢ãªã¯éåžžããã³å®å šã«å ±æãããŸãïŒ
æ®éã®èšæ¶ã®äžã«ããå®å šãªé£ã³å°ã
ãã®æè¡ã«å¯Ÿããç§ã®æ 床ã¯ãŸã 圢æãããŠããŸãã-ãŸã è©ŠããŠããŸããã çŸæç¹ã§ã¯Skylakeã®äœæ¥ãããŠããŸããã ããã«ãããããããç§ã¯ããŸãã«ãé²æ©ã«è¿œãã€ãããšããŠããã®ã§ãç§ã®è³ããã圌ããSGXã«ã€ããŠæžããŠããããšããã¹ãŠèªã¿ãŸããïŒ
Intel Webãµã€ãã®SGXã«é¢ããããŒã¿ã« ã
ãã«ã ã·ã¥ã¿ããå·¥ç§å€§åŠã®ãµã€ãããSGXã«ã€ããŠã®æŠèŠè¬çŸ© ã
å€æ°ã®èå³æ·±ããªã³ã¯ãå«ãNccGroupã¬ãã¥ãŒèšäº ã
SGXçšã®ãªãŒãã³ãœãŒã¹ã³ãŒãèšè¿°ãã©ãããã©ãŒã ã
ãããŠäžè¬çã«ã firmwaresecury.comã®SGXã»ã¯ã·ã§ã³å šäœ ã
Intel SMI Transfer Monitor
ãã§ã«è¿°ã¹ã2çªç®ã®Intelãã¯ãããžãŒã¯STMã§ãã æåã®èšåã¯2009幎ã«é¡ãã6幎ã®éçºã®åŸããã®æè¡ã¯2015幎8æã«ããããå°å ¥ãããŸããããã®æ¬è³ªã¯ã·ã³ãã«ã§ããã«ãŒãã«ã¡ã¢ãªãªã©ã®ããŒã¿ãå€æŽãããªã©ã
IDF2015ã§ã®STMãã¬ãŒã³ããŒã·ã§ã³ããã®ã¹ã©ã€ãã
ãã®ãã¯ãããžãŒã¯ãSMMããã»ããµãŒã®ãæ»æé¢ããšãSMIããã»ããµãŒã®ãããã³ã°ã«ããç Žå£çãªçµæã®äž¡æ¹ãå€§å¹ ã«åæžã§ããŸãã ããšãã°ããã¡ãŒã ãŠã§ã¢ã®æŽæ°ã«äœ¿çšãããããã»ããµãé€ããã¹ãŠã®ããã»ããµã®MMIOãããã»ãããžã®ã¢ã¯ã»ã¹ãæåŠããããšã«ãããä»ã®ããã»ããµããä¿è·ããããšãã§ããŸããããšãæ»æè ã«ã¯ã©ãã¯ãããŠããæ»æè ã¯ä»»æã®ã³ãŒããå®è¡ã§ããŸãã
æãéèŠãªå©ç¹ã¯æ°åããªãããšã§ããSTMã®åäœã«ã¯ãä»å±ã®VT-x / AMDVãšã¢ã¯ã»ã¹ã¬ãã«ã®æ£ããèšå®ã®ã¿ãå¿ èŠã§ãã çŸæç¹ã§ã¯ãSTMã®äºåãµããŒãã¯MinnowBoard Maxãã¹ãããŒãã«å¯ŸããŠã®ã¿EDK2ã«å®è£ ãããŠããŸãããIBVã¯ä»åŸ6ãæãã1幎以å ã«ãã©ãããã©ãŒã ã«åãããŠé©å¿ããSMMããããã³ã°ããæããã¯ããã«å°ãªããªããŸãã ç¡æã®ã»ãã¥ãªãã£ããªãããšã¯æããã§ãããSTMã¯ããã»ã©åçŽã§ã¯ãªãSMMåæåããã»ã¹ã«ãããªãè€éãããããããããã«SMIåŠçã«ã¯æéãããããŸãïŒããã«æªãããšã«ãå®éã«ã¯ããã«äžå®ã®æéãããããããŒãRTOSã®ãŠãŒã¶ãŒã¯åã³èŠãã¿ãŸãïŒã«å ããŠãä»®æ³åã«ããããã©ãããã©ãŒã ã®ç¥ããªããŠãŒã¶ãŒããªãã«ãªããSTMããã®ãããªç¶æ³ã§äœ¿çšã§ããªããªããŸãã ããã«ãããããããç§ã¯MinnowBoardã«STMãã©ã³ããçªã£èŸŒãã ãç§ã¯èšãããšãã§ããïŒIBVããããããæ©ãå®è£ ãã-ããè¯ãã
ãåžæã®æ¹ãžã®è¿œå æ å ±ïŒ
STMã®çºè¡šãšãšãã«Vincent Zimmerã«ããæçš¿ ã
䟿å©ãªãªã³ã¯ãåããã€ã³ãã«ã®STMããŒã¿ã« ã
ãããã«
ããŠããã®èšäºã®ãµã€ã¯ã«ã¯çµãããŸãããèªè ãèå³ãæã£ãŠããããšãé¡ã£ãŠããŸãã
ãã¯ãããžãŒã¯æ¥éã«éçºãããŠãããææ¥ããã€ãã®ãã¬ãŒã¯ã¹ã«ãŒãã¯ãããžãŒãç»å Žããå ŽåïŒãŸãã¯æ¢åã®ãã¯ãããžãŒã«å€§ããªç©ŽãèŠã€ãã£ãå ŽåïŒããããã«ã€ããŠæžããããšæããŸãã
次ã®èšäºã§ã¯ãSecureBootã飌ããªãããŸã-PKããã³KEKããŒãçæããåå·çè ã¯ããŒã§çœ²åãããŠããªããã®ã®ããŠã³ããŒããçŠæ¢ã§ããŸãã ãæž èŽããããšãããããŸããã
PS圌ã¯ãã¡ã€ãã«ããŒãã«ã®æåŸã®éšåã§çŽæããŸããããã§ããŸããã§ããã ã¿ã©-ç§ã¯ãã·ã¢èªã§æžãããšãã§ããŸã-ååŸã«ãçŸããã¬ã€ã¢ãŠããããããŒãã«-ç³ã®è±ã¯åºãŸããã èª ã«ç³ãèš³ãããŸããã