3

这是对我的问题的跟进:iPhone 是否支持硬件加速的 AES 加密?. 经过进一步分析和hacky,我确定iOS CommonCrypto仅支持AES-CBC模式(密码块链接)的硬件加速,而不支持AES-CTR(计数器)或AES-ECB(电子密码本)模式。虽然这与开源代码不同:http: //opensource.apple.com/source/CommonCrypto/CommonCrypto-36064/Source/GladmanAES/ccNewGladman.c

因此,这似乎是对公开可用内容的额外“修复”。所以我很想知道硬件的功能是什么,以及苹果是否真的在阻止应用程序开发人员使用硬件芯片的所有功能。

我已经查看了通常的嫌疑人(ChipworksiFixit)以获取此信息,但没有运气。

4

1 回答 1

0

我很想知道硬件的功能是什么,以及苹果是否真的在阻止应用程序开发人员使用硬件芯片的所有功能。

至少一些硬件加速的 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 汇编器指令和 arm 内部函数。<arm_neon.h><arm_acle.h>


我不知道这是否与从存储到内存的 DMA 数据路径上的 AES 电路相同。我相信这个 AES 是 iOS 4.3 中宣布的数据保护 API 的一部分。

您或许可以在 Jean-Baptiste Bédrune 和 Jean Sigwald iPhone 数据保护深入中找到答案;和 Dino Zavi 的Apple iOS 4 安全评估

于 2016-05-15T15:00:26.377 回答