首先,Apple 的 Secure Enclave 是一个确保引导加载程序仅运行由 Apple 签名的代码的模块。那不是您正在做的事情,您正在尝试构建硬件安全模块 (HSM)。
正如您所知道的,正确的方法是让 HSM 在内部执行所有加密操作,以便没有密钥离开设备 - 正如您所指出的,如果您将加密/解密密钥交给设备,那么它就是现在超出你的控制。因此,理想情况下,您需要一个足够快的处理器来进行板载加密处理。
也就是说,将加密的 AES 密钥存储在数据旁边的设备上,并依靠 HSM 为您解密,这正是 Android 全盘加密的工作原理(我认为)。我建议您阅读有关全盘加密的 Android 开发页面,为您提供建议。
我将扩展此答案以提供更广泛的背景。
这个问题足够深,我们应该问你的“威胁模型”是什么(即“你试图防御什么样的攻击?”)。正如@JeffMeden 和@supercat 在评论中指出的那样,您真正需要的安全级别取决于您要保护的内容以及您希望如何保护它。
您提到要保护 AES 密钥免受内存转储的影响。AES 密钥很有价值,但不是因为密钥本身很有价值,而是因为它所保护的信息很有价值。你说:
我确实了解用于加密应用程序数据的密钥可能会通过内存转储暴露,
这是一件值得考虑的好事情,但如果数据本身可能通过内存转储暴露出来,那么它几乎无关紧要。但正如你所说,
但应用程序程序员可以将这种风险降到最低。
无论您的 HSM 是在解密 AES 密钥,还是直接解密数据,一旦您将其交还给某个用户程序,您就无法再对其保护进行任何控制。
底线:如果您的威胁模型包括在 PC 上处理解密数据,同时还保护所述数据免受强大到足以进行内存转储的人的攻击,那么您的 USB 外围设备将无能为力;您还需要编写在 PC 上运行的软件。
如果你开始沿着这条线走,你最终会发明一个受信任的执行环境,在这个环境中,明文数据的所有处理实际上都发生在一个安全的处理器中,只有结果被交还给“不受信任的”PC。