كيف يعمل إثبات المعرفة الصفرية ZK (بدون رياضيات)
يعمل إثبات المعرفة الصفرية (ZK) على تشغيل أحدث الإبتكارات في الويب 3. يتم إستخدامها بالفعل في مشاريع مبتكرة مثل Starknet لتنفيذ قابلية التوسع إلى Ethereum.
في جملة واحدة: تسمح لنا إثباتات المعرفة الصفرية (ZK) بإثبات شيء ما دون الكشف عن الشيء نفسه. يحتوي هذا على العديد من التطبيقات الواقعية، مثل التحقق من عمرك دون تقديم معلومات مثل الرخصة او جواز السفر.
ولكن كيف هذا في الواقع يعمل؟ ما الذي يحدث خلف الكواليس لجعل هذا ممكناً؟ في هذا المقال، سوف نغطي كل ما تحتاج إلى معرفته حول طريقة عمل إثباتات ZK، ولكن اترك الرياضيات بعيداً يمكننا التطرق إليها في المقالات القادمة.
كيف تعمل إثباتات المعرفة الصفرية (ZK)؟
لإثبات صحة معلومة دون الكشف عن المعلومة نفسها، هناك طرفان وهم:
- *المُثبِّت (Prover): الشخص الذي يحاول إثبات شيء ما.
- *المُحقق (Verifier): الشخص الذي يحاول التحقق من صحة الإثبات هل هو ”حقيقي“ او ”مزيف“.
في بعض الأحيان، يكون هناك طرف ثالث وهو ”المصدر“، الذي يمنح شهادة (مثل الترخيص) للمُثبت، ويثق المُحقق في ”المصدر“ كمصدر للمعلومات.
لننظر إلى هذا المثال... أريد أن أثبت لأحد المواقع أن عمري فوق 18 عامًا، دون تحميل صورة جواز سفري. وفي هذه الحالة هناك:
- المُثبِّت (Prover): أنا، الشخص الذي يحاول إثبات أنني في السن القانوني.
- المُحقق (Verifier): مالك الموقع، الذي يحاول التحقق من أنني في السن القانوني.
- المصدر (Issuer): الحكومة التي تزودني بجواز السفر. وثيقة يثق بها صاحب الموقع لإثبات عمري.
عادةً، سأحتاج إلى تحميل بعض الصور لجواز سفري إلى الموقع الإلكتروني (وهو أمر مكرر في الطرق المركزية في Web2 ولا أريد فعل هذا دائماً)، فقط لإثبات أن عمري يزيد عن 18 عامًا.
أحد الأمثلة الممتعة التي قدمها ستيف هو تطبيق ذلك على سبونج بوب. يريد سبونج بوب أن يثبت أن اسمه هو في الواقع سبونج بوب، ولكن لكي يفعل ذلك، عليه تقديم رخصته الكاملة للمحقق (ضابط الشرطة أو على ما أعتقد سمكة الشرطة).
تحتوي رخصته على معلومات حساسة مثل تاريخ ميلاده وعنوانه وجنسه والمزيد؛ وكل ذلك ليس ضروريًا لإثبات اسمه؛ ولكن، للأسف، ليس لديه خيار آخر.
سيكون من الأفضل كثيرًا أن يتمكن سبونج بوب من إثبات اسمه، أو إذا تمكنت بطريقة ما من إثبات أن عمري يزيد عن 18 عامًا، دون الحاجة إلى تسليم الكثير من المعلومات الحساسة.
يعد هذا مثالًا رئيسيًا لعرض القيمة الحقيقية لإثباتات ZK من أجل العالم. باستخدام إثباتات ZK، أصبح بإمكاني الآن إثبات جزء من هويتي (أو أي شيء آخر) للمحقق دون تقديم أي جانب من هويتي، أو أي مستندات داعمة لإثبات هذه الحقيقة.
بهذه الطريقة، لا أقوم أبدًا بنقل معلومات شخصية حساسة إلى طرف ثالث لتخزينها في قاعدة بيانات؛ عرضة للهجمات والتسريبات. او أي شيء نخاطر به حاليًا في كل مرة نقوم فيها بالتسجيل في موقع ويب.
كل هذا يبدو رائعا. ولكن كيف تثبت لشخص شيئًا دون الكشف عن أي شيء عنه؟ لهذا، يمكننا التعمق.
ما الذي يشكل براهين المعرفة الصفرية ZK؟
نريد الان إثبات شيء ما، دون الكشف عن كيفية معرفتنا لذلك الشيء، أو ما هو هذا الشيء. كيف يمكننا فعل هذا؟
قبل أن نتمكن من الإجابة على ذلك، تأتي براهين ZK في فئتين رئيسيتين:
- تفاعلية (Interactive).
- غير تفاعلية (Non-interactive).
العناصر والتطبيقات التي نهتم بها في web3 هي غير تفاعلية، ولكن دعنا نتطرق سريعًا إلى ما تشير إليه كلمة "تفاعلية" في سياق براهين ZK.
إثباتات ZK التفاعلية
تخيل أن هناك كهفًا على شكل حلقة وبداخله بوابة تتطلب كلمة مرور سرية للدخول من خلالها.
هدفك كما هو الحال مع المثبت هو أن تثبت لصديقك المُحقق أنك تعرف كلمة السر، والتي تسمى "الشاهد"، دون أن تخبره بكلمة السر الفعلية.
أنت لا تريد أن تخبر صديقك بكلمة المرور، لذا بدلاً من ذلك، ستثبت أنك تعرفها؛ أولاً، الدخول إلى أحد جوانب الكهف بشكل عشوائي؛ دون أن يروا.
في هذه المرحلة، لا يعرف صديقك في أي جانب تقف. ولكن كتحدي، يصرخون إما "A" أو "B"؛ ويطلب منك الخروج من أي من الجانبين A أو B.
في هذا المثال البسيط وقد طلب منك الخروج من الجانب B، يمكن أن يؤدي ذلك إلى نتيجتين:
- ربما دخلت من الجانب A، لذا فأنت بحاجة إلى كلمة المرور لعبور البوابة والخروج إلى الجانب B:
- ربما دخلت من الجانب B، لذا لا تحتاج إلى كلمة المرور؛ يمكنك فقط الخروج دون فعل اي شيء:
وهذا ما يسمى بقصة كهف علي بابا كمرجع.
هذا مثال بسيط لمعرفة أن التفاعلية حل 50/50 سواء كنت تحتاج إلى كلمة المرور لتلبية تحدي صديقك أم لا؛ وبالتالي، فإن القيام بهذا التحدي مرة واحدة فقط لا يكفي لإثبات أنك تعرف كلمة المرور بشكل مؤكد.
هذا يعني أنك ستحتاج إلى إكمال المزيد من تكرارات التحدي، والخروج بشكل صحيح من أي من الجانبين A أو B حتى يشعر صديقك بالرضا؛ أو في العالم النظري حتى يستحيل أن يكون لديك معرفة مزورة بالشاهد (الرمز السري).
وبالتالي، هذا تفاعلي؛ أنت (المُثبت) وصديقك (المُحقق) تتفاعلان ذهابًا وإيابًا. صديقك يخلق تحديًا، وأنت تنشئ ردًا. تتكرر هذه الدورة حتى يقتنع المدقق، وعند هذه النقطة، أثبت المُحقق معرفته بالشاهد (الرمز السري).
يشكل هذا ثلاثة أجزاء لإثبات براهين المعرفة الصفرية (ZK) التفاعلي:
- الشاهد: المعلومة السرية التي يريد المُثبت أن يثبت معرفته بها.
- التحدي: السؤال الذي من المرجح أن يكون الشخص الذي لديه معرفة بالشاهد هو القادر على الإجابة عليه؛ على الرغم من أنه يمكن أن يكون تخمينًا محظوظًا.
- الرد: رد المُثبت على التحدي؛ تحتوي على (نأمل بأن) الإجابة الصحيحة.
يتم تكرار الخطوتين 2 و 3 حتى يقتنع المُثبت.
في نهاية المطاف، بمجرد رضا المُحقق، تنقطع الدورة؛ وبدلا من توليد تحدي آخر، يقبل المُحقق أن يكون لدى المُثبت معرفة بالشاهد (المعلومة السرية).
أثناء نجاح هذه العملية، فإنها تتطلب جولات عديدة من الاتصال بين المُثبت والمُحقق؛ شيء غير فعال ولا يعمل بشكل جيد في سياق Blockchain.
البراهين التفاعلية لها أيضًا قيد كبير آخر؛ وحتى بعد إقتناع المُحقق، لن يكون الدليل متاحًا للتحقق المستقل؛ وهذا يعني أن الطرف الذي قام بالتحقق هو فقط من يمكنه الوثوق به، وليس أي شخص آخر.
لهذه الأسباب، تم إنشاء إثباتات ZK الغير تفاعلية.
إثباتات ZK الغير تفاعلية
تتطلب إثباتات ZK الغير تفاعلية جولة واحدة فقط من الإتصال من المُثبت إلى المُحقق. يستخدم المُثبِّت خوارزمية لحساب إثباتات ZK ويرسله إلى المُحقق، الذي يستخدم أيضًا خوارزمية أخرى للتحقق منه.
هناك فائدة أخرى لإثباتات ZK غير التفاعلية وهي أنها متاحة لأي شخص آخر للتحقق منها أيضًا؛ مما يعني أنه لا يتم إثباته فقط من وجهة نظر المُحقق، ولكنه متاح للجميع للتحقق من أنفسهم؛ كما نرئ ستكون مناسبة في سياق Blockchain.
ما هي هذه "الخوارزميات" القادرة على إثبات المعلومات والتحقق من البراهين؟ حسنا، الجواب هو هناك عدد كبير منها، ولكن عادةً ما يتم استخدام نظامين في البلوكتشين وهم؛ ZK-STARKs و ZK-SNARKs.
ما هي ZK-SNARKs؟
يُشار إليها باسم (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge).
- المعرفة الصفرية (Zero-Knowledge).
- موجزة (Succinct): إنها صغيرة، ويمكن التحقق منها بسرعة بواسطة المدقق.
- غير تفاعلية (Non-Interactive): ناقشنا هذا سابقًا. مطلوب جولة واحدة فقط من الاتصال بين المُثبت والمُحقق.
- البُرهان (Argument): من غير المحتمل نظريًا أن نتمكن من "خداع" النظام.
- من المعرفة (of Knowledge): لا يمكن إكمالها دون الوصول إلى المعلومة السرية (الشاهد).
يستخدمون طريقة تشفير بدائية تسمى اقتران المنحنى الإهليلجي كطريقة لإنشاء هذه البراهين والتحقق منها (لن نخوض في الرياضيات هنا).
أحد الأشياء الرئيسية التي يجب ملاحظتها حول ZK-SNARKs هو أنه خلال مرحلة الإعداد الأولي، يجب أن يتفق المُثبت والمُحقق على استخدام “مفتاح مشترك“، يُعرف باسم السلسلة المرجعية العامة (CRS). يمكن لأي شخص لديه حق الوصول إلى هذا المفتاح المشترك التحقق من البراهين.
هذا المفتاح المشترك هو ما يجعل ZK-SNARKs ممكنًا؛ على الرغم من أن هذا يعد أيضًا أكبر عيب لديهم لأنه يخلق ما يُعرف باسم “بيئة موثوقة“ (Trusted Environment).
يجب تدمير القيم المستخدمة لإنشاء CRS، والتي تسمى أحيانًا "النفايات السامة"، بعد إنشاء CRS. إذا لم يكن الأمر كذلك، فإن النظام بأكمله في خطر؛ كما سيتمكن المُبرهنون غير الشرفاء من حساب البراهين الكاذبة؛ ومن ثم، يجب أن يثق المستخدمون في تدمير القيمة.
الشيء الجدير بالذكر أيضًا حول ZK SNARKs هو أنها ليست “مقاومة للكم“؛ مما يعني أنها معرضة لهجمات أجهزة الكمبيوتر الكمومية في المستقبل؛ على الرغم من إمكانية ترقيتها في المستقبل لتصبح مقاومة للكم.
ما هي ZK-STARKs؟
يُشار إليها باسم (Zero-Knowledge Scalable Transparent Argument of Knowledge).
- المعرفة الصفرية (Zero-Knowledge).
- قابلة للتطوير (Scalable): بدلاً من أن تكون "موجزة"، فهي قابلة للتطوير؛ مما يعني أنهم يقومون بإنشاء الأدلة والتحقق منها باستخدام شهود (كلمات سرية) أكبر بشكل أكثر كفاءة من ZK-SNARKs.
- شفاف (Transparent): ليس هناك حاجة إلى إعداد موثوق. إنهم يعتمدون على العشوائية التي يمكن التحقق منها بشكل عام لإنشاء المفتاح المشترك.
- البُرهان (Argument): من غير المحتمل نظريًا أن نتمكن من "خداع" النظام.
- من المعرفة (of Knowledge): لا يمكن إكمالها دون الوصول إلى المعلومة السرية (الشاهد).
عادةً ما يأتي هذا التحسن في الشفافية مع مقايضة توليد أدلة أكبر بكثير من حجم ZK-SNARKs ؛ إلا عند التعامل مع مجموعات بيانات كبيرة جدًا. يرتفع حجم الدليل من 288 بايت إلى بضع مئات من الكيلوبايتات.
بدلًا من استخدام المنحنيات الإهليلجية، يستخدمون متعددات الحدود (polynomials). يملك Vitalik مجموعة مقالات من ثلاثة أجزاء حول هذا الموضوع: 1 و 2 و 3.
يمكنك البدء في تعلم كتابة براهين ZK-STRAKs والعقود الذكية على Starknet من هنا.
تعالج ZK STARKs كلاً من المخاوف التي ناقشناها في ZK-SNARKs، وهي:
- لا تحتاج إلى "بيئة موثوقة“ (Trusted Environment).
- تكون آمنة بشكل معقول ”بعد الكم“؛ مما يعني أنها لن تكون عرضة لهجمات أجهزة الكمبيوتر الكمومية في المستقبل.
ZK-STARKs أحدث من ZK-SNARKs، ويطلق عليها Vitalik إسم "ابن عمها الأحدث والأكثر لمعانًا! 🤠“ لذا، كخلاصة سريعة:
وجهة المقارنة | ZK-SNARK | ZK-STARK |
---|---|---|
الحجم | خفيف، وموجز، ويمكن التحقق منه بسرعة | كبير، ولكن المقاييس أكثر كفاءة عند إثبات شهود (كلمات سر) أكبر |
الأمان | يتطلب بيئة موثوقة | لا يتطلب بيئة موثوقة |
ما بعد الكم (الهجمات الكمومية) | غير آمن، على الرغم من إمكانية ترقيته | آمن |
الأفكار الختامية
إن إثباتات المعرفة الصفرية (ZK) هي تطبيقات حقيقية في البلوكتشين يمكن أن تكون أساسًا لمستقبل أكثر توجهاً نحو الخصوصية؛ تم عرضه في منتجات Starkware بالكامل.
هذا كل شيء! أنت الآن تعرف المفاهيم الأساسية لإثباتات المعرفة الصفرية. أخبرنا بمهاراتك على Twitter أو Telegram. نود أن نعرف ما الذي تقوم ببنائه!