2011-03-29 113 views
3

這是對我的問題的各種後續處理: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.cApple採用硬件加速AES/SHA-1加密的硬件芯片/供應商?

因此,這似乎是一個額外的「修復」之上的公開可用。所以我很想知道硬件的功能是什麼,以及Apple是否真的阻止應用程序開發人員使用硬件芯片的所有功能。

我已經看過通常的嫌疑人( & iFixit)這個信息,但沒有運氣。

+0

上iPhone6S公共密碼不使用硬件加密ECB模式,其實ECB模式悅目快於CBC模式。加密1MB時間我iPhone6S是CBC模式:2.10秒,ECB模式1.28秒。我沒有計時CTR模式。 – zaph 2016-05-15 16:42:22

+0

其他功能包括AES-GCM iOS上,但沒有報頭被提供。 – zaph 2016-05-15 16:45:25

回答

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彙編指令和手臂intrinisics在<arm_neon.h><arm_acle.h>習慣發現。


我不知道這是否是從存儲到內存中的DMA數據路徑上的相同的AES電路。我相信這個AES是iOS 4.3中宣佈的Data Protection API的一部分。

您或許能夠找到讓 - 巴蒂斯特Bédrune和Jean Sigwald iPhone data protection in depth答案;和Dino Zavi的Apple iOS 4 Security Evaluation