chrome.enterprise.platformKeys

Descripción

Usa la API de chrome.enterprise.platformKeys para generar claves y, luego, instalar certificados para ellas. La plataforma administrará los certificados, que se pueden usar para la autenticación TLS, el acceso a la red o cualquier otra extensión a través de chrome.platformKeys.

Permisos

enterprise.platformKeys

Disponibilidad

Solo para ChromeOS Requiere política

Conceptos y uso

El uso típico de esta API para inscribir un certificado de cliente sigue estos pasos:

  • Obtén todos los tokens disponibles mediante enterprise.platformKeys.getTokens().

  • Busca el token cuyo id sea igual a "user". Usa este token posteriormente.

  • Genera un par de claves con el método del token generateKey() (definido en SubtleCrypto). Se mostrará el controlador de la clave.

  • Exporta la clave pública con el método de token exportKey() (definido en SubtleCrypto).

  • Crea la firma de los datos de la solicitud de certificación con el método de token sign() (definido en SubtleCrypto).

  • Completa la solicitud de certificación y envíala a la autoridad certificadora.

  • Si se recibe un certificado, impórtalo con [enterprise.platformKeys.importCertificate()`[3]

Este es un ejemplo que muestra la interacción principal de la API, excepto la creación y el envío de la solicitud de certificación:

function getUserToken(callback) {
  chrome.enterprise.platformKeys.getTokens(function(tokens) {
    for (var i = 0; i < tokens.length; i++) {
      if (tokens[i].id == "user") {
        callback(tokens[i]);
        return;
      }
    }
    callback(undefined);
  });
}

function generateAndSign(userToken) {
  var data = new Uint8Array([0, 5, 1, 2, 3, 4, 5, 6]);
  var algorithm = {
    name: "RSASSA-PKCS1-v1_5",
    // RsaHashedKeyGenParams
    modulusLength: 2048,
    publicExponent:
        new Uint8Array([0x01, 0x00, 0x01]),  // Equivalent to 65537
    hash: {
      name: "SHA-256",
    }
  };
  var cachedKeyPair;
  userToken.subtleCrypto.generateKey(algorithm, false, ["sign"])
    .then(function(keyPair) {
            cachedKeyPair = keyPair;
            return userToken.subtleCrypto.exportKey("spki", keyPair.publicKey);
          },
          console.log.bind(console))
    .then(function(publicKeySpki) {
            // Build the Certification Request using the public key.
            return userToken.subtleCrypto.sign(
                {name : "RSASSA-PKCS1-v1_5"}, cachedKeyPair.privateKey, data);
          },
          console.log.bind(console))
    .then(function(signature) {
              // Complete the Certification Request with |signature|.
              // Send out the request to the CA, calling back
              // onClientCertificateReceived.
          },
          console.log.bind(console));
}

function onClientCertificateReceived(userToken, certificate) {
  chrome.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}

getUserToken(generateAndSign);

Tipos

Algorithm

Chrome 110 y versiones posteriores

Tipo de clave para generar.

Enum

ChallengeKeyOptions

Chrome 110 y versiones posteriores

Propiedades

  • desafío

    ArrayBuffer

    Es un desafío que emite la API de Verified Access Web.

  • registerKey

    Si está presente, registra la clave desaprobada con el token de scope especificado. Luego, la clave se puede asociar con un certificado y se puede usar como cualquier otra clave de firma. Las llamadas posteriores a esta función generarán una nueva clave empresarial en el scope especificado.

  • permiso

    Cuál es la clave empresarial que debes cuestionar.

RegisterKeyOptions

Chrome 110 y versiones posteriores

Propiedades

  • algoritmo

    Algoritmo que debe usar la clave registrada.

Scope

Chrome 110 y versiones posteriores

Indica si se debe usar la clave de usuario empresarial o la clave de máquina empresarial.

Enum

Token

Propiedades

  • id

    cadena

    Identifica de forma única este Token.

    Los IDs estáticos son "user" y "system", que hacen referencia al token de hardware específico para el usuario de la plataforma y al token de hardware de todo el sistema, respectivamente. enterprise.platformKeys.getTokens podría mostrar cualquier otro token (con otros identificadores).

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 y versiones posteriores

    Implementa la interfaz SubtleCrypto de WebCrypto. Las operaciones criptográficas, incluida la generación de claves, están respaldadas por software. La protección de las claves y, por lo tanto, la implementación de la propiedad no extraíble se realiza en software, por lo que las claves están menos protegidas que las guardadas en hardware.

    Solo se pueden generar claves RSASSA-PKCS1-V1_5 no extraíbles con modulusLength de hasta 2048. Cada clave se puede usar para firmar datos como máximo una vez.

    Las claves generadas en un Token específico no se pueden usar con ningún otro token ni se pueden usar con window.crypto.subtle. Del mismo modo, los objetos Key creados con window.crypto.subtle no se pueden usar con esta interfaz.

  • subtleCrypto

    SubtleCrypto

    Implementa la interfaz SubtleCrypto de WebCrypto. Las operaciones criptográficas, incluida la generación de claves, están respaldadas por hardware.

    Solo se pueden generar claves RSASSA-PKCS1-V1_5 no extraíbles con modulusLength hasta 2048 y ECDSA con namedCurve P-256. Cada clave se puede usar para firmar datos como máximo una vez.

    Las claves generadas en un Token específico no se pueden usar con ningún otro token ni se pueden usar con window.crypto.subtle. Del mismo modo, los objetos Key creados con window.crypto.subtle no se pueden usar con esta interfaz.

Métodos

challengeKey()

Chrome 110 y versiones posteriores
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
  callback: function,
)

Es similar a challengeMachineKey y challengeUserKey, pero permite especificar el algoritmo de una clave registrada. Desafía una clave de máquina empresarial respaldada por hardware y emite la respuesta como parte de un protocolo de certificación remota. Solo es útil en el Sistema operativo Chrome y junto con la API de Verified Access Web, que emite verificaciones y verifica las respuestas.

Una verificación exitosa por parte de la API de Verified Access Web es un indicador claro de que el dispositivo actual es un dispositivo Chrome OS legítimo, el dominio especificado durante la verificación administra el dispositivo actual, el dominio especificado durante la verificación administra al usuario actual que accedió y el estado actual del dispositivo cumple con la política de dispositivo empresarial. Por ejemplo, una política puede especificar que el dispositivo no debe estar en modo de desarrollador. Cualquier identidad de dispositivo emitida por la verificación está estrechamente vinculada al hardware del dispositivo actual. Si se especifica el permiso "user", la identidad también se vincula estrechamente con el usuario actual que accedió.

Esta función está muy restringida y fallará si el dispositivo actual no está administrado, no se administra al usuario actual o si la política de dispositivo empresarial no habilitó explícitamente esta operación para el emisor. La clave cuestionada no reside en el token "system" ni "user", y ninguna otra API puede acceder a ella.

Parámetros

  • Objeto que contiene los campos definidos en ChallengeKeyOptions

  • callback

    la función

    El parámetro callback se ve de la siguiente manera:

    (response: ArrayBuffer) => void

    • respuesta

      ArrayBuffer

      La respuesta del desafío.

challengeMachineKey()

Chrome 50 y versiones posteriores Obsoleto desde Chrome 110
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback: function,
)

En su lugar, usa challengeKey.

Desafía una clave de máquina empresarial respaldada por hardware y emite la respuesta como parte de un protocolo de certificación remota. Solo es útil en el Sistema operativo Chrome y junto con la API de Verified Access Web, que emite verificaciones y verifica las respuestas. Una verificación exitosa por parte de la API de Verified Access Web es un indicador claro de todo lo siguiente: * El dispositivo actual es un dispositivo Chrome OS legítimo. * El dispositivo actual es administrado por el dominio especificado durante la verificación. * El dominio especificado durante la verificación administra al usuario que accedió a su cuenta. * El estado actual del dispositivo cumple con la política de dispositivos empresariales. Por ejemplo, una política puede especificar que el dispositivo no debe estar en modo de desarrollador. * Cualquier identidad de dispositivo emitida por la verificación está estrechamente vinculada al hardware del dispositivo actual. Esta función está muy restringida y fallará si el dispositivo actual no está administrado, no se administra al usuario actual o si la política de dispositivo empresarial no habilitó explícitamente esta operación para el emisor. La clave de máquina empresarial no reside en el token "system" y ninguna otra API puede acceder a ella.

Parámetros

  • desafío

    ArrayBuffer

    Es un desafío que emite la API de Verified Access Web.

  • registerKey

    booleano opcional

    Chrome 59 y versiones posteriores

    Si se establece, la clave de máquina empresarial actual se registra con el token "system" y renuncia a la función de clave de máquina empresarial. Luego, la clave se puede asociar con un certificado y se puede usar como cualquier otra clave de firma. Esta clave es RSA de 2,048 bits. Las llamadas posteriores a esta función generarán una nueva clave de máquina empresarial.

  • callback

    la función

    El parámetro callback se ve de la siguiente manera:

    (response: ArrayBuffer) => void

    • respuesta

      ArrayBuffer

      La respuesta del desafío.

challengeUserKey()

Chrome 50 y versiones posteriores Obsoleto desde Chrome 110
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback: function,
)

En su lugar, usa challengeKey.

Desafía una clave de usuario empresarial guardada en hardware y emite la respuesta como parte de un protocolo de certificación remota. Solo es útil en el Sistema operativo Chrome y junto con la API de Verified Access Web, que emite verificaciones y verifica las respuestas. Una verificación exitosa por parte de la API de Verified Access Web es un indicador claro de todo lo siguiente: * El dispositivo actual es un dispositivo Chrome OS legítimo. * El dispositivo actual es administrado por el dominio especificado durante la verificación. * El dominio especificado durante la verificación administra al usuario que accedió a su cuenta. * El estado actual del dispositivo cumple con la política del usuario empresarial. Por ejemplo, una política puede especificar que el dispositivo no debe estar en modo de desarrollador. * La clave pública emitida por la verificación está estrechamente vinculada al hardware del dispositivo actual y al usuario que accedió a su cuenta. Esta función está altamente restringida y fallará si el dispositivo actual no está administrado, no se administra al usuario actual o si la política del usuario empresarial no habilitó explícitamente esta operación para el emisor. La clave de usuario empresarial no reside en el token "user" y ninguna otra API puede acceder a ella.

Parámetros

  • desafío

    ArrayBuffer

    Es un desafío que emite la API de Verified Access Web.

  • registerKey

    boolean

    Si se establece, la clave de usuario empresarial actual se registra con el token "user" y renuncia al rol de clave de usuario empresarial. Luego, la clave se puede asociar con un certificado y se puede usar como cualquier otra clave de firma. Esta clave es RSA de 2,048 bits. Las llamadas posteriores a esta función generarán una nueva clave de usuario empresarial.

  • callback

    la función

    El parámetro callback se ve de la siguiente manera:

    (response: ArrayBuffer) => void

    • respuesta

      ArrayBuffer

      La respuesta del desafío.

getCertificates()

chrome.enterprise.platformKeys.getCertificates(
  tokenId: string,
  callback: function,
)

Muestra la lista de todos los certificados de cliente disponibles a partir del token determinado. Se puede utilizar para comprobar la existencia y el vencimiento de certificados de cliente que se puedan utilizar para una autenticación determinada.

Parámetros

  • tokenId

    cadena

    El ID de un token que muestra getTokens.

  • callback

    la función

    El parámetro callback se ve de la siguiente manera:

    (certificates: ArrayBuffer[]) => void

    • certificates

      ArrayBuffer[]

      Lista de certificados, cada uno con codificación DER de un certificado X.509.

getTokens()

chrome.enterprise.platformKeys.getTokens(
  callback: function,
)

Devuelve los tokens disponibles. En la sesión de un usuario normal, la lista siempre contendrá el token del usuario con id "user". Si hay disponible un token TPM para todo el sistema, la lista que se muestra también contendrá el token para todo el sistema con id "system". El token para todo el sistema será el mismo para todas las sesiones de este dispositivo (p.ej., una Chromebook).

Parámetros

  • callback

    la función

    El parámetro callback se ve de la siguiente manera:

    (tokens: Token[]) => void

    • tokens

      La lista de tokens disponibles.

importCertificate()

chrome.enterprise.platformKeys.importCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
  callback?: function,
)

Importa certificate al token determinado si la clave certificada ya se almacenó en este token. Si la solicitud de certificación se realiza correctamente, esta función debe utilizarse para almacenar el certificado obtenido y ponerlo a disposición del sistema operativo y del navegador con fines de autenticación.

Parámetros

  • tokenId

    cadena

    El ID de un token que muestra getTokens.

  • certificado

    ArrayBuffer

    Codificación DER de un certificado X.509.

  • callback

    función opcional

    El parámetro callback se ve de la siguiente manera:

    () => void

removeCertificate()

chrome.enterprise.platformKeys.removeCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
  callback?: function,
)

Quita certificate del token determinado, si está presente. Se debe usar para quitar los certificados obsoletos, de modo que no se consideren durante la autenticación y no desordenen la elección de certificados. Debe usarse para liberar espacio de almacenamiento en el almacén de certificados.

Parámetros

  • tokenId

    cadena

    El ID de un token que muestra getTokens.

  • certificado

    ArrayBuffer

    Codificación DER de un certificado X.509.

  • callback

    función opcional

    El parámetro callback se ve de la siguiente manera:

    () => void