Microsoft Windows プラットフォーム固有の暗号化アプリケーション プログラミング インターフェイス( CryptoAPI、Microsoft Cryptography API、MS-CAPI、または単にCAPIとも呼ばれる) は、 Microsoft Windowsオペレーティングシステムに付属するアプリケーション プログラミング インターフェイスで、開発者が暗号化を使用して Windows ベースのアプリケーションを保護できるようにするサービスを提供します。これは、プログラマをデータの暗号化に使用されるコードから分離する抽象化レイヤーを提供する動的にリンクされたライブラリのセットです。Crypto API は、 Windows 95 OSR2 [ 1 ]およびWindows NT 4.0 [ 2 ]で初めて導入され、後続のバージョンで拡張されました。
CryptoAPIは公開鍵暗号と共通鍵暗号の両方をサポートしていますが、永続的な共通鍵はサポートしていません。データの暗号化と復号、およびデジタル証明書を使用した認証のための機能が含まれています。また、暗号学的に安全な擬似乱数生成関数であるCryptGenRandomも含まれています。
CryptoAPIは、マシンにインストールされた複数のCSP(暗号化サービスプロバイダ)と連携して動作します。CSPは、暗号化機能を実行することでデータのエンコードとデコードという実際の処理を行うモジュールです。HSMのベンダーは、自社のハードウェアと連携するCSPを提供する場合があります。
Windows Vista には、 Crypto API のアップデートであるCryptography API: Next Generation ( CNG ) が搭載されています。このアップデートでは、API のファクタリングが改善され、さまざまな暗号アルゴリズムを使用して同じ機能が動作できるようになり、国家安全保障局(NSA) Suite Bに含まれる新しいアルゴリズムが多数含まれています。[ 3 ]また、CNG ランタイムにカスタム暗号 API をプラグインする機能も備えており、柔軟性があります。ただし、CNG キー ストレージ プロバイダーは、対称鍵をサポートしていません。[ 4 ] CNG はユーザー モードとカーネル モードの両方で動作し、CryptoAPI のすべてのアルゴリズムもサポートしています。CNG を実装する Microsoft プロバイダーは、Bcrypt.dll に格納されています。
CNGは楕円曲線暗号もサポートしており、同じセキュリティレベルでより短い鍵を使用するため、RSAよりも効率的です。[ 5 ] CNG APIは、スマートカードAPIをカプセル化するベーススマートカード暗号化サービスプロバイダ(Base CSP)モジュールを含めることで、スマートカードサブシステムと統合されます。スマートカードメーカーは、ゼロからソリューションを提供するのではなく、デバイスをこれと互換性を持たせるだけで済みます。
CNG はDual_EC_DRBG [ 6 ]のサポートも追加しています。これはNIST SP 800-90Aで定義されている擬似乱数生成器ですが、盗聴バックドアが含まれているため、開発者が暗号的に安全な別の擬似乱数生成器または真の乱数生成器で新しいベースポイントを生成し、生成されたシードを公開して NSA バックドアを削除することを忘れない限り、ユーザーを国家安全保障局による盗聴にさらす可能性があります。また、非常に低速です。[ 7 ]これは明示的に呼び出された場合にのみ使用されます。
CNG は、デフォルトの PRNG をブロック暗号として AES を使用するCTR_DRBGに置き換えます。これは、現在廃止された FIPS 186-2 で定義されている以前の RNG がDESまたはSHA-1に基づいており、どちらも破られているためです。[ 8 ] CTR_DRBG は、NIST SP 800-90 でSchneierが推奨する 2 つのアルゴリズムのうちの 1 つであり、もう 1 つは Hash_DRBG です。[ 7 ]