승인 태그

KeyMint (이전 명칭: Keymaster) API는 이름-값 쌍인 승인 태그를 광범위하게 사용합니다. 가능한 각 태그에는 다음이 있습니다.

  • 연결된 값이 있는 enum 이름
  • 연결된 유형 (예: 정수, 바이트, 날짜, enum). 여기에는 여러 값이 허용되는지 여부에 관한 표시가 포함됩니다.

예를 들어 이름이 Tag::BLOCK_MODE인 태그는 기본 enum 값이 4이고 연결된 값이 반복 가능한 enum (이 경우 BlockMode)임을 나타내는 TagType::ENUM_REP 유형 마커를 갖습니다.

태그는 API에서 두 가지 기능을 수행합니다.

  • API에서 실행되는 작업의 매개변수로, 예를 들어 HMAC 서명 작업의 Tag::MAC_LENGTH는 요청된 HMAC 길이를 나타냅니다.
  • 키 특성으로서 특정 키에 영구적으로 바인딩된 값 (즉, 키 blob에 포함됨)입니다. 예를 들어 Tag::EC_CURVE는 키가 어떤 타원 곡선을 사용하는지 나타냅니다. 각 키 특성은 시스템의 어느 부분에서 속성을 규제하는지 나타내는 보안 수준과 연결됩니다.
    • 보안 수준이 TRUSTED_ENVIRONMENT 또는 STRONGBOX인 키 특성이 보안 하드웨어에서 시행됩니다.
    • 보안 수준이 SOFTWARE 또는 KEYSTORE인 키 특성은 keystore2 시스템 서비스에서만 적용되므로 이러한 특성은 OS 손상에 대해 복원력이 없습니다.

많은 태그가 주요 특성 매개변수 역할을 합니다.

  • 키 특성은 키에 허용되는 매개변수 집합을 나타냅니다. 예를 들면 다음과 같습니다.
    • ECDSA 키의 Tag::PURPOSE에는 SIGNAGREE_KEY가 모두 포함될 수 있습니다.
    • AES 키의 Tag::BLOCK_MODE에는 ECB, CBC, CTR 모드가 포함될 수 있습니다.
  • 그러면 begin() 요청에 작업의 특정 매개변수 값이 포함됩니다(예:
    • begin()에는 주요 특성의 Tag::PURPOSE 값 중 하나와 일치해야 하는 명시적 목적 매개변수가 있습니다.
    • AES 작업의 begin()params 필드에 Tag::BLOCK_MODE의 단일 값을 포함해야 하며, 이 값은 키 특성의 값 중 하나와 일치해야 합니다.

이 이중 기능은 키 생성 또는 가져오기 작업에서 keyParams로 전달된 태그 컬렉션과 특히 관련이 있습니다.

  • 일부 태그는 키 생성 작업 자체의 매개변수 역할을 합니다. 예를 들어 Tag::CERTIFICATE_SUBJECT 태그는 반환된 X.509 인증서의 필드를 제어하여 (비대칭) 키 생성 프로세스에만 영향을 미칩니다.
  • 다른 태그는 새로 생성된 키에 키 특성으로 바인딩되며 반환된 키 blob에 캡슐화되어 키와 영구적으로 연결됩니다.

태그 값에 관한 자세한 내용은 다음 HAL 인터페이스 사양을 참고하세요.