ã¹ãã¬ã¼ã¸ãæå·åãã¦ããã°、ã¹ãã¼ããã©ã³ã誰ãã®æã«æ¸¡ã£ãã¨ãã¦ã、ãã¼ã¿ãå®ããã¨ãã§ãã¾ã。Adiantum ã¯、æå·åã«ãããã¤ããã¼ã·ã§ã³ã§ã。æå·åã¢ã¯ã»ã©ã¬ã¼ã·ã§ã³æ©è½ãæè¼ãã¦ããªã端æ«ã§ãå¹ççã«ã¹ãã¬ã¼ã¸ãæå·åã§ããããã«è¨è¨ããã¦ãã、
ãããã 端æ«ãæå·åã§ãã¾ã。
ç¾å¨ã® Android ã§ã¯、Advanced Encryption Standard(AES)ã«ããã¹ãã¬ã¼ã¸æå·åãæä¾ããã¦ãã¾ã。æ°ãã Android 端æ«ã®ã»ã¨ãã©ã¯、ARMv8 Cryptography Extensions ã«ãã AES æå·åããã¼ãã¦ã§ã¢ã§ãµãã¼ãããã¦ãã¾ã。ããã、Android ã¯ãã¾ãã¾ãªç«¯æ«ã§å®è¡ããã¦ãã¾ã。ææ°ã®ãã©ãã°ã·ãã ã¹ãã¼ããã©ã³ããããã¬ã³ã¸ ã¹ãã¼ããã©ã³ã ãã§ãªã、主ã«çºå±éä¸å½ã§è²©å£²ããã¦ããã¨ã³ããªã¼ã¬ãã«ã®
Android Go ã¹ãã¼ããã©ã³ã、
ã¹ãã¼ãã¦ã©ãã 、
ã¹ãã¼ã TV ãªã©ãããã¾ã。å®ä¾¡ãªé¸æè¢ãæä¾ãããã、端æ«ã¡ã¼ã«ã¼ããã¼ã¨ã³ã ããã»ããµã使ããã¨ãããã¾ã。ãã¨ãã°、AES ããã¼ãã¦ã§ã¢ã§ãµãã¼ããã¦ããªã ARM Cortex-A7 ãªã©ã§ã。ãããã£ã端æ«ã§ã¯、AES ã¯é
ããããã、ã¢ããªã®èµ·åã«æéãããã、端æ«å
¨è¬ã®åä½ãé
ããªããªã©、ã¦ã¼ã¶ã¼ ã¨ã¯ã¹ããªã¨ã³ã¹ã®ä½ä¸ã«ã¤ãªããã¾ã。ãã®ãã、ã¹ãã¬ã¼ã¸æå·å㯠2015 å¹´ã« Android 6.0 以éã®ã»ã¨ãã©ã®ç«¯æ«ã§
å¿
é ã¨ãªã£ã¦ãããã®ã®、AES ããã©ã¼ãã³ã¹ãä½ã(50 MiB/s 以ä¸ã®)端æ«ã¯ãã®è¦ä»¶ãå
é¤ããã¦ãã¾ã。ç§ãã¡ã¯、æå·åã¯èª°ã§ã使ããã¹ãã ã¨èãã¦ãããã、ãã®ç¹ã«å¯¾å¿ããä½æ¥ãé²ãã¦ãã¾ãã。
HTTPS æå·åã§ã¯、ãã®åé¡ã¯è§£æ¶ããã¦ãã¾ã。ãã¼ãã¦ã§ã¢ ã¢ã¯ã»ã©ã¬ã¼ã·ã§ã³ãå©ç¨ã§ããªãå ´å、
ChaCha20 ã¹ããªã¼ã æå·å 㯠AES ãããã¯ããã«é«éã§ã。ä¸æ¹ã§、ãã®æå·åã¯ãããã¦å®å
¨ã§ã。é«éãã®ç§è¨£ã¯、ãããã CPU ããã¤ãã£ãã§ãµãã¼ããã¦ããæ¼ç®ã®ã¿(å ç®、循ç°、XOR)ã使ã£ã¦ããç¹ã«ããã¾ã。ãã®ãã Google ã¯、HTTPS ã¤ã³ã¿ã¼ãããæ¥ç¶ãä¿è·ããããã®æ°ãã TLS æå·ã¹ã¤ã¼ãã¨ãã¦、
2014 å¹´ã« ChaCha20 ã¨、åããã½ããã¦ã§ã¢ã§é«éã«å¦çã§ãã
Poly1305 èªè¨¼ ãé¸æãã¾ãã。ChaCha20-Poly1305 ã¯
RFC7539 ã¨ãã¦æ¨æºåããã¦ãã、AES å½ä»¤ãæè¼ããã¦ããªã端æ«ã® HTTPS ããã©ã¼ãã³ã¹ã大ããåä¸ããã¦ãã¾ã。
ãã ã、ãã£ã¹ã¯ã¨ãã¡ã¤ã«ã®æå·åã«ã¯、åºæã®åé¡ãããã¾ã。ã¹ãã¬ã¼ã¸ ããã¤ã¹ä¸ã«ãããã¼ã¿ã¯、「ã»ã¯ã¿」ã«åå²ããã¦ãã¾ã。ç¾å¨ã®ã»ã¯ã¿ã®ä¸è¬çãªãµã¤ãºã¯、4096 ãã¤ãã§ã。ãã¡ã¤ã«ã·ã¹ãã ãããã¤ã¹ã«ã»ã¯ã¿ã®èªã¿è¾¼ã¿ã¾ãã¯æ¸ãè¾¼ã¿ã®ãªã¯ã¨ã¹ããè¡ãã¨、æå·åã¬ã¤ã¤ã¼ããã®ãªã¯ã¨ã¹ããã¤ã³ã¿ã¼ã»ããã、ãã¬ã¼ã³ããã¹ãã¨æå·ããã¹ãã®å¤æå¦çãè¡ãã¾ã。ã¤ã¾ã、4096 ãã¤ãã®ãã¬ã¼ã³ããã¹ã㨠4096 ãã¤ãã®æå·ããã¹ããç¸äºã«å¤æããªããã°ãªãã¾ãã。ããã、RFC7539 ã使ãã¨、æå·ããã¹ãã¯ãã¬ã¼ã³ããã¹ãããããããã«å¤§ãããªãã¾ã。æå·ã®
nonce ã¨
ã¡ãã»ã¼ã¸ã®æ´åæ§ æ
å ±ãæ ¼ç´ããããã«、ããããªé åãå¿
è¦ã«ãªãããã§ã。ãã®è¿½å æ
å ±ãæ ¼ç´ããå ´æãã½ããã¦ã§ã¢ã§æ¢ããã¯ããã¯ãåå¨ãã¾ãã、å¹çãè½ã¡、ãã¡ã¤ã«ã·ã¹ãã ã®è¨è¨ã大å¹
ã«è¤éåããå¯è½æ§ãããã¾ã。
AES ã§ãã£ã¹ã¯ãæå·åããéã«ãã使ãããã½ãªã¥ã¼ã·ã§ã³ã¯、ãµã¤ãºãå¤ãããªã XTS ã¢ã¼ãã¾ã㯠CBC-ESSIV ã¢ã¼ããå©ç¨ããæ¹å¼ã§ã。ç¾å¨ã® Android ã¯、ãã£ã¹ã¯å
¨ä½ã®æå·åã«ã¯ AES-128-CBC-ESSIV ã、ãã¡ã¤ã«ãã¼ã¹ã®æå·åã«ã¯ AES-256-XTS ãå©ç¨ãã¦ãã¾ã。ããã、AES ã®ããã©ã¼ãã³ã¹ãä¸ååãªå ´åã¯、ãã¼ã¨ã³ã ARM ããã»ããµã§ãååãªããã©ã¼ãã³ã¹ãåºãã代æ¿æ¹å¼ã¨ãã¦åºãæ®åãã¦ãããã®ã¯ããã¾ãã。
ãã®åé¡ã解決ããããã«、
Adiantum ã¨ããæ°ããæå·åã¢ã¼ããè¨è¨ãã¾ãã。Adiantum ã使ãã¨、ãµã¤ãºãå¤ããªãã¢ã¼ã㧠ChaCha ã¹ããªã¼ã æå·ã使ããããã«ãªãã¾ã。ããã¯、
HCTR ã
HCH ãªã©、ãµã¤ãºãå¤ããªã AES ãã¼ã¹ã®æå·åã¨ãã¦ææ¡ããã¦ããæ¹å¼ã®èãæ¹ãåãå
¥ãããã¨ã«ãã£ã¦å®ç¾ãã¦ãã¾ã。ARM Cortex-A7 ã¯、4096 ãã¤ãã®ã»ã¯ã¿ã«å¯¾ãã Adiantum ã«ããæå·åã¨å¾©å·åã、1 ãã¤ãå½ããç´ 10.6 ãµã¤ã¯ã«ã§å®è¡ã§ãã¾ã。ããã¯、AES-256-XTS ããç´ 5 åé«éã§ã。
Adiantum ã¯、XTS ã CBC-ESSIV ãªã©ã®ã¢ã¼ãã¨ã¯ç°ãªã、çã®ã¯ã¤ãããã㯠ã¢ã¼ããå®ç¾ãã¦ãã¾ã。ã¤ã¾ã、ãã¬ã¼ã³ããã¹ãå
ã®ã©ã®ããããå¤æ´ãã¦ã、æå·ããã¹ãã®ãã¹ã¦ãå¤æ´ãã、å¤å¥ã§ããªããªãã¾ã。ãã®éãåããã¨ãè¨ãã¾ã。åä½ã®ä»çµã¿ã¯、以ä¸ã®ããã«ãªã£ã¦ãã¾ã。æåã«、Poly1305 ããã³å¥ã®é常ã«é«éãªéµã¤ãããã·ã¥é¢æ°ã§ãã NH ã«åºã¥ãéµã¤ãããã·ã¥åã«ãã£ã¦、ãã¬ã¼ã³ããã¹ãã®ã»ã¼å
¨ä½ãããã·ã¥åãã¾ã。ã¾ã、「tweak」ã¨å¼ã°ããå¤ãããã·ã¥åãã¾ã。ããã¯、ã»ã¯ã¿ãã¨ã«ç°ãªãæå·åãè¡ãããã«ããããã®ãã®ã§ã。次ã«、ãã®ããã·ã¥ã使ã、ChaCha æå·åã«ä½¿ã nonce ãçæãã¾ã。復å·åã§ãæå·åã¨åã強度ãå®ç¾ã§ããããã«、æå·åã®å¾、å度ããã·ã¥åãè¡ãã¾ã。ãã®å¦çã¯、æå·åãããã®ã復å·åã§ããããã«、ãã¡ã¤ã¹ãã« ãããã¯ã¼ã¯ã¨ããå½¢ã§æ§é åããã¦ãã¾ã。16 ãã¤ãã®ãããã¯ã«å¯¾ã㦠AES-256 ã 1 åå®è¡ããå¿
è¦ãããã¾ãã、4096 ãã¤ãã®å
¥åã«æ¯ã¹ãã°、ããã©ã¼ãã³ã¹çã«å¤§ããªå½±é¿ã¯ããã¾ãã。
ChaCha ã®ãããªæå·ããªããã£ãã¯、「ã©ã¦ã³ã」ã¨ãã¦æ±ããã¦ãã¾ã。ãã®ã©ã¦ã³ããç¹°ãè¿ããã³ã«、ã¹ãã¼ãã¨å¼ãæ¿ãã«å®å
¨æ§ãé«ã¾ãã¾ã。å¤ç¨®å¤æ§ãªç«¯æ«ã§ååé«éã«ãã£ã¹ã¯ãæå·åã§ããããã«、ä¸è¬çã«ä½¿ããã¦ãã 20 ã©ã¦ã³ãã® ChaCha ã§ã¯ãªã、12 ã©ã¦ã³ãã®æ¹å¼ãé¸æãã¦ãã¾ã。ã©ã¦ã³ããç¹°ãè¿ããã³ã«、æ»æã®é£æ度ã¯å¤§å¹
ã«ä¸ããã¾ã。7 ã©ã¦ã³ãã®æ¹å¼ã¯ 2008 å¹´ã«ç ´ããã¦ãã、å¤ãã®è«æãçºè¡¨ããã¦æ»ææ¹æ³ãåä¸ãã¦ãã¾ãã、8 ã©ã¦ã³ããç ´ããã¨ãã§ããæ»ææ¹æ³ã¯ä»ã®ã¨ããè¦ã¤ãã£ã¦ãã¾ãã。å®ã¯、ç¹°ãè¿ãã©ã¦ã³ãæ°ã¨ç¾å¨ç ´ããã¦ããã©ã¦ã³ãæ°ã®æ¯çã§è¦ãã°、AES-256 ããã ChaCha12 ã®æ¹ãåªãã¦ãã¾ã。
Adiantum ã¯ã¾ã çã¾ããã°ããã§ãã、ç§ãã¡ã¯ãã®å®å
¨æ§ã«å¼·ãèªä¿¡ãæã¦ãç«å ´ã«ããã¾ã。ç§ãã¡ã®è«æã§ã¯、ChaCha12 㨠AES-256 ãå®å
¨ã§ããã¨ããåæã®ãã¨、Adiantum ãåªããã»ãã¥ãªãã£ç¹æ§ãæã¤ãã¨ã証æãã¦ãã¾ã。ChaCha ã AES ã®ãããª「ããªããã£ã」ãã XTS、GCM、Adiantum ãªã©ã®「æ§é 」ãä½ãã¨ããã®ã¯、æå·ã®ä¸çã§ã¯æ¨æºçãªææ³ã§ã。ããªããã£ããå®å
¨ã§ãããã©ããã«ã¤ãã¦ã¯、ç§ãã¡ã説å¾åã®ãã主張ãè¡ãããã¨ã¯å¤ããã®ã®、ãã®è¨¼æ ãæä¾ãããã¨ã¯ã§ãã¾ãã。ãã ã、ããªããã£ããå®å
¨ã§ããã°、ããããä½ã£ãæ§é ãå®å
¨ã§ãããã¨ã¯è¨¼æã§ãã¾ã。NH ããã³ Poly1305 ããã·ã¥é¢æ°ã«ã¤ãã¦ã¯、åæã¨ããå¿
è¦ã¯ããã¾ãã。å¿
è¦ãªæå·ç¹æ§("ε-almost-∆-universality")ãæã£ã¦ãããã¨ã証æããã¦ããããã§ã。
Adiantum ã¯、ãã¦ã©ã¤ã·ãã¨ããæ¤ç©ã«ã¡ãªãã§åä»ãããã¾ãã。ã´ã£ã¯ããªã¢æ代ã®è±è¨èã§ã¯、èª å®ãã¨æ
ã¿ã表ãæ¤ç©ã¨ããã¦ãã¾ã。
åèè³æ
è¨è¨ã®è©³ç´°、å®å
¨æ§ã®è¨¼æã«ã¤ãã¦ã¯、è«æ
Adiantum: length-preserving encryption for entry-level processors ãã覧ãã ãã。IACR Transactions on Symmetric Cryptology ã«æ²è¼ããã¦ãã¾ã。ãã®è«æã¯、3 æã® Fast Software Encryption ã«ã³ãã¡ã¬ã³ã¹(FSE 2019)ã§çºè¡¨ãããäºå®ã§ã。
Adiantum ã®ä¸è¬çãªå®è£
ããã³ ARM ã«æé©åãããå®è£
ã¯、
Android å
±éã«ã¼ãã« v4.9 以é ããã³
ã¡ã¤ã³ã©ã¤ã³ Linux ã«ã¼ãã« v5.0 以é ã§å©ç¨ã§ãã¾ã。ãªãã¡ã¬ã³ã¹ ã³ã¼ã、ãã¹ããã¯ãã«、ãã³ããã¼ã¯ ã¹ã¤ã¼ãã¯、
https://github.com/google/adiantum ã§å
¬éããã¦ãã¾ã。
Android 端æ«ã¡ã¼ã«ã¼ã¯、AES ã®ããã©ã¼ãã³ã¹ã 50 MiB/ç§ä»¥ä¸ã㤠Android Pie ãæè¼ãã端æ«ã§、ãã£ã¹ã¯å
¨ä½ã¾ãã¯ãã¡ã¤ã«ãã¼ã¹ã®æå·åã«
Adiantum ãå©ç¨ãããã¨ãã§ãã¾ã 。AES ããã¼ãã¦ã§ã¢ã§ãµãã¼ãããã¦ããå ´åã¯、Adiantum ããã AES ã®æ¹ãé«éã§ã。AES ã®ããã©ã¼ãã³ã¹ã 50 MiB/s ãè¶
ããå ´åã¯、AES ã®ä½¿ç¨ãå¿
é ã§ããç¹ã¯å¤ããã¾ãã。Android Q ã§ã¯、Adiantum ã Android ãã©ãããã©ã¼ã ã®ä¸é¨ã¨ãªãäºå®ã§ã。ä»å¾、ãã¹ã¦ã®æ°ãã Android 端æ«ã§、許å¯ããã¦ããããããã®æå·åã¢ã«ã´ãªãºã ã使ã£ãæå·åãå¿
é ã¨ãªãããã«、
Android Compatibility Definition Document (CDD)ãæ´æ°ããäºå®ã§ã。
è¬è¾: æ¬æ稿ã¯、Greg Kaiser ããã³ Luke Haviland ã«ããå¯ç¨¿ã«åºã¥ãã¦ãã¾ã。Adiantum ã¯、Paul Crowley 㨠Eric Biggers ãè¨è¨ã、Eric Biggers 㨠Greg Kaiser ã Android ã«å®è£
ãã¾ãã。å½åã¯、Danielle Roberts ã«ãã£ã¦è¡ããã¾ãã。
Reviewed by
Eiji Kitamura - Developer Relations Team
ãã®è¨äºã¯ Android ã»ãã¥ãªã㣠& ãã©ã¤ãã·ã¼ ãã¼ã 、Paul Crowley、Eric Biggers ã«ãã Google Online Security Blog ã®è¨äº "Introducing Adiantum: Encryption for the Next Billion Users " ãå
ã«ç¿»è¨³・å çãããã®ã§ã。詳ããã¯å
è¨äºãã覧ãã ãã。
ã¹ãã¬ã¼ã¸ãæå·åãã¦ããã°、ã¹ãã¼ããã©ã³ã誰ãã®æã«æ¸¡ã£ãã¨ãã¦ã、ãã¼ã¿ãå®ããã¨ãã§ãã¾ã。Adiantum ã¯、æå·åã«ãããã¤ããã¼ã·ã§ã³ã§ã。æå·åã¢ã¯ã»ã©ã¬ã¼ã·ã§ã³æ©è½ãæè¼ãã¦ããªã端æ«ã§ãå¹ççã«ã¹ãã¬ã¼ã¸ãæå·åã§ããããã«è¨è¨ããã¦ãã、 ãããã 端æ«ãæå·åã§ãã¾ã。
ç¾å¨ã® Android ã§ã¯、Advanced Encryption Standard(AES)ã«ããã¹ãã¬ã¼ã¸æå·åãæä¾ããã¦ãã¾ã。æ°ãã Android 端æ«ã®ã»ã¨ãã©ã¯、ARMv8 Cryptography Extensions ã«ãã AES æå·åããã¼ãã¦ã§ã¢ã§ãµãã¼ãããã¦ãã¾ã。ããã、Android ã¯ãã¾ãã¾ãªç«¯æ«ã§å®è¡ããã¦ãã¾ã。ææ°ã®ãã©ãã°ã·ãã ã¹ãã¼ããã©ã³ããããã¬ã³ã¸ ã¹ãã¼ããã©ã³ã ãã§ãªã、主ã«çºå±éä¸å½ã§è²©å£²ããã¦ããã¨ã³ããªã¼ã¬ãã«ã® Android Go ã¹ãã¼ããã©ã³ã、ã¹ãã¼ãã¦ã©ãã 、ã¹ãã¼ã TV ãªã©ãããã¾ã。å®ä¾¡ãªé¸æè¢ãæä¾ãããã、端æ«ã¡ã¼ã«ã¼ããã¼ã¨ã³ã ããã»ããµã使ããã¨ãããã¾ã。ãã¨ãã°、AES ããã¼ãã¦ã§ã¢ã§ãµãã¼ããã¦ããªã ARM Cortex-A7 ãªã©ã§ã。ãããã£ã端æ«ã§ã¯、AES ã¯é
ããããã、ã¢ããªã®èµ·åã«æéãããã、端æ«å
¨è¬ã®åä½ãé
ããªããªã©、ã¦ã¼ã¶ã¼ ã¨ã¯ã¹ããªã¨ã³ã¹ã®ä½ä¸ã«ã¤ãªããã¾ã。ãã®ãã、ã¹ãã¬ã¼ã¸æå·å㯠2015 å¹´ã« Android 6.0 以éã®ã»ã¨ãã©ã®ç«¯æ«ã§å¿
é ã¨ãªã£ã¦ãããã®ã®、AES ããã©ã¼ãã³ã¹ãä½ã(50 MiB/s 以ä¸ã®)端æ«ã¯ãã®è¦ä»¶ãå
é¤ããã¦ãã¾ã。ç§ãã¡ã¯、æå·åã¯èª°ã§ã使ããã¹ãã ã¨èãã¦ãããã、ãã®ç¹ã«å¯¾å¿ããä½æ¥ãé²ãã¦ãã¾ãã。
HTTPS æå·åã§ã¯、ãã®åé¡ã¯è§£æ¶ããã¦ãã¾ã。ãã¼ãã¦ã§ã¢ ã¢ã¯ã»ã©ã¬ã¼ã·ã§ã³ãå©ç¨ã§ããªãå ´å、ChaCha20 ã¹ããªã¼ã æå·å 㯠AES ãããã¯ããã«é«éã§ã。ä¸æ¹ã§、ãã®æå·åã¯ãããã¦å®å
¨ã§ã。é«éãã®ç§è¨£ã¯、ãããã CPU ããã¤ãã£ãã§ãµãã¼ããã¦ããæ¼ç®ã®ã¿(å ç®、循ç°、XOR)ã使ã£ã¦ããç¹ã«ããã¾ã。ãã®ãã Google ã¯、HTTPS ã¤ã³ã¿ã¼ãããæ¥ç¶ãä¿è·ããããã®æ°ãã TLS æå·ã¹ã¤ã¼ãã¨ãã¦、2014 å¹´ã« ChaCha20 ã¨、åããã½ããã¦ã§ã¢ã§é«éã«å¦çã§ãã Poly1305 èªè¨¼ ãé¸æãã¾ãã。ChaCha20-Poly1305 㯠RFC7539 ã¨ãã¦æ¨æºåããã¦ãã、AES å½ä»¤ãæè¼ããã¦ããªã端æ«ã® HTTPS ããã©ã¼ãã³ã¹ã大ããåä¸ããã¦ãã¾ã。
ãã ã、ãã£ã¹ã¯ã¨ãã¡ã¤ã«ã®æå·åã«ã¯、åºæã®åé¡ãããã¾ã。ã¹ãã¬ã¼ã¸ ããã¤ã¹ä¸ã«ãããã¼ã¿ã¯、「ã»ã¯ã¿」ã«åå²ããã¦ãã¾ã。ç¾å¨ã®ã»ã¯ã¿ã®ä¸è¬çãªãµã¤ãºã¯、4096 ãã¤ãã§ã。ãã¡ã¤ã«ã·ã¹ãã ãããã¤ã¹ã«ã»ã¯ã¿ã®èªã¿è¾¼ã¿ã¾ãã¯æ¸ãè¾¼ã¿ã®ãªã¯ã¨ã¹ããè¡ãã¨、æå·åã¬ã¤ã¤ã¼ããã®ãªã¯ã¨ã¹ããã¤ã³ã¿ã¼ã»ããã、ãã¬ã¼ã³ããã¹ãã¨æå·ããã¹ãã®å¤æå¦çãè¡ãã¾ã。ã¤ã¾ã、4096 ãã¤ãã®ãã¬ã¼ã³ããã¹ã㨠4096 ãã¤ãã®æå·ããã¹ããç¸äºã«å¤æããªããã°ãªãã¾ãã。ããã、RFC7539 ã使ãã¨、æå·ããã¹ãã¯ãã¬ã¼ã³ããã¹ãããããããã«å¤§ãããªãã¾ã。æå·ã® nonce ã¨ã¡ãã»ã¼ã¸ã®æ´åæ§ æ
å ±ãæ ¼ç´ããããã«、ããããªé åãå¿
è¦ã«ãªãããã§ã。ãã®è¿½å æ
å ±ãæ ¼ç´ããå ´æãã½ããã¦ã§ã¢ã§æ¢ããã¯ããã¯ãåå¨ãã¾ãã、å¹çãè½ã¡、ãã¡ã¤ã«ã·ã¹ãã ã®è¨è¨ã大å¹
ã«è¤éåããå¯è½æ§ãããã¾ã。
AES ã§ãã£ã¹ã¯ãæå·åããéã«ãã使ãããã½ãªã¥ã¼ã·ã§ã³ã¯、ãµã¤ãºãå¤ãããªã XTS ã¢ã¼ãã¾ã㯠CBC-ESSIV ã¢ã¼ããå©ç¨ããæ¹å¼ã§ã。ç¾å¨ã® Android ã¯、ãã£ã¹ã¯å
¨ä½ã®æå·åã«ã¯ AES-128-CBC-ESSIV ã、ãã¡ã¤ã«ãã¼ã¹ã®æå·åã«ã¯ AES-256-XTS ãå©ç¨ãã¦ãã¾ã。ããã、AES ã®ããã©ã¼ãã³ã¹ãä¸ååãªå ´åã¯、ãã¼ã¨ã³ã ARM ããã»ããµã§ãååãªããã©ã¼ãã³ã¹ãåºãã代æ¿æ¹å¼ã¨ãã¦åºãæ®åãã¦ãããã®ã¯ããã¾ãã。
ãã®åé¡ã解決ããããã«、Adiantum ã¨ããæ°ããæå·åã¢ã¼ããè¨è¨ãã¾ãã。Adiantum ã使ãã¨、ãµã¤ãºãå¤ããªãã¢ã¼ã㧠ChaCha ã¹ããªã¼ã æå·ã使ããããã«ãªãã¾ã。ããã¯、HCTR ã HCH ãªã©、ãµã¤ãºãå¤ããªã AES ãã¼ã¹ã®æå·åã¨ãã¦ææ¡ããã¦ããæ¹å¼ã®èãæ¹ãåãå
¥ãããã¨ã«ãã£ã¦å®ç¾ãã¦ãã¾ã。ARM Cortex-A7 ã¯、4096 ãã¤ãã®ã»ã¯ã¿ã«å¯¾ãã Adiantum ã«ããæå·åã¨å¾©å·åã、1 ãã¤ãå½ããç´ 10.6 ãµã¤ã¯ã«ã§å®è¡ã§ãã¾ã。ããã¯、AES-256-XTS ããç´ 5 åé«éã§ã。
Adiantum ã¯、XTS ã CBC-ESSIV ãªã©ã®ã¢ã¼ãã¨ã¯ç°ãªã、çã®ã¯ã¤ãããã㯠ã¢ã¼ããå®ç¾ãã¦ãã¾ã。ã¤ã¾ã、ãã¬ã¼ã³ããã¹ãå
ã®ã©ã®ããããå¤æ´ãã¦ã、æå·ããã¹ãã®ãã¹ã¦ãå¤æ´ãã、å¤å¥ã§ããªããªãã¾ã。ãã®éãåããã¨ãè¨ãã¾ã。åä½ã®ä»çµã¿ã¯、以ä¸ã®ããã«ãªã£ã¦ãã¾ã。æåã«、Poly1305 ããã³å¥ã®é常ã«é«éãªéµã¤ãããã·ã¥é¢æ°ã§ãã NH ã«åºã¥ãéµã¤ãããã·ã¥åã«ãã£ã¦、ãã¬ã¼ã³ããã¹ãã®ã»ã¼å
¨ä½ãããã·ã¥åãã¾ã。ã¾ã、「tweak」ã¨å¼ã°ããå¤ãããã·ã¥åãã¾ã。ããã¯、ã»ã¯ã¿ãã¨ã«ç°ãªãæå·åãè¡ãããã«ããããã®ãã®ã§ã。次ã«、ãã®ããã·ã¥ã使ã、ChaCha æå·åã«ä½¿ã nonce ãçæãã¾ã。復å·åã§ãæå·åã¨åã強度ãå®ç¾ã§ããããã«、æå·åã®å¾、å度ããã·ã¥åãè¡ãã¾ã。ãã®å¦çã¯、æå·åãããã®ã復å·åã§ããããã«、ãã¡ã¤ã¹ãã« ãããã¯ã¼ã¯ã¨ããå½¢ã§æ§é åããã¦ãã¾ã。16 ãã¤ãã®ãããã¯ã«å¯¾ã㦠AES-256 ã 1 åå®è¡ããå¿
è¦ãããã¾ãã、4096 ãã¤ãã®å
¥åã«æ¯ã¹ãã°、ããã©ã¼ãã³ã¹çã«å¤§ããªå½±é¿ã¯ããã¾ãã。
ChaCha ã®ãããªæå·ããªããã£ãã¯、「ã©ã¦ã³ã」ã¨ãã¦æ±ããã¦ãã¾ã。ãã®ã©ã¦ã³ããç¹°ãè¿ããã³ã«、ã¹ãã¼ãã¨å¼ãæ¿ãã«å®å
¨æ§ãé«ã¾ãã¾ã。å¤ç¨®å¤æ§ãªç«¯æ«ã§ååé«éã«ãã£ã¹ã¯ãæå·åã§ããããã«、ä¸è¬çã«ä½¿ããã¦ãã 20 ã©ã¦ã³ãã® ChaCha ã§ã¯ãªã、12 ã©ã¦ã³ãã®æ¹å¼ãé¸æãã¦ãã¾ã。ã©ã¦ã³ããç¹°ãè¿ããã³ã«、æ»æã®é£æ度ã¯å¤§å¹
ã«ä¸ããã¾ã。7 ã©ã¦ã³ãã®æ¹å¼ã¯ 2008 å¹´ã«ç ´ããã¦ãã、å¤ãã®è«æãçºè¡¨ããã¦æ»ææ¹æ³ãåä¸ãã¦ãã¾ãã、8 ã©ã¦ã³ããç ´ããã¨ãã§ããæ»ææ¹æ³ã¯ä»ã®ã¨ããè¦ã¤ãã£ã¦ãã¾ãã。å®ã¯、ç¹°ãè¿ãã©ã¦ã³ãæ°ã¨ç¾å¨ç ´ããã¦ããã©ã¦ã³ãæ°ã®æ¯çã§è¦ãã°、AES-256 ããã ChaCha12 ã®æ¹ãåªãã¦ãã¾ã。
Adiantum ã¯ã¾ã çã¾ããã°ããã§ãã、ç§ãã¡ã¯ãã®å®å
¨æ§ã«å¼·ãèªä¿¡ãæã¦ãç«å ´ã«ããã¾ã。ç§ãã¡ã®è«æã§ã¯、ChaCha12 㨠AES-256 ãå®å
¨ã§ããã¨ããåæã®ãã¨、Adiantum ãåªããã»ãã¥ãªãã£ç¹æ§ãæã¤ãã¨ã証æãã¦ãã¾ã。ChaCha ã AES ã®ãããª「ããªããã£ã」ãã XTS、GCM、Adiantum ãªã©ã®「æ§é 」ãä½ãã¨ããã®ã¯、æå·ã®ä¸çã§ã¯æ¨æºçãªææ³ã§ã。ããªããã£ããå®å
¨ã§ãããã©ããã«ã¤ãã¦ã¯、ç§ãã¡ã説å¾åã®ãã主張ãè¡ãããã¨ã¯å¤ããã®ã®、ãã®è¨¼æ ãæä¾ãããã¨ã¯ã§ãã¾ãã。ãã ã、ããªããã£ããå®å
¨ã§ããã°、ããããä½ã£ãæ§é ãå®å
¨ã§ãããã¨ã¯è¨¼æã§ãã¾ã。NH ããã³ Poly1305 ããã·ã¥é¢æ°ã«ã¤ãã¦ã¯、åæã¨ããå¿
è¦ã¯ããã¾ãã。å¿
è¦ãªæå·ç¹æ§("ε-almost-∆-universality")ãæã£ã¦ãããã¨ã証æããã¦ããããã§ã。
Adiantum ã¯、ãã¦ã©ã¤ã·ãã¨ããæ¤ç©ã«ã¡ãªãã§åä»ãããã¾ãã。ã´ã£ã¯ããªã¢æ代ã®è±è¨èã§ã¯、èª å®ãã¨æ
ã¿ã表ãæ¤ç©ã¨ããã¦ãã¾ã。
åèè³æ
è¨è¨ã®è©³ç´°、å®å
¨æ§ã®è¨¼æã«ã¤ãã¦ã¯、è«æ Adiantum: length-preserving encryption for entry-level processors ãã覧ãã ãã。IACR Transactions on Symmetric Cryptology ã«æ²è¼ããã¦ãã¾ã。ãã®è«æã¯、3 æã® Fast Software Encryption ã«ã³ãã¡ã¬ã³ã¹(FSE 2019)ã§çºè¡¨ãããäºå®ã§ã。
Adiantum ã®ä¸è¬çãªå®è£
ããã³ ARM ã«æé©åãããå®è£
ã¯、Android å
±éã«ã¼ãã« v4.9 以é ããã³ã¡ã¤ã³ã©ã¤ã³ Linux ã«ã¼ãã« v5.0 以é ã§å©ç¨ã§ãã¾ã。ãªãã¡ã¬ã³ã¹ ã³ã¼ã、ãã¹ããã¯ãã«、ãã³ããã¼ã¯ ã¹ã¤ã¼ãã¯、https://github.com/google/adiantum ã§å
¬éããã¦ãã¾ã。
Android 端æ«ã¡ã¼ã«ã¼ã¯、AES ã®ããã©ã¼ãã³ã¹ã 50 MiB/ç§ä»¥ä¸ã㤠Android Pie ãæè¼ãã端æ«ã§、ãã£ã¹ã¯å
¨ä½ã¾ãã¯ãã¡ã¤ã«ãã¼ã¹ã®æå·åã« Adiantum ãå©ç¨ãããã¨ãã§ãã¾ã 。AES ããã¼ãã¦ã§ã¢ã§ãµãã¼ãããã¦ããå ´åã¯、Adiantum ããã AES ã®æ¹ãé«éã§ã。AES ã®ããã©ã¼ãã³ã¹ã 50 MiB/s ãè¶
ããå ´åã¯、AES ã®ä½¿ç¨ãå¿
é ã§ããç¹ã¯å¤ããã¾ãã。Android Q ã§ã¯、Adiantum ã Android ãã©ãããã©ã¼ã ã®ä¸é¨ã¨ãªãäºå®ã§ã。ä»å¾、ãã¹ã¦ã®æ°ãã Android 端æ«ã§、許å¯ããã¦ããããããã®æå·åã¢ã«ã´ãªãºã ã使ã£ãæå·åãå¿
é ã¨ãªãããã«、Android Compatibility Definition Document (CDD)ãæ´æ°ããäºå®ã§ã。
è¬è¾: æ¬æ稿ã¯、Greg Kaiser ããã³ Luke Haviland ã«ããå¯ç¨¿ã«åºã¥ãã¦ãã¾ã。Adiantum ã¯、Paul Crowley 㨠Eric Biggers ãè¨è¨ã、Eric Biggers 㨠Greg Kaiser ã Android ã«å®è£
ãã¾ãã。å½åã¯、Danielle Roberts ã«ãã£ã¦è¡ããã¾ãã。
Reviewed by Eiji Kitamura - Developer Relations Team