पीसी के लिए Play Integrity API की मदद से यह पता किया जा सकता है कि इंटरैक्शन और सर्वर के अनुरोध, किसी भरोसेमंद पीसी डिवाइस से किए जा रहे हैं या नहीं. इस सुविधा की मदद से, ऐसे इंटरैक्शन का पता लगाएं जो जोखिम भरे और धोखाधड़ी वाले हो सकते हैं. साथ ही, उनके ख़िलाफ़ सही कार्रवाई करें.
यह एपीआई, ऐसे नतीजे दिखाता है जिनसे आपको संभावित खतरों का पता लगाने में मदद मिलती है. जैसे:
- जोखिम भरे डिवाइस और एनवायरमेंट:
deviceIntegrity
नतीजे से आपको यह पता चलता है कि आपका ऐप्लिकेशन, किसी भरोसेमंद पीसी डिवाइस पर चल रहा है या Google Play Games for PC के किसी भरोसेमंद इंस्टेंस पर.
एपीआई के साथ इंटिग्रेट करना
अपने ऐप्लिकेशन में पीसी के लिए Play Integrity API को इंटिग्रेट करने के लिए, आपको सबसे पहले Google Cloud Console में शुरुआती सेटअप करना होगा. इसके बाद, आपको हर इंटिग्रिटी चेक के लिए यह तरीका अपनाना होगा:
- इंटिग्रिटी टोकन तैयार करना
- इंटिग्रिटी टोकन का अनुरोध करना
- टोकन के डेटा का अनुरोध करना
Google Cloud Console में शुरुआती सेटअप
Play Integrity API को कॉल करने वाले हर ऐप्लिकेशन या एसडीके को, Google Cloud प्रोजेक्ट का इस्तेमाल करना होगा. इससे वे अपने कॉल की पुष्टि कर पाएंगे और एपीआई के इस्तेमाल पर नज़र रख पाएंगे. अगर आपको नया Cloud प्रोजेक्ट बनाना है या आपका ऐप्लिकेशन सिर्फ़ Google Play के बाहर डिस्ट्रिब्यूट किया जाता है, तो Google Cloud Console से Play Integrity API के जवाब पाने की सुविधा चालू की जा सकती है.
Google Cloud Console में, नया Cloud प्रोजेक्ट बनाएं या कोई ऐसा मौजूदा Cloud प्रोजेक्ट चुनें जिसे आपको पीसी के लिए Play Integrity API के साथ इस्तेमाल करना है. एपीआई और सेवाएं पर जाएं. एपीआई और सेवाएं चालू करें को चुनें. Play Integrity API खोजें. इसके बाद, इसे चालू करें. अब अपने ऐप्लिकेशन में Play Integrity API को इंटिग्रेट किया जा सकता है.
पहला चरण: इंटिग्रिटी टोकन तैयार करना
void PrepareIntegrityToken( const PrepareIntegrityTokenParams & params, PrepareIntegrityTokenContinuation continuation )
इंटीग्रिटी टोकन का अनुरोध करने से पहले (RequestIntegrityToken देखें), आपको Play Integrity API को तैयार करना होगा (या "वार्म अप" करना होगा). इससे Google Play को डिवाइस पर, पुष्टि करने की जानकारी को स्मार्ट तरीके से कैश मेमोरी में सेव करने की अनुमति मिलती है. ऐसा इसलिए किया जाता है, ताकि जब आप इंटिग्रिटी के फ़ैसले का अनुरोध करें, तो अहम पाथ पर इंतज़ार का समय कम हो जाए.
अनुरोध पूरा होने पर, जारी रखने की प्रोसेस को PrepareIntegrityTokenResultValue के साथ कॉल किया जाएगा. इसमें RequestTokenData शामिल होगा. इसका इस्तेमाल, इंटिग्रिटी टोकन का अनुरोध करने के लिए किया जाना चाहिए. इस डेटा को इन-मेमोरी में कैश मेमोरी में सेव किया जाना चाहिए. साथ ही, RequestIntegrityToken को कॉल करने के लिए, ऐप्लिकेशन के सेशन की अवधि के दौरान इसका फिर से इस्तेमाल किया जाना चाहिए. PrepareIntegrityToken को सिर्फ़ तब कॉल किया जाना चाहिए, जब आपके ऐप्लिकेशन को यह पता चले कि पूरी सुरक्षा की जांच के नतीजे का फिर से आकलन करना ज़रूरी है.
जानकारी | |
---|---|
पैरामीटर | params : Google Cloud प्रोजेक्ट नंबर वाले पैरामीटर. continuation : यह एसिंक कॉलबैक है. इसका इस्तेमाल, इंटिग्रिटी टोकन देने वाले को वापस भेजने के लिए किया जाता है. |
दूसरा चरण: इंटिग्रिटी टोकन का अनुरोध करना
void RequestIntegrityToken( const RequestIntegrityTokenParams & params, RequestIntegrityTokenContinuation continuation )
इंटिग्रिटी टोकन, आपके ऐप्लिकेशन के लिए एक ऐसा तरीका है जिससे यह पुष्टि की जा सकती है कि डिवाइस से कोई छेड़छाड़ नहीं की गई है. उदाहरण के लिए, आपका बैकएंड सर्वर इंटिग्रिटी टोकन का इस्तेमाल करके, इन चीज़ों की पुष्टि कर सकता है:
- डिवाइस भरोसेमंद है या नहीं: इससे आपको यह पता चलता है कि आपका ऐप्लिकेशन, किसी ऐसे भरोसेमंद डिवाइस पर चल रहा है या नहीं जिस पर Google Play Games for PC का भरोसेमंद इंस्टेंस मौजूद है और जिसमें कोई छेड़छाड़ नहीं की गई है.
अगर आपको पीसी पर Play Integrity API की मदद से, अपने ऐप्लिकेशन में किसी उपयोगकर्ता की कार्रवाई की जांच करनी है, तो छेड़छाड़ वाले हमलों को कम करने के लिए, RequestIntegrityTokenParams::request_hash फ़ील्ड का इस्तेमाल किया जा सकता है. उदाहरण के लिए, कोई गेम खिलाड़ी के स्कोर की जानकारी, गेम के बैकएंड सर्वर को भेज सकता है. साथ ही, आपका सर्वर यह पुष्टि करना चाहता है कि इस स्कोर में किसी प्रॉक्सी सर्वर ने कोई बदलाव नहीं किया है. Play Integrity API, इस फ़ील्ड में सेट की गई वैल्यू को हस्ताक्षर किए गए इंटिग्रिटी रिस्पॉन्स में दिखाता है. requestHash
के बिना, इंटिग्रिटी टोकन सिर्फ़ डिवाइस से जुड़ा होगा. हालांकि, यह किसी खास अनुरोध से नहीं जुड़ा होगा. इससे हमला होने की आशंका बढ़ जाती है.
पूरी सुरक्षा की जांच के नतीजे का अनुरोध करते समय, इस समस्या को कम करने के लिए:
- उपयोगकर्ता की कार्रवाई या सर्वर के अनुरोध से, सभी काम के अनुरोध पैरामीटर (जैसे, अनुरोध के स्टेबल सीरियलाइज़ेशन का SHA256) का डाइजेस्ट कंप्यूट करें.
- RequestIntegrityTokenParams::request_hash फ़ील्ड को डाइजेस्ट पर सेट करें.
जानकारी | |
---|---|
पैरामीटर | params : ऐसे पैरामीटर जिनमें तैयार किया गया RequestTokenData और इंटिग्रिटी की जांच के अनुरोध का हैश शामिल होता है. continuation : डेटा को वापस भेजने के लिए, एसिंक कॉलबैक. |
तीसरा चरण: टोकन डेटा का अनुरोध करना
पूरी सुरक्षा की जांच के नतीजे का अनुरोध करने के बाद, Play Integrity API एक एन्क्रिप्ट (सुरक्षित) किया गया रिस्पॉन्स टोकन उपलब्ध कराता है. डिवाइस इंटिग्रिटी के नतीजे पाने के लिए, आपको Google के सर्वर पर इंटिग्रिटी टोकन को डिक्रिप्ट करना होगा. इसके लिए, यह तरीका अपनाएं:
- अपने ऐप्लिकेशन से लिंक किए गए Google Cloud प्रोजेक्ट में, एक सेवा खाता बनाएं.
अपने ऐप्लिकेशन के सर्वर पर, playintegrity स्कोप का इस्तेमाल करके, अपने सेवा खाते के क्रेडेंशियल से ऐक्सेस टोकन फ़ेच करें. इसके बाद, यह अनुरोध करें:
playintegrity.googleapis.com/v1/<var>PACKAGE_NAME</var>:decodePcIntegrityToken -d \ '{ "integrity_token": "<var>INTEGRITY_TOKEN</var>" }'
JSON फ़ॉर्मैट में मिले जवाब को पढ़ें.
इसके बाद, पेलोड एक सामान्य टेक्स्ट वाला टोकन होता है. इसमें सुरक्षा की जांच के नतीजे और डेवलपर की दी गई जानकारी के साथ-साथ अन्य जानकारी भी शामिल होती है. टोकन का फ़ॉर्मैट इस तरह होता है:
{
"requestDetails": { ... },
"deviceIntegrity": { ... },
}
हर इंटिग्रिटी वर्डक की जांच करने से पहले, आपको यह देखना होगा कि requestDetails
फ़ील्ड में दी गई वैल्यू, मूल अनुरोध में दी गई वैल्यू से मेल खाती हों. यहां दिए गए सेक्शन में, हर फ़ील्ड के बारे में ज़्यादा जानकारी दी गई है.
अनुरोध की जानकारी वाला फ़ील्ड
requestDetails
फ़ील्ड में अनुरोध के बारे में जानकारी होती है. इसमें ये शामिल हैं:
स्टैंडर्ड अनुरोधों के लिए, डेवलपर की ओर से requestHash
में दी गई जानकारी और
क्लासिक अनुरोधों के लिए nonce
.
"requestDetails": {
// Application package name this attestation was requested for.
// Note that this field might be spoofed in the middle of the request.
"requestPackageName": "com.package.name",
// The timestamp when the integrity token was requested.
"requestTime": "1675655009345"
// Request hash provided by the developer.
"requestHash": "aGVsbG8gd29scmQgdGhlcmU",
}
ये वैल्यू, मूल अनुरोध की वैल्यू से मेल खानी चाहिए. इसलिए, JSON पेलोड के requestDetails
हिस्से की पुष्टि करें. इसके लिए, पक्का करें कि requestPackageName
और requestHash
, ओरिजनल अनुरोध में भेजे गए डेटा से मेल खाते हों.
डिवाइस इंटिग्रिटी फ़ील्ड
deviceIntegrity
फ़ील्ड में एक वैल्यू deviceRecognitionVerdict
हो सकती है. इसमें एक या उससे ज़्यादा लेबल होते हैं. ये लेबल बताते हैं कि कोई डिवाइस, ऐप्लिकेशन की इंटिग्रिटी को कितनी अच्छी तरह से लागू कर सकता है. अगर कोई डिवाइस किसी भी लेबल की ज़रूरी शर्तें पूरी नहीं करता है, तो deviceIntegrity
फ़ील्ड में deviceRecognitionVerdict
शामिल नहीं होता है.
"deviceIntegrity": {
"deviceRecognitionVerdict": ["MEETS_PC_INTEGRITY"]
}
डिफ़ॉल्ट रूप से, deviceRecognitionVerdict
में ये शामिल हो सकते हैं:
MEETS_PC_INTEGRITY
- अगर ऐप्लिकेशन किसी भरोसेमंद पीसी एनवायरमेंट पर चल रहा है और डिवाइस पर कोई छेड़छाड़ नहीं हुई है, तो यह फ़ंक्शन फ़ैसले की जानकारी देता है.
- खाली (वैल्यू का खाली होना)
- ऐप्लिकेशन किसी ऐसे डिवाइस पर चल रहा है जिस पर हमला होने (जैसे कि एपीआई हुकिंग) या सिस्टम से छेड़छाड़ (जैसे कि रूट किया गया) के संकेत मिले हैं. ऐसा भी हो सकता है कि ऐप्लिकेशन किसी फ़िज़िकल डिवाइस पर न चल रहा हो. उदाहरण के लिए, किसी ऐसे एम्युलेटर पर चल रहा हो जिसमें पूरी सुरक्षा देने वाला Google Play Integrity मौजूद नहीं है.
इस्तेमाल करने की सीमाएं
Play Integrity API के इस्तेमाल की सीमाएं
आपका ऐप्लिकेशन, हर दिन ज़्यादा से ज़्यादा 10,000 अनुरोध कर सकता है. अगर आपके ऐप्लिकेशन को ज़्यादा उपयोगकर्ताओं को मैनेज करना है, तो हर दिन किए जाने वाले अनुरोधों की संख्या बढ़ाने का अनुरोध किया जा सकता है. इसके लिए, यहां दिए गए निर्देशों का पालन करें.
कार्रवाई | हर ऐप्लिकेशन के लिए रोज़ का कोटा | Notes |
---|---|---|
टोकन के लिए अनुरोध | 10,000 | इसे पीसी के लिए Play Integrity API के साथ-साथ, क्लासिक और स्टैंडर्ड अनुरोधों के लिए Play Integrity API के साथ शेयर किया जाता है |
Google के सर्वर पर टोकन को डिक्रिप्ट (सुरक्षित) करना | 10,000 | इसे पीसी के लिए Play Integrity API के साथ-साथ, क्लासिक और स्टैंडर्ड अनुरोधों के लिए Play Integrity API के साथ शेयर किया जाता है |
हर दिन किए जाने वाले अनुरोधों की संख्या को ज़्यादा से ज़्यादा बढ़ाना
हर दिन किए जाने वाले अनुरोधों की संख्या बढ़ाने के लिए, यह ज़रूरी है कि आपका ऐप्लिकेशन किसी अन्य डिस्ट्रिब्यूशन चैनल के साथ-साथ, Google Play पर भी उपलब्ध हो.
हर दिन किए जाने वाले अनुरोधों की संख्या बढ़ाने के लिए, यह तरीका अपनाएं:
- Play Console में, उस Google Cloud प्रोजेक्ट को लिंक करें जिसका इस्तेमाल Play Integrity API के लिए किया जा रहा है.
- पुष्टि करें कि एपीआई लॉजिक को सही से लागू किया जा रहा है. इसमें बार-बार की जाने वाली कोशिशों के लिए सुझाई गई रणनीति भी शामिल है.
- इस फ़ॉर्म का इस्तेमाल करके, कोटा बढ़ाने का अनुरोध करें.
Play Integrity API के अनुरोधों की सीमा को बढ़ाने में एक हफ़्ते तक का समय लग सकता है. इसलिए, हमारा सुझाव है कि आप Google Play Console या Google Cloud Console में, Play Integrity API के इस्तेमाल पर नज़र रखें. यहां अनुरोधों की सीमा से जुड़ी सूचनाएं भी सेट अप की जा सकती हैं, ताकि आपकी सेवा में कोई रुकावट न आए.
कोटा बढ़ने पर, ये बदलाव अपने-आप लागू हो जाते हैं. ये बदलाव, इंटिग्रिटी टोकन जनरेट करने के लिए क्लाइंट कॉल और इंटिग्रिटी टोकन को डिक्रिप्ट और पुष्टि करने के लिए सर्वर कॉल, दोनों पर लागू होते हैं.
सुरक्षा से जुड़ी बातें
Play Integrity API, आपके ऐप्लिकेशन के लिए सबसे ज़्यादा मददगार तब साबित होता है, जब इन सुझाए गए तरीकों का पालन किया जाता है:
गलत इस्तेमाल रोकने के लिए रणनीति बनाना
अगर Play Integrity API को सिर्फ़ गलत इस्तेमाल रोकने के एक तरीके के बजाय, गलत इस्तेमाल रोकने की रणनीति के तौर पर अन्य सिग्नल के साथ इस्तेमाल किया जाता है, तो यह एपीआई सबसे असरदार साबित होता है. अपने ऐप्लिकेशन के लिए, सुरक्षा से जुड़े सबसे सही तरीकों के साथ इस एपीआई का इस्तेमाल करें. डिफ़ॉल्ट रूप से, आपका ऐप्लिकेशन सभी इंस्टॉल के लिए, हर दिन ज़्यादा से ज़्यादा 10,000 अनुरोध कर सकता है. हर दिन किए जाने वाले अनुरोधों की संख्या बढ़ाने का अनुरोध किया जा सकता है.
कार्रवाई करने से पहले, टेलीमेट्री डेटा इकट्ठा करें और अपनी ऑडियंस को समझें
Play Integrity API के फ़ैसलों के आधार पर, अपने ऐप्लिकेशन के व्यवहार में बदलाव करने से पहले, मौजूदा ऑडियंस की मौजूदा स्थिति को समझा जा सकता है. इसके लिए, एपीआई को लागू करें, लेकिन उसे लागू करने के लिए ज़रूरी शर्तें न लगाएं. जब आपको यह पता चल जाए कि आपके ऐप्लिकेशन को इंस्टॉल करने वाले मौजूदा लोगों से किस तरह के फ़ैसले मिल रहे हैं, तब आप नीति उल्लंघन ठीक करने के लिए लागू किए जाने वाले किसी भी तरीके के असर का अनुमान लगा सकते हैं. साथ ही, उसके हिसाब से गलत इस्तेमाल रोकने की रणनीति में बदलाव कर सकते हैं.
सही समय पर, पूरी सुरक्षा की जांच के नतीजे का अनुरोध करना
आपको एपीआई अनुरोध, उस कार्रवाई या सर्वर अनुरोध के समय के आस-पास करना चाहिए जिसके लिए आपको बचाव करना है.
अपने एपीआई अनुरोधों को दोहराना मुश्किल बनाएं
एपीआई अनुरोधों में requestHash नाम का एक फ़ील्ड होता है. इसका इस्तेमाल, छेड़छाड़ और इस तरह के अन्य हमलों से बचाने के लिए किया जाता है. इस फ़ील्ड में, आपको अपने ऐप्लिकेशन के अनुरोध से जुड़ी सभी ज़रूरी वैल्यू का डाइजेस्ट शामिल करना चाहिए. अपने ऐप्लिकेशन के स्टैंडर्ड अनुरोधों को सुरक्षित रखने के लिए, कॉन्टेंट बाइंडिंग का इस्तेमाल करने के तरीके से जुड़े दिशा-निर्देशों का पालन करें.
इंटिग्रिटी के नतीजों को कैश मेमोरी में सेव न करें
सुरक्षा की जांच के नतीजों को कैश मेमोरी में सेव करने से प्रॉक्सी करने का जोखिम बढ़ जाता है. यह एक ऐसा हमला है जिसमें कोई गलत व्यक्ति, किसी भरोसेमंद डिवाइस के नतीजे का गलत इस्तेमाल करता है.
अपने सर्वर से, ऐप्लिकेशन को कई तरह के जवाब भेजना
फ़ैसले के अलग-अलग नतीजों को दोहराना, सर्वर से ऐप्लिकेशन को हर जवाब के लिए, अनुमति दें / अनुमति न दें वाला बाइनरी जवाब भेजने की तुलना में ज़्यादा मुश्किल होता है. उदाहरण के लिए, इससे जुड़ी प्रतिक्रियाओं की एक सीरीज़ का इस्तेमाल किया जा सकता है. जैसे, अनुमति दें, कुछ शर्तों के साथ अनुमति दें, कैप्चा पूरा करने के बाद कुछ शर्तों के साथ अनुमति दें, और अनुमति न दें.
गड़बड़ी के ऐसे मैसेज दिखाएं जिन पर कार्रवाई की जा सकती है
जब भी मुमकिन हो, तब उपयोगकर्ताओं को काम के गड़बड़ी के मैसेज भेजें और उन्हें बताएं कि इन्हें ठीक करने के लिए वे क्या कर सकते हैं.
अचानक आने वाली समस्याओं या आउटेज के लिए प्लान बनाएं
Play के स्टेटस डैशबोर्ड में, Play Integrity API की सेवा की स्थिति के बारे में जानकारी दिखती है. साथ ही, इसमें किसी भी तरह की रुकावट और सेवा के कुछ समय तक उपलब्ध न होने के बारे में भी जानकारी दिखती है. आपको पहले से ही यह तय कर लेना चाहिए कि Play Integrity API के बड़े पैमाने पर काम न करने की स्थिति में, आपका बैकएंड सर्वर किस तरह से काम करेगा.
सेवा की शर्तें और डेटा की सुरक्षा
पीसी के लिए Play Integrity API को ऐक्सेस या इस्तेमाल करने का मतलब है कि आपको Play Integrity API की सेवा की शर्तें मंज़ूर हैं. एपीआई को ऐक्सेस करने से पहले, कृपया इस पर लागू होने वाली सभी शर्तों और नीतियों को पढ़कर समझ लें.
Google Play में, डेटा की सुरक्षा वाला सेक्शन होता है. इसमें डेवलपर, अपने ऐप्लिकेशन के डेटा इकट्ठा करने, शेयर करने, और सुरक्षा से जुड़े तरीकों के बारे में जानकारी देते हैं, ताकि आपके उपयोगकर्ताओं को इसकी जानकारी मिल सके. डेटा फ़ॉर्म भरने में आपकी मदद करने के लिए, यहां दी गई जानकारी देखें. इसमें बताया गया है कि Play Integrity API, डेटा को कैसे मैनेज करता है.