chrome.enterprise.platformKeys

설명

chrome.enterprise.platformKeys API를 사용하여 키를 생성하고 이 키의 인증서를 설치합니다. 인증서는 플랫폼에서 관리하며 TLS 인증, 네트워크 액세스 또는 chrome.platformKeys를 통한 기타 확장 프로그램에 사용할 수 있습니다.

권한

enterprise.platformKeys

가용성

<ph type="x-smartling-placeholder"></ph> ChromeOS만 해당 를 통해 개인정보처리방침을 정의할 수 있습니다. <ph type="x-smartling-placeholder"></ph> <ph type="x-smartling-placeholder"></ph> 정책 필요

개념 및 사용

클라이언트 인증서를 등록하는 데 이 API를 일반적으로 사용하는 방법은 다음과 같습니다.

  • enterprise.platformKeys.getTokens()를 사용하여 사용 가능한 모든 토큰을 가져옵니다.

  • id"user"인 토큰을 찾습니다. 나중에 이 토큰을 사용하세요.

  • generateKey() 토큰 메서드(SubtleCrypto에 정의됨)를 사용하여 키 쌍을 생성합니다. 그러면 핸들이 키에 반환됩니다.

  • exportKey() 토큰 메서드 (SubtleCrypto에 정의됨)를 사용하여 공개 키를 내보냅니다.

  • sign() 토큰 메서드(SubtleCrypto에 정의됨)를 사용하여 인증 요청 데이터의 서명을 만듭니다.

  • 인증 요청을 작성하여 인증 기관에 전송합니다.

  • 인증서가 수신되면 [enterprise.platformKeys.importCertificate()`[3]을 사용하여 가져옵니다.

다음은 인증 요청 작성 및 전송을 제외한 주요 API 상호작용을 보여주는 예입니다.

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

유형

Algorithm

Chrome 110 이상

생성할 키 유형입니다.

열거형

ChallengeKeyOptions

Chrome 110 이상 를 통해 개인정보처리방침을 정의할 수 있습니다.

속성

  • 챌린지

    ArrayBuffer

    Verified Access Web API에서 발생하는 챌린지입니다.

  • registerKey

    RegisterKeyOptions 선택사항

    이 태그가 있는 경우 지정된 scope의 토큰과 함께 챌린지 처리된 키를 등록합니다. 그러면 키를 인증서와 연결하고 다른 서명 키와 마찬가지로 사용할 수 있습니다. 이 함수를 다시 호출하면 지정된 scope에 새 Enterprise 키가 생성됩니다.

  • 범위

    챌린지할 엔터프라이즈 키입니다.

RegisterKeyOptions

Chrome 110 이상

속성

  • 알고리즘

    등록된 키가 사용해야 하는 알고리즘입니다.

Scope

Chrome 110 이상 를 통해 개인정보처리방침을 정의할 수 있습니다.

엔터프라이즈 사용자 키 또는 엔터프라이즈 머신 키를 사용할지 여부입니다.

열거형

"USER"

'MACHINE'

Token

속성

  • id

    문자열

    Token를 고유하게 식별합니다.

    정적 ID는 "user""system"로, 각각 플랫폼의 사용자별 하드웨어 토큰과 시스템 전체 하드웨어 토큰을 나타냅니다. 그 외 다른 식별자가 있는 토큰은 enterprise.platformKeys.getTokens에서 반환할 수 있습니다.

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 이상

    WebCrypto의 SubtleCrypto 인터페이스를 구현합니다. 키 생성을 비롯한 암호화 작업은 소프트웨어로 지원됩니다. 키 보호 및 추출할 수 없는 속성의 구현은 소프트웨어에서 이루어지므로, 하드웨어 지원 키보다 키의 보호 수준이 낮습니다.

    modulusLength가 최대 2048인 추출 불가능한 RSASSA-PKCS1-V1_5 키만 생성할 수 있습니다. 각 키는 데이터 서명에 최대 한 번 사용할 수 있습니다.

    특정 Token에서 생성된 키는 다른 토큰과 함께 사용하거나 window.crypto.subtle와 함께 사용할 수 없습니다. 마찬가지로 window.crypto.subtle로 만든 Key 객체는 이 인터페이스에서 사용할 수 없습니다.

  • subtleCrypto

    SubtleCrypto

    WebCrypto의 SubtleCrypto 인터페이스를 구현합니다. 키 생성을 포함한 암호화 작업은 하드웨어에서 지원됩니다.

    최대 2048비트 modulusLength가 있는 추출 불가능한 RSASSA-PKCS1-V1_5 키와 namedCurve P-256이 있는 ECDSA만 생성할 수 있습니다. 각 키는 데이터 서명에 최대 한 번만 사용할 수 있습니다.

    특정 Token에서 생성된 키는 다른 토큰과 함께 사용하거나 window.crypto.subtle와 함께 사용할 수 없습니다. 마찬가지로 window.crypto.subtle로 만든 Key 객체는 이 인터페이스에서 사용할 수 없습니다.

메서드

challengeKey()

Promise Chrome 110 이상
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
  callback?: function,
)

challengeMachineKeychallengeUserKey와 유사하지만 등록된 키의 알고리즘을 지정할 수 있습니다. 하드웨어 지원 엔터프라이즈 머신 키에 챌린지를 제기하고 원격 증명 프로토콜의 일부로 응답을 내보냅니다. ChromeOS에서만 유용하며 챌린지를 생성하고 응답을 확인하는 Verified Access Web API와 함께 사용해야 합니다.

Verified Access Web API의 인증에 성공하면 현재 기기가 적법한 ChromeOS 기기이고, 현재 기기가 인증 중에 지정된 도메인으로 관리되고, 현재 로그인한 사용자가 인증 중에 지정된 도메인으로 관리되고, 현재 기기 상태가 엔터프라이즈 기기 정책을 준수한다는 강력한 신호가 됩니다. 예를 들어 정책에서 기기가 개발자 모드가 아니어야 한다고 지정할 수 있습니다. 인증 과정에서 내보낸 모든 기기 ID는 현재 기기의 하드웨어와 밀접하게 연결됩니다. "user" 범위가 지정되면 ID도 현재 로그인한 사용자에게 밀접하게 결합됩니다.

이 함수는 매우 제한적이며 현재 기기가 관리되지 않거나, 현재 사용자가 관리되지 않거나, 기업 기기 정책에 의해 호출자에 대해 이 작업이 명시적으로 사용 설정되지 않은 경우 실패합니다. 도전 키는 "system" 또는 "user" 토큰에 있지 않으며 다른 API에서 액세스할 수 없습니다.

매개변수

  • ChallengeKeyOptions에 정의된 필드가 포함된 객체입니다.

  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (response: ArrayBuffer) => void

    • 응답

      ArrayBuffer

      챌린지 응답입니다.

반환 값

  • Promise<ArrayBuffer>

    대기 중

    Promise는 매니페스트 V3 이상에서 지원되지만 이전 버전과의 호환성을 위해 콜백이 제공됩니다. 동일한 함수 호출에서 둘 다 사용할 수는 없습니다. 이 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

challengeMachineKey()

<ph type="x-smartling-placeholder"></ph> 프로미스 Chrome 50 이상 Chrome 110 이후 지원 중단됨
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback?: function,
)

대신 challengeKey를 사용하세요.

하드웨어 지원 엔터프라이즈 머신 키에 도전하고 원격 증명 프로토콜의 일부로 응답을 내보냅니다. ChromeOS에서만 챌린지를 발행하고 응답을 확인하는 Verified Access Web API를 함께 사용할 때만 유용합니다. Verified Access Web API의 인증에 성공했다는 것은 다음을 모두 확인했다는 강력한 신호입니다. * 현재 기기가 합법적인 ChromeOS 기기입니다. * 현재 기기는 인증 중에 지정된 도메인에서 관리합니다. * 현재 로그인한 사용자는 확인 시 지정된 도메인에서 관리됩니다. * 현재 기기 상태가 엔터프라이즈 기기 정책을 준수합니다. 예를 들어 정책에서 기기가 개발자 모드가 아니어야 한다고 지정할 수 있습니다. * 인증 과정에서 내보낸 모든 기기 ID는 현재 기기의 하드웨어와 밀접하게 연결됩니다. 이 기능은 엄격하게 제한되며 현재 기기가 관리되지 않거나, 현재 사용자가 관리되지 않거나, 엔터프라이즈 기기 정책에 따라 호출자에 이 작업이 명시적으로 사용 설정되지 않은 경우 실패합니다. 엔터프라이즈 머신 키는 "system" 토큰에 없으며 다른 API로 액세스할 수 없습니다.

매개변수

  • 챌린지

    ArrayBuffer

    Verified Access Web API에서 발생하는 챌린지입니다.

  • registerKey

    불리언 선택사항

    Chrome 59 이상 를 통해 개인정보처리방침을 정의할 수 있습니다.

    이 속성을 설정하면 현재 엔터프라이즈 머신 키가 "system" 토큰에 등록되고 엔터프라이즈 머신 키 역할을 포기합니다. 그러면 키를 인증서와 연결하고 다른 서명 키와 마찬가지로 사용할 수 있습니다. 이 키는 2048비트 RSA입니다. 이 함수를 후속으로 호출하면 새 엔터프라이즈 머신 키가 생성됩니다.

  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (response: ArrayBuffer) => void

    • 응답

      ArrayBuffer

      챌린지 응답입니다.

반환 값

  • Promise<ArrayBuffer>

    대기 중

    Promise는 매니페스트 V3 이상에서 지원되지만 이전 버전과의 호환성을 위해 콜백이 제공됩니다. 동일한 함수 호출에서 둘 다 사용할 수는 없습니다. 이 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

challengeUserKey()

Promise Chrome 50 이상 Chrome 110부터 지원 중단됨
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback?: function,
)

대신 challengeKey를 사용하세요.

하드웨어 지원 엔터프라이즈 사용자 키에 대해 요구하고 원격 증명 프로토콜의 일부로 응답을 내보냅니다. ChromeOS에서만 챌린지를 제기하고 응답을 확인하는 Verified Access Web API를 함께 사용할 때만 유용합니다. Verified Access Web API에 의한 인증에 성공했다는 것은 다음을 모두 확인했다는 강력한 신호입니다. * 현재 기기가 합법적인 ChromeOS 기기입니다. * 현재 기기는 인증 중에 지정된 도메인에서 관리합니다. * 현재 로그인한 사용자는 확인 시 지정된 도메인에서 관리됩니다. * 현재 기기 상태는 기업 사용자 정책을 준수합니다. 예를 들어 정책에서 기기가 개발자 모드가 아니어야 한다고 지정할 수 있습니다. * 인증에서 내보낸 공개 키는 현재 기기의 하드웨어 및 현재 로그인한 사용자와 밀접하게 연결됩니다. 이 함수는 매우 제한적이며 현재 기기가 관리되지 않거나, 현재 사용자가 관리되지 않거나, 기업 사용자 정책에 따라 호출자에 대해 이 작업이 명시적으로 사용 설정되지 않은 경우 실패합니다. 엔터프라이즈 사용자 키는 "user" 토큰에 없으며 다른 API에서 액세스할 수 없습니다.

매개변수

  • 챌린지

    ArrayBuffer

    Verified Access Web API에서 발생하는 챌린지입니다.

  • registerKey

    부울

    설정되면 현재 엔터프라이즈 사용자 키가 "user" 토큰에 등록되고 엔터프라이즈 사용자 키 역할이 취소됩니다. 그러면 키를 인증서와 연결하고 다른 서명 키와 마찬가지로 사용할 수 있습니다. 이 키는 2,048비트 RSA입니다. 이 함수를 다시 호출하면 새 엔터프라이즈 사용자 키가 생성됩니다.

  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (response: ArrayBuffer) => void

    • 응답

      ArrayBuffer

      챌린지 응답입니다.

반환 값

  • Promise<ArrayBuffer>

    대기 중

    Promise는 매니페스트 V3 이상에서 지원되지만 이전 버전과의 호환성을 위해 콜백이 제공됩니다. 동일한 함수 호출에서 둘 다 사용할 수는 없습니다. 이 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

getCertificates()

<ph type="x-smartling-placeholder"></ph> 프로미스 를 통해 개인정보처리방침을 정의할 수 있습니다.
chrome.enterprise.platformKeys.getCertificates(
  tokenId: string,
  callback?: function,
)

지정된 토큰에서 사용할 수 있는 모든 클라이언트 인증서 목록을 반환합니다. 특정 인증에 사용할 수 있는 클라이언트 인증서의 존재 여부 및 만료 여부를 확인하는 데 사용할 수 있습니다.

매개변수

  • tokenId

    문자열

    getTokens에서 반환된 토큰의 ID입니다.

  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (certificates: ArrayBuffer[]) => void

    • certificates

      ArrayBuffer[]

      각각 X.509 인증서의 DER 인코딩으로 된 인증서 목록입니다.

반환 값

  • Promise&lt;ArrayBuffer[]&gt;

    대기 중

    Promise는 매니페스트 V3 이상에서 지원되지만 이전 버전과의 호환성을 위해 콜백이 제공됩니다. 동일한 함수 호출에서 둘 다 사용할 수는 없습니다. 이 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

getTokens()

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

사용 가능한 토큰을 반환합니다. 일반 사용자의 세션에서는 목록에 항상 id "user"가 포함된 사용자 토큰이 포함됩니다. 시스템 전체 TPM 토큰을 사용할 수 있는 경우 반환된 목록에 id "system"가 포함된 시스템 전체 토큰도 포함됩니다. 시스템 전체 토큰은 이 기기 (예: Chromebook)의 모든 세션에 대해 동일합니다.

매개변수

  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (tokens: Token[]) => void

    • tokens

      사용 가능한 토큰의 목록입니다.

반환 값

  • 프라미스<토큰[]>

    대기 중

    Promise는 매니페스트 V3 이상에서 지원되지만 이전 버전과의 호환성을 위해 콜백이 제공됩니다. 동일한 함수 호출에서 둘 다 사용할 수는 없습니다. 이 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

importCertificate()

<ph type="x-smartling-placeholder"></ph> 프로미스 를 통해 개인정보처리방침을 정의할 수 있습니다.
chrome.enterprise.platformKeys.importCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
  callback?: function,
)

인증된 키가 이미 이 토큰에 저장되어 있는 경우 지정된 토큰에 certificate를 가져옵니다. 인증 요청이 성공하면 이 함수를 사용하여 가져온 인증서를 저장하고 운영체제와 브라우저에서 인증에 사용할 수 있도록 해야 합니다.

매개변수

  • tokenId

    문자열

    getTokens에서 반환된 토큰의 ID입니다.

  • 증명서

    ArrayBuffer

    X.509 인증서의 DER 인코딩입니다.

  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    () => void

반환 값

  • Promise<void>

    대기 중

    Promise는 매니페스트 V3 이상에서 지원되지만 이전 버전과의 호환성을 위해 콜백이 제공됩니다. 동일한 함수 호출에서 둘 다 사용할 수는 없습니다. 이 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

removeCertificate()

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

지정된 토큰이 있는 경우 지정된 토큰에서 certificate를 삭제합니다. 인증 시 고려되지 않고 인증서 선택에 방해가 되지 않도록 오래된 인증서를 제거하는 데 사용해야 합니다. 인증서 저장소의 저장용량을 확보하는 데 사용해야 합니다.

매개변수

  • tokenId

    문자열

    getTokens에서 반환된 토큰의 ID입니다.

  • 증명서

    ArrayBuffer

    X.509 인증서의 DER 인코딩입니다.

  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    () => void

반환 값

  • Promise<void>

    대기 중

    Promise는 매니페스트 V3 이상에서 지원되지만 이전 버전과의 호환성을 위해 콜백이 제공됩니다. 동일한 함수 호출에서 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.