web-dev-qa-db-ja.com

HSMとアプリケーションの間で何が送信されますか?

アプリケーションがPKCS#11/KSP/etcを使用してHSMを呼び出すとき。 2つの間で実際に何が交換されますか?たとえば、CAがCRLに署名する必要がある場合、CRL全体が実際に署名のためにHSMに送信されますか?

3
meowingtons

CRLへの署名は、他のデータへの署名に似ており、いくつかの手順が含まれます。

  1. 署名するデータを読み取ります。

  2. 署名するデータからハッシュを計算します。このハッシュは、初期データ長に関係なく同じ長さであり、データが異なるとハッシュも異なります。

  3. ハッシュを秘密鍵で暗号化します。この操作の結果が実際の署名です。

次に、この署名を署名済みデータに追加して(CRLに追加して、最終的な署名付き証明書を取得し、例に従ってください)、署名済みデータを取得します。

ご覧のとおり、秘密鍵は最後のステップでのみ使用されます。データ全体をHSMに送信するのはリソースの無駄になるため、ハッシュはアプリケーション側で計算され、ハッシュのみがHSMに送信されて署名が取得されます。

3
WhiteWinterWolf

PKCS#11 APIの一部である関数を見てください。 CRLを作成すると、C_Sign関数が必要であり、ハッシュ値が渡されます。ほとんどのPKCS#11トークンはハッシュ機能も提供します。本当に必要な場合は、ソフトウェアではなくトークンで行うこともできますが、これが行われることはほとんどありません。

1
mat