Oracle 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 データの確認

MIC の確認方法を示しています。

ラップされたデータの場合、gss_unwrap() 関数はメッセージと MIC を別々に生成しません。したがって、受信側は、受信した (およびラップ解除した) メッセージから 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 ラップされたデータの確認

MIC 付きのラップされたメッセージの確認方法を示しています。