Compartir a través de


Blobs de clave de proveedor de DSS

Los BLOB se usan con el proveedor digital Signature Standard (DSS) para exportar claves y importar claves en el proveedor de servicios criptográficos (CSP).

BLOBS de clave pública

Una clave pública de DSS se exporta e importa como BLOB, una secuencia de bytes estructurada de la siguiente manera.

PUBLICKEYSTRUC    publickeystruc;
DSSPUBKEY         dsspubkey;
BYTE              p[dsspubkey.bitlen/8];
BYTE              q[20];
BYTE              g[dsspubkey.bitlen/8];
BYTE              y[dsspubkey.bitlen/8];
DSSSEED           seedstruct;

En la tabla siguiente se describen estos componentes. Todos los valores están en formato little-endian .

Campo Descripción
dsspubkey Estructura DSSPUBKEY . El miembro mágico debe tener un valor de 0x31535344. Este número hexadecimal es la codificación ASCII de DSS1.
e Secuencia BYTE . Generador, g. Debe tener la misma longitud que p. Si no es la misma longitud que p, debe rellenarse con 0x00 bytes.
p Secuencia BYTE . El módulo primo, p. El bit más significativo del byte más significativo debe establecerse en uno.
publickeystruc Estructura PUBLICKEYSTRUC .
q Secuencia BYTE . El valor primo, q, 20 bytes de longitud. El bit más significativo del byte más significativo debe establecerse en uno.
seedstruct Estructura DSSSEED . Valores de inicialización y contador para comprobar los primos.
y Secuencia BYTE . Clave pública, y. Debe tener la misma longitud que p. Si no es la misma longitud que p, debe rellenarse con 0x00 bytes.

 

Nota

Los BLOB de clave pública no están cifrados . Contienen claves públicas en formato de texto no cifrado .

 

Blobs de clave privada

Una clave privada de DSS se exporta e importa como una secuencia de bytes estructurados de la siguiente manera.

PUBLICKEYSTRUC    publickeystruc;
DSSPUBKEY         dsspubkey;
BYTE              p[dsspubkey.bitlen/8];
BYTE              q[20];
BYTE              g[dsspubkey.bitlen/8];
BYTE              x[20];
DSSSEED           seedstruct;

En la tabla siguiente se describe cada componente. Todos los valores están en formato little-endian .

Campo Descripción
dsspubkey Estructura DSSPUBKEY . El miembro mágico debe establecerse en 0x32535344. Este número hexadecimal es la codificación ASCII de DSS2.
e Secuencia BYTE . Generador, g. Debe tener la misma longitud que p. Si no es la misma longitud que p, debe rellenarse con 0x00 bytes.
publickeystruc Estructura PUBLICKEYSTRUC .
p Secuencia BYTE . El módulo primo, p. El bit más significativo del byte más significativo debe establecerse en uno.
q Secuencia BYTE . El valor primo, q. q es de 20 bytes de longitud. El bit más significativo del byte más significativo debe establecerse en uno.
seedstruct Estructura DSSSEED . Valores de inicialización y contador para comprobar los primos.
x Secuencia BYTE . Exponente secreto, x. Siempre debe tener 20 bytes de longitud. Si x es menor que 20 bytes de longitud, debe rellenarse con 0x00.

 

Al llamar a CryptExportKey, el desarrollador puede elegir si se va a cifrar la clave. PrivateKEYBLOB se cifra si el parámetro hExpKey contiene un identificador válido para una clave de sesión. Todo, pero la parte PUBLICKEYSTRUC del BLOB está cifrada.

Nota

El algoritmo de cifrado y los parámetros de 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.

 

Precaución

Es peligroso exportar claves privadas sin cifrado porque, a continuación, son vulnerables a la interceptación y el uso de entidades no autorizadas.