ºÇ½ª¹¹¿·¡§ lupinthe4th 2011ǯ08·î05Æü(¶â) 07:30:49ÍúÎò
http://www.iqmagazineonline.com/magazine/pdf/v_3_4...
¢£ Why is Security So Important?
¢£ Economic Value in Security Issues
¢£ Open Industry Issues
¢£ The Options for Security
¢£ ARM Approach – The TrustZone Solution
ÁȤ߹þ¤ßÀ¤³¦¤ÎÃæ¤Ç¿®Íê¤Ç¤¤ë¥³¥ó¥Ô¥å¡¼¥Æ¥£¥ó¥°¤ò²Äǽ¤Ë¤¹¤ëARM¤Î¥¢¥×¥í¡¼¥Á¤Ï¡¢¥È¥é¥¹¥Æ¥Ã¥É¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î³µÇ°¤Ë´ð¤Å¤¤¤Æ¤¤¤Þ¤¹¡£
TrustZone¤Ï¡¢¥»¥¥å¥¢¤Ê¤È°ì½ï¤Ë¡¢¥³¡¼¥É¤ÎʬΥ¤òÄ󶡤¹¤ë¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤è¤ë¥»¥¥å¥ê¥Æ¥£´Ä¶¤Ç¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹
Trusted¥Á¥§¡¼¥óÆâ¤Î¾¤ÎÍ×ÁǤ˴ðËÜŪ¤Ê¥»¥¥å¥ê¥Æ¥£¥µ¡¼¥Ó¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎξÊý¤òÄ󶡤¹¤ë¥½¥Õ¥È¥¦¥§¥¢¡¢
¥¹¥Þ¡¼¥È¥«¡¼¥É¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¡¢¤ª¤è¤Ó°ìÈÌŪ¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò´Þ¤à¡£
È󥻥¥å¥¢"Ä̾ï"¤Î¼Â¹Ô´Ä¶¡¢¤ª¤è¤Ó¿®Íꤵ¤ì¤ë¡¢Êݾ㤵¤ì¤¿¥»¥¥å¥¢¤ÊÀ¤³¦¡§TrustZone¤Ï¡¢2¤Ä¤Î¥Ñ¥é¥ì¥ë¼Â¹Ô¤ÎÀ¤³¦¤òʬΥ¤¹¤ë¡£
¢£ Key Benefits of TrustZone (TrustZone¤Ï¤Î¼ç¤ÊÍøÅÀ)
TrustZone¤Ï¡¢³«È¯¼Ô¤È¥¨¥ó¥É¥æ¡¼¥¶¡¼¤Ø¤Î½ÅÍפʵ»½ÑŪ¤ª¤è¤Ó¾¦¶ÈŪ¤Ê¿¤¯¤ÎÍøÅÀ¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£
¡¦¼ç¤Ë¡¢TrustZone¤Ï¡¢¥Á¥Ã¥×¾å¤Î¥»¥¥å¥¢¤Ê¥Ç¡¼¥¿¤Î¤¿¤á¤Î°ÂÁ´¤Ê´Ä¶¤òÄ󶡤·¤Þ¤¹¡£
¤³¤ì¤Ï¥»¥¥å¥ê¥Æ¥£¤Ø¤Î´°Á´¤Ê¥¢¥×¥í¡¼¥Á¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£Î㤨¤Ð¡¢
SoCÆâ¤Ë°ÂÁ´¤ÊÎΰ褬¤¢¤ë¾ì¹ç¤Ï¡¢SoC¤ÎCPU¤ò»ÈÍѤ·¤¿¥»¥¥å¥¢¤ÊSIM¥«¡¼¥É¤«¤é¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤¿¥¡¼¤ò½èÍý¤¹¤ë¤À¤±°ÂÁ´¤Ë¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤Æ¤¤¤Ê¤¤OS¤Ï¡¢¤³¤ì¤ò͸ú¤Ë¤¹¤ë¤Ë¤ÏÉÔ½½Ê¬¤Ç¤¢¤ë¡£
¡¦¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥»¥¥å¥¢¤Ê¥·¥¹¥Æ¥à¤ÎÌäÂê¤Ç¤¹
Æä˹½À®¤È¤·¤Æ,¥³¥¢¤Î¥×¥í¥»¥Ã¥µ¤È³°Éô¥¹¥È¥¢¤Î´Ö¤Î¥È¥é¥Õ¥£¥Ã¥¯¤Ï°Å¹æ²½¤µ¤ì¤ëɬÍפ¬¤¢¤ë¡£
TrustZone¤Ï¤Ç¡¢´°Á´¤Ê¥Ð¥¹ÂÓ°èÉý¤Î¥¢¥¯¥»¥¹¤¬¹â®¤Ê¥á¥â¥ê¥¢¥¯¥»¥¹Â®ÅÙ¤òÄ󶡤¹¤ë¤¿¤á¤Ë¡¢¤¹¤Ù¤Æ¤Îµ²±Îΰè¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤µ¤é¤Ë¡¢°ÂÁ´¤Ê¥í¡¼¥«¥ë¥¥ã¥Ã¥·¥å¤Î¥Ç¡¼¥¿¤Ï¡¢¤µ¤é¤Ë¹â®¤Ê¥¢¥¯¥»¥¹¤òÄ󶡤·¤ÆÉü¹æ²½¤µ¤ì¤¿·Á¼°¤Ç°ÂÁ´¤ËÊݸ¤µ¤ì¤Þ¤¹¡£
°Å¹æ²½¤µ¤ì¤¿¥Ç¡¼¥¿¤Ï¡¢È󥻥¥å¥¢World¤ÈƱ¤¸¥Õ¥é¥Ã¥·¥å¥á¥â¥ê¤ò¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£
³Î¼Â¤Ë¡¢°Â²Á¤ÊÂ絬ÌϤǽÀÆð¤Ê¥¹¥È¥ì¡¼¥¸¤¬ÍøÍѤµ¤ì¤ë¡£
¡¦TrustZone¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤È¥Ï¡¼¥É¥¦¥§¥¢Í×ÁǤǹ½À®¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢
¤½¤ì¤Ï¡¢¥«¥¹¥¿¥Þ¥¤¥º¤äSoC¤¬´°À®¤·¤¿¸å¤â¡¢¥»¥¥å¥¢¤Ê¥·¥¹¥Æ¥à¤Ø¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤ò²Äǽ¤Ë¤¹¤ë½ÀÆðÀ¤òÄ󶡤·¤Þ¤¹¡£
¡¦TrustZone¤Ï¡¢Áȹþ¤ß¥·¥¹¥Æ¥àÆâ¤Ë¥»¥¥å¥¢¤Êworld¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ï¡¢¥À¥¤¥ì¥¯¥È¥Ú¥ê¥Õ¥§¥é¥ë¥Á¥ã¥Í¥ë¡¢¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹,SIM¤ª¤è¤Ó¥¹¥Þ¡¼¥È¥«¡¼¥É¤À¤±¤Ç¤Ê¤¯¡¢²»À¼½ÐÎϤâ´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
È󥻥¥å¥¢world¤Î¤¿¤á¡¢TrustZone¤Ï¡¢SoC¥Ç¥Ð¥¤¥¹Æâ¤Î¤¹¤Ù¤Æ¤Îµ¡Ç½À°¹çÀ¥Á¥§¥Ã¥¯¤ò»ÈÍѤ·¤Æ¥»¥¥å¥ê¥Æ¥£¤ò͸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
Î㤨¤Ð¡¢¥Ç¥³¡¼¥É¤µ¤ì¤¿DRM¤Î¥ª¡¼¥Ç¥£¥ª¤Ï¡¢È󥻥¥å¥¢¥ª¡¼¥Ç¥£¥ª¥É¥é¥¤¥Ð¤ËÅϤµ¤ì¤ëºÝ¡¢¤½¤ì¤ÏOS¤Î¥¤¥ó¥Õ¥é¤Î´ØÏ¢Éôʬ¤òÀ°¹çÀ¥Á¥§¥Ã¥¯¤Ë¤è¤ê¡¢Êݸ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¢£ TrustZone Reduces Development Risk and Cost (TrustZone¤Ï¡¢³«È¯¥ê¥¹¥¯¤È¥³¥¹¥È¤òºï¸º)
¢£ TrustZone as a Trusted Execution Environment (¿®Íꤵ¤ì¤¿¼Â¹Ô´Ä¶¤È¤·¤Æ¤ÎTrustZone)
¢£ TrustZone Operation
¢£ Industry Standards Collaboration
¢£ TrustZone Software Elements
•TrustZone Generic API
¤Ï¡¢Ã±½ã¤Ê¥á¥Ã¥»¡¼¥¸¥Ñ¥Ã¥·¥ó¥°¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤òÄ󶡤·¤Þ¤¹¡£
¤½¤ì¤Ï¥»¥¥å¥ê¥Æ¥£¤Î¶³¦¤ò±Û¤¨¤ÆÄã¥ì¥Ù¥ë¤ÎÄÌ¿®¤ò²Äǽ¤Ë¤¹¤ë¤¿¤á¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£
•TrustZone Security Channel API
¤Ï¡¢TrustZone¤Ï¥»¥¥å¥ê¥Æ¥£¾å¤Î¾ãÊɤÎÇظå¤Ë¤¢¤ëcommonlyavailable¥»¥¥å¥ê¥Æ¥£µ¡Ç½¤Ø¤Î
¥¢¥¯¥»¥¹¤òµö²Ä¤¹¤ë¤è¤¦¤ËÀ߷פµ¤ì¤¿¡¢¤è¤ê¶ÛÌ©¤ËÄêµÁ¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎAPI¤Ç¤¹¡£
¤³¤ÎAPI¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¥â¥¸¥å¡¼¥ë¤Î¥¿¥¹¥¯¤ËŬ¤·¤¿Æȼ«¤Î³ÈÄ¥µ¡Ç½¤ò³ÈÄ¥¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥»¥¥å¥ê¥Æ¥£¥â¥¸¥å¡¼¥ëÆâ¤Çºî¶È¤¹¤ë³«È¯¼Ô¤Î¤¿¤á¤Ë¡¢¤µ¤é¤Ë2¤Ä¤ÎAPI¤¬ÍøÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡§
• The Security Module Internal API
• The Security Module HAL API
¤³¤ì¤é¤Ï¡¢µö²Ä¤¹¤ë¤è¤¦¤Ë¥»¥¥å¥ê¥Æ¥£¥â¥¸¥å¡¼¥ë¤ÎÆâÉôÆ°ºî¤Ø¤Î¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ë´Ø¿ô¸Çͤγ«È¯¤Þ¤¿¤Ï°Ü¿¢
¥É¥é¥¤¥Ð¤ä¥¿¥¹¥¯¤Î¥â¥¸¥å¡¼¥ë¡£
¤³¤ì¤Ï¡¢¥ê¥¢¥ë¥¿¥¤¥à¤ÎDRM¥³¡¼¥Ç¥Ã¥¯¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹
Æȼ«¤Î°Å¹æ²½¥×¥í¥È¥³¥ë¤È¡¢Æȼ«¤Î¥»¥¥å¥¢¤ÊÄÌ¿®¥×¥í¥È¥³¥ë¡£
¢£ Enabling Secure-Aware Applications
¥»¥¥å¥¢Âбþ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î͸ú²½¤ÎTrustZone´Ä¶¤Ï¡¢Ê£»¨¤ÊÁȹþ¤ß¥·¥¹¥Æ¥àÆâ¤Î¿¤¯¤Î¥ì¥Ù¥ë¤ÇŬÍѤµ¤ì¤ë¥»¥¥å¥ê¥Æ¥£Âкö¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
È󥻥¥å¥¢¤ÊÁàºî¤Ï¡¢TrustZone¤«¤é¤Î½õ¤±¤Ê¤·¤Ç¡¢OSÆâ¤Ë´°Á´¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
OS¤Ï¡¢¥»¥¥å¥ê¥Æ¥£Ç§¾Úµ¡´Ø¤Î´ð½à¤Ë´°Á´¤ÊOS¤òÊݸ¤ë¡¢Æȼ«¤Î¥»¥¥å¥ê¥Æ¥£Âкö¤¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¸½¼ÂŪ¤Ç¤Ï¤Ê¤¤¤³¤È¤¬¤Ç¤¤ë¡£
OSÆâ¤Î¥»¥¥å¥ê¥Æ¥£¤ò͸ú¤Ë¤¹¤ë¤Ë¤Ï¡¢
TrustZone¤Ï¡¢»°¤Ä¤ÎÊýË¡¤Ç¤Î¹¶·â¤ËÂФ·¤ÆÀ°¹çÀ¥Á¥§¥Ã¥¯¤òÄ󶡤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
ºÇ½é¤Ë¡¢TrustZone¤Ï¡¢OS¤¬µ¯Æ°¤¹¤ëÁ°¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¼Â¹Ô»þ¤Ë¤Ï¡¢TrustZone¤Ï¡¢¥¯¥ê¥Æ¥£¥«¥ë¥Ñ¥¹¤¬ÊÑ´¹¤µ¤ì¤Ê¤¤¤Ç¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£
ºÇ¸å¤Ë¡¢¾µÇ§µ¡Ç½¤ÎÀ©¸Â¤µ¤ì¤¿¥»¥Ã¥È¤Ï¡¢TrustZone¤ÏÆâ¤Ç°ÂÁ´¤Ë¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹ - ¥á¥¤¥ó¤ÎOS¤«¤é¥ê¥â¡¼¥È¥×¥é¥¤¥Ù¡¼¥È¥¹¥Ú¡¼¥¹¤ò¡£
¡ù ÅÓÃæ¤Þ¤Ç
¢£ Designing with TrustZone Technology
Êݸ¤ì¤¿¥·¥¹¥Æ¥à¤ÎÀ߷פϡ¢¥»¥¥å¥ê¥Æ¥£¾å¤ÎÌäÂê¤Ï¡¢³«È¯¥×¥í¥»¥¹Ãæ¤ËÊݸ¤ì¤¿¥³¡¼¥É¤ÎÀ©¸æ¤Ø¤Î±Æ¶Á¤ò´Þ¤á¡¢ºÇ½é¤«¤é¹Í褵¤ì¤ë¤è¤¦¤Ë¥¢¥×¥í¡¼¥Á¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
½ÅÍפÊÌäÂê¤Ï¡¢À߷פËÃå¼ê¤¹¤ëÁ°¤ËÂн褹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
¥Ç¥¶¥¤¥ó¥Á¥§¡¼¥ó¤ÎÍ×ÁǤò»ØÄꤹ¤ë¤¿¤á¤Ë¡¢
¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¡¢¥½¥ê¥å¡¼¥·¥ç¥óÁ´ÂΤò͸ú¤Ë¤¹¤ë
¤ÈÀøºßŪ¤Ê¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î·èÄê¤È¤Î¥È¥ì¡¼¥É¥ª¥Õ¡£
¡û¥»¥¥å¥ê¥Æ¥£¤Î¥ì¥Ù¥ë¤Ï¤É¤ÎÄøÅÙɬÍפǤ¹¤«¡©
•´°Á´¥ª¥ó¥Á¥Ã¥×SoC
•¥ª¥ó¥Á¥Ã¥×SoC¤¬offchip¤ÎSoC¤«¤é¤Î½ð̾¤µ¤ì¤¿¥³¡¼¥É
•¥½¥Õ¥È¥¦¥§¥¢¤Î¤ß¤ÎÊݸî¤Î¤Ç¡¢´°Á´¤Ë¥ª¥Õ¥Á¥Ã¥×SoC¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹
¡û¤É¤Î¤è¤¦¤ËÊݸ¤ì¤¿¥³¡¼¥É¤Î³«È¯¤òÀ©¸æ¤¹¤ë¤Î¤Ç¤¹¤«¡©
•Ã¯¤¬¾å¤Ç¡¢SoC¤Î¥Þ¥¹¥¿¡¼¥¡¼¤òÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡©
•Ã¯¤¬¡¢¥ª¥ó¥Á¥Ã¥×SoC¤Î¥Ö¡¼¥È¥³¡¼¥É¤ò¥ª¡¼¥µ¥ê¥ó¥°¤¹¤ë¡©
•¤½¤Î¾¤Î¸°´ÉÍý¤¬¤ÎTrustZone¥»¥¥å¥ê¥Æ¥£¥Ð¥ê¥¢¤ÎÇظå¤ÇÆ°ºî¤·¤Æ¿®Íê¤Ç¤¤ë³«È¯¼Ô¤Î¤¿¤á¤ËɬÍפʤâ¤Î
¾¤Î¶È³¦¤ÎÃÎŪºâ»º¡¢¤Þ¤¿¤ÏÆȼ«¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¡¢ÆÃÄê¤Î¼ÂÁõ¤òËþ¤¿¤¹¤¿¤á¤ËɬÍפȤʤë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ï¡¢DRM IP¡¢¥ª¥ó¥Á¥Ã¥×ROM¤ä°Å¹æ²½¥¢¥¯¥»¥é¥ì¡¼¥¿¤Î¤è¤¦¤Ê¾¤Î¥ª¥Õ¥Á¥Ã¥×¤Î¥»¥¥å¥ê¥Æ¥£¥ê¥½¡¼¥¹¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£
¤É¤ó¤ÊÊ£»¨¤ÊSoC¤ÎÀ߷פÈƱÍͤˡ¢¤¢¤ë
·úÃۥѥé¥á¡¼¥¿¤È¥Ï¡¼¥É¥¦¥§¥¢¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¥È¥ì¡¼¥É¥ª¥Õ¤¬¹Ô¤ï¤ì¤ë¡£¤³¤ì¤é¤Ï¡¢
¥»¥¥å¥ê¥Æ¥£Í×·ï¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤ë¡¢
Î㤨¤Ð¡§
¡û¥ª¥ó¥Á¥Ã¥×RAM¤Ï¹â²Á¤Ç¤¹¡£
•¼ç¤Ê´Ø¿´»ö¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤Î¹¶·â¤Î¾ì¹ç¡¢¥ª¥Õ¥Á¥Ã¥×¼Â¹Ô¤¬µöÍÆÍ¿¤¨¤é¤ì¤¿Å¬Àڤʥá¥â¥ê¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥Ë¥ó¥°¤Ç¤¹¡£
¡û¥ª¥ó¥Á¥Ã¥×¤ÎROM¤Ë¤Ï½ÀÆðÀ¤Ç¤¹¡£
•Êݸ¤ì¤¿RAM¤Ë¥³¡¼¥É¤ò¥í¡¼¥É¤¹¤ëµ¡Ç½¤ò¹Íθ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
•¤³¤Î¤è¤¦¤Ê¥³¡¼¥É¤¬¾µÇ§¤µ¤ì¡¢½ð̾/²¿¤é¤«¤ÎÊýË¡¤Ç¥Á¥§¥Ã¥¯¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡û¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤¿¼þÊÕµ¡´ï¤ÏÊݸ¤ì¤¿¶õ´Ö¤Ç¤Î¥É¥é¥¤¥Ð¡¼¤Î¤¿¤á¤Ë³ÈÄ¥¥³¡¼¥É¤ò°ÕÌ£¤¹¤ë¡£
°ìÈÌŪ¤Ë;ʬ¤Ê¥³¡¼¥É¤Ï²Äǽ¤Ê¸Â¤êÈò¤±¤ë¤Ù¤¤Ç¤¹¤¬¡¢¤½¤ì¤òÄɲ乤ëɬÍפ¬¤¢¤ë¾ì¹ç¡¢3¤Ä¤Î¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£
¡û¼þÊÕµ¡´ï¤Î¥É¥é¥¤¥Ð¥³¡¼¥É¤Ï¡¢È󥻥¥å¥¢¤ÊOS¤«¤é¥»¥¥å¥¢¤ÊÎΰè¤ËžÁ÷¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹
¤È°ÂÁ´¤Ê¥É¥é¥¤¥Ð¤ÈÄÌ¿®¤¹¤ëÈ󥻥¥å¥¢À¤³¦¤ËÇÛÃÖ¤µ¤ì¤¿¥·¥ó¥×¥ë¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Î¥É¥é¥¤¥Ð¡£
¡û¥³¡¼¥É¤ÏÆó¤Ä¤ÎÀ¤³¦¤È¥ê¥½¡¼¥¹¤ÎÀ©¸æ¤Î¤¿¤á¤ËÇÛÃÖ¤µ¤ì¤¿¥Ï¥ó¥É¥·¥§¥¤¥¯¤Î¥·¥¹¥Æ¥à´Ö¤ÇÊ£À½¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡û³ä¤ê¹þ¤ßÀ¸À®¤Î¥ê¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Ï¡¢Î㤨¤Ð¥¡¼¥Ü¡¼¥É¤Î¤¿¤á¤Ë¡¢³ä¤ê¹þ¤ß¤¬°ÂÁ´¤ÊÀ¤³¦¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤ì¤Ï¸Æ¤Ó½Ð¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤Æ¤¤¤Ê¤¤¥É¥é¥¤¥Ð¤ò°ú¤µ¯¤³¤¹¤Î¤Ç¡¢¥Ï¥ó¥É¥ª¡¼¥Ð¤ÏÆ©²áŪ¤Ç¤¹¡£
¡ù ÅÓÃæ¤Þ¤Ç
¢£ Secure Debug
¢£ TrustZone Product Configuration
¢£ TrustZone: Enabling Platform Integrity and Application Security
-------------------- ¢£ TrustZone
[TrustZone Software API Specification 3.0]
https://silver.arm.com/browse/BX011-DA-10026
https://silver.arm.com/download/Software/BX011-DA-...
[TrustZone: Integrated Hardware and Software Security]
http://www.iqmagazineonline.com/magazine/pdf/v_3_4...
---------------------------------------------------
--- ¢£ Recovery¥â¡¼¥É¤«¤é/systemÎΰè¤Ø¤Î¥¢¥¯¥»¥¹ÊýË¡¡ÊDesire¡§Í×root¡Ë
http://jigen3.wordpress.com/2010/10/24/recovery%E3...
http://acc.komugi.net/?%E3%83%84%E3%83%BC%E3%83%AB...
¢£ Nexus S¤Îroot¼èÆÀ ¤½¤Î2 (clockworkMod RecoveryƳÆþ¡Ároot¼èÆÀ¤Þ¤Ç?)
http://d.hatena.ne.jp/Kazzz/20110109/p1
¢£ property ¾ðÊó¤Ë¤Ä¤¤¤Æ
/bionic/libc/include/sys/_system_properties.h
property_init
¢£ Android.mk
¢£ inotify(android°Ü¿¢)
Android.mk(25): LOCAL_CFLAGS := -DANDROID_CHANGES
inotify_test.c(74): #ifdef ANDROID_CHANGES
inotify_utils.c(11): #ifdef ANDROID_CHANGES
inotify_utils.c(21): #ifdef ANDROID_CHANGES
inotify_utils.c(26): #ifdef ANDROID_CHANGES
inotify_utils.h(15): #ifdef ANDROID_CHANGES
¢£ Kernel Build
¢£ ½¤ÀµKernel¤òEmulator¤Çµ¯Æ°
¢¨ -show-kernel¤ò¤Ä¤±¤ë¤È emulator ¤òµ¯Æ°¤·¤¿¥³¥ó¥½¡¼¥ë¤Ç kernel¤Î¥í¥°(printk)¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
¢£ eCryptfs Build Option
KERNEL BUILD OPTIONS
¢¨¤Ê¤ª¡¢[M]ÁªÂòÉԲĤʤΤϡ¢Enable loadable module support ¤ò͸ú¤Ë¤·¤Æ¤¤¤Ê¤¤¤¿¤á¡£
-
¢£ Android OS ¥Ó¥ë¥É
¢£ Android ´Ä¶¥á¥â
[copyimg.sh]
[ºîÀ®¤·¤¿img¤Çµ¯Æ°¤µ¤»¤ëºÝ¤ÎÃí°ÕÅÀ]
1.~/.android/avd/Test_2_3_3.avd/config.ini ¤ÎÀßÄê
---
image.sysdir.2=add-ons/Test_2_3_3/images/ ¡ú¤³¤³¤¬SDKÇÛ²¼¤Î¥Ç¥Õ¥©¥ë¥È¥Ñ¥¹¤ò¸«¤Ë¹Ô¤¯¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢½¤Àµ¡£
image.sysdir.1=add-ons/Test_2_3_3/images/
---
2.add-ons/Test_2_3_3/images ÇÛ²¼¤ËKernel ¥¤¥á¡¼¥¸¤òÇÛÃÖ
¾åµ2¤Ä¤òÂбþ¤¹¤ë¤È¡¢½¤Àµ¤·¤¿img ¤Çµ¯Æ°¤¬²Äǽ
-------------------------- GPL »²¹Í¾ðÊó
¡û GPL¥½¥Õ¥È¥¦¥¨¥¢¤Î¾¦ÍÑÍøÍѡʼÒÆâ¡¢³°ÈΡË
http://oshiete.goo.ne.jp/qa/6562626.html
¡û LAME¤Î¥½¡¼¥¹¥³¡¼¥ÉÅðÍѵ¿ÏÇ
http://plasticdreams.tm.land.to/sonyrootkit/?LAME%...
LAME¤¬¥é¥¤¥Ö¥é¥ê¤ò¸ø³«(ÈÎÇäor¥Õ¥ê¡¼¤Ç²òÊü)¤·¤Æ¤Ê¤¤¤Î¤Ê¤éÅðÍѳÎÄê¤Ç¤¹
LAME¥é¥¤¥Ö¥é¥ê¤Ï¡¢LGPL¡£
¤Þ¤º¡¢Á°ÄóÃμ±¤È¤·¤Æ¡¢¡Ö¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯¡×¤È¡Ö¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯¡×¤Î°ã¤¤¤òÍý²ò¤·¤ÆÍߤ·¤¤¡£
¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯=¥½¡¼¥¹¤¬exe¤ÎÃæ¤Î¿Í¤Ë¤Ê¤ë =Àµ¼Ò°÷¤ß¤¿¤¤¤Ê¤â¤ó
¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯=¥½¡¼¥¹¤¬exe¤ÎÃæ¤Î¿Í¤Ë¤Ê¤é¤Ê¤¤=³°Ãí¤ß¤¿¤¤¤Ê¤â¤ó
¤Ç¡¢¤½¤Î¾å¤Ç¡¢GPL¤ÈLGPL¤Î°ã¤¤¤Ï¡¢
GPL:¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯¤Ç¤â¡¢¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯¤Ç¤â¡¢ Á´ÂΤΥ½¡¼¥¹¥³¡¼¥É¤Î¸ø³«µÁ̳(GPL·Ñ¾µµÁ̳)ȯÀ¸
LGPL:¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯¤Ê¤éÁ´ÂΤΥ½¡¼¥¹¸ø³«µÁ̳¤ª¤è¤ÓLGPL·Ñ¾µµÁ̳¤¬È¯À¸¡£¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯¤Ê¤é¡¢ËÜÂΤΥ½¡¼¥¹¸ø³«µÁ̳¤Ê¤·¡£LGPLŬÍѵÁ̳¤Ê¤·¡£
¥é¥¤¥Ö¥é¥ê¦¤Ë¤Ï¡¢¥½¡¼¥¹¸ø³«µÁ̳¤¢¤ê¡£LGPLŬÍѵÁ̳¤¢¤ê¡£
º£²ó¤ÎSONY¤Ï¡¢LGPL¥³¡¼¥É¤ò¡¢DLL(³°Ãí)¤Ç¤Ï¤Ê¤¯¡¢¡Öexe¤ÎÃæ¤Î¿Í¡×¤Ë¤·¤¿¡£¤è¤Ã¤Æ¡¢¡ÖÁ´ÂΤΥ½¡¼¥¹¥³¡¼¥É¸ø³«µÁ̳¡×¤¬È¯À¸¤¹¤ë¤·¡¢¡ÖLGPL¤òŬÍѤ·¤Æ¤¤¤ë¡×Àë¸À¤ä³Æ¼ïµöÂú¾ò¹à¤Ë½¾¤¦É¬Íפ¬¤¢¤ë¡£
¢£ Log»²¹Í¾ðÊó
/system/core/liblog/logprint.c
¢£ Why is Security So Important?
¢£ Economic Value in Security Issues
¢£ Open Industry Issues
¢£ The Options for Security
¢£ ARM Approach – The TrustZone Solution
ÁȤ߹þ¤ßÀ¤³¦¤ÎÃæ¤Ç¿®Íê¤Ç¤¤ë¥³¥ó¥Ô¥å¡¼¥Æ¥£¥ó¥°¤ò²Äǽ¤Ë¤¹¤ëARM¤Î¥¢¥×¥í¡¼¥Á¤Ï¡¢¥È¥é¥¹¥Æ¥Ã¥É¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î³µÇ°¤Ë´ð¤Å¤¤¤Æ¤¤¤Þ¤¹¡£
TrustZone¤Ï¡¢¥»¥¥å¥¢¤Ê¤È°ì½ï¤Ë¡¢¥³¡¼¥É¤ÎʬΥ¤òÄ󶡤¹¤ë¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤è¤ë¥»¥¥å¥ê¥Æ¥£´Ä¶¤Ç¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹
Trusted¥Á¥§¡¼¥óÆâ¤Î¾¤ÎÍ×ÁǤ˴ðËÜŪ¤Ê¥»¥¥å¥ê¥Æ¥£¥µ¡¼¥Ó¥¹¤È¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎξÊý¤òÄ󶡤¹¤ë¥½¥Õ¥È¥¦¥§¥¢¡¢
¥¹¥Þ¡¼¥È¥«¡¼¥É¡¢¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¡¢¤ª¤è¤Ó°ìÈÌŪ¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò´Þ¤à¡£
È󥻥¥å¥¢"Ä̾ï"¤Î¼Â¹Ô´Ä¶¡¢¤ª¤è¤Ó¿®Íꤵ¤ì¤ë¡¢Êݾ㤵¤ì¤¿¥»¥¥å¥¢¤ÊÀ¤³¦¡§TrustZone¤Ï¡¢2¤Ä¤Î¥Ñ¥é¥ì¥ë¼Â¹Ô¤ÎÀ¤³¦¤òʬΥ¤¹¤ë¡£
¢£ Key Benefits of TrustZone (TrustZone¤Ï¤Î¼ç¤ÊÍøÅÀ)
TrustZone¤Ï¡¢³«È¯¼Ô¤È¥¨¥ó¥É¥æ¡¼¥¶¡¼¤Ø¤Î½ÅÍפʵ»½ÑŪ¤ª¤è¤Ó¾¦¶ÈŪ¤Ê¿¤¯¤ÎÍøÅÀ¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤é¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£
¡¦¼ç¤Ë¡¢TrustZone¤Ï¡¢¥Á¥Ã¥×¾å¤Î¥»¥¥å¥¢¤Ê¥Ç¡¼¥¿¤Î¤¿¤á¤Î°ÂÁ´¤Ê´Ä¶¤òÄ󶡤·¤Þ¤¹¡£
¤³¤ì¤Ï¥»¥¥å¥ê¥Æ¥£¤Ø¤Î´°Á´¤Ê¥¢¥×¥í¡¼¥Á¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£Î㤨¤Ð¡¢
SoCÆâ¤Ë°ÂÁ´¤ÊÎΰ褬¤¢¤ë¾ì¹ç¤Ï¡¢SoC¤ÎCPU¤ò»ÈÍѤ·¤¿¥»¥¥å¥¢¤ÊSIM¥«¡¼¥É¤«¤é¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤¿¥¡¼¤ò½èÍý¤¹¤ë¤À¤±°ÂÁ´¤Ë¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤Æ¤¤¤Ê¤¤OS¤Ï¡¢¤³¤ì¤ò͸ú¤Ë¤¹¤ë¤Ë¤ÏÉÔ½½Ê¬¤Ç¤¢¤ë¡£
¡¦¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥»¥¥å¥¢¤Ê¥·¥¹¥Æ¥à¤ÎÌäÂê¤Ç¤¹
Æä˹½À®¤È¤·¤Æ,¥³¥¢¤Î¥×¥í¥»¥Ã¥µ¤È³°Éô¥¹¥È¥¢¤Î´Ö¤Î¥È¥é¥Õ¥£¥Ã¥¯¤Ï°Å¹æ²½¤µ¤ì¤ëɬÍפ¬¤¢¤ë¡£
TrustZone¤Ï¤Ç¡¢´°Á´¤Ê¥Ð¥¹ÂÓ°èÉý¤Î¥¢¥¯¥»¥¹¤¬¹â®¤Ê¥á¥â¥ê¥¢¥¯¥»¥¹Â®ÅÙ¤òÄ󶡤¹¤ë¤¿¤á¤Ë¡¢¤¹¤Ù¤Æ¤Îµ²±Îΰè¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤µ¤é¤Ë¡¢°ÂÁ´¤Ê¥í¡¼¥«¥ë¥¥ã¥Ã¥·¥å¤Î¥Ç¡¼¥¿¤Ï¡¢¤µ¤é¤Ë¹â®¤Ê¥¢¥¯¥»¥¹¤òÄ󶡤·¤ÆÉü¹æ²½¤µ¤ì¤¿·Á¼°¤Ç°ÂÁ´¤ËÊݸ¤µ¤ì¤Þ¤¹¡£
°Å¹æ²½¤µ¤ì¤¿¥Ç¡¼¥¿¤Ï¡¢È󥻥¥å¥¢World¤ÈƱ¤¸¥Õ¥é¥Ã¥·¥å¥á¥â¥ê¤ò¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£
³Î¼Â¤Ë¡¢°Â²Á¤ÊÂ絬ÌϤǽÀÆð¤Ê¥¹¥È¥ì¡¼¥¸¤¬ÍøÍѤµ¤ì¤ë¡£
¡¦TrustZone¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤È¥Ï¡¼¥É¥¦¥§¥¢Í×ÁǤǹ½À®¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢
¤½¤ì¤Ï¡¢¥«¥¹¥¿¥Þ¥¤¥º¤äSoC¤¬´°À®¤·¤¿¸å¤â¡¢¥»¥¥å¥¢¤Ê¥·¥¹¥Æ¥à¤Ø¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤ò²Äǽ¤Ë¤¹¤ë½ÀÆðÀ¤òÄ󶡤·¤Þ¤¹¡£
¡¦TrustZone¤Ï¡¢Áȹþ¤ß¥·¥¹¥Æ¥àÆâ¤Ë¥»¥¥å¥¢¤Êworld¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ï¡¢¥À¥¤¥ì¥¯¥È¥Ú¥ê¥Õ¥§¥é¥ë¥Á¥ã¥Í¥ë¡¢¥æ¡¼¥¶¡¼¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹,SIM¤ª¤è¤Ó¥¹¥Þ¡¼¥È¥«¡¼¥É¤À¤±¤Ç¤Ê¤¯¡¢²»À¼½ÐÎϤâ´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
È󥻥¥å¥¢world¤Î¤¿¤á¡¢TrustZone¤Ï¡¢SoC¥Ç¥Ð¥¤¥¹Æâ¤Î¤¹¤Ù¤Æ¤Îµ¡Ç½À°¹çÀ¥Á¥§¥Ã¥¯¤ò»ÈÍѤ·¤Æ¥»¥¥å¥ê¥Æ¥£¤ò͸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
Î㤨¤Ð¡¢¥Ç¥³¡¼¥É¤µ¤ì¤¿DRM¤Î¥ª¡¼¥Ç¥£¥ª¤Ï¡¢È󥻥¥å¥¢¥ª¡¼¥Ç¥£¥ª¥É¥é¥¤¥Ð¤ËÅϤµ¤ì¤ëºÝ¡¢¤½¤ì¤ÏOS¤Î¥¤¥ó¥Õ¥é¤Î´ØÏ¢Éôʬ¤òÀ°¹çÀ¥Á¥§¥Ã¥¯¤Ë¤è¤ê¡¢Êݸ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¢£ TrustZone Reduces Development Risk and Cost (TrustZone¤Ï¡¢³«È¯¥ê¥¹¥¯¤È¥³¥¹¥È¤òºï¸º)
¢£ TrustZone as a Trusted Execution Environment (¿®Íꤵ¤ì¤¿¼Â¹Ô´Ä¶¤È¤·¤Æ¤ÎTrustZone)
¢£ TrustZone Operation
¢£ Industry Standards Collaboration
¢£ TrustZone Software Elements
•TrustZone Generic API
¤Ï¡¢Ã±½ã¤Ê¥á¥Ã¥»¡¼¥¸¥Ñ¥Ã¥·¥ó¥°¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤òÄ󶡤·¤Þ¤¹¡£
¤½¤ì¤Ï¥»¥¥å¥ê¥Æ¥£¤Î¶³¦¤ò±Û¤¨¤ÆÄã¥ì¥Ù¥ë¤ÎÄÌ¿®¤ò²Äǽ¤Ë¤¹¤ë¤¿¤á¤ËÀ߷פµ¤ì¤Æ¤¤¤Þ¤¹¡£
•TrustZone Security Channel API
¤Ï¡¢TrustZone¤Ï¥»¥¥å¥ê¥Æ¥£¾å¤Î¾ãÊɤÎÇظå¤Ë¤¢¤ëcommonlyavailable¥»¥¥å¥ê¥Æ¥£µ¡Ç½¤Ø¤Î
¥¢¥¯¥»¥¹¤òµö²Ä¤¹¤ë¤è¤¦¤ËÀ߷פµ¤ì¤¿¡¢¤è¤ê¶ÛÌ©¤ËÄêµÁ¤µ¤ì¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÎAPI¤Ç¤¹¡£
¤³¤ÎAPI¤Ï¡¢¥»¥¥å¥ê¥Æ¥£¥â¥¸¥å¡¼¥ë¤Î¥¿¥¹¥¯¤ËŬ¤·¤¿Æȼ«¤Î³ÈÄ¥µ¡Ç½¤ò³ÈÄ¥¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥»¥¥å¥ê¥Æ¥£¥â¥¸¥å¡¼¥ëÆâ¤Çºî¶È¤¹¤ë³«È¯¼Ô¤Î¤¿¤á¤Ë¡¢¤µ¤é¤Ë2¤Ä¤ÎAPI¤¬ÍøÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡§
• The Security Module Internal API
• The Security Module HAL API
¤³¤ì¤é¤Ï¡¢µö²Ä¤¹¤ë¤è¤¦¤Ë¥»¥¥å¥ê¥Æ¥£¥â¥¸¥å¡¼¥ë¤ÎÆâÉôÆ°ºî¤Ø¤Î¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ë´Ø¿ô¸Çͤγ«È¯¤Þ¤¿¤Ï°Ü¿¢
¥É¥é¥¤¥Ð¤ä¥¿¥¹¥¯¤Î¥â¥¸¥å¡¼¥ë¡£
¤³¤ì¤Ï¡¢¥ê¥¢¥ë¥¿¥¤¥à¤ÎDRM¥³¡¼¥Ç¥Ã¥¯¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹
Æȼ«¤Î°Å¹æ²½¥×¥í¥È¥³¥ë¤È¡¢Æȼ«¤Î¥»¥¥å¥¢¤ÊÄÌ¿®¥×¥í¥È¥³¥ë¡£
¢£ Enabling Secure-Aware Applications
¥»¥¥å¥¢Âбþ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î͸ú²½¤ÎTrustZone´Ä¶¤Ï¡¢Ê£»¨¤ÊÁȹþ¤ß¥·¥¹¥Æ¥àÆâ¤Î¿¤¯¤Î¥ì¥Ù¥ë¤ÇŬÍѤµ¤ì¤ë¥»¥¥å¥ê¥Æ¥£Âкö¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
È󥻥¥å¥¢¤ÊÁàºî¤Ï¡¢TrustZone¤«¤é¤Î½õ¤±¤Ê¤·¤Ç¡¢OSÆâ¤Ë´°Á´¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
OS¤Ï¡¢¥»¥¥å¥ê¥Æ¥£Ç§¾Úµ¡´Ø¤Î´ð½à¤Ë´°Á´¤ÊOS¤òÊݸ¤ë¡¢Æȼ«¤Î¥»¥¥å¥ê¥Æ¥£Âкö¤¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¸½¼ÂŪ¤Ç¤Ï¤Ê¤¤¤³¤È¤¬¤Ç¤¤ë¡£
OSÆâ¤Î¥»¥¥å¥ê¥Æ¥£¤ò͸ú¤Ë¤¹¤ë¤Ë¤Ï¡¢
TrustZone¤Ï¡¢»°¤Ä¤ÎÊýË¡¤Ç¤Î¹¶·â¤ËÂФ·¤ÆÀ°¹çÀ¥Á¥§¥Ã¥¯¤òÄ󶡤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
ºÇ½é¤Ë¡¢TrustZone¤Ï¡¢OS¤¬µ¯Æ°¤¹¤ëÁ°¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ò³Îǧ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¼Â¹Ô»þ¤Ë¤Ï¡¢TrustZone¤Ï¡¢¥¯¥ê¥Æ¥£¥«¥ë¥Ñ¥¹¤¬ÊÑ´¹¤µ¤ì¤Ê¤¤¤Ç¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£
ºÇ¸å¤Ë¡¢¾µÇ§µ¡Ç½¤ÎÀ©¸Â¤µ¤ì¤¿¥»¥Ã¥È¤Ï¡¢TrustZone¤ÏÆâ¤Ç°ÂÁ´¤Ë¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹ - ¥á¥¤¥ó¤ÎOS¤«¤é¥ê¥â¡¼¥È¥×¥é¥¤¥Ù¡¼¥È¥¹¥Ú¡¼¥¹¤ò¡£
¡ù ÅÓÃæ¤Þ¤Ç
¢£ Designing with TrustZone Technology
Êݸ¤ì¤¿¥·¥¹¥Æ¥à¤ÎÀ߷פϡ¢¥»¥¥å¥ê¥Æ¥£¾å¤ÎÌäÂê¤Ï¡¢³«È¯¥×¥í¥»¥¹Ãæ¤ËÊݸ¤ì¤¿¥³¡¼¥É¤ÎÀ©¸æ¤Ø¤Î±Æ¶Á¤ò´Þ¤á¡¢ºÇ½é¤«¤é¹Í褵¤ì¤ë¤è¤¦¤Ë¥¢¥×¥í¡¼¥Á¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
½ÅÍפÊÌäÂê¤Ï¡¢À߷פËÃå¼ê¤¹¤ëÁ°¤ËÂн褹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
¥Ç¥¶¥¤¥ó¥Á¥§¡¼¥ó¤ÎÍ×ÁǤò»ØÄꤹ¤ë¤¿¤á¤Ë¡¢
¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¡¢¥½¥ê¥å¡¼¥·¥ç¥óÁ´ÂΤò͸ú¤Ë¤¹¤ë
¤ÈÀøºßŪ¤Ê¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Î·èÄê¤È¤Î¥È¥ì¡¼¥É¥ª¥Õ¡£
¡û¥»¥¥å¥ê¥Æ¥£¤Î¥ì¥Ù¥ë¤Ï¤É¤ÎÄøÅÙɬÍפǤ¹¤«¡©
•´°Á´¥ª¥ó¥Á¥Ã¥×SoC
•¥ª¥ó¥Á¥Ã¥×SoC¤¬offchip¤ÎSoC¤«¤é¤Î½ð̾¤µ¤ì¤¿¥³¡¼¥É
•¥½¥Õ¥È¥¦¥§¥¢¤Î¤ß¤ÎÊݸî¤Î¤Ç¡¢´°Á´¤Ë¥ª¥Õ¥Á¥Ã¥×SoC¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹
¡û¤É¤Î¤è¤¦¤ËÊݸ¤ì¤¿¥³¡¼¥É¤Î³«È¯¤òÀ©¸æ¤¹¤ë¤Î¤Ç¤¹¤«¡©
•Ã¯¤¬¾å¤Ç¡¢SoC¤Î¥Þ¥¹¥¿¡¼¥¡¼¤òÊÝ»ý¤·¤Æ¤¤¤Þ¤¹¡©
•Ã¯¤¬¡¢¥ª¥ó¥Á¥Ã¥×SoC¤Î¥Ö¡¼¥È¥³¡¼¥É¤ò¥ª¡¼¥µ¥ê¥ó¥°¤¹¤ë¡©
•¤½¤Î¾¤Î¸°´ÉÍý¤¬¤ÎTrustZone¥»¥¥å¥ê¥Æ¥£¥Ð¥ê¥¢¤ÎÇظå¤ÇÆ°ºî¤·¤Æ¿®Íê¤Ç¤¤ë³«È¯¼Ô¤Î¤¿¤á¤ËɬÍפʤâ¤Î
¾¤Î¶È³¦¤ÎÃÎŪºâ»º¡¢¤Þ¤¿¤ÏÆȼ«¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ï¡¢ÆÃÄê¤Î¼ÂÁõ¤òËþ¤¿¤¹¤¿¤á¤ËɬÍפȤʤë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ï¡¢DRM IP¡¢¥ª¥ó¥Á¥Ã¥×ROM¤ä°Å¹æ²½¥¢¥¯¥»¥é¥ì¡¼¥¿¤Î¤è¤¦¤Ê¾¤Î¥ª¥Õ¥Á¥Ã¥×¤Î¥»¥¥å¥ê¥Æ¥£¥ê¥½¡¼¥¹¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£
¤É¤ó¤ÊÊ£»¨¤ÊSoC¤ÎÀ߷פÈƱÍͤˡ¢¤¢¤ë
·úÃۥѥé¥á¡¼¥¿¤È¥Ï¡¼¥É¥¦¥§¥¢¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¥È¥ì¡¼¥É¥ª¥Õ¤¬¹Ô¤ï¤ì¤ë¡£¤³¤ì¤é¤Ï¡¢
¥»¥¥å¥ê¥Æ¥£Í×·ï¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤ë¡¢
Î㤨¤Ð¡§
¡û¥ª¥ó¥Á¥Ã¥×RAM¤Ï¹â²Á¤Ç¤¹¡£
•¼ç¤Ê´Ø¿´»ö¤Ï¡¢¥½¥Õ¥È¥¦¥§¥¢¤Î¹¶·â¤Î¾ì¹ç¡¢¥ª¥Õ¥Á¥Ã¥×¼Â¹Ô¤¬µöÍÆÍ¿¤¨¤é¤ì¤¿Å¬Àڤʥá¥â¥ê¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥Ë¥ó¥°¤Ç¤¹¡£
¡û¥ª¥ó¥Á¥Ã¥×¤ÎROM¤Ë¤Ï½ÀÆðÀ¤Ç¤¹¡£
•Êݸ¤ì¤¿RAM¤Ë¥³¡¼¥É¤ò¥í¡¼¥É¤¹¤ëµ¡Ç½¤ò¹Íθ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
•¤³¤Î¤è¤¦¤Ê¥³¡¼¥É¤¬¾µÇ§¤µ¤ì¡¢½ð̾/²¿¤é¤«¤ÎÊýË¡¤Ç¥Á¥§¥Ã¥¯¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡û¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤¿¼þÊÕµ¡´ï¤ÏÊݸ¤ì¤¿¶õ´Ö¤Ç¤Î¥É¥é¥¤¥Ð¡¼¤Î¤¿¤á¤Ë³ÈÄ¥¥³¡¼¥É¤ò°ÕÌ£¤¹¤ë¡£
°ìÈÌŪ¤Ë;ʬ¤Ê¥³¡¼¥É¤Ï²Äǽ¤Ê¸Â¤êÈò¤±¤ë¤Ù¤¤Ç¤¹¤¬¡¢¤½¤ì¤òÄɲ乤ëɬÍפ¬¤¢¤ë¾ì¹ç¡¢3¤Ä¤Î¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£
¡û¼þÊÕµ¡´ï¤Î¥É¥é¥¤¥Ð¥³¡¼¥É¤Ï¡¢È󥻥¥å¥¢¤ÊOS¤«¤é¥»¥¥å¥¢¤ÊÎΰè¤ËžÁ÷¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹
¤È°ÂÁ´¤Ê¥É¥é¥¤¥Ð¤ÈÄÌ¿®¤¹¤ëÈ󥻥¥å¥¢À¤³¦¤ËÇÛÃÖ¤µ¤ì¤¿¥·¥ó¥×¥ë¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Î¥É¥é¥¤¥Ð¡£
¡û¥³¡¼¥É¤ÏÆó¤Ä¤ÎÀ¤³¦¤È¥ê¥½¡¼¥¹¤ÎÀ©¸æ¤Î¤¿¤á¤ËÇÛÃÖ¤µ¤ì¤¿¥Ï¥ó¥É¥·¥§¥¤¥¯¤Î¥·¥¹¥Æ¥à´Ö¤ÇÊ£À½¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡û³ä¤ê¹þ¤ßÀ¸À®¤Î¥ê¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Ï¡¢Î㤨¤Ð¥¡¼¥Ü¡¼¥É¤Î¤¿¤á¤Ë¡¢³ä¤ê¹þ¤ß¤¬°ÂÁ´¤ÊÀ¤³¦¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤ì¤Ï¸Æ¤Ó½Ð¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¥»¥¥å¥ê¥Æ¥£¤ÇÊݸ¤ì¤Æ¤¤¤Ê¤¤¥É¥é¥¤¥Ð¤ò°ú¤µ¯¤³¤¹¤Î¤Ç¡¢¥Ï¥ó¥É¥ª¡¼¥Ð¤ÏÆ©²áŪ¤Ç¤¹¡£
¡ù ÅÓÃæ¤Þ¤Ç
¢£ Secure Debug
¢£ TrustZone Product Configuration
¢£ TrustZone: Enabling Platform Integrity and Application Security
-------------------- ¢£ TrustZone
[TrustZone Software API Specification 3.0]
https://silver.arm.com/browse/BX011-DA-10026
https://silver.arm.com/download/Software/BX011-DA-...
[TrustZone: Integrated Hardware and Software Security]
http://www.iqmagazineonline.com/magazine/pdf/v_3_4...
---------------------------------------------------
--- ¢£ Recovery¥â¡¼¥É¤«¤é/systemÎΰè¤Ø¤Î¥¢¥¯¥»¥¹ÊýË¡¡ÊDesire¡§Í×root¡Ë
http://jigen3.wordpress.com/2010/10/24/recovery%E3...
http://acc.komugi.net/?%E3%83%84%E3%83%BC%E3%83%AB...
¢£ Nexus S¤Îroot¼èÆÀ ¤½¤Î2 (clockworkMod RecoveryƳÆþ¡Ároot¼èÆÀ¤Þ¤Ç?)
http://d.hatena.ne.jp/Kazzz/20110109/p1
¢£ property ¾ðÊó¤Ë¤Ä¤¤¤Æ
/bionic/libc/include/sys/_system_properties.h
#define PROP_PATH_RAMDISK_DEFAULT "/default.prop" #define PROP_PATH_SYSTEM_BUILD "/system/build.prop" #define PROP_PATH_SYSTEM_DEFAULT "/system/default.prop" #define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"Æɤ߹þ¤ß²Õ½ê¤Ï¡£¡£
property_init
init_property_area(); load_properties_from_file(PROP_PATH_RAMDISK_DEFAULT); load_properties(data);
static void load_properties(char *data) { char *key, *value, *eol, *sol, *tmp; sol = data; while((eol = strchr(sol, '\n'))) { key = sol; *eol++ = 0; sol = eol; value = strchr(key, '='); if(value == 0) continue; *value++ = 0; while(isspace(*key)) key++; if(*key == '#') continue; tmp = value - 2; while((tmp > key) && isspace(*tmp)) *tmp-- = 0; while(isspace(*value)) value++; tmp = eol - 2; while((tmp > value) && isspace(*tmp)) *tmp-- = 0; property_set(key, value); } }
¢£ Android.mk
ifneq ($(TARGET_SIMULATOR),true) LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := inotify_test.c inotify_utils.c event_queue.c LOCAL_SHARED_LIBRARIES := libcutils #LOCAL_C_INCLUDES := LOCAL_CFLAGS := -DANDROID_CHANGES LOCAL_MODULE := testd LOCAL_MODULE_TAGS := eng include $(BUILD_EXECUTABLE) endif
¢£ inotify(android°Ü¿¢)
Android.mk(25): LOCAL_CFLAGS := -DANDROID_CHANGES
inotify_test.c(74): #ifdef ANDROID_CHANGES
#ifdef ANDROID_CHANGES wd = watch_dir (inotify_fd, "/system", IN_ALL_EVENTS); wd = watch_dir (inotify_fd, "/default.prop", IN_ALL_EVENTS); wd = watch_dir (inotify_fd, "/proc/mounts", IN_ALL_EVENTS); #else for (index = 1; (index < argc) && (wd >= 0); index++) { wd = watch_dir (inotify_fd, argv[index], IN_ALL_EVENTS); /*wd = watch_dir (inotify_fd, argv[index], IN_ALL_EVENTS & ~(IN_CLOSE | IN_OPEN) ); */ } #endif
inotify_utils.c(11): #ifdef ANDROID_CHANGES
#ifdef ANDROID_CHANGES #include <android/log.h> #endif
inotify_utils.c(21): #ifdef ANDROID_CHANGES
inotify_utils.c(26): #ifdef ANDROID_CHANGES
#ifdef ANDROID_CHANGES /* Android Log Wrapper */ void log_print(int level, char *format, ...) { if (level >= 0 && level <= 4) { #ifdef ANDROID_CHANGES static int levels[5] = { ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL }; va_list ap; va_start(ap, format); __android_log_vprint(levels[level], "testd", format, ap); va_end(ap); #else static char *levels = "DIWEF"; va_list ap; fprint_f(stderr, "%c: ", levels[level]); va_start(ap, format); vfprint_f(stderr, format, ap); va_end(ap); fputc('\n', stderr); #endif } } #endif
inotify_utils.h(15): #ifdef ANDROID_CHANGES
#ifdef ANDROID_CHANGES void log_print(int level, char *format, ...); #define PRINTF(...) log_print(1,__VA_ARGS__) #define PERROR(...) log_print(3,__VA_ARGS__) #endif
¢£ Kernel Build
export ARCH=arm export CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- make goldfish_defconfig make menuconfig make -j4 2>&1 |tee make.log
¢£ ½¤ÀµKernel¤òEmulator¤Çµ¯Æ°
emulator -sysdir ~/android/SDK/android-sdk-linux_x86/add-ons/Test_2_3_3/images -kernel ~/android/kernel/common/arch/arm/boot/zImage -data ~/android/SDK/android-sdk-linux_x86/add-ons/Test_2_3_3/images/userdata.img -noaudio -skindir ~/android/SDK/android-sdk-linux_x86/platforms/android-10/skins -skin HVGA -show-kernel¢¨ -kernel ¤Ç kernel ¥Ó¥ë¥É¤ÇÀ¸À®¤·¤¿ zImage ¤ò»ØÄꤹ¤ë¡£
¢¨ -show-kernel¤ò¤Ä¤±¤ë¤È emulator ¤òµ¯Æ°¤·¤¿¥³¥ó¥½¡¼¥ë¤Ç kernel¤Î¥í¥°(printk)¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
¢£ eCryptfs Build Option
KERNEL BUILD OPTIONS
Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers ¡úTop¥ì¥Ù¥ë¤Ë¸ºß¤·¤Þ¤¹¡£ Security options ---> <M> Enable access key retention support ¡ú[*] ([M]ÁªÂòÉÔ²Ä) Cryptographic options ---> <M> MD5 digest algorithm ¡údefault [*] <M> AES cipher algorithms ¡ú[*] ([M]ÁªÂòÉÔ²Ä) File systems ---> Miscellaneous filesystems ---> <M> eCrypt filesystem layer support (EXPERIMENTAL) ¡ú[*] ([M]ÁªÂòÉÔ²Ä)
¢¨¤Ê¤ª¡¢[M]ÁªÂòÉԲĤʤΤϡ¢Enable loadable module support ¤ò͸ú¤Ë¤·¤Æ¤¤¤Ê¤¤¤¿¤á¡£
-
¢£ Android OS ¥Ó¥ë¥É
cd mydroid/ source build/envsetup.sh lunch 1 make
¢£ Android ´Ä¶¥á¥â
[copyimg.sh]
#!/bin/bash ANDROID_SDK_PATH=~/android/SDK/android-sdk-linux_x86 ADD_ON_IMAGE_PATH=$ANDROID_SDK_PATH/add-ons/Test_2_3_3/images # backup img file mv $ADD_ON_IMAGE_PATH/system.img $ADD_ON_IMAGE_PATH/system.img.bak mv $ADD_ON_IMAGE_PATH/userdata.img $ADD_ON_IMAGE_PATH/userdata.img.bak mv $ADD_ON_IMAGE_PATH/ramdisk.img $ADD_ON_IMAGE_PATH/ramdisk.img.bak # copy new img file cp ./system.img $ADD_ON_IMAGE_PATH/system.img cp ./userdata.img $ADD_ON_IMAGE_PATH/userdata.img cp ./ramdisk.img $ADD_ON_IMAGE_PATH/ramdisk.img
[ºîÀ®¤·¤¿img¤Çµ¯Æ°¤µ¤»¤ëºÝ¤ÎÃí°ÕÅÀ]
1.~/.android/avd/Test_2_3_3.avd/config.ini ¤ÎÀßÄê
---
image.sysdir.2=add-ons/Test_2_3_3/images/ ¡ú¤³¤³¤¬SDKÇÛ²¼¤Î¥Ç¥Õ¥©¥ë¥È¥Ñ¥¹¤ò¸«¤Ë¹Ô¤¯¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢½¤Àµ¡£
image.sysdir.1=add-ons/Test_2_3_3/images/
---
2.add-ons/Test_2_3_3/images ÇÛ²¼¤ËKernel ¥¤¥á¡¼¥¸¤òÇÛÃÖ
¾åµ2¤Ä¤òÂбþ¤¹¤ë¤È¡¢½¤Àµ¤·¤¿img ¤Çµ¯Æ°¤¬²Äǽ
-------------------------- GPL »²¹Í¾ðÊó
¡û GPL¥½¥Õ¥È¥¦¥¨¥¢¤Î¾¦ÍÑÍøÍѡʼÒÆâ¡¢³°ÈΡË
http://oshiete.goo.ne.jp/qa/6562626.html
¡û LAME¤Î¥½¡¼¥¹¥³¡¼¥ÉÅðÍѵ¿ÏÇ
http://plasticdreams.tm.land.to/sonyrootkit/?LAME%...
LAME¤¬¥é¥¤¥Ö¥é¥ê¤ò¸ø³«(ÈÎÇäor¥Õ¥ê¡¼¤Ç²òÊü)¤·¤Æ¤Ê¤¤¤Î¤Ê¤éÅðÍѳÎÄê¤Ç¤¹
LAME¥é¥¤¥Ö¥é¥ê¤Ï¡¢LGPL¡£
¤Þ¤º¡¢Á°ÄóÃμ±¤È¤·¤Æ¡¢¡Ö¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯¡×¤È¡Ö¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯¡×¤Î°ã¤¤¤òÍý²ò¤·¤ÆÍߤ·¤¤¡£
¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯=¥½¡¼¥¹¤¬exe¤ÎÃæ¤Î¿Í¤Ë¤Ê¤ë =Àµ¼Ò°÷¤ß¤¿¤¤¤Ê¤â¤ó
¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯=¥½¡¼¥¹¤¬exe¤ÎÃæ¤Î¿Í¤Ë¤Ê¤é¤Ê¤¤=³°Ãí¤ß¤¿¤¤¤Ê¤â¤ó
¤Ç¡¢¤½¤Î¾å¤Ç¡¢GPL¤ÈLGPL¤Î°ã¤¤¤Ï¡¢
GPL:¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯¤Ç¤â¡¢¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯¤Ç¤â¡¢ Á´ÂΤΥ½¡¼¥¹¥³¡¼¥É¤Î¸ø³«µÁ̳(GPL·Ñ¾µµÁ̳)ȯÀ¸
LGPL:¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯¤Ê¤éÁ´ÂΤΥ½¡¼¥¹¸ø³«µÁ̳¤ª¤è¤ÓLGPL·Ñ¾µµÁ̳¤¬È¯À¸¡£¥À¥¤¥Ê¥ß¥Ã¥¯¥ê¥ó¥¯¤Ê¤é¡¢ËÜÂΤΥ½¡¼¥¹¸ø³«µÁ̳¤Ê¤·¡£LGPLŬÍѵÁ̳¤Ê¤·¡£
¥é¥¤¥Ö¥é¥ê¦¤Ë¤Ï¡¢¥½¡¼¥¹¸ø³«µÁ̳¤¢¤ê¡£LGPLŬÍѵÁ̳¤¢¤ê¡£
º£²ó¤ÎSONY¤Ï¡¢LGPL¥³¡¼¥É¤ò¡¢DLL(³°Ãí)¤Ç¤Ï¤Ê¤¯¡¢¡Öexe¤ÎÃæ¤Î¿Í¡×¤Ë¤·¤¿¡£¤è¤Ã¤Æ¡¢¡ÖÁ´ÂΤΥ½¡¼¥¹¥³¡¼¥É¸ø³«µÁ̳¡×¤¬È¯À¸¤¹¤ë¤·¡¢¡ÖLGPL¤òŬÍѤ·¤Æ¤¤¤ë¡×Àë¸À¤ä³Æ¼ïµöÂú¾ò¹à¤Ë½¾¤¦É¬Íפ¬¤¢¤ë¡£
¢£ Log»²¹Í¾ðÊó
/system/core/liblog/logprint.c
/* * Get the current date/time in pretty form * * It's often useful when examining a log with "less" to jump to * a specific point in the file by searching for the date/time stamp. * For this reason it's very annoying to have regexp meta characters * in the time stamp. Don't use forward slashes, parenthesis, * brackets, asterisks, or other special chars here. */ #if defined(HAVE_LOCALTIME_R) ptm = localtime_r(&(entry->tv_sec), &tmBuf); #else ptm = localtime(&(entry->tv_sec)); #endif //strftime(timeBuf, sizeof(timeBuf), "%Y-%m-%d %H:%M:%S", ptm); strftime(timeBuf, sizeof(timeBuf), "%m-%d %H:%M:%S", ptm);
¤³¤Î¥Ú¡¼¥¸¤Ø¤Î¥³¥á¥ó¥È
IqOLGv Thanks-a-mundo for the article.Really looking forward to read more. Fantastic.
jLPLcw Thanks for sharing, this is a fantastic blog post.Really thank you!
hi
http://www.konosuke-matusita.com/
http://www.mbldaypassdeals.com/
http://www.erven-voor-ontwikkeling.com/
http://www.bossen-van-bezinning.com/
http://www.rustandbonescreenplay.com/
http://www.vivesolutionsinc.com/
http://www.darinkamontano.com/
http://www.awfmmellowtouch.net/
Cheap Canada Goose Jackets clearance sale &amp; Winter Parka outlet shop http://www.darinkamontano.com/
Hello
http://www.darinkamontano.com/
http://www.awfmmellowtouch.net/
http://www.rajasthantour-travels.com/
canada goose jacket http://www.awfmmellowtouch.net/
Gvt9iF <a href="http://vrpihvoamrke.com/">vrpihvoamrke</a>, [url=http://xffemdjjronh.com/]xffemdjjronh[/url], [link=http://dpmucmgntzlv.com/]dpmucmgntzlv[/link], http://sursintzhuit.com/