Android की सर्टिफ़िकेट पारदर्शिता नीति

कृपया इस नीति के बारे में कोई भी सवाल, सीटी नीति फ़ोरम पर पूछें: ct-policy@chromium.org

जब किसी कनेक्शन के ट्रांसपोर्ट लेयर सिक्योरिटी (टीएलएस) सर्टिफ़िकेट की पुष्टि हो जाती है, तो यह देखा जाता है कि वह Android प्रमाणपत्र पारदर्शिता (CT) नीति का पालन करता है या नहीं. जिन सर्टिफ़िकेट के साथ Signed Certificate Timestamp (SCT) मौजूद होते हैं और जो इस नीति का पालन करते हैं उन्हें सीटी के मुताबिक माना जाता है.

CT का पालन करने के लिए, यह ज़रूरी है कि सर्टिफ़िकेट और उससे जुड़े SCT, तकनीकी ज़रूरतों के एक सेट को पूरा करते हों. ये ज़रूरतें, सर्टिफ़िकेट की पुष्टि के दौरान लोकप्रिय टीएलएस लाइब्रेरी (इसमें Conscrypt भी शामिल है) लागू करती हैं. इन ज़रूरतों के बारे में इस नीति में बताया गया है.

सीटी लॉग की स्थितियां

Android में सीटी अनुपालन का पता, सीटी लॉग से एसटीसी का आकलन करके लगाया जाता है. साथ ही, यह पक्का किया जाता है कि जांच के समय ये लॉग सही स्थिति में हों. सीटी लॉग की संभावित स्थितियां ये हो सकती हैं:

  • Pending
  • Qualified
  • Usable
  • ReadOnly
  • Retired
  • Rejected

Android में सीटी के नियमों का पालन करने से जुड़ी ज़रूरी शर्तों को समझने में मदद करने के लिए, Chrome के दस्तावेज़ में मौजूद सीटी लॉग के लाइफ़साइकल के बारे में जानकारी देने वाले दस्तावेज़ में इन स्थितियों की परिभाषा, हर स्थिति में लॉग की ज़रूरी शर्तों, और इन स्थितियों का Android के व्यवहार पर क्या असर पड़ता है, इसके बारे में पूरी जानकारी दी गई है.

सीटी के मुताबिक सर्टिफ़िकेट

कोई टीएलएस सर्टिफ़िकेट, सीटी के मुताबिक तब होता है, जब उसके साथ एससीटी का एक सेट दिया गया हो. यह सेट, बाद में बताई गई कम से कम एक शर्त को पूरा करता हो. यह इस बात पर निर्भर करता है कि एससीटी को Android पर कैसे डिलीवर किया जाता है. Android के सीटी लागू करने वाले ऐप्लिकेशन में, सार्वजनिक तौर पर भरोसेमंद सभी टीएलएस सर्टिफ़िकेट का सीटी के मुताबिक होना ज़रूरी है, ताकि उनकी पुष्टि की जा सके. हालांकि, सीटी में लॉग नहीं किए गए या अपर्याप्त एससीटी वाले सर्टिफ़िकेट को गलत तरीके से जारी किया गया नहीं माना जाता.

सीटी के नियमों का पालन करने के लिए किसी सर्टिफ़िकेट का आकलन करते समय, Android कई बातों को ध्यान में रखता है. जैसे, कितने एससीटी मौजूद हैं, एससीटी जारी करने वाले सीटी लॉग को कौन चलाता है, और एससीटी जारी करने वाला सीटी लॉग किस स्थिति में था. यह जानकारी, सर्टिफ़िकेट की पुष्टि करते समय और सीटी लॉग से एससीटी बनाए जाने के समय, दोनों के लिए ज़रूरी होती है.

Android को SCT कैसे दिखाए जाते हैं, इसके आधार पर सीटी के नियमों का पालन करने के लिए, इनमें से किसी एक शर्त को पूरा करना होगा:

एम्बेड किए गए एससीटी:

  1. सीटी लॉग से कम से कम एक एम्बेड किया गया एससीटी, जो जांच के समय Qualified, Usable या ReadOnly था; और
  2. कम से कम N अलग-अलग सीटी लॉग से एम्बेड किए गए ऐसे SCT मौजूद हैं जो जांच के समय Qualified, Usable, ReadOnly या Retired थे. N की वैल्यू यहां दी गई टेबल में बताई गई है; और
  3. ज़रूरी शर्त 2 को पूरा करने वाले एससीटी में से, कम से कम दो एससीटी ऐसे सीटी लॉग ऑपरेटर से जारी किए गए हों जिन्हें Android ने मान्यता दी है. साथ ही,
सर्टिफ़िकेट की लाइफ़टाइम अलग-अलग सीटी लॉग से मिले एससीटी की संख्या
<= 180 दिन 2
> 180 दिन 3

ओसीएसपी या टीएलएस के ज़रिए डिलीवर किए गए एससीटी:

  1. सीटी लॉग से कम से कम दो एससीटी, जो जांच के समय Qualified, Usable या ReadOnly था; और
  2. पहली ज़रूरी शर्त को पूरा करने वाले एससीटी में से, कम से कम दो एससीटी ऐसे सीटी लॉग ऑपरेटर ने जारी किए हों जिन्हें Android मान्यता देता है. साथ ही,

एम्बेड किए गए एससीटी और ओसीएसएपी या टीएलएस का इस्तेमाल करके डिलीवर किए गए एससीटी, दोनों के लिए लॉग ऑपरेटर की यूनीकनेस को इस तरह से तय किया जाता है: लॉग लिस्ट के ऑपरेटर सेक्शन में अलग-अलग एंट्री होना.

ऐसा बहुत कम होता है कि सीटी लॉग के ऑपरेटर में बदलाव हो. अगर ऐसा होता है, तो सीटी लॉग में previous_operators की सूची शामिल होती है. साथ ही, इसमें वह फ़ाइनल टाइमस्टैंप भी शामिल होता है जब पिछले ऑपरेटर ने इस लॉग को ऑपरेट किया था. लॉग ऑपरेटर में बदलाव होने से मौजूदा सर्टिफ़िकेट पर कोई असर न पड़े, इसके लिए हर एससीटी के लॉग ऑपरेटर का पता लगाया जाता है. यह पता लगाया जाता है कि एससीटी जारी करते समय, ऑपरेटर कौन था. इसके लिए, एससीटी के टाइमस्टैंप की तुलना previous_operators के टाइमस्टैंप से की जाती है. ऐसा तब किया जाता है, जब previous_operators मौजूद हो.

अहम जानकारी

अगर हैंडशेक में मौजूद कुछ SCT, CT अनुपालन से जुड़ी ऊपर दी गई किसी एक शर्त को पूरा करते हैं, तो अन्य SCT से, सर्टिफ़िकेट के CT अनुपालन की स्थिति पर कोई असर नहीं पड़ेगा. भले ही, SCT की स्थिति कुछ भी हो.

किसी सर्टिफ़िकेट के सीटी स्टैंडर्ड के मुताबिक होने के लिए, यह ज़रूरी है कि लॉग के Retired टाइमस्टैंप से पहले कोई एसटीसी जारी किया गया हो. अगर ऐसा कोई टाइमस्टैंप मौजूद है, तो Android, सीटी स्टैंडर्ड के मुताबिक होने का आकलन करने के लिए, सभी एसटीसी में से सबसे पहले जारी किए गए एसटीसी का इस्तेमाल करता है. ऐसा, सीटी लॉग Retired टाइमस्टैंप के हिसाब से किया जाता है. इससे उन खास मामलों का पता चलता है जिनमें सर्टिफ़िकेट लॉग करने के अनुरोध सबमिट करने की प्रोसेस के दौरान, कोई सीटी लॉग बंद हो जाता है.

"एम्बेड किया गया एससीटी" का मतलब है कि SignedCertificateTimestampList X.509v3 एक्सटेंशन का इस्तेमाल करके, सर्टिफ़िकेट में ही एससीटी डिलीवर किया गया है. कई टीएलएस सर्वर, ओसीएसपी स्टैपलिंग या टीएलएस एक्सटेंशन के साथ काम नहीं करते. इसलिए, CA को जारी किए गए सर्टिफ़िकेट में SCT एम्बेड करने के लिए तैयार रहना चाहिए, ताकि Android में पुष्टि या ईवी ट्रीटमेंट सही तरीके से हो सके.

Android में सीटी लॉग कैसे जोड़े जाते हैं

सीटी लॉग के Qualified बनने की शर्तें और किन स्थितियों में वे Retired बन सकते हैं, यह Chrome CT लॉग नीति में देखा जा सकता है.

सीटी लागू करने का टाइम आउट

Google हर दिन, नई सीटी लॉग सूची पब्लिश करता है. इसमें नया log_list_timestamp होता है. Android डिवाइस, पुष्टि करने के लिए इस सूची का नया वर्शन दिन में एक बार डाउनलोड करने की कोशिश करेंगे. अगर किसी भी समय डिवाइस पर कोई लॉग सूची उपलब्ध नहीं है या लॉग सूची का टाइमस्टैंप 70 दिनों से पुराना है, तो सीटी लागू करने की सुविधा बंद हो जाएगी. इस टाइमआउट से, सीटी के इकोसिस्टम को यह भरोसा मिलता है कि नए सीटी लॉग, Qualified बनने के बाद तय समय में सुरक्षित तरीके से इस्तेमाल किए जा सकते हैं.

Android लॉग की सूची

Android लॉग की सूची, log_list.json में पब्लिश की जाती है. यह सूची हर दिन अपडेट होती है. यह लॉग सूची, बिना किसी स्टेबल एपीआई, एसएलए या उपलब्धता की गारंटी के उपलब्ध कराई जाती है.

Android, सर्टिफ़िकेट सबमिट करने वालों (जैसे कि सर्टिफ़िकेट देने वाली संस्थाएं) और सीटी मॉनिटर और ऑडिटरों के लिए, सीटी लॉग की सूची उपलब्ध कराता है. ऐसा इसलिए किया जाता है, ताकि वे सीटी और WebPKI के इकोसिस्टम के साथ काम कर सकें या उनके कॉन्टेंट की जांच कर सकें.

Android सीटी लॉग सूची पर बिना अनुमति के भरोसा करने से, न सिर्फ़ आपके उपयोगकर्ताओं को खतरा होता है, बल्कि Android उपयोगकर्ताओं और पूरे सीटी इकोसिस्टम को भी खतरा होता है. अगर आपको अपने ऐप्लिकेशन में सीटी एनफ़ोर्समेंट की सुविधा जोड़नी है, तो Android प्लैटफ़ॉर्म पर काम करने वाले किसी मेकेनिज़्म का इस्तेमाल करें.

इस नीति के मुताबिक नहीं होने वाली Android CT लॉग सूची का इस्तेमाल करने पर, आपको जोखिम हो सकता है. इससे आपका ऐप्लिकेशन या लाइब्रेरी काम करना बंद कर सकती है. Android में यह सुविधा होनी चाहिए कि वह CT इकोसिस्टम में होने वाली घटनाओं के जवाब में, CT लॉग की सूची में बदलाव कर सके. इससे Android का इस्तेमाल करने वाले लोगों की सुरक्षा बनाए रखने में मदद मिलेगी. Android यह पक्का करने के लिए कदम उठा सकता है कि सीटी लॉग सूची पर तीसरे पक्ष की निर्भरता से, Android की ऐसी घटनाओं पर प्रतिक्रिया देने की क्षमता पर असर न पड़े. इनमें, बिना सूचना दिए लॉग सूची में किए गए बदलाव भी शामिल हैं, ताकि बिना अनुमति के इस्तेमाल को रोका जा सके.