CryptoKit ट्यूटोरियल। IOS13 ऐप्स पर CryptoKit का उपयोग कैसे करें

Unsplash पर Zac Wolff द्वारा फोटो

इस लेख में, हम CryptoKit के लिए एक परिचय ट्यूटोरियल देखने जा रहे हैं, Apple द्वारा WWDC19 पर प्रस्तुत किया गया है, और इसे iOS13 के लिए विकसित अनुप्रयोगों में कैसे उपयोग किया जा सकता है। CryptoKit, उदाहरण के लिए, सार्वजनिक और निजी कुंजियों के आदान-प्रदान की अनुमति देता है, ताकि आपको iPhone में क्रिप्टोकरेंसी (बिटकॉइन, उदाहरण के लिए) के साथ खरीदारी करने के लिए मिल सके।

CryptoKit डेवलपर्स को अनुमति देता है:

  • हैश बनाएँ और तुलना करें।
  • सममित क्रिप्टोग्राफी का उपयोग करके संदेश एन्क्रिप्शन और प्रमाणीकरण।
  • डिजिटल हस्ताक्षर बनाने और मूल्यांकन करने के लिए सार्वजनिक कुंजियों का उपयोग।

CryptoKit का उपयोग सरल है और इसमें निम्न स्तर के एपीआई ज्ञान या मैन्युअल रूप से मेमोरी प्रबंधन की आवश्यकता नहीं होती है।

मुख्य कार्य जो क्रिप्टोकरेंसी के साथ किए जा सकते हैं

हैशिंग

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

  • SHA256
  • SHA384
  • SHA512

इस तरह हम अतीत की तुलना में हैश मूल्यों को सरल तरीके से प्राप्त करते हैं:

Apple कुछ एल्गोरिदम तक पहुँच प्रदान करता है जिसे वह पिछड़े संगतता कारणों से MD5 और SHA1 जैसे असुरक्षित मानता है। इसके लिए हमें enum Insecure का उपयोग करना चाहिए:

डिजिटल हस्ताक्षर बनाएं और मान्य करें

डिजिटल हस्ताक्षर का उपयोग किसी संदेश या डेटा की प्रामाणिकता को सत्यापित करने के लिए किया जाता है। यह प्रक्रिया कई बार दैनिक रूप से, या तो ईमेल में, वित्तीय लेनदेन में या https पृष्ठों को एक्सेस करते समय की जाती है। Cryptokit डिजिटल हस्ताक्षर बनाने और सत्यापित करने के लिए चार अलग-अलग तरीकों का समर्थन करता है:

  • Curve25519
  • P521
  • P384
  • P256

इस प्रणाली का उपयोग करने के लिए, हमें पहले एक सार्वजनिक और एक निजी कुंजी उत्पन्न करनी होगी:

सामग्री पर हस्ताक्षर करने के लिए हम निजी कुंजी का उपयोग करते हैं (जिसमें सार्वजनिक कुंजी भी शामिल होती है) जो हमने प्राप्त की है:

सार्वजनिक कुंजी के साथ हम जांच सकते हैं कि डिजिटल हस्ताक्षर मान्य है या नहीं:

डेटा एन्क्रिप्शन

आजकल डेटा एन्क्रिप्शन का बहुत महत्व है, क्योंकि यह आपकी गोपनीयता की अनुमति देता है। CryptoKit दो प्रकार के एन्क्रिप्शन एल्गोरिदम का समर्थन करता है:

  • एईएस GCM
  • ChaChaPoly (यह मोबाइल वातावरण में पसंद किया जाता है क्योंकि यह तेज है)।

हम डेटा का एन्क्रिप्शन और डिक्रिप्शन सरल तरीके से कर सकते हैं:

इस स्थिति में, डेटा एन्क्रिप्शन में हम ChaChaPoly.SedBox प्रकार का एक ऑब्जेक्ट प्राप्त करते हैं (जो एक डेटा कंटेनर है जिसे केवल एन्क्रिप्शन कुंजी के साथ एक्सेस किया जा सकता है)। इस ऑब्जेक्ट में संयुक्त संपत्ति शामिल है, जिसके बदले में तीन गुण हैं:

  • nonce: यह डेटा एन्क्रिप्शन में उपयोग किया जाने वाला एक मनमाना नंबर है।
  • सिफरटेक्स्ट: एन्क्रिप्टेड डेटा हैं, इनपुट डेटा के समान आकार के साथ।
  • टैग: यह एक ऑथेंटिकेशन लेबल है और डेटा को बिना हमें देखे बदलने से रोकता है।

कुंजी साझा करना

एक कुंजी समझौता प्रोटोकॉल एक ऐसी प्रक्रिया है जिसके दौरान दो पक्ष सुरक्षित रूप से एक साझा एन्क्रिप्शन कुंजी चुनते हैं जिसका उपयोग उन डेटा को साइन और एन्क्रिप्ट करने के लिए किया जा सकता है जिन्हें वे एक दूसरे के साथ साझा करना चाहते हैं। यह अनधिकृत पार्टियों को डेटा तक पहुंचने की अनुमति भी देता है।

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

अब, दोनों पक्ष अपनी सार्वजनिक कुंजी को एक दूसरे के साथ प्रकाशित कर सकते हैं और साझा कर सकते हैं (उपयोगकर्ता A अपनी सार्वजनिक कुंजी साझा करता है उपयोगकर्ता B, और इसके विपरीत):

इसके बाद, उपयोगकर्ता A अपनी निजी कुंजी और उपयोगकर्ता B की सार्वजनिक कुंजी के साथ एक गुप्त साझा करता है। उपयोगकर्ता B को वही करना चाहिए और सत्यापित करना चाहिए कि प्राप्त की गई कुंजियाँ समान हैं:

अब हम सूचना को एन्क्रिप्ट करने के लिए उत्पन्न सममित कुंजी का उपयोग कर सकते हैं जैसा कि हमने पहले देखा है (या तो एईएस-जीसीएम एल्गोरिथ्म या चाउलपॉली के माध्यम से)।

निष्कर्ष

जानकारी (CommonCrypto) को एन्क्रिप्ट करने के लिए Apple में प्रयुक्त पिछले सिस्टम के विपरीत, CryptoKit उच्च स्तर है, इसलिए इसका उपयोग करना सरल है। इसमें सबसे आम एन्क्रिप्शन एल्गोरिदम, साथ ही सबसे अधिक उपयोग किए जाने वाले संचालन शामिल हैं: हैशिंग, एन्क्रिप्शन और कुंजी साझाकरण।

मूल रूप से https://www.raulferrergarcia.com पर 17 फरवरी, 2020 को प्रकाशित किया गया।

यह सभी देखें

मैं अपनी निजी वेबसाइट के लिए .org डोमेन कैसे प्राप्त करूं? नौसिखिया पढ़ने के लिए कौन सा लिनक्स कर्नेल संस्करण का स्रोत कोड बेहतर है? मैं एक पूर्ण वेब विकास कैसे सीख सकता हूं, जो कि फ्रंट-एंड और बैकएंड दोनों से ही हो? एक फ्रीलांस लेखक को प्रति पृष्ठ कितना चार्ज करना चाहिए? मेरे पास एक वेबसाइट के लिए एक ठोस विचार है, हालांकि मैं एक वेब डेवलपर नहीं हूं। मुझे कैसे शुरू करना चाहिए?मुझे मोबाइल के लिए एंड्रॉइड या आईओएस ऐप विकसित करने का विचार है। यह कितना खर्च होगा और मैं कहां से शुरू कर सकता हूं?मैं जितनी जल्दी हो सके वेब डेवलपमेंट में पैसा कैसे शुरू कर सकता हूं? मुझे कैसे पता चलेगा कि मैं iOS ऐप बनाते समय सही दिशा में जा रहा हूं?