विशेषताएं

इस पृष्ठ में एंड्रॉइड 6.0 और इसके बाद के संस्करण में कीस्टोर की क्रिप्टोग्राफ़िक सुविधाओं के बारे में जानकारी है।

क्रिप्टोग्राफ़िक आदिम

कीस्टोर संचालन की निम्नलिखित श्रेणियां प्रदान करता है:

  • प्रमुख पीढ़ी
  • असममित कुंजियों का आयात और निर्यात (कोई कुंजी लपेटन नहीं)
  • कच्ची सममित कुंजियों का आयात (कोई कुंजी लपेटन नहीं)
  • उपयुक्त पैडिंग मोड के साथ असममित एन्क्रिप्शन और डिक्रिप्शन
  • डाइजेस्टिंग और उपयुक्त पैडिंग मोड के साथ असममित हस्ताक्षर और सत्यापन
  • AEAD मोड सहित उपयुक्त मोड में सममित एन्क्रिप्शन और डिक्रिप्शन
  • सममित संदेश प्रमाणीकरण कोड का सृजन और सत्यापन

प्रोटोकॉल तत्व, जैसे उद्देश्य, मोड और पैडिंग, साथ ही एक्सेस कंट्रोल बाधाएं , तब निर्दिष्ट की जाती हैं जब कुंजी उत्पन्न या आयात की जाती है और स्थायी रूप से कुंजी से जुड़ी होती है, यह सुनिश्चित करते हुए कि कुंजी का उपयोग किसी अन्य तरीके से नहीं किया जा सकता है।

उपरोक्त सूची के अलावा, एक और सेवा है जो कीमास्टर कार्यान्वयन प्रदान करता है, लेकिन जिसे एपीआई के रूप में प्रदर्शित नहीं किया जाता है: रैंडम नंबर जेनरेशन। इसका उपयोग आंतरिक रूप से कुंजी, इनिशियलाइज़ेशन वेक्टर्स (IVs), रैंडम पैडिंग और सुरक्षित प्रोटोकॉल के अन्य तत्वों के निर्माण के लिए किया जाता है जिनके लिए रैंडमनेस की आवश्यकता होती है।

आवश्यक आदिम

सभी कीमास्टर कार्यान्वयन प्रदान करते हैं:

  • आरएसए
    • 2048, 3072, और 4096-बिट कुंजी समर्थन
    • सार्वजनिक प्रतिपादक F4 (2^16+1) के लिए समर्थन
    • आरएसए हस्ताक्षर के लिए पैडिंग मोड:
      • आरएसएएसएसए-पीएसएस ( PaddingMode::RSA_PSS )
      • RSASSA-PKCS1-v1_5 ( PaddingMode::RSA_PKCS1_1_5_SIGN )
    • आरएसए हस्ताक्षर के लिए डाइजेस्ट मोड:
      • SHA-256
    • आरएसए एन्क्रिप्शन/डिक्रिप्शन के लिए पैडिंग मोड:
      • बिना गद्देदार
      • आरएसएईएस-ओएईपी ( PaddingMode::RSA_OAEP )
      • RSAES-PKCS1-v1_5 ( PaddingMode::RSA_PKCS1_1_5_ENCRYPT )
  • ईसीडीएसए
    • एनआईएसटी पी-224, पी-256, पी-384, और पी-521 कर्व्स का उपयोग करके क्रमशः 224, 256, 384 और 521-बिट कुंजी समर्थन समर्थित हैं।
    • ईसीडीएसए के लिए डाइजेस्ट मोड:
      • कोई डाइजेस्ट नहीं (अप्रत्याशित, भविष्य में हटा दिया जाएगा)
      • SHA-256
  • एईएस
    • 128 और 256-बिट कुंजियाँ समर्थित हैं
    • सीबीसी , सीटीआर, ईसीबी, और जीसीएम। जीसीएम कार्यान्वयन 96 बिट्स से छोटे या 96 बिट्स के अलावा गैर लंबाई वाले टैग के उपयोग की अनुमति नहीं देता है।
    • पैडिंग मोड PaddingMode::NONE और PaddingMode::PKCS7 CBC और ECB मोड के लिए समर्थित है। बिना किसी पैडिंग के, यदि इनपुट ब्लॉक आकार का गुणक नहीं है तो सीबीसी या ईसीबी मोड एन्क्रिप्शन विफल हो जाता है।
  • HMAC SHA-256 , कम से कम 32 बाइट्स तक की किसी भी कुंजी आकार के साथ।

कीमास्टर कार्यान्वयन के लिए SHA1 और SHA2 परिवार के अन्य सदस्यों (SHA-224, SHA384 और SHA512) की पुरजोर अनुशंसा की जाती है। यदि हार्डवेयर कीमास्टर कार्यान्वयन उन्हें प्रदान नहीं करता है तो कीस्टोर उन्हें सॉफ़्टवेयर में प्रदान करता है।

अन्य प्रणालियों के साथ अंतरसंचालनीयता के लिए कुछ प्राइमेटिव्स की भी अनुशंसा की जाती है:

  • आरएसए के लिए छोटे कुंजी आकार
  • आरएसए के लिए मनमाने सार्वजनिक प्रतिपादक

कुंजी अभिगम नियंत्रण

हार्डवेयर-आधारित कुंजियाँ जिन्हें डिवाइस से कभी नहीं निकाला जा सकता है, अधिक सुरक्षा प्रदान नहीं करती हैं यदि कोई हमलावर उन्हें अपनी इच्छानुसार उपयोग कर सकता है (हालाँकि वे उन कुंजियों की तुलना में अधिक सुरक्षित हैं जिन्हें बाहर निकाला जा सकता है )। इस प्रकार, यह महत्वपूर्ण है कि कीस्टोर एक्सेस नियंत्रण लागू करे।

अभिगम नियंत्रण को टैग/मूल्य जोड़े की "प्राधिकरण सूची" के रूप में परिभाषित किया गया है। प्राधिकरण टैग 32-बिट पूर्णांक हैं और मान विभिन्न प्रकार के हैं। एकाधिक मान निर्दिष्ट करने के लिए कुछ टैग दोहराए जा सकते हैं। किसी टैग को दोहराया जा सकता है या नहीं, यह टैग के दस्तावेज़ में निर्दिष्ट है। जब एक कुंजी बनाई जाती है, तो कॉलर एक प्राधिकरण सूची निर्दिष्ट करता है। कीस्टोर में अंतर्निहित कीमास्टर कार्यान्वयन कुछ अतिरिक्त जानकारी निर्दिष्ट करने के लिए सूची को संशोधित करता है, जैसे कि कुंजी में रोलबैक सुरक्षा है या नहीं, और एक "अंतिम" प्राधिकरण सूची लौटाता है, जो लौटाई गई कुंजी ब्लॉब में एन्कोडेड होती है। यदि अंतिम प्राधिकरण सूची संशोधित की जाती है, तो किसी भी क्रिप्टोग्राफ़िक ऑपरेशन के लिए कुंजी का उपयोग करने का कोई भी प्रयास विफल हो जाता है।

कीमास्टर 2 और उससे पहले के लिए, संभावित टैग का सेट गणना keymaster_authorization_tag_t में परिभाषित किया गया है और स्थायी रूप से तय किया गया है (हालांकि इसे बढ़ाया जा सकता है)। नामों के आगे KM_TAG लगाया गया था। टैग आईडी के शीर्ष चार बिट्स का उपयोग प्रकार को इंगित करने के लिए किया जाता है।

कीमास्टर 3 ने KM_TAG उपसर्ग को Tag:: में बदल दिया।

संभावित प्रकारों में शामिल हैं:

ENUM : कई टैग के मान गणना में परिभाषित किए गए हैं। उदाहरण के लिए, TAG::PURPOSE के संभावित मानों को enum keymaster_purpose_t में परिभाषित किया गया है।

ENUM_REP : ENUM के समान, सिवाय इसके कि टैग को प्राधिकरण सूची में दोहराया जा सकता है। दोहराव एकाधिक अधिकृत मानों को इंगित करता है। उदाहरण के लिए, एक एन्क्रिप्शन कुंजी में KeyPurpose::ENCRYPT और KeyPurpose::DECRYPT होने की संभावना है।

UINT : 32-बिट अहस्ताक्षरित पूर्णांक। उदाहरण: TAG::KEY_SIZE

UINT_REP : UINT के समान, सिवाय इसके कि टैग को प्राधिकरण सूची में दोहराया जा सकता है। दोहराव एकाधिक अधिकृत मानों को इंगित करता है।

ULONG : 64-बिट अहस्ताक्षरित पूर्णांक। उदाहरण: TAG::RSA_PUBLIC_EXPONENT

ULONG_REP : ULONG के समान, सिवाय इसके कि टैग को प्राधिकरण सूची में दोहराया जा सकता है। दोहराव एकाधिक अधिकृत मानों को इंगित करता है।

DATE : दिनांक/समय मान, 1 जनवरी 1970 से मिलीसेकंड के रूप में व्यक्त किया गया। उदाहरण: TAG::PRIVKEY_EXPIRE_DATETIME

BOOL : सही या गलत. यदि टैग मौजूद नहीं है तो BOOL प्रकार का टैग "गलत" माना जाता है और यदि मौजूद है तो "सही" माना जाता है। उदाहरण: TAG::ROLLBACK_RESISTANT

BIGNUM : मनमाना-लंबाई पूर्णांक, बड़े-एंडियन क्रम में बाइट सरणी के रूप में व्यक्त किया गया। उदाहरण: TAG::RSA_PUBLIC_EXPONENT

BYTES : बाइट्स का एक क्रम. उदाहरण: TAG::ROOT_OF_TRUST

हार्डवेयर बनाम सॉफ्टवेयर प्रवर्तन

सभी सुरक्षित हार्डवेयर कार्यान्वयन में समान सुविधाएँ नहीं होती हैं। विभिन्न दृष्टिकोणों का समर्थन करने के लिए, कीमास्टर क्रमशः सुरक्षित और गैर-सुरक्षित विश्व पहुंच नियंत्रण प्रवर्तन, या हार्डवेयर और सॉफ़्टवेयर प्रवर्तन के बीच अंतर करता है।

सभी कार्यान्वयन:

  • सभी प्राधिकरणों का सटीक मिलान लागू करें (प्रवर्तन नहीं)। कुंजी ब्लॉब्स में प्राधिकरण सूचियां ऑर्डरिंग सहित कुंजी पीढ़ी के दौरान लौटाए गए प्राधिकरणों से बिल्कुल मेल खाती हैं। कोई भी बेमेल त्रुटि निदान का कारण बनता है।
  • उन प्राधिकरणों की घोषणा करें जिनके अर्थ संबंधी मूल्य लागू किए गए हैं।

हार्डवेयर-प्रबलित प्राधिकरण घोषित करने के लिए एपीआई तंत्र keymaster_key_characteristics_t संरचना में है। यह प्राधिकरण सूची को दो उप-सूचियों, hw_enforced और sw_enforced में विभाजित करता है। सुरक्षित हार्डवेयर प्रत्येक में उचित मान रखने के लिए ज़िम्मेदार है, जो इस पर आधारित है कि वह क्या लागू कर सकता है।

इसके अलावा, कीस्टोर सभी प्राधिकरणों के सॉफ़्टवेयर-आधारित प्रवर्तन को लागू करता है, चाहे वे सुरक्षित हार्डवेयर द्वारा लागू किए गए हों या नहीं।

उदाहरण के लिए, ट्रस्टज़ोन-आधारित कार्यान्वयन पर विचार करें जो कुंजी समाप्ति का समर्थन नहीं करता है। समाप्ति तिथि वाली कुंजी अभी भी बनाई जा सकती है। उस कुंजी की प्राधिकरण सूची में समाप्ति तिथि के साथ TAG::ORIGINATION_EXPIRE_DATETIME टैग शामिल होगा। मुख्य विशेषताओं के लिए कीस्टोर से अनुरोध करने पर यह टैग sw_enforced सूची में मिलेगा और सुरक्षित हार्डवेयर समाप्ति आवश्यकता को लागू नहीं करेगा। हालाँकि, समाप्ति के बाद कुंजी का उपयोग करने का प्रयास कीस्टोर द्वारा अस्वीकार कर दिया जाएगा।

यदि डिवाइस को सुरक्षित हार्डवेयर के साथ अपग्रेड किया जाता है जो समाप्ति का समर्थन करता है, तो मुख्य विशेषताओं के लिए अनुरोध hw_enforced सूची में TAG::ORIGINATION_EXPIRE_DATETIME मिलेगा, और समाप्ति के बाद कुंजी का उपयोग करने का प्रयास विफल हो जाएगा, भले ही कीस्टोर किसी तरह विकृत या बायपास हो। .

यह निर्धारित करने के बारे में अधिक जानकारी के लिए कि कुंजियाँ हार्डवेयर-समर्थित हैं, कुंजी सत्यापन देखें।

क्रिप्टोग्राफ़िक संदेश निर्माण प्राधिकरण

निम्नलिखित टैग का उपयोग संबंधित कुंजी का उपयोग करके संचालन की क्रिप्टोग्राफ़िक विशेषताओं को परिभाषित करने के लिए किया जाता है: TAG::ALGORITHM , TAG::KEY_SIZE , TAG::BLOCK_MODE , TAG::PADDING , TAG::CALLER_NONCE , और TAG::DIGEST

TAG::PADDING , TAG::DIGEST , और PaddingMode::BLOCK_MODE दोहराए जाने योग्य हैं, जिसका अर्थ है कि कई मान एक ही कुंजी से जुड़े हो सकते हैं, और उपयोग किए जाने वाले मान को ऑपरेशन के समय निर्दिष्ट किया जाता है।

उद्देश्य

कुंजियों में उद्देश्यों का एक संबद्ध सेट होता है, जिसे TAG::PURPOSE टैग के साथ एक या अधिक प्राधिकरण प्रविष्टियों के रूप में व्यक्त किया जाता है, जो परिभाषित करता है कि उनका उपयोग कैसे किया जा सकता है। उद्देश्य हैं:

  • KeyPurpose::ENCRYPT
  • KeyPurpose::DECRYPT
  • KeyPurpose::SIGN
  • KeyPurpose::VERIFY

किसी भी कुंजी में इन उद्देश्यों का कोई भी उपसमूह हो सकता है। ध्यान दें कि कुछ संयोजन सुरक्षा समस्याएँ पैदा करते हैं। उदाहरण के लिए, एक आरएसए कुंजी जिसका उपयोग एन्क्रिप्ट करने और हस्ताक्षर करने दोनों के लिए किया जा सकता है, एक हमलावर को अनुमति देता है जो हस्ताक्षर उत्पन्न करने के लिए सिस्टम को मनमाने डेटा को डिक्रिप्ट करने के लिए मना सकता है।

आयात और निर्यात

कीमास्टर केवल X.509 प्रारूप में सार्वजनिक कुंजियों के निर्यात और इनके आयात का समर्थन करता है:

  • पासवर्ड-आधारित एन्क्रिप्शन के बिना, डीईआर-एन्कोडेड PKCS#8 प्रारूप में सार्वजनिक और निजी कुंजी जोड़े
  • कच्चे बाइट्स के रूप में सममित कुंजी

यह सुनिश्चित करने के लिए कि आयातित कुंजियों को सुरक्षित रूप से जेनरेट की गई कुंजियों से अलग किया जा सकता है, TAG::ORIGIN उपयुक्त कुंजी प्राधिकरण सूची में शामिल किया गया है। उदाहरण के लिए, यदि कोई कुंजी सुरक्षित हार्डवेयर में उत्पन्न की गई थी, तो TAG::ORIGIN मान KeyOrigin::GENERATED के साथ कुंजी विशेषताओं की hw_enforced सूची में पाया जाएगा, जबकि सुरक्षित हार्डवेयर में आयात की गई कुंजी का मान KeyOrigin::IMPORTED होगा। KeyOrigin::IMPORTED

प्रयोक्ता प्रमाणीकरण

सुरक्षित कीमास्टर कार्यान्वयन उपयोगकर्ता प्रमाणीकरण को लागू नहीं करता है, बल्कि अन्य विश्वसनीय ऐप्स पर निर्भर करता है जो ऐसा करते हैं। इन ऐप्स द्वारा लागू किए जाने वाले इंटरफ़ेस के लिए, गेटकीपर पेज देखें।

उपयोगकर्ता प्रमाणीकरण आवश्यकताओं को टैग के दो सेटों के माध्यम से निर्दिष्ट किया गया है। पहला सेट इंगित करता है कि कौन सा उपयोगकर्ता कुंजी का उपयोग कर सकता है:

  • TAG::ALL_USERS इंगित करता है कि कुंजी सभी उपयोगकर्ताओं द्वारा उपयोग करने योग्य है। यदि मौजूद है, तो TAG::USER_ID और TAG::USER_SECURE_ID मौजूद नहीं है।
  • TAG::USER_ID अधिकृत उपयोगकर्ता की आईडी निर्दिष्ट करने वाला एक संख्यात्मक मान है। ध्यान दें कि यह एंड्रॉइड उपयोगकर्ता आईडी है (बहु-उपयोगकर्ता के लिए), एप्लिकेशन यूआईडी नहीं, और यह केवल गैर-सुरक्षित सॉफ़्टवेयर द्वारा लागू किया गया है। यदि मौजूद है, TAG::ALL_USERS मौजूद नहीं है।
  • TAG::USER_SECURE_ID में 64-बिट संख्यात्मक मान है जो सुरक्षित उपयोगकर्ता आईडी को निर्दिष्ट करता है जो कुंजी के उपयोग को अनलॉक करने के लिए एक सुरक्षित प्रमाणीकरण टोकन में प्रदान किया जाता है। यदि दोहराया जाता है, तो सुरक्षित प्रमाणीकरण टोकन में कोई भी मान प्रदान किए जाने पर कुंजी का उपयोग किया जा सकता है।

दूसरा सेट इंगित करता है कि उपयोगकर्ता को प्रमाणित करने की आवश्यकता है या नहीं। यदि इनमें से कोई भी टैग मौजूद नहीं है, लेकिन TAG::USER_SECURE_ID मौजूद है, तो कुंजी के प्रत्येक उपयोग के लिए प्रमाणीकरण आवश्यक है।

  • NO_AUTHENTICATION_REQUIRED इंगित करता है कि किसी उपयोगकर्ता प्रमाणीकरण की आवश्यकता नहीं है, हालांकि कुंजी का उपयोग अभी भी केवल TAG::USER_ID द्वारा निर्दिष्ट उपयोगकर्ता के रूप में चल रहे ऐप्स द्वारा किया जा सकता है।
  • TAG::AUTH_TIMEOUT एक संख्यात्मक मान है जो सेकंडों में निर्दिष्ट करता है कि कुंजी के उपयोग को अधिकृत करने के लिए उपयोगकर्ता प्रमाणीकरण कितना ताज़ा होना चाहिए। यह केवल निजी/गुप्त कुंजी परिचालनों पर लागू होता है। सार्वजनिक कुंजी संचालन के लिए प्रमाणीकरण की आवश्यकता नहीं होती है। टाइमआउट रिबूट को पार नहीं करता है; रीबूट के बाद, सभी कुंजियाँ "कभी प्रमाणित नहीं होतीं।" यह इंगित करने के लिए टाइमआउट को बड़े मान पर सेट किया जा सकता है कि प्रति बूट एक बार प्रमाणीकरण की आवश्यकता होती है (2^32 सेकंड ~ 136 वर्ष है; संभवतः एंड्रॉइड डिवाइस इससे अधिक बार रीबूट होते हैं)।

ग्राहक बाइंडिंग

क्लाइंट बाइंडिंग, एक विशेष क्लाइंट एप्लिकेशन के साथ एक कुंजी का जुड़ाव, एक वैकल्पिक क्लाइंट आईडी और कुछ वैकल्पिक क्लाइंट डेटा (क्रमशः TAG::APPLICATION_ID और TAG::APPLICATION_DATA ) के माध्यम से किया जाता है। कीस्टोर इन मानों को अपारदर्शी ब्लॉब्स के रूप में मानता है, केवल यह सुनिश्चित करता है कि कुंजी निर्माण/आयात के दौरान प्रस्तुत समान ब्लॉब्स हर उपयोग के लिए प्रस्तुत किए जाते हैं और बाइट-दर-बाइट समान होते हैं। क्लाइंट बाइंडिंग डेटा कीमास्टर द्वारा वापस नहीं किया जाता है। कुंजी का उपयोग करने के लिए कॉल करने वाले को इसे जानना होगा।

यह सुविधा अनुप्रयोगों के संपर्क में नहीं है.

समय सीमा समाप्ति

कीस्टोर दिनांक के अनुसार कुंजी के उपयोग को प्रतिबंधित करने का समर्थन करता है। वैधता की मुख्य शुरुआत और कुंजी समाप्ति को एक कुंजी के साथ जोड़ा जा सकता है और यदि वर्तमान दिनांक/समय वैध सीमा से बाहर है तो कीमास्टर कुंजी संचालन करने से इंकार कर देता है। मुख्य वैधता सीमा TAG::ACTIVE_DATETIME , TAG::ORIGINATION_EXPIRE_DATETIME , और TAG::USAGE_EXPIRE_DATETIME के साथ निर्दिष्ट है। "उत्पत्ति" और "उपयोग" के बीच का अंतर इस बात पर आधारित है कि कुंजी का उपयोग किसी नए सिफरटेक्स्ट/हस्ताक्षर/आदि को "उत्पन्न" करने के लिए किया जा रहा है, या मौजूदा सिफरटेक्स्ट/हस्ताक्षर/आदि का "उपयोग" करने के लिए किया जा रहा है। ध्यान दें कि यह भेद अनुप्रयोगों के सामने नहीं आता है।

TAG::ACTIVE_DATETIME , TAG::ORIGINATION_EXPIRE_DATETIME , और TAG::USAGE_EXPIRE_DATETIME टैग वैकल्पिक हैं। यदि टैग अनुपस्थित हैं, तो यह माना जाता है कि प्रश्न में कुंजी का उपयोग हमेशा संदेशों को डिक्रिप्ट/सत्यापित करने के लिए किया जा सकता है।

चूँकि दीवार-घड़ी का समय गैर-सुरक्षित दुनिया द्वारा प्रदान किया जाता है, इसलिए यह संभावना नहीं है कि समाप्ति-संबंधित टैग हार्डवेयर-प्रबलित सूची में होंगे। समाप्ति के हार्डवेयर प्रवर्तन के लिए आवश्यक होगा कि सुरक्षित दुनिया किसी तरह विश्वसनीय समय और डेटा प्राप्त करे, उदाहरण के लिए एक विश्वसनीय रिमोट टाइमसर्वर के साथ चुनौती प्रतिक्रिया प्रोटोकॉल के माध्यम से।

विश्वास बंधन की जड़

कीस्टोर को कुंजी को विश्वास की जड़ से बांधने की आवश्यकता होती है, जो स्टार्टअप के दौरान कीमास्टर सुरक्षित हार्डवेयर को प्रदान की गई एक बिटस्ट्रिंग है, अधिमानतः बूटलोडर द्वारा। यह बिटस्ट्रिंग क्रिप्टोग्राफ़िक रूप से कीमास्टर द्वारा प्रबंधित प्रत्येक कुंजी से बंधी हुई है।

ट्रस्ट की जड़ में सार्वजनिक कुंजी शामिल होती है जिसका उपयोग बूट छवि पर हस्ताक्षर और डिवाइस की लॉक स्थिति को सत्यापित करने के लिए किया जाता है। यदि सार्वजनिक कुंजी को एक अलग सिस्टम छवि का उपयोग करने की अनुमति देने के लिए बदल दिया जाता है या यदि लॉक स्थिति बदल दी जाती है, तो पिछले सिस्टम द्वारा बनाई गई कोई भी कीमास्टर-संरक्षित कुंजी उपयोग योग्य नहीं है, जब तक कि विश्वास की पिछली जड़ को बहाल नहीं किया जाता है और एक सिस्टम उस कुंजी द्वारा हस्ताक्षरित है बूट किया गया है। लक्ष्य किसी हमलावर द्वारा स्थापित ऑपरेटिंग सिस्टम के लिए कीमास्टर कुंजियों का उपयोग करना असंभव बनाकर सॉफ़्टवेयर-प्रबलित कुंजी पहुंच नियंत्रण के मूल्य को बढ़ाना है।

स्टैंडअलोन कुंजियाँ

कुछ कीमास्टर सुरक्षित हार्डवेयर एन्क्रिप्टेड कुंजी सामग्री के बजाय कुंजी सामग्री को आंतरिक रूप से संग्रहीत करने और हैंडल लौटाने का विकल्प चुन सकते हैं। या ऐसे अन्य मामले भी हो सकते हैं जिनमें कुंजियों का उपयोग तब तक नहीं किया जा सकता जब तक कि कोई अन्य गैर-सुरक्षित या सुरक्षित विश्व सिस्टम घटक उपलब्ध न हो। कीमास्टर एचएएल कॉल करने वाले को TAG::STANDALONE टैग के माध्यम से कुंजी को "स्टैंडअलोन" बनाने का अनुरोध करने की अनुमति देता है, जिसका अर्थ है कि ब्लॉब और रनिंग कीमास्टर सिस्टम के अलावा किसी अन्य संसाधन की आवश्यकता नहीं है। कुंजी से जुड़े टैग का निरीक्षण यह देखने के लिए किया जा सकता है कि कुंजी स्टैंडअलोन है या नहीं। वर्तमान में, केवल दो मान परिभाषित हैं:

  • KeyBlobUsageRequirements::STANDALONE
  • KeyBlobUsageRequirements::REQUIRES_FILE_SYSTEM

यह सुविधा अनुप्रयोगों के संपर्क में नहीं है.

वेग

जब इसे बनाया जाता है, तो अधिकतम उपयोग वेग को TAG::MIN_SECONDS_BETWEEN_OPS के साथ निर्दिष्ट किया जा सकता है। यदि कोई ऑपरेशन TAG::MIN_SECONDS_BETWEEN_OPS सेकंड से कम समय पहले किया गया था, तो TrustZone कार्यान्वयन उस कुंजी के साथ क्रिप्टोग्राफ़िक संचालन करने से इंकार कर देता है।

वेग सीमा को लागू करने का सरल तरीका प्रमुख आईडी और अंतिम-उपयोग टाइमस्टैम्प की एक तालिका है। यह तालिका संभवतः सीमित आकार की होगी, लेकिन इसमें कम से कम 16 प्रविष्टियाँ होंगी। इस घटना में कि तालिका भरी हुई है और कोई प्रविष्टि अद्यतन या खारिज नहीं की जा सकती है, सुरक्षित हार्डवेयर कार्यान्वयन "सुरक्षित रूप से विफल" होता है, जब तक कि प्रविष्टियों में से एक की समय सीमा समाप्त नहीं हो जाती, तब तक सभी वेग-सीमित कुंजी संचालन को अस्वीकार करना पसंद किया जाता है। रिबूट पर सभी प्रविष्टियों का समाप्त होना स्वीकार्य है।

कुंजी को TAG::MAX_USES_PER_BOOT के साथ प्रति बूट n उपयोग तक सीमित किया जा सकता है। इसके लिए एक ट्रैकिंग टेबल की भी आवश्यकता होती है, जिसमें कम से कम चार चाबियाँ होती हैं और यह सुरक्षित भी होती है। ध्यान दें कि एप्लिकेशन प्रति-बूट सीमित कुंजी बनाने में असमर्थ होंगे। यह सुविधा कीस्टोर के माध्यम से प्रदर्शित नहीं होती है और सिस्टम संचालन के लिए आरक्षित है।

यह सुविधा अनुप्रयोगों के संपर्क में नहीं है.

यादृच्छिक संख्या जनरेटर पुनः बीजारोपण

क्योंकि सुरक्षित हार्डवेयर मुख्य सामग्री और इनिशियलाइज़ेशन वेक्टर (IVs) के लिए यादृच्छिक संख्याएँ उत्पन्न करता है, और क्योंकि हार्डवेयर यादृच्छिक संख्या जनरेटर हमेशा पूरी तरह से भरोसेमंद नहीं हो सकते हैं, कीमास्टर HAL क्लाइंट को अतिरिक्त एन्ट्रापी प्रदान करने की अनुमति देने के लिए एक इंटरफ़ेस प्रदान करता है जिसे यादृच्छिक में मिलाया जाएगा। संख्याएँ उत्पन्न हुईं।

प्राथमिक बीज स्रोत के रूप में हार्डवेयर यादृच्छिक-संख्या जनरेटर का उपयोग करें। बाहरी एपीआई के माध्यम से प्रदान किया गया बीज डेटा संख्या निर्माण के लिए उपयोग की जाने वाली यादृच्छिकता का एकमात्र स्रोत नहीं हो सकता है। इसके अलावा, उपयोग किए जाने वाले मिश्रण ऑपरेशन को यह सुनिश्चित करने की आवश्यकता है कि यदि बीज स्रोतों में से कोई भी अप्रत्याशित है तो यादृच्छिक आउटपुट अप्रत्याशित है।

यह सुविधा अनुप्रयोगों के सामने नहीं आती है, लेकिन फ्रेमवर्क द्वारा उपयोग की जाती है, जो नियमित रूप से जावा सिक्योररैंडम इंस्टेंस से प्राप्त अतिरिक्त एन्ट्रापी को सुरक्षित हार्डवेयर में प्रदान करती है।