Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El proveedor base y el proveedor extendido usan los mismos blobs de clave .
Blobs de clave pública
blobs de clave pública, escriba PUBLICKEYBLOB, se usan para almacenar claves públicas fuera de proveedor de servicios criptográficos (CSP). Los BLOB de clave pública del proveedor base tienen el siguiente formato.
PUBLICKEYSTRUC publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
En la tabla siguiente se describe cada componente de clave pública. Todos los valores están en formato little-endian.
| Campo | Descripción |
|---|---|
| Módulo | Los datos del módulo de clave pública se encuentran directamente después de la estructura deRSAPUBKEY. El tamaño de estos datos variará, en función del tamaño de la clave pública. El número de bytes se puede determinar dividiendo el valor del campo de bitlen RSAPUBKEY por ocho. |
| publickeystruc | Estructura PUBLICKEYSTRUC. |
| rsapubkey | EstructuradeRSAPUBKEY. El miembro magic debe establecerse en 0x31415352. Este valor hexadecimal es el ASCII codificación de RSA1. |
Nota
Los BLOB de clave pública no están cifrados. Contienen claves públicas en formato texto no cifrado.
Blobs de clave privada
blobs de clave privada, escriba PRIVATEKEYBLOB, se usan para almacenar claves privadas fuera de un CSP. Los BLOB de clave privada del proveedor base tienen el siguiente formato.
PUBLICKEYSTRUC publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];
En la tabla siguiente se describe el componente BLOB de clave privada.
Nota
Estos campos corresponden a los campos descritos en la sección 7.2 de estándares de criptografía de clave pública (PKCS) #1 con pequeñas diferencias.
| Campo | Descripción |
|---|---|
| coeficiente | Coeficiente. Tiene un valor numérico de mod p (inverso de q). |
| exponent1 | Exponente 1. Tiene un valor numérico de d mod (p – 1). |
| exponent2 | Exponente 2. Tiene un valor numérico de d mod (q – 1). |
| Módulo | Módulo. Esto tiene un valor de Prime1×Prime2 y a menudo se conoce como n. |
| prime1 | Número primo 1, a menudo conocido como p. |
| prime2 | Número primo 2, a menudo conocido como q. |
| privateExponent | Exponente privado, conocido a menudo como d. |
| publickeystruc | Estructura PUBLICKEYSTRUC. |
| rsapubkey | EstructuradeRSAPUBKEY. El miembro magic debe establecerse en 0x32415352. Este valor hexadecimal es el ASCII codificación de RSA2. |
Nota
Los BLOB de clave privada no están cifrados. Contienen claves privadas en formato de texto no cifrado.
Al llamar a CryptExportKey, el desarrollador puede elegir si desea cifrar la clave. El PRIVATEKEYBLOB se cifra si el parámetro hExpKey contiene un identificador válido para una clave de sesión. Todo, pero el PUBLICKEYSTRUC parte del BLOB está cifrado.
Nota
Los parámetros de algoritmo de cifrado y clave de cifrado no se almacenan junto con el BLOB de clave privada. La aplicación debe administrar y almacenar esta información. Si se pasa cero para hExpKey, la clave privada se exportará sin cifrado.
Cautela
Es peligroso exportar claves privadas sin cifrado porque, a continuación, son vulnerables a la interceptación y el uso de entidades no autorizadas.
Blobs de clave simples
blobs de clave simple, escriba SIMPLEBLOB, se usan para almacenar y transportar claves de sesión fuera de un CSP. Los blobs de clave simples del proveedor base siempre se cifran con una clave pública de intercambio de claves . El miembro pbData del SIMPLEBLOB es una secuencia de bytes en el formato siguiente.
PUBLICKEYSTRUC publickeystruc;
ALG_ID algid;
BYTE encryptedkey[rsapubkey.bitlen/8];
En la tabla siguiente se describe cada componente del miembro pbData del SIMPLEBLOB.
| Campo | Descripción |
|---|---|
| álgido | Estructura ALG_ID que especifica el algoritmo de cifrado usado para cifrar los datos de clave de sesión. Normalmente, tiene un valor de CALG_RSA_KEYX, que indica que los datos de clave de sesión se cifraron con una clave pública de intercambio de claves mediante el algoritmo de clave pública rsa . |
| encryptedkey | Secuencia de BYTE de que representa los datos de clave de sesión cifradas en forma de un bloque de cifrado PKCS #1, tipo 2. Para obtener información sobre este formato de datos, consulte public Key Cryptography Standards (PKCS) #1, publicado por RSA Data Security, Inc. Estos datos siempre son del mismo tamaño que el módulo de la clave pública. Por ejemplo, las claves públicas generadas por el proveedor base RSA de Microsoft pueden tener una longitud de 512 bits (64 bytes), por lo que los datos de la clave de sesión cifrada también son siempre 512 bits (64 bytes). |
| publickeystruc | Estructura PUBLICKEYSTRUC. |