chrome.enterprise.platformKeys

Opis

Użyj interfejsu API chrome.enterprise.platformKeys, aby wygenerować klucze i zainstalować certyfikaty dla tych kluczy. Certyfikatami będzie zarządzała platforma. Można ich używać do uwierzytelniania TLS, dostępu do sieci lub przez inne rozszerzenie za pomocą interfejsu chrome.platformKeys.

Uprawnienia

enterprise.platformKeys

Dostępność

Tylko w ChromeOS Wymaga ustawienia zasad

Pojęcia i zastosowanie

Typowe użycie tego interfejsu API do rejestracji certyfikatu klienta:

  • Uzyskaj wszystkie dostępne tokeny, używając enterprise.platformKeys.getTokens().

  • Znajdź token z wartością id równą "user". Użyj tego tokena później.

  • Wygeneruj parę kluczy za pomocą metody generateKey() Token (zdefiniowanej w SubtleCrypto). Zwróci on uchwyt do klucza.

  • Wyeksportuj klucz publiczny, używając metody exportKey() Token (zdefiniowanej w SubtleCrypto).

  • Utwórz podpis danych żądania certyfikacji za pomocą metody sign() Token (zdefiniowanej w SubtleCrypto).

  • Wypełnij wniosek o certyfikat i wyślij go do urzędu certyfikacji.

  • Jeśli certyfikat został odebrany, zaimportuj go za pomocą [enterprise.platformKeys.importCertificate()`[3]

Oto przykład, który pokazuje główne interakcje interfejsu API z wyjątkiem tworzenia i wysyłania prośby o certyfikat:

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

Typy

Algorithm

Chrome 110 lub nowszy

Typ klucza do wygenerowania.

Typ wyliczeniowy

"RSA"

„ECDSA”

ChallengeKeyOptions

Chrome 110 lub nowszy

Właściwości

  • wyzwanie

    ArrayBuffer

    Wyzwanie emitowane przez interfejs Verified Access Web API.

  • registerKey

    RegisterKeyOptions opcjonalnie

    Jeśli klucz jest dostępny, rejestruje klucz z wyzwaniem za pomocą tokena scope. Klucz można następnie powiązać z certyfikatem i używać go jak każdego innego klucza podpisywania. Kolejne wywołania tej funkcji będą generować nowy klucz Enterprise w określonym scope.

  • zakres

    Który klucz Enterprise chcesz zakwestionować.

RegisterKeyOptions

Chrome 110 lub nowszy

Właściwości

  • algorytm

    Którego algorytmu powinien używać zarejestrowany klucz.

Scope

Chrome 110 lub nowszy

Czy użyć klucza użytkownika Enterprise czy klucza maszynowego Enterprise.

Typ wyliczeniowy

"USER"

"MACHINE"

Token

Właściwości

  • id

    ciąg znaków

    Unikalnie identyfikuje tę Token.

    Identyfikatory statyczne to "user""system", które odnoszą się odpowiednio do tokena sprzętowego na poziomie użytkownika i do tokena sprzętowego na poziomie systemu. enterprise.platformKeys.getTokens może zwrócić dowolne inne tokeny (z innymi identyfikatorami).

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 lub nowszy

    Implementuje interfejs SubtleCrypto biblioteki WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są obsługiwane przez oprogramowanie. Ochrona kluczy, a także implementacja właściwości niewyodalnej, odbywa się w oprogramowaniu, więc klucze są mniej chronione niż klucze obsługiwane sprzętowo.

    Można generować tylko klucze, których nie można wyodrębnić. Obsługiwane typy kluczy to RSASSA-PKCS1-V1_5 i RSA-OAEP z modulusLength do 2048. Każdego klucza RSASSA-PKCS1-V1_5 można użyć do podpisania danych najwyżej raz, chyba że rozszerzenie jest na liście dozwolonych w zasadach dotyczących uprawnień klucza. W takim przypadku klucz można używać bezterminowo. Kluczy RSA-OAEP mogą używać rozszerzenia, które są dozwolone w ramach tych samych zasad, aby odszyfrowywać inne klucze.

    Kluczy wygenerowanych na określonym Token nie można używać z żadnymi innymi tokenami ani z window.crypto.subtle. Podobnie obiektów Key utworzonych za pomocą window.crypto.subtle nie można używać w tym interfejsie.

  • subtleCrypto

    SubtleCrypto

    Implementuje interfejs SubtleCrypto biblioteki WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są obsługiwane przez sprzęt.

    Można generować tylko klucze, których nie można wyodrębnić. Obsługiwane typy kluczy to RSASSA-PKCS1-V1_5 i RSA-OAEP z modulusLength do 2048 i ECDSA z namedCurve P-256. Każdy klucz RSASSA-PKCS1-V1_5 i ECDSA może być używany do podpisywania danych maksymalnie raz, chyba że rozszerzenie znajduje się na liście dozwolonych w zasadach dotyczących uprawnień klucza. W takim przypadku klucz może być używany przez nieograniczony czas. Kluczy RSA-OAEP mogą używać rozszerzenia, które są dozwolone w ramach tych samych zasad, aby odszyfrowywać inne klucze.

    Kluczy wygenerowanych na określonym Token nie można używać z żadnymi innymi tokenami ani z window.crypto.subtle. Podobnie obiektów Key utworzonych za pomocą window.crypto.subtle nie można używać w tym interfejsie.

Metody

challengeKey()

Obietnice Chrome 110 i nowsze
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
  callback?: function,
)

Podobnie jak challengeMachineKeychallengeUserKey, ale umożliwia określenie algorytmu zarejestrowanego klucza. Wyzwanie sprzętowego klucza maszynowego Enterprise i wysyłanie odpowiedzi w ramach protokołu zdalnego uwierzytelniania. Jest przydatna tylko w ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i sprawdza odpowiedzi.

Pomyślna weryfikacja przez interfejs Verified Access Web API jest mocnym sygnałem, że bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS, jest zarządzane przez domenę określoną podczas weryfikacji, a bieżący zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji i że stan bieżącego urządzenia jest zgodny z zasadami dotyczącymi urządzeń firmowych. Na przykład zasada może określać, że urządzenie nie może być w trybie programisty. Tożsamość urządzenia emitowana przez weryfikację jest ściśle powiązana ze sprzętem bieżącego urządzenia. Jeśli jest określony zakres "user", tożsamość jest też ściśle powiązana z aktualnie zalogowanym użytkownikiem.

Ta funkcja jest bardzo ograniczona i nie zadziała, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub jeśli ta operacja nie została wyraźnie włączona dla wywołującego przez zasady urządzenia firmowego. Klucz, którego dotyczy wyzwanie, nie znajduje się w tokenie "system" ani "user" i nie jest dostępny dla żadnego innego interfejsu API.

Parametry

  • Obiekt zawierający pola zdefiniowane w ChallengeKeyOptions.

  • wywołanie zwrotne

    function opcjonalny

    Parametr callback ma postać:

    (response: ArrayBuffer) => void

    • odpowiedź

      ArrayBuffer

      Odpowiedź na wyzwanie.

Zwroty

  • Obietkw<ArrayBuffer>

    Chrome w wersji 131 lub nowszej

    Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnicy zwraca ten sam typ, który jest przekazywany do funkcji wywołania zwrotnego.

challengeMachineKey()

Obietnica Chrome 50 lub nowszy Wycofane w Chrome 110
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback?: function,
)

Zamiast tego użyj kolumny challengeKey.

Wyzwanie sprzętowego klucza maszynowego Enterprise i wysyłanie odpowiedzi w ramach protokołu zdalnego uwierzytelniania. Jest przydatna tylko w ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i sprawdza odpowiedzi. Pomyślna weryfikacja przez interfejs Verified Access Web API jest mocnym sygnałem o tym, że: * bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS. * Bieżącym urządzeniem zarządza domena określona podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji. * Aktualny stan urządzenia jest zgodny z zasadami dotyczącymi urządzeń firmowych. Na przykład zasada może określać, że urządzenie nie może być w trybie programisty. * Tożsamość urządzenia emitowana przez weryfikację jest ściśle powiązana ze sprzętem bieżącego urządzenia. Ta funkcja jest bardzo ograniczona i nie zadziała, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub jeśli ta operacja nie została wyraźnie włączona dla wywołującego przez zasady urządzenia firmowego. Klucz maszynowy dla firm nie znajduje się w tokenie "system" i nie jest dostępny dla żadnego innego interfejsu API.

Parametry

  • wyzwanie

    ArrayBuffer

    Wyzwanie emitowane przez interfejs Verified Access Web API.

  • registerKey

    wartość logiczna opcjonalna

    Chrome 59 lub nowszy

    Jeśli to ustawienie jest włączone, bieżący klucz maszynowy dla przedsiębiorstwa jest zarejestrowany za pomocą tokena "system" i zrzeka na rolę klucza maszynowego dla przedsiębiorstwa. Klucz można następnie powiązać z certyfikatem i używać go jak każdego innego klucza podpisywania. Ten klucz jest kluczem RSA o długości 2048 bitów. Kolejne wywołania tej funkcji będą generować nowy klucz maszynowy Enterprise.

  • wywołanie zwrotne

    function opcjonalny

    Parametr callback ma postać:

    (response: ArrayBuffer) => void

    • odpowiedź

      ArrayBuffer

      Odpowiedź na wyzwanie.

Zwroty

  • Obietkw<ArrayBuffer>

    Chrome w wersji 131 lub nowszej

    Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnicy zwraca ten sam typ, który jest przekazywany do funkcji wywołania zwrotnego.

challengeUserKey()

Obietnica Chrome 50 lub nowszy Wycofane w Chrome 110
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback?: function,
)

Zamiast tego użyj kolumny challengeKey.

Wyzwanie klucza użytkownika w firmie obsługiwanego przez sprzęt i wysyłanie odpowiedzi w ramach protokołu weryfikacji zdalnej. Jest przydatna tylko w ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i sprawdza odpowiedzi. Pomyślna weryfikacja przez interfejs Verified Access Web API jest mocnym sygnałem o tym, że: * bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS. * Bieżącym urządzeniem zarządza domena określona podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji. * Bieżący stan urządzenia jest zgodny z zasadami dla użytkowników firmowych. Na przykład zasada może określać, że urządzenie nie może być w trybie programisty. * Klucz publiczny wygenerowany przez weryfikację jest ściśle powiązany ze sprzętem bieżącego urządzenia i bieżącym zalogowanym użytkownikiem. Ta funkcja jest bardzo ograniczona i nie zadziała, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub jeśli ta operacja nie została wyraźnie włączona dla wywołującego przez zasady użytkownika firmy. Klucz użytkownika Enterprise nie znajduje się w tokenie "user" i nie jest dostępny dla żadnego innego interfejsu API.

Parametry

  • wyzwanie

    ArrayBuffer

    Wyzwanie emitowane przez interfejs Verified Access Web API.

  • registerKey

    wartość logiczna

    Jeśli jest ustawiony, bieżący klucz użytkownika firmowego jest zarejestrowany za pomocą tokena "user" i zrzeka roli klucza użytkownika firmowego. Klucz można następnie powiązać z certyfikatem i używać go jak każdego innego klucza podpisywania. Ten klucz jest kluczem RSA o długości 2048 bitów. Kolejne wywołania tej funkcji będą generować nowy klucz użytkownika Enterprise.

  • wywołanie zwrotne

    function opcjonalny

    Parametr callback ma postać:

    (response: ArrayBuffer) => void

    • odpowiedź

      ArrayBuffer

      Odpowiedź na wyzwanie.

Zwroty

  • Obietkw<ArrayBuffer>

    Chrome w wersji 131 lub nowszej

    Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnicy zwraca ten sam typ, który jest przekazywany do funkcji wywołania zwrotnego.

getCertificates()

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

Zwraca listę wszystkich certyfikatów klienta dostępnych w danym tokenie. Może służyć do sprawdzania istnienia i terminu ważności certyfikatów klienta, które można wykorzystać do określonego uwierzytelniania.

Parametry

  • tokenId

    ciąg znaków

    Identyfikator tokena zwróconego przez getTokens.

  • wywołanie zwrotne

    function opcjonalny

    Parametr callback ma postać:

    (certificates: ArrayBuffer[]) => void

    • certyfikaty

      ArrayBuffer[]

      Lista certyfikatów, z których każdy jest certyfikatem X.509 zakodowanym w formacie DER.

Zwroty

  • Promise<ArrayBuffer[]>

    Chrome w wersji 131 lub nowszej

    Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnicy zwraca ten sam typ, który jest przekazywany do funkcji wywołania zwrotnego.

getTokens()

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

Zwraca dostępne tokeny. W sesji zwykłego użytkownika lista zawsze będzie zawierać token użytkownika z id "user". Jeśli dostępny jest token TPM dla całego systemu, zwrócona lista będzie zawierać również token dla całego systemu z wartością id "system". Token systemowy będzie taki sam dla wszystkich sesji na tym urządzeniu (urządzenie w rozumieniu np. Chromebooka).

Parametry

  • wywołanie zwrotne

    function opcjonalny

    Parametr callback ma postać:

    (tokens: Token[]) => void

    • tokeny

      Lista dostępnych tokenów.

Zwroty

  • Obietnica<Token[]>

    Chrome w wersji 131 lub nowszej

    Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnicy zwraca ten sam typ, który jest przekazywany do funkcji wywołania zwrotnego.

importCertificate()

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

Zaimportuj certificate do danego tokena, jeśli certyfikowany klucz jest już w nim przechowywany. Po pomyślnym przesłaniu żądania certyfikacji należy użyć tej funkcji, aby przechowywać uzyskany certyfikat i udostępniać go systemowi operacyjnemu oraz przeglądarce na potrzeby uwierzytelniania.

Parametry

  • tokenId

    ciąg znaków

    Identyfikator tokena zwróconego przez getTokens.

  • certyfikat

    ArrayBuffer

    Kodowanie DER certyfikatu X.509.

  • wywołanie zwrotne

    function opcjonalny

    Parametr callback ma postać:

    () => void

Zwroty

  • Obietnica<void>

    Chrome w wersji 131 lub nowszej

    Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnicy zwraca ten sam typ, który jest przekazywany do funkcji wywołania zwrotnego.

removeCertificate()

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

Usuwa certificate z danego tokena, jeśli jest obecny. Należy go używać do usuwania nieaktualnych certyfikatów, aby nie były one brane pod uwagę podczas uwierzytelniania i nie zaśmiecały listy certyfikatów. Należy go używać, aby zwolnić miejsce w sklepie z certyfikatami.

Parametry

  • tokenId

    ciąg znaków

    Identyfikator tokena zwróconego przez getTokens.

  • certyfikat

    ArrayBuffer

    Kodowanie DER certyfikatu X.509.

  • wywołanie zwrotne

    function opcjonalny

    Parametr callback ma postać:

    () => void

Zwroty

  • Obietnica<void>

    Chrome w wersji 131 lub nowszej

    Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnicy zwraca ten sam typ, który jest przekazywany do funkcji wywołania zwrotnego.