chrome.enterprise.platformKeys

Beschrijving

Gebruik de chrome.enterprise.platformKeys API om sleutels te genereren en certificaten voor deze sleutels te installeren. De certificaten worden beheerd door het platform en kunnen worden gebruikt voor TLS-authenticatie, netwerktoegang of andere extensies via chrome.platformKeys.

Machtigingen

enterprise.platformKeys

Beschikbaarheid

Alleen ChromeOS Vereist beleid

Begrippen en gebruik

Het typische gebruik van deze API om een clientcertificaat te registreren, verloopt als volgt:

  • Haal alle beschikbare tokens op met enterprise.platformKeys.getTokens() .

  • Zoek het token met id gelijk aan "user" . Gebruik dit token later.

  • Genereer een sleutelpaar met behulp van de generateKey() Token-methode (gedefinieerd in SubtleCrypto). Dit retourneert de handle naar de sleutel.

  • Exporteer de openbare sleutel met behulp van de exportKey() tokenmethode (gedefinieerd in SubtleCrypto).

  • Maak de handtekening van de gegevens van het certificeringsverzoek met behulp van de sign() tokenmethode (gedefinieerd in SubtleCrypto).

  • Vul het certificeringsverzoek in en stuur het naar de certificeringsinstantie.

  • Als er een certificaat is ontvangen, importeer het dan met behulp van [ enterprise.platformKeys.importCertificate() `[3]

Hier is een voorbeeld dat de belangrijkste API-interactie laat zien, met uitzondering van het opstellen en verzenden van de certificeringsaanvraag:

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); 

Typen

Algorithm

Chroom 110+

Type sleutel dat gegenereerd moet worden.

Enum

"RSA"

"ECDSA"

ChallengeKeyOptions

Chroom 110+

Eigenschappen

  • uitdaging

    ArrayBuffer

    Een uitdaging afkomstig van de Verified Access Web API.

  • registerKey

    Indien aanwezig, registreert de aangevochten sleutel met het token van de opgegeven scope . De sleutel kan vervolgens aan een certificaat worden gekoppeld en als elke andere ondertekeningssleutel worden gebruikt. Volgende aanroepen van deze functie genereren vervolgens een nieuwe Enterprise Key in de opgegeven scope .

  • domein

    Welke Enterprise Key moet ik uitdagen?

RegisterKeyOptions

Chroom 110+

Eigenschappen

  • algoritme

    Welk algoritme de geregistreerde sleutel moet gebruiken.

Scope

Chroom 110+

Of de Enterprise User Key of de Enterprise Machine Key moet worden gebruikt.

Enum

"GEBRUIKER"

"MACHINE"

Token

Eigenschappen

  • id

    snaar

    Identificeert dit Token op unieke wijze.

    Statische ID's zijn "user" en "system" , die respectievelijk verwijzen naar de gebruikerspecifieke en systeembrede hardwaretoken van het platform. Andere tokens (met andere identificatiegegevens) kunnen worden geretourneerd door enterprise.platformKeys.getTokens .

  • softwareBackedSubtleCrypto

    Subtiele Crypto

    Chroom 97+

    Implementeert de SubtleCrypto- interface van WebCrypto. De cryptografische bewerkingen, inclusief sleutelgeneratie, worden softwarematig ondersteund. De beveiliging van de sleutels, en daarmee de implementatie van de niet-extraheerbare eigenschap, gebeurt softwarematig, waardoor de sleutels minder goed beschermd zijn dan hardwarematig ondersteunde sleutels.

    Er kunnen alleen niet-extraheerbare sleutels worden gegenereerd. De ondersteunde sleuteltypen zijn RSASSA-PKCS1-V1_5 en RSA-OAEP (op Chrome-versies 135 en hoger) met modulusLength tot 2048. Elke RSASSA-PKCS1-V1_5-sleutel kan maximaal één keer worden gebruikt voor het ondertekenen van gegevens, tenzij de extensie op de whitelist staat via het KeyPermissions-beleid . In dat geval kan de sleutel onbeperkt worden gebruikt. RSA-OAEP-sleutels worden ondersteund sinds Chrome-versie 135 en kunnen door extensies die via datzelfde beleid op de whitelist staan, worden gebruikt om andere sleutels uit te pakken.

    Sleutels die op een specifieke Token zijn gegenereerd, kunnen niet met andere tokens worden gebruikt, noch met window.crypto.subtle . Ook Key die met window.crypto.subtle zijn gemaakt, kunnen niet met deze interface worden gebruikt.

  • subtieleCrypto

    Subtiele Crypto

    Implementeert de SubtleCrypto- interface van WebCrypto. De cryptografische bewerkingen, inclusief sleutelgeneratie, worden hardwarematig ondersteund.

    Er kunnen alleen niet-extraheerbare sleutels worden gegenereerd. De ondersteunde sleuteltypen zijn RSASSA-PKCS1-V1_5 en RSA-OAEP (op Chrome-versies 135 en hoger) met modulusLength tot 2048 en ECDSA met namedCurve P-256. Elke RSASSA-PKCS1-V1_5- en ECDSA-sleutel kan maximaal één keer worden gebruikt voor het ondertekenen van gegevens, tenzij de extensie op de whitelist staat via het KeyPermissions-beleid . In dat geval kan de sleutel onbeperkt worden gebruikt. RSA-OAEP-sleutels worden ondersteund sinds Chrome-versie 135 en kunnen door extensies die via datzelfde beleid op de whitelist staan, worden gebruikt om andere sleutels uit te pakken.

    Sleutels die op een specifieke Token zijn gegenereerd, kunnen niet met andere tokens worden gebruikt, noch met window.crypto.subtle . Ook Key die met window.crypto.subtle zijn gemaakt, kunnen niet met deze interface worden gebruikt.

Methoden

challengeKey()

Chroom 110+
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
)
: Promise<ArrayBuffer>

Vergelijkbaar met challengeMachineKey en challengeUserKey , maar maakt het mogelijk om het algoritme van een geregistreerde sleutel te specificeren. Daagt een hardwarematige Enterprise Machine Key uit en verzendt de respons als onderdeel van een extern attestatieprotocol. Alleen bruikbaar op ChromeOS en in combinatie met de Verified Access Web API, die zowel challenges uitvoert als responsen verifieert.

Een succesvolle verificatie door de Verified Access Web API is een sterk signaal dat het huidige apparaat een legitiem ChromeOS-apparaat is, dat het huidige apparaat wordt beheerd door het domein dat tijdens de verificatie is opgegeven, dat de huidige aangemelde gebruiker wordt beheerd door het domein dat tijdens de verificatie is opgegeven en dat de huidige apparaatstatus voldoet aan het bedrijfsbeleid voor apparaten. Een beleid kan bijvoorbeeld specificeren dat het apparaat zich niet in de ontwikkelaarsmodus mag bevinden. Elke apparaatidentiteit die door de verificatie wordt gegenereerd, is strikt gekoppeld aan de hardware van het huidige apparaat. Als de scope "user" is opgegeven, is de identiteit ook strikt gekoppeld aan de huidige aangemelde gebruiker.

Deze functie is zeer beperkt en mislukt als het huidige apparaat niet wordt beheerd, de huidige gebruiker niet wordt beheerd of als deze bewerking niet expliciet is ingeschakeld voor de aanroeper via het apparaatbeleid van het bedrijf. De betwiste sleutel bevindt zich niet in het token "system" of "user" en is niet toegankelijk voor andere API's.

Parameters

Retourneren

  • Belofte<ArrayBuffer>

    Chroom 131+

challengeMachineKey()

Chrome 50+ Verouderd sinds Chrome 110
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
)
: Promise<ArrayBuffer>

Gebruik in plaats daarvan challengeKey .

Daagt een hardwarematige Enterprise Machine Key uit en verzendt de respons als onderdeel van een extern attestatieprotocol. Alleen bruikbaar op ChromeOS en in combinatie met de Verified Access Web API, die zowel challenges uitstuurt als responsen verifieert. Een succesvolle verificatie door de Verified Access Web API is een sterk signaal van al het volgende: * Het huidige apparaat is een legitiem ChromeOS-apparaat. * Het huidige apparaat wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige aangemelde gebruiker wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige apparaatstatus voldoet aan het bedrijfsbeleid voor apparaten. Een beleid kan bijvoorbeeld specificeren dat het apparaat zich niet in de ontwikkelaarsmodus mag bevinden. * Elke apparaatidentiteit die door de verificatie wordt verzonden, is strikt gekoppeld aan de hardware van het huidige apparaat. Deze functie is zeer beperkt en mislukt als het huidige apparaat niet wordt beheerd, de huidige gebruiker niet wordt beheerd of als deze bewerking niet expliciet is ingeschakeld voor de aanroeper via het bedrijfsbeleid voor apparaten. De Enterprise Machine Key bevindt zich niet in het "system" -token en is niet toegankelijk voor andere API's.

Parameters

  • uitdaging

    ArrayBuffer

    Een uitdaging afkomstig van de Verified Access Web API.

  • registerKey

    boolean optioneel

    Chroom 59+

    Indien ingesteld, wordt de huidige Enterprise Machine Key geregistreerd bij het "system" -token en wordt de Enterprise Machine Key-rol opgeheven. De sleutel kan vervolgens worden gekoppeld aan een certificaat en worden gebruikt zoals elke andere ondertekeningssleutel. Deze sleutel is 2048-bits RSA. Volgende aanroepen van deze functie genereren vervolgens een nieuwe Enterprise Machine Key.

Retourneren

  • Belofte<ArrayBuffer>

    Chroom 131+

challengeUserKey()

Chrome 50+ Verouderd sinds Chrome 110
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
)
: Promise<ArrayBuffer>

Gebruik in plaats daarvan challengeKey .

Daagt een hardwarematige Enterprise User Key uit en verzendt de respons als onderdeel van een extern attestatieprotocol. Alleen nuttig op ChromeOS en in combinatie met de Verified Access Web API, die zowel challenges uitstuurt als responsen verifieert. Een succesvolle verificatie door de Verified Access Web API is een sterk signaal van al het volgende: * Het huidige apparaat is een legitiem ChromeOS-apparaat. * Het huidige apparaat wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige aangemelde gebruiker wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige apparaatstatus voldoet aan het gebruikersbeleid van het bedrijf. Een beleid kan bijvoorbeeld specificeren dat het apparaat zich niet in de ontwikkelaarsmodus mag bevinden. * De openbare sleutel die door de verificatie wordt verzonden, is strikt gekoppeld aan de hardware van het huidige apparaat en aan de huidige aangemelde gebruiker. Deze functie is zeer beperkt en mislukt als het huidige apparaat niet wordt beheerd, de huidige gebruiker niet wordt beheerd of als deze bewerking niet expliciet is ingeschakeld voor de aanroeper via het gebruikersbeleid van het bedrijf. De Enterprise User Key bevindt zich niet in de "user" -token en is niet toegankelijk voor andere API's.

Parameters

  • uitdaging

    ArrayBuffer

    Een uitdaging afkomstig van de Verified Access Web API.

  • registerKey

    Booleaanse

    Indien ingesteld, wordt de huidige Enterprise User Key geregistreerd bij het token "user" en wordt de Enterprise User Key-rol opgeheven. De sleutel kan vervolgens aan een certificaat worden gekoppeld en net als elke andere ondertekeningssleutel worden gebruikt. Deze sleutel is 2048-bits RSA. Volgende aanroepen van deze functie genereren vervolgens een nieuwe Enterprise User Key.

Retourneren

  • Belofte<ArrayBuffer>

    Chroom 131+

getCertificates()

chrome.enterprise.platformKeys.getCertificates(
  tokenId: string,
)
: Promise<ArrayBuffer[]>

Retourneert een lijst met alle beschikbare clientcertificaten van het opgegeven token. Kan worden gebruikt om te controleren of clientcertificaten die bruikbaar zijn voor een bepaalde authenticatie, bestaan en verlopen.

Parameters

  • token-ID

    snaar

    De id van een token dat door getTokens wordt geretourneerd.

Retourneren

  • Belofte<ArrayBuffer[]>

    Chroom 131+

getTokens()

chrome.enterprise.platformKeys.getTokens(): Promise<Token[]>

Retourneert de beschikbare tokens. Tijdens een reguliere gebruikerssessie bevat de lijst altijd het token van de gebruiker met id "user" . Als er een systeembrede TPM-token beschikbaar is, bevat de geretourneerde lijst ook het systeembrede token met id "system" . Het systeembrede token is hetzelfde voor alle sessies op dit apparaat (apparaat in de zin van bijvoorbeeld een Chromebook).

Retourneren

  • Belofte< Token []>

    Chroom 131+

importCertificate()

chrome.enterprise.platformKeys.importCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
)
: Promise<void>

Importeert certificate naar het opgegeven token als de gecertificeerde sleutel al in dit token is opgeslagen. Na een succesvolle certificeringsaanvraag dient deze functie te worden gebruikt om het verkregen certificaat op te slaan en beschikbaar te maken voor het besturingssysteem en de browser voor authenticatie.

Parameters

  • token-ID

    snaar

    De id van een token dat door getTokens wordt geretourneerd.

  • certificaat

    ArrayBuffer

    De DER-codering van een X.509-certificaat.

Retourneren

  • Belofte<leegte>

    Chroom 131+

removeCertificate()

chrome.enterprise.platformKeys.removeCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
)
: Promise<void>

Verwijdert certificate van het opgegeven token, indien aanwezig. Dient te worden gebruikt om verouderde certificaten te verwijderen, zodat ze niet worden meegenomen tijdens de authenticatie en de certificaatkeuze niet verstoren. Dient te worden gebruikt om opslagruimte vrij te maken in de certificaatopslag.

Parameters

  • token-ID

    snaar

    De id van een token dat door getTokens wordt geretourneerd.

  • certificaat

    ArrayBuffer

    De DER-codering van een X.509-certificaat.

Retourneren

  • Belofte<leegte>

    Chroom 131+