这是我的问题的后续行动:Does iPhone support hardware-accelerated AES Encryption?。经过进一步的分析和讨论,我已经确定iOS CommonCrypto仅支持AES-CBC模式(密码块链接)的硬件加速,而不支持AES-CTR(计数器)或AES-ECB(电子密码本)模式。虽然这与开源代码不同:http://opensource.apple.com/source/CommonCrypto/CommonCrypto-36064/Source/GladmanAES/ccNewGladman.c。
所以这似乎是公开可用的额外“修复”。所以我很想知道硬件的功能是什么,以及Apple是否实际上阻止了应用程序开发人员使用硬件芯片的所有功能。
答案 0 :(得分:0)
我很想知道硬件的功能是什么,以及Apple是否实际上阻止了应用程序开发人员使用硬件芯片的所有功能。
至少部分硬件加速AES和SHA来自ARMv8-a及更高版本的CPU功能。 ARMv8-a是ARM-64,您可以通过以下方式查看:
$ clang++ -arch arm64 -dM -E - < /dev/null | sort | egrep -i '(arm|aarch)'
#define __AARCH64EL__ 1
#define __AARCH64_SIMD__ 1
#define __ARM64_ARCH_8__ 1
#define __ARM_64BIT_STATE 1
#define __ARM_ACLE 200
#define __ARM_ALIGN_MAX_STACK_PWR 4
#define __ARM_ARCH 8
#define __ARM_ARCH_ISA_A64 1
#define __ARM_ARCH_PROFILE 'A'
#define __ARM_FEATURE_CLZ 1
#define __ARM_FEATURE_CRYPTO 1
#define __ARM_FEATURE_DIV 1
#define __ARM_FEATURE_FMA 1
#define __ARM_FEATURE_UNALIGNED 1
#define __ARM_FP 0xe
#define __ARM_FP16_FORMAT_IEEE 1
#define __ARM_FP_FENV_ROUNDING 1
#define __ARM_NEON 1
#define __ARM_NEON_FP 7
#define __ARM_NEON__ 1
#define __ARM_PCS_AAPCS64 1
#define __ARM_SIZEOF_MINIMAL_ENUM 4
#define __ARM_SIZEOF_WCHAR_T 4
#define __aarch64__ 1
#define __arm64 1
#define __arm64__ 1
如果__ARM_FEATURE_CRYPTO
生效,您可以访问<arm_neon.h>
和<arm_acle.h>
中常见的arm汇编程序指令和arm intrinisics。
我不知道这是否是从存储到内存的DMA数据路径上的相同AES电路。我相信这个AES是iOS 4.3中宣布的Data Protection API的一部分。
你或许可以在Jean-BaptisteBédrune和Jean Sigwald找到答案iPhone data protection in depth;和Dino Zavi的Apple iOS 4 Security Evaluation。