1

私のアプリケーションは、PKCS#11 を介して ASP.NET Web サービス経由で HSM にアクセスします。cryptoki ライブラリを初期化し、セッション ハンドルを取得します。Web サービスはこのハンドルを保持して、バッチ モードで暗号化/復号化/署名/検証を実行します。

私が直面している問題は、20 分後の ASP.NET Web サービスのタイムアウトです。この行為は、cryptoki ライブラリをアンロードし、Web サービスが保持するセッション ハンドルが無効になると思います。はい、タイムアウトしないように ASP.NET Web サービスを再構成できることに同意します。これにより、cryptoki ライブラリが常に読み込まれます。

私の質問は、最初に HSM から取得したセッション ハンドルはどうなりますか? それは失われますか、それとも未使用のままでしょうか?を呼び出して開いているセッションを適切に閉じていないため、これを求めていますc_closeSession

Web サービスは、スレッド プールを介して実装されます。

ありがとう

4

4 に答える 4

1

理論的な観点からは、 PKCS#11 仕様を読む必要があります。セクション 6.6 以降はすべてそこに書かれています。

実用的な観点から、C_Initialize を呼び出した後、アプリケーションは cryptoki アプリケーションになります。セッションとその識別子の概念は、小さなラッパー ライブラリによって、実際には HSM と通信する長期実行 PKCS#11 プロセスに中継される場合がありますが、そうではない場合もあります。cryptoki アプリケーションであったプロセスが終了すると、すべての仮想リソース (セッションとは) も終了します。

問題はどこにありますか?セッションを開くことは、ほとんどの場合、かなり安価な操作になる可能性があります。それがボトルネックであると確信している (測定している) 場合を除きます。ライフスパンを制御できない場合は、リクエストに対してセッションを最適化して開いたり閉じたりしないでください。 cryptoki プロセスの。

于 2010-07-05T08:08:51.270 に答える
1

C_Finalize()cryptoki ライブラリの使用が終了したら、呼び出す必要があります。適切に作成された実装は、そうしない場合でも堅牢である可能性がありますが、保証はありません。開いているセッションは、HSM とおそらくドライバーで維持される場合があります。

から電話することを強く検討C_Finalize()してくださいApplication_End()

于 2010-07-12T20:30:10.343 に答える
0

私がそれを理解した場合、そのセッションの「グローバル」ログインを作成する必要があります。さらに、ローカル セッションごとにセッションを開いたり閉じたりする必要があります。

- 「ログイン」を含むグローバル変数 (起動時または必要なときに 1 回) - 新しいセッションを作成するときに、グローバル ログイン ステータスを確認します。- アクションごとに個別のセッションを作成する (グローバル ログインではなく「ローカル」セッションを閉じる)

これにより、ログに記録されたセッションとそのグローバル ログインを使用する個々のセッションでグローバル変数を取得します。

幸運を

于 2018-08-09T12:42:01.263 に答える