6

暗号化の問題にopensslまたはwindows capiを使用する方が良いですか?両方の長所と短所のリストは何ですか? 私の暗号化プログラムをopensslに書き、Windows capiで問題なく復号化できるか、これに問題がある場合。

4

1 に答える 1

10

暗号化の目的では、鍵の管理について最初に考える方が簡単だと思います。鍵の保管場所、鍵の作成方法、鍵の使用者、鍵の安全な破棄方法。私の経験では、キー管理はアプリケーション構造を最も制約するものです。

CryptoAPI は、オペレーティング システムに登録されたドライバー (「CSP」) を介して、任意の場所に格納されているキーにアクセスするための API を提供します。OpenSSL はOpenSCの助けを借りて同様のものを提供する場合がありますが、ドライバーは PKCS#11 API をサポートする必要があります。いずれにせよ、ドライバーは、記憶装置を構築した人によって提供されるある種の DLL です (キーがハードウェア デバイスに格納され、使用されると仮定します)。

ハードウェア デバイスに保存されているキーを使用できるようにしたい場合 (デバイスは、スマートカード、HSM など、何らかの暗号化を実行できるものの、キー自体の提供を拒否するものであれば何でもかまいません)、次の手順を実行する必要があります。 CryptoAPI または PKCS#11 のいずれか。CryptoAPI は本質的に Windows 専用であるため、Windows 以外のシステム (MacOS、Linux、Solaris など) でコードを実行する可能性がある場合は、PKCS#11 を使用することをお勧めします。PKCS#11 を使用する場合は、OpenSSL の代わりにNSSを試してみてください。NSS は、Netscape 由来のブラウザー (Firefox など) で使用されるライブラリーです。オープンソースです。

一方、Windows システムのみを対象とする場合は、CryptoAPI が既に存在するため、追加の DLL は必要ないため、配布が容易になります。

ハードウェアを手放す準備ができていて、キーを RAM に保持するソフトウェアのみの暗号化を使用したい場合は、CryptoAPI を使用したくないでしょう。CryptoAPI は、実装するアルゴリズムの数と受け入れるバリエーションの点で非常に強力ではありません (たとえば、CryptoAPI は RSA 公開指数が 32 ビットよりも小さいことを主張しています。これは通常のケースですが、制限は依然として恣意的であり、面倒な可能性があります)。そこには多くの暗号化ライブラリがあります。OpenSSL と NSS とは別に、Crypto++を調査することをお勧めします。これは、かなり成熟しており、おそらく C++ に適していると思われます。

于 2010-03-12T13:26:04.883 に答える