0

我正在使用 sgx_dh API 开发一个 sgx 应用程序。工作流程可以总结如下(这里的两个角色分别是dh_initiator,简称dh_i,以及dh_responder,即dh_r。):

step0:在dh_i和dh_r端发起会话;

step1:dh_r生成包含g_a的msg1并将msg1发送给dh_i;

step2:dh_i处理msg1,生成包含g_b的msg2,并将msg2发送给dh_r;

step3:dh_r处理msg2并生成msg3,包括对共享密钥的确认,然后将msg3发送给dh_i;

step4:dh_i 处理 msg3。DH 密钥交换完成。

step3 dh_r 会输出一个sgx_dh_session_enclave_identity_t type变量,这样step4 的dh_i 就会输出一个同类型的变量。根据 SGX Developer Reference,这两个变量用于 dh 会话建立。

但我无法弄清楚它们将在哪里使用,因为它们是在密钥交换和飞地身份验证完成时生成的。

任何建议或提示表示赞赏,如果在这里有任何误解,请纠正我。非常感谢~

4

1 回答 1

0

提供这两个变量是为了明确您应该验证的值,以确保您与正确的 enclave 进行通信(您可以检查它们在 LocalAttestation 示例中的使用方式:https ://github.com/intel/linux-sgx/blob /62b116c502b09b125db9acc965694d3ecff8e698/SampleCode/LocalAttestation/EnclaveInitiator/EnclaveMessageExchange.cpp#L133-L144)。

它们不会在这里传递给 sdk 提供的 dh 交换协议的其他功能,您应该“手动”处理它们并在依赖已建立的安全通道之前定义自己的接受策略。

于 2020-08-15T15:27:10.703 回答