.NETは、暗号化操作(GPUを検出してグラフィック操作に使用する方法)でHardware Cryptographic Acceleratorを検出して使用しますか?
そうでない場合、どの管理ライブラリを提案しますか?
.NETは、暗号化操作(GPUを検出してグラフィック操作に使用する方法)でHardware Cryptographic Acceleratorを検出して使用しますか?
そうでない場合、どの管理ライブラリを提案しますか?
.NETはかなり大きいです。
Microsoft .NETのWindowsでは、次の名前のタイプがあります。
*Managed
たとえばSHA1Managed
、完全に管理された実装です。それらにはハードウェアアクセラレーションはありません。
*CryptoServiceProvider
たとえばSHA1CryptoServiceManager
、CryptoAPI(ネイティブ)コードを使用します。ネイティブCSPにハードウェアアクセラレーションがある場合は、それを利用できます。
新しいフレームワークバージョンでは、*CNG
(Cryptography Next Generation)。これはCryptoAPIの代わりになります-同じルールが適用されます(ネイティブコードがハードウェアアクセラレーションを使用できる場合はそれを取得します)。
Monoでは、すべてのプラットフォームで、デフォルトで完全に管理された実装(タイプの名前に関係なく)があります。
現在、両方(MSとMono)の場合、独自の(またはサードパーティの)実装を使用することもできます。CryptoConfig.CreateFrom
これは、(直接的または間接的になどSHA1.Create
)を使用し、machine.config
ファイルに代替実装への参照が含まれている場合でも、アプリケーションに対して完全に透過的である可能性があります。これにより、あなた(または他の誰か)は、任意の実装を別の(ハードウェアアクセラレーションを含む)実装に追加(または置換)することができます。
注:フレームワークのバージョン4.0では、新しいAddAlgorithm
メソッドを使用するとこれがさらに簡単になります。
場合によります。一部のHSM(ハードウェアセキュリティモジュール)には、CAPIおよび/またはCNG用の追加のプロバイダー実装が付属しています。それらはすべて、通常、PKCS#11ドライバー(Cベース)が付属しています。
最新のハードウェアは、デフォルトのCNGプロバイダーをカスタム実装に置き換え、実際には、要求した種類の自動検出を実現します。
これをサポートしないHSMの場合、プロバイダーを手動で登録する必要があります。最悪の場合、カスタムプロバイダーが提供されていない場合は、PKCS#11に手動で接続するか、次のようなものを使用する必要があります。
一部のハードウェアベンダーは、デフォルトのSChannelおよびその他のプロバイダーを独自のものに置き換えることができます。その場合、.NETはストックプロバイダーの代わりに代替品を使用します。ただし、暗号化ハードウェアを自動的に検出して使用する方法はありません。
ほとんどのアクセラレータは、PKCS#11インターフェイスを介して使用できます。一般に、PKCS#11を介してこのようなアクセラレータを使用するSecureBlackboxを使用できますが、呼び出すPKCS#11 DLLを「手動で」指定する必要があります(このようなDLLはシステムに登録されていないため、自動検出はできません)。