Solaris 开发者安全性指南

在 GSS-API 中确认消息传送

接收者展开或检验所传送的消息之后,会向发送者返回确认信息,这意味着会发回该消息的 MIC。请考虑以下情况:消息没有由发送者进行包装,而只是通过 gss_get_mic() 使用 MIC 进行了标记。图 4–9 中说明的过程如下所示:

  1. 启动器使用 gss_get_mic() 对消息进行标记。

  2. 启动器将该消息和 MIC 发送到接受器。

  3. 接受器使用 gss_verify_mic() 检验该消息。

  4. 接受器将该 MIC 发回到启动器。

  5. 启动器使用 gss_verify_mic() 来针对原始消息检验所收到的 MIC。

图 4–9 确认 MIC 数据

该图说明如何确认消息完整性代码。

对于已包装的数据,gss_unwrap() 函数从不生成单独的 MIC,因此,接收者必须根据所收到的未包装的消息生成它。图 4–10 中说明的过程如下所示:

  1. 启动器使用 gss_wrap() 包装消息。

  2. 启动器发送已包装的消息。

  3. 接受器使用 gss_unwrap() 展开该消息。

  4. 接受器调用 gss_get_mic() 以生成未包装的消息的 MIC。

  5. 接受器将派生的 MIC 发送到启动器。

  6. 启动器使用 gss_verify_mic() 将所收到的 MIC 与原始消息进行比较。

对于已经为 GSS-API 数据分配的任何数据空间,应用程序应当解除对其进行分配。相关函数包括 gss_release_buffer(3GSS)gss_release_cred(3GSS)gss_release_name(3GSS)gss_release_oid_set(3GSS)

图 4–10 确认已包装的数据

该图说明如何确认已包装并且具有消息完整性代码的消息。