Yetkilendirme etiketleri

KeyMint (eski adıyla Keymaster) API'si, ad-değer çiftleri olan yetkilendirme etiketlerini yoğun bir şekilde kullanır. Olası her etiketin özellikleri:

  • İlişkili değere sahip bir enum adı
  • Birden fazla değere izin verilip verilmediğini belirten bir gösterge içeren ilişkili tür (örneğin, tam sayı, bayt, tarih, enum)

Örneğin, Tag::BLOCK_MODE adlı etiketin temel enum değeri 4 ve ilişkili değerin tekrarlanabilir bir enum (bu örnekte BlockMode) olduğunu belirten bir TagType::ENUM_REP türü işaretçisi vardır.

Etiketler, API'de iki işlevi yerine getirir:

  • API'de gerçekleştirilen bir işlemin parametreleri olarak. Örneğin, bir HMAC imzalama işlemindeki Tag::MAC_LENGTH, istenen HMAC uzunluğunu gösterir.
  • Temel özellikler olarak, belirli bir anahtara kalıcı olarak bağlı olan (yani anahtar blob'una dahil edilen) değerler. Örneğin, Tag::EC_CURVE, bir anahtarın hangi eliptik eğri için olduğunu gösterir. Her bir temel özellik, sistemin hangi bölümünün özelliği denetlediğini gösteren bir güvenlik düzeyiyle ilişkilendirilir:
    • Güvenlik düzeyi TRUSTED_ENVIRONMENT veya STRONGBOX olan bir anahtar özelliği, güvenli donanımda zorunlu kılınır.
    • Güvenlik düzeyi SOFTWARE veya KEYSTORE olan bir temel özellik yalnızca keystore2 sistem hizmeti tarafından zorunlu kılınır (bu nedenle, bu tür bir özellik işletim sisteminin güvenliğinin ihlal edilmesine karşı dayanıklı değildir).

Birçok etiket hem temel özellik hem de parametre olarak işlev görür:

  • Anahtar özellikleri, bir anahtar için izin verilen parametreler grubunu gösterir. Örneğin:
    • Bir ECDSA anahtarının Tag::PURPOSE, hem SIGN hem de AGREE_KEY içerebilir.
    • AES anahtarının Tag::BLOCK_MODE bölümünde ECB, CBC ve CTR modları yer alabilir.
  • Bir begin() isteği daha sonra işlem için belirli bir parametre değeri içerir. Örneğin:
    • begin(), temel özelliklerin Tag::PURPOSE değerlerinden biriyle eşleşmesi gereken açık bir amaç parametresine sahip.
    • AES işlemi için begin(), params alanında Tag::BLOCK_MODE için tek bir değer içermelidir. Bu değer, anahtar özelliklerindeki değerlerden biriyle eşleşmelidir.

Bu çift işlev, özellikle anahtar oluşturma veya içe aktarma işleminde keyParams olarak iletilen etiketlerin toplanması için geçerlidir.

  • Etiketlerden bazıları, anahtar oluşturma işleminin kendisi için parametre görevi görür. Örneğin, Tag::CERTIFICATE_SUBJECT etiketi, döndürülen X.509 sertifikasındaki bir alanı kontrol ederek yalnızca (asimetrik) anahtar oluşturma sürecini etkiler.
  • Diğer etiketler, anahtar özellikleri olarak yeni oluşturulan anahtara bağlanır ve döndürülen keyblob'a kapsüllenerek anahtarla kalıcı olarak ilişkilendirilir.

Etiket değerleri hakkında ayrıntılı bilgiyi aşağıdaki HAL arayüzü spesifikasyonlarında bulabilirsiniz: