Freigeben über


RSA/Schannel Keys

Generieren und Abrufen von RSA/Schannel-Schlüsseln

RSA/Schannel Schlüssel können durch Aufrufen der CryptGenKey-Funktion generiert werden. Der Aufruf von CryptGenKey erfordert einen AT_KEYEXCHANGE Algorithmusbezeichner, der im Algid Parameter übergeben wird.

So generieren Sie ein ÖFFENTLICHEs/Schannel-Schlüsselpaar

  1. Rufen Sie die CryptAcquireContext--Funktion auf, um ein Handle für den Microsoft RSA/Schannel Cryptographic Providerzu erhalten.
  2. Rufen Sie die CryptGenKey--Funktion auf, um die Schlüssel zu generieren. AT_KEYEXCHANGE muss für den Algid Parameter übergeben werden, und die oberen 16 Bit des dwFlags Parameter müssen auf die gewünschte Schlüsselgröße (512 Bit) festgelegt werden. Ein HCRYPTKEY Strukturhandle wird im hKey-Parameter zurückgegeben.

So rufen Sie einen Zeiger auf zuvor generierte RSA/Schannel-Benutzerschlüssel

  1. Rufen Sie die CryptAcquireContext--Funktion auf, um ein Handle für den Microsoft RSA/Schannel Cryptographic Providerzu erhalten.
  2. Rufen Sie die CryptGetUserKey--Funktion auf, wobei der dwKeySpec- Parameter auf AT_KEYEXCHANGE festgelegt ist.

Exportieren von RSA/Schannel-Schlüsseln

Masterschlüssel können in einfache BLOB-Strukturen exportiert werden. Dies sollte auf die gleiche Weise wie der Export normaler RC4 oder Data Encryption Standard (DES) Massenverschlüsselungsschlüsselimplementiert werden, wie in Simple Key BLOBbeschrieben. Das aiKeyAlg- Mitglied der PUBLICKEYSTRUC- Struktur wird auf den Algorithmusbezeichner des Masterschlüssels (CALG_PCT1_MASTER, CALG_SSL2_MASTER, CALG_SSL3_MASTER oder CALG_TLS1_MASTER) festgelegt.

Wenn die CPExportKey--Funktion einen SSL2-Masterschlüssel exportiert und das CRYPT_SSL2_FALLBACK Flag festgelegt ist, legen Sie die ersten acht Bytes des Verschlüsselungsblocks auf 0x03 und nicht auf Zufallsdaten fest, um Versionsrollbackangriffe zu verhindern.

Wenn die CRYPT_DESTROYKEY Konstante im dwFlags Parameter der funktion CPExportKey angegeben wird, zerstört der CSP den Schlüssel- oder Schlüsselziehpunkt nach dem Exportieren des Schlüssels. Dieses Flag ist nur für undurchsichtige BLOBsvorgesehen.