Bu sayfada, temel KeyMint (veya Keymaster) uygulaması tarafından sağlanan Android Keystore'un kriptografik özellikleri hakkında bilgiler yer almaktadır.
Temel şifreleme
Anahtar deposu aşağıdaki işlem kategorilerini sağlar:
- Yalnızca güvenli ortama erişilebilen özel veya gizli anahtar materyaliyle sonuçlanan anahtar oluşturma İstemciler, anahtarları aşağıdaki yöntemlerle oluşturabilir:
- Yeni anahtar oluşturma
- Şifrelenmemiş anahtar materyalinin içe aktarılması
- Şifrelenmiş anahtar materyalinin içe aktarılması
- Anahtar onayı: Asimetrik anahtar oluşturma, anahtar çiftinin ortak anahtar kısmını içeren bir sertifika oluşturur. Bu sertifika, isteğe bağlı olarak anahtarın meta verileri ve cihazın durumuyla ilgili bilgileri de içerir. Tüm bu bilgiler, güvenilir bir köke geri dönen bir anahtarla imzalanır.
- Şifreleme işlemleri:
- Simetrik şifreleme ve şifre çözme (AES, 3DES)
- Asimetrik şifre çözme (RSA)
- Asimetrik imzalama (ECDSA, RSA)
- Simetrik imzalama ve doğrulama (HMAC)
- Asimetrik anahtar anlaşması (ECDH)
Keystore ve KeyMint'in asimetrik anahtarlar için ortak anahtar işlemlerini işlemediğini unutmayın.
Amaç, mod ve dolgu gibi protokol öğelerinin yanı sıra erişim kontrolü kısıtlamaları, anahtarlar oluşturulurken veya içe aktarılırken belirtilir ve anahtara kalıcı olarak bağlanır. Böylece anahtarın başka bir şekilde kullanılması önlenir.
Yukarıdaki listeye ek olarak, KeyMint (eski adıyla Keymaster) uygulamalarının sağladığı ancak API olarak sunulmayan bir hizmet daha vardır: rastgele sayı oluşturma. Bu, anahtarların, başlatma vektörlerinin (IV'ler), rastgele dolgunun ve rastgelelik gerektiren güvenli protokollerin diğer öğelerinin oluşturulması için dahili olarak kullanılır.
Gerekli temel öğeler
Tüm KeyMint uygulamaları şunları sağlar:
- RSA
- 2048, 3072 ve 4096 bit anahtar desteği
- Ortak üs F4 (2^16+1) için destek
- RSA imzası için dolgu modları:
- RSASSA-PSS (
PaddingMode::RSA_PSS
) - RSASSA-PKCS1-v1_5 (
PaddingMode::RSA_PKCS1_1_5_SIGN
)
- RSASSA-PSS (
- RSA imzası için özet modları:
- SHA-256
- RSA şifreleme/şifre çözme için dolgu modları:
- Dolgusuz
- RSAES-OAEP (
PaddingMode::RSA_OAEP
) - RSAES-PKCS1-v1_5 (
PaddingMode::RSA_PKCS1_1_5_ENCRYPT
)
- ECDSA
- Sırasıyla NIST P-224, P-256, P-384 ve P-521 eğrileri kullanılarak 224, 256, 384 ve 521 bit anahtar desteği sağlanır.
- ECDSA için özet modları:
- Özet yok (artık kullanılmıyor, gelecekte kaldırılacak)
- SHA-256
- AES
- 128 ve 256 bit anahtarlar desteklenir.
- CBC, CTR, ECB ve GCM. GCM uygulaması, 96 bit'ten küçük etiketlerin veya 96 bit'ten farklı nonce uzunluklarının kullanılmasına izin vermez.
- CBC ve ECB modları için
PaddingMode::NONE
vePaddingMode::PKCS7
dolgu modları desteklenir. Dolgu olmadan, CBC veya ECB modu şifrelemesi, giriş blok boyutunun katı değilse başarısız olur.
- HMAC En az 32 bayta kadar herhangi bir anahtar boyutuyla SHA-256.
SHA1 ve SHA2 ailesinin diğer üyeleri (SHA-224, SHA384 ve SHA512), KeyMint uygulamaları için önemle tavsiye edilir. Keystore, donanım KeyMint uygulaması bunları sağlamıyorsa yazılımda sağlar.
Diğer sistemlerle birlikte çalışabilirlik için bazı temel öğeler de önerilir:
- RSA için daha küçük anahtar boyutları
- RSA için rastgele herkese açık üsler
Anahtar erişim denetimi
Cihazdan hiçbir zaman çıkarılamayan donanım tabanlı anahtarlar, saldırganın bunları istediği gibi kullanabilmesi durumunda çok fazla güvenlik sağlamaz (ancak çıkarılabilen anahtarlardan daha güvenlidir). Bu nedenle, Keystore'un erişim denetimlerini zorunlu kılması çok önemlidir.
Erişim kontrolleri, etiket/değer çiftlerinin "yetkilendirme listesi" olarak tanımlanır. Yetkilendirme etiketleri 32 bitlik tam sayılardır ve değerler çeşitli türlerdedir. Birden fazla değer belirtmek için bazı etiketler tekrarlanabilir. Bir etiketin tekrarlanıp tekrarlanamayacağı KeyMint HAL arayüzünde belirtilir. Bir anahtar oluşturulduğunda, arayan kişi bir yetkilendirme listesi belirtir. Keystore'un temelini oluşturan KeyMint uygulaması, anahtarın geri alma korumasına sahip olup olmadığı gibi bazı ek bilgileri belirtmek için listeyi değiştirir ve döndürülen anahtar blob'una kodlanmış "nihai" bir yetkilendirme listesi döndürür. Son yetkilendirme listesi değiştirilirse anahtarı herhangi bir şifreleme işlemi için kullanma girişimi başarısız olur.
Keymaster 2 ve önceki sürümlerde, olası etiketler kümesi keymaster_authorization_tag_t
numaralandırmasında tanımlanır ve kalıcı olarak sabittir (ancak genişletilebilir).
Adların önüne KM_TAG
ön eki ekleniyordu. Türünü belirtmek için etiket kimliklerinin ilk dört biti kullanılır.
Keymaster 3, KM_TAG
ön ekini Tag::
olarak değiştirdi.
Olası türler şunlardır:
ENUM
: Birçok etiketin değeri numaralandırmalarda tanımlanır. Örneğin, TAG::PURPOSE
değerinin olası değerleri keymaster_purpose_t
numaralı enum'da tanımlanır.
ENUM_REP
: ENUM
ile aynıdır. Tek fark, etiketin yetkilendirme listesinde tekrarlanabilmesidir. Tekrar, birden fazla yetkili değer olduğunu gösterir. Örneğin, bir şifreleme anahtarında KeyPurpose::ENCRYPT
ve KeyPurpose::DECRYPT
olması muhtemeldir.
KeyMint bir anahtar oluşturduğunda arayan, anahtar için bir yetkilendirme listesi belirtir. Bu liste, ek kısıtlamalar eklemek için Keystore ve KeyMint tarafından değiştirilir. Temel KeyMint uygulaması, nihai yetkilendirme listesini döndürülen keyblob'a kodlar. Kodlanmış yetkilendirme listesi, şifreleme açısından keyblob'a bağlıdır. Bu nedenle, yetkilendirme listesini (sıralama dahil) değiştirmeye yönelik tüm girişimler, şifreleme işlemleri için kullanılamayan geçersiz bir keyblob ile sonuçlanır.
Donanım ve yazılım zorunluluğu
Tüm güvenli donanım uygulamaları aynı özellikleri içermez. Keymaster, çeşitli yaklaşımları desteklemek için sırasıyla güvenli ve güvenli olmayan dünya erişim kontrolü zorlaması veya donanım ve yazılım zorlaması arasında ayrım yapar.
Bu, KeyCharacteristics
türündeki securityLevel
alanı ile KeyMint API'de gösterilir. Güvenli donanım, yetkilendirmeleri zorunlu kılma özelliğine göre uygun güvenlik düzeyinde KeyCharacteristics
içine yerleştirmekten sorumludur. Bu bilgiler, asimetrik anahtarların onay kayıtlarında da gösterilir: SecurityLevel::TRUSTED_ENVIRONMENT
veya SecurityLevel::STRONGBOX
için anahtar özellikleri hardwareEnforced
listesinde, SecurityLevel::SOFTWARE
veya SecurityLevel::KEYSTORE
için özellikler ise softwareEnforced
listesinde görünür.
Örneğin, güvenli ortamın tarih ve saat bilgilerine güvenilir erişimi olmadığından, bir anahtarın kullanılabileceği tarih ve saat aralığıyla ilgili kısıtlamalar genellikle güvenli ortam tarafından uygulanmaz. Sonuç olarak, Tag::ORIGINATION_EXPIRE_DATETIME
gibi yetkilendirmeler Android'de Anahtar Deposu tarafından zorunlu kılınır ve SecurityLevel::KEYSTORE
olur.
Anahtarların ve yetkilendirmelerinin donanım destekli olup olmadığını belirleme hakkında daha fazla bilgi için Anahtar onayı başlıklı makaleyi inceleyin.
Şifreleme mesajı oluşturma yetkileri
Aşağıdaki etiketler, ilişkili anahtarın kullanıldığı işlemlerin kriptografik özelliklerini tanımlamak için kullanılır:
Tag::ALGORITHM
Tag::KEY_SIZE
Tag::BLOCK_MODE
Tag::PADDING
Tag::CALLER_NONCE
Tag::DIGEST
Tag::MGF_DIGEST
Aşağıdaki etiketler tekrarlanabilir. Yani tek bir anahtarla birden çok değer ilişkilendirilebilir:
Tag::BLOCK_MODE
Tag::PADDING
Tag::DIGEST
Tag::MGF_DIGEST
Kullanılacak değer, işlem sırasında belirtilir.
Amaç
Anahtarların, nasıl kullanılabileceklerini tanımlayan Tag::PURPOSE
etiketiyle bir veya daha fazla yetkilendirme girişi olarak ifade edilen ilişkili bir amaçlar grubu vardır. Amaçlar, KeyPurpose.aidl
adresinde tanımlanmıştır.
Bazı amaç değeri kombinasyonlarının güvenlik sorunlarına yol açtığını unutmayın. Örneğin, hem şifreleme hem de imzalama için kullanılabilen bir RSA anahtarı, sistemi rastgele verilerin şifresini çözmeye ikna edebilen bir saldırganın imza oluşturmasına olanak tanır.
Anahtar içe aktarma
Keymaster yalnızca X.509 biçimindeki ortak anahtarların dışa aktarılmasını ve aşağıdakilerin içe aktarılmasını destekler:
- DER kodlu PKCS#8 biçimindeki asimetrik anahtar çiftleri (parola tabanlı şifreleme olmadan)
- Ham bayt olarak simetrik anahtarlar
İçe aktarılan anahtarların güvenli bir şekilde oluşturulan anahtarlardan ayırt edilebilmesi için Tag::ORIGIN
uygun anahtar yetkilendirme listesine dahil edilir. Örneğin, güvenli donanımda oluşturulan bir anahtar için Tag::ORIGIN
değeri KeyOrigin::GENERATED
olan hw_enforced
anahtar özelliklerinin listesinde yer alır. Güvenli donanıma aktarılan bir anahtarın değeri ise KeyOrigin::IMPORTED
olur.
Kullanıcı kimlik doğrulaması
Güvenli KeyMint uygulamaları, kullanıcı kimlik doğrulamasını uygulamaz ancak bunu yapan diğer güvenilir uygulamalara bağlıdır. Bu uygulamaların uyguladığı arayüz için Gatekeeper sayfasını inceleyin.
Kullanıcı kimlik doğrulama koşulları iki etiket grubuyla belirtilir. İlk küme, hangi kimlik doğrulama yöntemlerinin anahtarın kullanılmasına izin verdiğini gösterir:
Tag::USER_SECURE_ID
, anahtarın kullanımının kilidini açmak için güvenli bir kimlik doğrulama jetonunda sağlanan güvenli kullanıcı kimliğini belirten 64 bitlik bir sayısal değere sahiptir. Tekrarlanırsa değerlerden herhangi biri güvenli bir kimlik doğrulama jetonunda sağlandığı takdirde anahtar kullanılabilir.
İkinci grup, kullanıcının kimliğinin doğrulanması gerekip gerekmediğini ve gerekiyorsa ne zaman doğrulanması gerektiğini gösterir.
Bu etiketlerden hiçbiri yoksa ancak Tag::USER_SECURE_ID
varsa anahtarın her kullanımı için kimlik doğrulama gerekir.
Tag::NO_AUTHENTICATION_REQUIRED
, anahtara erişim, sahibi olan uygulama (ve erişim izni verdiği tüm uygulamalar) ile kısıtlanmış olsa da kullanıcı kimlik doğrulamasının gerekli olmadığını gösterir.Tag::AUTH_TIMEOUT
, saniye cinsinden, anahtar kullanımının yetkilendirilmesi için kullanıcı kimlik doğrulamasının ne kadar yeni olması gerektiğini belirten sayısal bir değerdir. Zaman aşımları yeniden başlatma işlemlerini etkilemez. Yeniden başlatma işleminden sonra tüm kimlik doğrulamalar geçersiz kılınır. Kimlik doğrulamanın önyükleme başına bir kez gerekli olduğunu belirtmek için zaman aşımı büyük bir değere ayarlanabilir (2^32 saniye yaklaşık 136 yıldır; Android cihazların bundan daha sık yeniden başlatıldığı varsayılır).
Cihazın kilidinin açılmasını zorunlu kılma
Tag::UNLOCKED_DEVICE_REQUIRED
simgesi olan anahtarlar yalnızca cihazın kilidi açıkken kullanılabilir. Ayrıntılı semantik için
KeyProtection.Builder#setUnlockedDeviceRequired(boolean)
başlıklı makaleyi inceleyin.
UNLOCKED_DEVICE_REQUIRED
, KeyMint tarafından değil, anahtar deposu tarafından zorunlu kılınır. Ancak Android 12 ve sonraki sürümlerde, cihaz kilitliyken Anahtar Deposu, UNLOCKED_DEVICE_REQUIRED
anahtarlarını kriptografik olarak korur. Bu sayede, cihaz kilitliyken Anahtar Deposu'nun güvenliği ihlal edilmiş olsa bile çoğu durumda anahtarlar kullanılamaz.
Bunu sağlamak için Keystore, tüm UNLOCKED_DEVICE_REQUIRED
anahtarlarını veritabanında depolamadan önce "süper şifreler". Ayrıca, mümkün olduğunda cihaz kilitliyken süper şifreleme anahtarlarını (süper anahtarlar) yalnızca başarılı bir cihaz kilidi açma işlemiyle kurtarılabilecek şekilde korur. ("Süper şifreleme" terimi, bu şifreleme katmanı KeyMint'in tüm anahtarlara zaten uyguladığı şifreleme katmanına ek olarak uygulandığı için kullanılır.)
Profiller dahil her kullanıcının UNLOCKED_DEVICE_REQUIRED
ile ilişkili iki süper anahtarı vardır:
- UnlockedDeviceRequired simetrik süper anahtarı. Bu bir AES-256-GCM anahtarıdır. Cihazın kilidi kullanıcı için açıkken içe aktarılan veya oluşturulan anahtarları şifreler.
UNLOCKED_DEVICE_REQUIRED
- UnlockedDeviceRequired asimetrik süper anahtarı. Bu, ECDH
P-521 anahtar çiftidir. Cihaz, kullanıcı için kilitliyken içe aktarılan veya oluşturulan
UNLOCKED_DEVICE_REQUIRED
anahtarlarını şifreler. Bu asimetrik anahtarla şifrelenen anahtarlar, ilk kullanımda (yalnızca cihazın kilidi açıkken gerçekleşebilir) simetrik anahtarla yeniden şifrelenir.
Keystore, bu süper anahtarları kullanıcı oluşturma sırasında oluşturur ve kullanıcının yapay şifresiyle şifrelenmiş olarak veritabanında saklar. Bu sayede, PIN, desen veya eşdeğer şifre kullanılarak kurtarılabilirler.
Keystore, bu süper anahtarları bellekte de önbelleğe alır ve UNLOCKED_DEVICE_REQUIRED
anahtarları üzerinde çalışmasına olanak tanır. Ancak, bu anahtarların gizli kısımlarını yalnızca cihazın kilidi kullanıcı için açıkken önbelleğe almaya çalışır. Cihaz kullanıcı için kilitlendiğinde, mümkünse Keystore bu süper anahtarların gizli kısımlarının önbelleğe alınmış kopyasını sıfırlar. Daha net bir ifadeyle, cihaz kullanıcı için kilitlendiğinde Keystore, kullanıcının UnlockedDeviceRequired süper anahtarları için üç koruma düzeyinden birini seçip uygular:
- Kullanıcı yalnızca PIN, desen veya şifre etkinleştirmişse Keystore, önbelleğe alınmış süper anahtarlarının gizli kısımlarını sıfırlar. Bu sayede, süper anahtarlar yalnızca veritabanındaki şifrelenmiş kopya aracılığıyla kurtarılabilir. Bu kopya yalnızca PIN, desen veya eşdeğer bir şifre ile çözülebilir.
- Kullanıcının yalnızca 3. sınıf ("güçlü") biyometrisi ve PIN, desen veya şifre etkinse Keystore, süper anahtarların PIN, desen veya şifre eşdeğerine alternatif olarak kullanıcının kayıtlı 3. sınıf biyometrilerinden (genellikle parmak izi) herhangi biriyle kurtarılmasını sağlar. Bunu yapmak için yeni bir AES-256-GCM anahtarı oluşturur, süper anahtarların gizli kısımlarını bu anahtarla şifreler, AES-256-GCM anahtarını KeyMint'e son 15 saniye içinde biyometrik kimlik doğrulamanın başarılı olmasını gerektiren biyometriye bağlı bir anahtar olarak içe aktarır ve bu anahtarların tümünün şifrelenmemiş metin kopyalarını sıfırlar.
- Kullanıcının 1. sınıf ("kolaylık") biyometrisi, 2. sınıf ("zayıf") biyometrisi varsa veya etkin kilit açma güven aracısı etkinse Keystore, süper anahtarları düz metin olarak önbelleğe alır. Bu durumda,
UNLOCKED_DEVICE_REQUIRED
anahtarları için şifreleme güvenliği sağlanmaz. Kullanıcılar bu kilidi açma yöntemlerini etkinleştirmeyerek bu güvenliği düşük yedek yöntemden kaçınabilir. Bu kategorilere giren en yaygın kilit açma yöntemleri arasında birçok cihazda yüz tanıma kilidi ve eşlenmiş bir akıllı saatle kilit açma yer alır.
Cihazın kilidi kullanıcı için açıldığında, Keystore mümkünse kullanıcının UnlockedDeviceRequired süper anahtarlarını kurtarır. PIN, desen veya şifreye eşdeğer kilidi açma için bu anahtarların veritabanında depolanan kopyasının şifresini çözer. Aksi takdirde, bu anahtarların biyometriye bağlı bir anahtarla şifrelenmiş bir kopyasını kaydedip kaydetmediğini kontrol eder ve kaydettiyse bu kopyanın şifresini çözmeye çalışır. Bu işlem yalnızca KeyMint (Keystore değil) tarafından zorunlu kılınan ve kullanıcının son 15 saniye içinde 3. sınıf bir biyometriyle kimliğini başarıyla doğrulaması durumunda başarılı olur.
İstemci bağlama
İstemci bağlama, bir anahtarın belirli bir istemci uygulamasıyla ilişkilendirilmesi, isteğe bağlı bir istemci kimliği ve bazı isteğe bağlı istemci verileri (sırasıyla Tag::APPLICATION_ID
ve Tag::APPLICATION_DATA
) aracılığıyla yapılır. Keystore, bu değerleri opak blob'lar olarak ele alır ve yalnızca anahtar oluşturma/içe aktarma sırasında sunulan blob'ların her kullanımda sunulmasını ve bayt bayt aynı olmasını sağlar. İstemci bağlama verileri KeyMint tarafından döndürülmüyor. Arayanın, anahtarı kullanabilmesi için bunu bilmesi gerekir.
Bu özellik uygulamalara sunulmaz.
Son Geçerlilik Tarihi
Keystore, anahtar kullanımının tarihe göre kısıtlanmasını destekler. Anahtarın geçerlilik başlangıcı ve anahtarın geçerlilik bitişi bir anahtarla ilişkilendirilebilir. Keymaster, geçerli tarih/saat geçerli aralığın dışındaysa anahtar işlemlerini gerçekleştirmeyi reddeder. Anahtar geçerlilik aralığı Tag::ACTIVE_DATETIME
, Tag::ORIGINATION_EXPIRE_DATETIME
ve Tag::USAGE_EXPIRE_DATETIME
etiketleriyle belirtilir. "Oluşturma" ve "kullanım" arasındaki ayrım, anahtarın yeni bir şifreli metin/imza/vb. "oluşturmak" için mi yoksa mevcut bir şifreli metin/imza/vb. "kullanmak" için mi kullanıldığına dayanır. Bu ayrımın uygulamalara gösterilmediğini unutmayın.
Tag::ACTIVE_DATETIME
,
Tag::ORIGINATION_EXPIRE_DATETIME
,
ve Tag::USAGE_EXPIRE_DATETIME
etiketleri isteğe bağlıdır. Etiketler yoksa söz konusu anahtarın iletilerin şifresini çözmek/doğrulamak için her zaman kullanılabileceği varsayılır.
Duvar saati zamanı güvenli olmayan dünya tarafından sağlandığı için, geçerlilik süresiyle ilgili etiketler yazılımla zorunlu kılınan listede yer alır.
Güven kökü bağlama
Keystore, anahtarların bir güven köküne bağlanmasını gerektirir. Bu güven kökü, başlatma sırasında KeyMint güvenli donanımına sağlanan ve tercihen önyükleyici tarafından sağlanan bir bit dizisidir. Bu bit dizisi, KeyMint tarafından yönetilen her anahtara kriptografik olarak bağlıdır.
Güven kökü, önyükleme görüntüsündeki imzayı doğrulamak için kullanılan ortak anahtardan ve cihazın kilit durumundan oluşur. Farklı bir sistem görüntüsünün kullanılmasına izin vermek için ortak anahtar değiştirilirse veya kilit durumu değiştirilirse önceki sistem tarafından oluşturulan KeyMint ile korunan anahtarların hiçbiri kullanılamaz. Bunun için önceki güven kökünün geri yüklenmesi ve bu anahtarla imzalanmış bir sistemin başlatılması gerekir. Amaç, saldırgan tarafından yüklenen bir işletim sisteminin KeyMint anahtarlarını kullanmasını imkansız kılarak yazılımla zorunlu kılınan anahtar erişim denetimlerinin değerini artırmaktır.
Bağımsız anahtarlar
Bazı KeyMint güvenli donanımları, anahtar materyalini dahili olarak depolamayı ve şifrelenmiş anahtar materyali yerine tutma yerlerini döndürmeyi seçebilir. Ayrıca, güvenli olmayan veya güvenli başka bir dünya sistemi bileşeni kullanılabilir olana kadar anahtarların kullanılamayacağı başka durumlar da olabilir. KeyMint HAL, arayanın TAG::STANDALONE
etiketi aracılığıyla bir anahtarın "bağımsız" olmasını istemesine olanak tanır. Bu, blob ve çalışan KeyMint sistemi dışında başka kaynak gerekmediği anlamına gelir. Bir anahtarın bağımsız olup olmadığını görmek için anahtarla ilişkili etiketler incelenebilir. Şu anda yalnızca iki değer tanımlanmıştır:
KeyBlobUsageRequirements::STANDALONE
KeyBlobUsageRequirements::REQUIRES_FILE_SYSTEM
Bu özellik uygulamalara sunulmaz.
Velocity
Oluşturulduğunda, maksimum kullanım hızı TAG::MIN_SECONDS_BETWEEN_OPS
ile belirtilebilir.
TrustZone uygulamaları, bir işlem TAG::MIN_SECONDS_BETWEEN_OPS
saniyeden daha kısa bir süre önce gerçekleştirildiyse bu anahtarla şifreleme işlemleri yapmayı reddeder.
Hız sınırlarını uygulamanın basit yaklaşımı, anahtar kimlikleri ve son kullanım zaman damgalarından oluşan bir tablodur. Bu tablo sınırlı boyuttadır ancak en az 16 giriş içerebilir. Tablo doluysa ve girişler güncellenemiyor veya silinemiyorsa güvenli donanım uygulamaları, girişlerden birinin süresi dolana kadar tüm hız sınırlı anahtar işlemlerini reddetmeyi tercih ederek "güvenli başarısızlık" durumuna geçer. Tüm girişlerin yeniden başlatma işleminden sonra süresinin dolması kabul edilebilir.
Anahtarlar, TAG::MAX_USES_PER_BOOT
ile her başlatma işleminde n kullanımla da sınırlanabilir. Bu işlem için en az dört anahtarı barındıran ve güvenli hata veren bir izleme tablosu da gerekir. Uygulamaların, her yeniden başlatma için sınırlı anahtarlar oluşturamayacağını unutmayın. Bu özellik, Keystore üzerinden kullanılamaz ve sistem işlemleri için ayrılmıştır.
Bu özellik uygulamalara sunulmaz.
Rastgele sayı oluşturucuyu yeniden başlatma
Güvenli donanım, anahtar materyali ve başlatma vektörleri (IV'ler) için rastgele sayılar oluşturduğundan ve donanım rastgele sayı üreteçleri her zaman tamamen güvenilir olmayabileceğinden KeyMint HAL, istemcinin ek entropi sağlamasına olanak tanıyan bir arayüz sunar. Bu entropi, oluşturulan rastgele sayılarla karıştırılır.
Birincil başlangıç kaynağı olarak donanım tabanlı rastgele sayı oluşturucu kullanın. Harici API aracılığıyla sağlanan başlangıç verileri, sayı oluşturma için kullanılan rastgeleliğin tek kaynağı olamaz. Ayrıca, kullanılan karıştırma işlemi, tohum kaynaklarından herhangi birinin tahmin edilemez olması durumunda rastgele çıkışın tahmin edilemez olmasını sağlamalıdır.