Vitalik Buterin کے ذریعے Vitalik Buterin بلاگ
یہ اس پوسٹ کا آئینہ ہے۔ https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627
ٹرگر انتباہ: ریاضی.
مختلف تعمیرات کے پیچھے کلیدی کرپٹوگرافک پرائمٹیو میں سے ایک، بشمول ڈیٹرمینسٹک تھریشولڈ دستخط، zk-SNARKs اور صفر علمی ثبوتوں کی دیگر آسان شکلیں بیضوی وکر جوڑی ہے۔ بیضوی منحنی خطوط کی جوڑی (یا "بائلینر نقشے") خفیہ کاری اور ڈیجیٹل دستخطوں سمیت خفیہ نگاری کی ایپلی کیشنز کے لیے بیضوی منحنی خطوط کے استعمال کی 30 سالہ طویل تاریخ میں حالیہ اضافہ ہے۔ جوڑیاں "انکرپٹڈ ضرب" کی ایک شکل کو متعارف کراتی ہیں، جو بیضوی منحنی خطوط پر مبنی پروٹوکولز کر سکتے ہیں اس میں بہت زیادہ توسیع کرتے ہیں۔ اس مضمون کا مقصد بیضوی منحنی خطوط کی جوڑیوں میں تفصیل سے جانا ہے، اور ان کے کام کرنے کے طریقہ کار کے عمومی خاکہ کی وضاحت کرنا ہے۔
آپ سے توقع نہیں کی جاتی ہے کہ آپ یہاں سب کچھ سمجھ جائیں گے جب آپ اسے پہلی بار پڑھیں گے، یا دسویں بار بھی۔ یہ چیز واقعی مشکل ہے. لیکن امید ہے کہ یہ مضمون آپ کو کم از کم تھوڑا سا اندازہ دے گا کہ ہڈ کے نیچے کیا ہو رہا ہے۔
بیضوی منحنی خطوط خود کو سمجھنے کے لیے ایک غیر معمولی موضوع ہیں، اور یہ مضمون عام طور پر یہ فرض کرے گا کہ آپ جانتے ہیں کہ وہ کیسے کام کرتے ہیں۔ اگر آپ ایسا نہیں کرتے ہیں تو، میں یہاں پرائمر کے طور پر اس مضمون کی سفارش کرتا ہوں: https://blog.cloudflare.com/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography/. ایک فوری خلاصہ کے طور پر، بیضوی وکر کی خفیہ نگاری میں ریاضیاتی اشیاء شامل ہوتی ہیں جنہیں "پوائنٹس" کہا جاتا ہے (یہ (�,�) نقاط کے ساتھ لفظی دو جہتی پوائنٹس ہیں، ان کو جوڑنے اور گھٹانے کے لیے خصوصی فارمولوں کے ساتھ (یعنی �= کے نقاط کا حساب لگانے کے لیے۔ �+�)، اور آپ کسی نقطے کو ایک عدد سے بھی ضرب کر سکتے ہیں (یعنی �⋅�=�+�+…+�، اگرچہ � بڑا ہو تو اس کی گنتی کرنے کا ایک بہت تیز طریقہ ہے)۔
یہاں یہ ہے کہ نقطہ اضافہ گرافک طور پر کیسا لگتا ہے۔
ایک خاص نقطہ موجود ہے جسے "انفینٹی پر نقطہ" (�) کہا جاتا ہے، پوائنٹ ریاضی میں صفر کے برابر؛ ہمیشہ ایسا ہی ہوتا ہے کہ �+�=�۔ اس کے علاوہ، ایک وکر ہے "حکم"; ایک عدد موجود ہے � اس طرح کہ �⋅�=� کسی � کے لیے (اور ظاہر ہے، �⋅(�+1)=�،�⋅(7⋅�+5)=�⋅5، وغیرہ)۔ "جنریٹر پوائنٹ" پر بھی کچھ عام طور پر اتفاق ہے �، جو سمجھا جاتا ہے کہ کسی لحاظ سے نمبر 1 کی نمائندگی کرتا ہے۔ نظریاتی طور پر، وکر پر کوئی نقطہ (سوائے �) � ہو سکتا ہے صرف اتنا اہم ہے کہ � معیاری ہے۔
جوڑیاں اس سلسلے میں ایک قدم آگے بڑھتی ہیں کہ وہ آپ کو بیضوی منحنی خطوط پر مخصوص قسم کی مزید پیچیدہ مساواتوں کو چیک کرنے کی اجازت دیتی ہیں — مثال کے طور پر، اگر �=�⋅�،�=�⋅� اور �=�⋅�، تو آپ چیک کر سکتے ہیں کہ آیا یا �⋅�=� نہیں، صرف �،� اور � کو ان پٹس کے طور پر رکھتے ہیں۔ ایسا لگتا ہے کہ بیضوی منحنی خطوط کی بنیادی حفاظتی ضمانتوں کو توڑا جا رہا ہے، کیونکہ � کے بارے میں معلومات صرف P کو جاننے سے لیک ہو رہی ہیں، لیکن یہ پتہ چلتا ہے کہ رساو بہت زیادہ ہے — خاص طور پر، فیصلہ کن ڈفی ہیل مین کا مسئلہ آسان ہے، لیکن کمپیوٹیشنل Diffie Hellman مسئلہ (مذکورہ بالا مثال میں � اور � کو جاننا، کمپیوٹنگ �=�⋅�⋅�) اور د مجرد لوگارتھم کا مسئلہ (� سے بازیافت) حسابی طور پر ناقابل عمل رہتا ہے (کم از کم، اگر وہ پہلے تھے)۔
یہ دیکھنے کا تیسرا طریقہ کہ جوڑا کیا کرتا ہے، اور ایک جو شاید زیادہ تر استعمال کے معاملات کے لیے سب سے زیادہ روشن ہے جس کے بارے میں ہم ہیں، وہ یہ ہے کہ اگر آپ بیضوی وکر پوائنٹس کو یک طرفہ خفیہ کردہ نمبروں کے طور پر دیکھتے ہیں (یعنی، ���� ���(�)=�⋅�=�)، پھر جبکہ روایتی بیضوی وکر ریاضی آپ کو چیک کرنے دیتا ہے لکیری نمبروں پر پابندیاں (مثال کے طور پر اگر �=�⋅�،�=�⋅� اور �=�⋅�، جانچنا 5⋅�+7⋅�=11⋅� ہے واقعی چیک کرنا کہ 5⋅�+7⋅�=11⋅�)، جوڑا آپ کو چیک کرنے دیتا ہے چوکور رکاوٹیں (مثلاً چیک کرنا �(�,�)⋅�(�,�⋅5)=1 ہے واقعی چیک کر رہا ہے کہ �⋅�+5=0)۔ اور چوکور تک جانا ہی کافی ہے کہ ہم تعییناتی حد کے دستخطوں، چوکور ریاضی کے پروگراموں اور دیگر تمام اچھی چیزوں کے ساتھ کام کریں۔
اب، یہ مضحکہ خیز �(�,�) آپریٹر کیا ہے جسے ہم نے اوپر متعارف کرایا ہے؟ یہ جوڑی ہے۔ ریاضی دان بھی بعض اوقات اسے کہتے ہیں۔ دو لکیری نقشہ; یہاں لفظ "bilinear" کا بنیادی مطلب یہ ہے کہ یہ رکاوٹوں کو پورا کرتا ہے:
�(�,�+�)=�(�,�)⋅�(�,�)
�(�+�,�)=�(�,�)⋅�(�,�)
نوٹ کریں کہ + اور ⋅ صوابدیدی آپریٹرز ہو سکتے ہیں۔ جب آپ ریاضیاتی اشیاء کی نئی قسمیں تخلیق کر رہے ہوتے ہیں تو تجریدی الجبرا اس بات کی پرواہ نہیں کرتا کہ + اور ⋅ کیسے ہیں کی وضاحتجب تک کہ وہ معمول کے طریقوں سے مطابقت رکھتے ہوں، جیسے۔ �+�=�+�،(�⋅�)⋅�=�⋅(�⋅�) اور (�⋅�)+(�⋅�)=(�+�)⋅�۔
اگر �، �، � اور � سادہ ہوتے تعداد، پھر ایک سادہ جوڑا بنانا آسان ہے: ہم �(�,�)=2�� کر سکتے ہیں۔ پھر، ہم دیکھ سکتے ہیں:
�(3,4+5)=23⋅9=227
�(3,4)⋅�(3,5)=23⋅4⋅23⋅5=212⋅215=227
یہ دو لکیری ہے!
تاہم، اس طرح کے سادہ جوڑے خفیہ نگاری کے لیے موزوں نہیں ہیں کیونکہ وہ اشیاء جن پر وہ کام کرتے ہیں وہ سادہ عدد ہیں اور ان کا تجزیہ کرنا بہت آسان ہے۔ انٹیجرز اس کو تقسیم کرنا، لوگارتھمز کی گنتی کرنا، اور دیگر مختلف حسابات کو آسان بناتے ہیں۔ سادہ عدد میں "عوامی کلید" یا "ون وے فنکشن" کا کوئی تصور نہیں ہوتا ہے۔ مزید برآں، اوپر بیان کردہ جوڑی کے ساتھ آپ پیچھے کی طرف جا سکتے ہیں – جاننا �، اور �(�،�) کو جاننا، آپ � کا تعین کرنے کے لیے صرف ایک تقسیم اور ایک لوگارتھم کی گنتی کر سکتے ہیں۔ ہم ریاضیاتی اشیاء چاہتے ہیں جو ممکن حد تک "بلیک باکس" کے قریب ہوں، جہاں آپ اضافہ، گھٹا، ضرب اور تقسیم کر سکتے ہیں، لیکن اور کچھ نہیں. یہ وہ جگہ ہے جہاں بیضوی منحنی خطوط اور بیضوی وکر کے جوڑے آتے ہیں۔
اس سے پتہ چلتا ہے کہ بیضوی وکر پوائنٹس پر ایک دو لکیری نقشہ بنانا ممکن ہے — یعنی ایک فنکشن �(�,�) کے ساتھ آئیں جہاں ان پٹ � اور � بیضوی وکر پوائنٹس ہیں، اور جہاں آؤٹ پٹ وہ ہے جسے کہتے ہیں (��)12 عنصر (کم از کم مخصوص معاملے میں ہم یہاں احاطہ کریں گے؛ تفصیلات وکر کی تفصیلات کے لحاظ سے مختلف ہوتی ہیں، اس پر مزید بعد میں)، لیکن ایسا کرنے کے پیچھے ریاضی کافی پیچیدہ ہے۔
سب سے پہلے، آئیے پرائم فیلڈز اور ایکسٹینشن فیلڈز کا احاطہ کریں۔ اس پوسٹ میں پہلے تصویر میں خوبصورت بیضوی وکر صرف اس طرح نظر آتا ہے اگر آپ فرض کریں کہ منحنی مساوات کو باقاعدہ حقیقی نمبروں کا استعمال کرتے ہوئے بیان کیا گیا ہے۔ تاہم، اگر ہم اصل میں خفیہ نگاری میں باقاعدہ حقیقی نمبر استعمال کرتے ہیں، تو آپ لوگارتھمز کو "پیچھے جانے" کے لیے استعمال کر سکتے ہیں، اور سب کچھ ٹوٹ جاتا ہے۔ مزید برآں، اعداد کو ذخیرہ کرنے اور ان کی نمائندگی کرنے کے لیے درکار جگہ کی مقدار من مانی بڑھ سکتی ہے۔ لہذا، ہم اس کے بجائے a میں نمبر استعمال کرتے ہیں۔ بنیادی میدان.
ایک پرائم فیلڈ نمبرز کے سیٹ پر مشتمل ہوتا ہے 0,1,2…�−1، جہاں � پرائم ہے، اور مختلف آپریشنز کی وضاحت اس طرح کی گئی ہے:
�+�:(�+�)% �
�⋅�:(�⋅�)% �
�−�:(�−�)% �
�/�:(�⋅��−2)% �
بنیادی طور پر، تمام ریاضی ماڈیول سے کی جاتی ہے � (دیکھیں۔ یہاں ماڈیولر ریاضی کے تعارف کے لیے)۔ تقسیم ایک خاص معاملہ ہے۔ عام طور پر، 32 ایک عدد عدد نہیں ہے، اور یہاں ہم صرف انٹیجرز سے نمٹنا چاہتے ہیں، اس لیے ہم اس کے بجائے نمبر تلاش کرنے کی کوشش کرتے ہیں � اس طرح کہ �⋅2=3، جہاں ⋅ یقیناً ماڈیولر ضرب سے مراد ہے جیسا کہ اوپر بیان کیا گیا ہے۔ کا شکریہ فرمیٹ کا چھوٹا نظریہاوپر دکھایا گیا ایکسپوینشن ٹِک کام کرتی ہے، لیکن اسے کرنے کا ایک تیز طریقہ بھی ہے، استعمال کرتے ہوئے توسیعی یوکلیڈین الگورتھم. فرض کریں �=7; یہاں چند مثالیں ہیں:
2+3=5 % 7=5
4+6=10 % 7=3
2−5=−3 % 7=4
6⋅3=18 % 7=4
3/2=(3⋅25) % 7=5
5⋅2=10 % 7=3
اگر آپ اس طرح کی ریاضی کے ساتھ کھیلتے ہیں، تو آپ دیکھیں گے کہ یہ بالکل مطابقت رکھتا ہے اور معمول کے تمام اصولوں کو پورا کرتا ہے۔ اوپر کی آخری دو مثالیں بتاتی ہیں کہ کیسے (�/�)⋅�=�; آپ یہ بھی دیکھ سکتے ہیں کہ (�+�)+�=�+(�+�), (�+�)⋅�=�⋅�+�⋅�، اور دیگر تمام ہائی اسکول الجبری شناختیں جنہیں آپ جانتے ہیں اور پسند کرتے ہیں اس کے ساتھ ساتھ سچ رکھنے کے لئے. حقیقت میں بیضوی منحنی خطوط میں، پوائنٹس اور مساوات کو عام طور پر پرائم فیلڈز میں شمار کیا جاتا ہے۔
اب ، کے بارے میں بات کرتے ہیں توسیعی فیلڈز. آپ نے شاید پہلے ہی ایکسٹینشن فیلڈ دیکھی ہو گی۔ سب سے عام مثال جس کا سامنا آپ کو ریاضی کی نصابی کتابوں میں ملتا ہے وہ پیچیدہ نمبروں کا فیلڈ ہے، جہاں حقیقی نمبروں کا فیلڈ اضافی عنصر −1=� کے ساتھ "توسیع" ہوتا ہے۔ بنیادی طور پر، ایکسٹینشن فیلڈز ایک موجودہ فیلڈ کو لے کر کام کرتے ہیں، پھر ایک نیا عنصر "ایجاد" کرتے ہیں اور اس عنصر اور موجودہ عناصر کے درمیان تعلق کی وضاحت کرتے ہیں (اس صورت میں، �2+1=0)، اس بات کو یقینی بناتے ہوئے کہ یہ مساوات درست نہیں ہے۔ کسی بھی نمبر کے لیے جو اصل فیلڈ میں ہے، اور اصل فیلڈ کے عناصر کے تمام لکیری امتزاج کے سیٹ کو دیکھتے ہوئے اور جو آپ نے ابھی تخلیق کیا ہے۔
ہم پرائم فیلڈز کی ایکسٹینشن بھی کر سکتے ہیں۔ مثال کے طور پر، ہم پرائم فیلڈ mod7 کو بڑھا سکتے ہیں جسے ہم نے � کے ساتھ اوپر بیان کیا ہے، اور پھر ہم یہ کر سکتے ہیں:
(2+3�)+(4+2�)=6+5�
(5+2�)+3=1+2�
(6+2�)⋅2=5+4�
4�⋅(2+�)=3+�
اس آخری نتیجہ کا پتہ لگانا تھوڑا مشکل ہو سکتا ہے۔ وہاں کیا ہوا کہ ہم سب سے پہلے پروڈکٹ کو 4�⋅2+4�⋅� میں گلتے ہیں، جو 8�−4 دیتا ہے، اور پھر اس لیے کہ ہم mod7 ریاضی میں کام کر رہے ہیں جو �+3 بن جاتا ہے۔ تقسیم کرنے کے لیے، ہم کرتے ہیں:
�/�:(�⋅�(�2−2))% �
نوٹ کریں کہ فرمیٹ کے چھوٹے تھیوریم کے لیے ایکسپوننٹ اب � کے بجائے �2 ہے، حالانکہ ایک بار پھر اگر ہم زیادہ کارآمد بننا چاہتے ہیں تو ہم کام کرنے کے لیے Extended Euclidean Algorithm کو بھی بڑھا سکتے ہیں۔ نوٹ کریں کہ اس فیلڈ میں کسی بھی � کے لیے ��2−1=1، لہذا ہم �2−1 کو "فیلڈ میں ضرب گروپ کی ترتیب" کہتے ہیں۔
حقیقی نمبروں کے ساتھ، الجبرا کا بنیادی نظریہ اس بات کو یقینی بناتا ہے کہ چوکور توسیع جسے ہم پیچیدہ اعداد کہتے ہیں وہ "مکمل" ہے — آپ اسے مزید نہیں بڑھا سکتے، کیونکہ کسی بھی ریاضیاتی تعلق کے لیے (کم از کم، کوئی بھی ریاضیاتی رشتہ جو الجبری فارمولے سے بیان کیا جاتا ہے) جو آپ کسی نئے عنصر کے درمیان آ سکتے ہیں۔ � اور موجودہ پیچیدہ اعداد، کم از کم ایک پیچیدہ نمبر کے ساتھ آنا ممکن ہے جو پہلے ہی اس تعلق کو پورا کرتا ہو۔ پرائم فیلڈز کے ساتھ، تاہم، ہمارے پاس یہ مسئلہ نہیں ہے، اور اس لیے ہم مزید آگے جا کر کیوبک ایکسٹینشن بنا سکتے ہیں (جہاں کچھ نئے عنصر � اور موجودہ فیلڈ عناصر کے درمیان ریاضیاتی تعلق ایک کیوبک مساوات ہے، لہذا 1، � اور �2 ہیں تمام لکیری طور پر ایک دوسرے سے آزاد)، اعلیٰ ترتیب والے ایکسٹینشنز، ایکسٹینشنز کی ایکسٹینشنز وغیرہ۔ اور یہ اس قسم کے سپر چارجڈ ماڈیولر کمپلیکس نمبرز ہیں جن پر بیضوی وکر کے جوڑے بنائے جاتے ہیں۔
ان تمام کارروائیوں کو کوڈ میں لکھے جانے میں شامل عین مطابق ریاضی کو دیکھنے میں دلچسپی رکھنے والوں کے لیے، پرائم فیلڈز اور فیلڈ ایکسٹینشن یہاں لاگو کیے گئے ہیں: https://github.com/ethereum/py_pairing/blob/master/py_ecc/bn128/bn128_field_elements.py
اب، بیضوی وکر کے جوڑے پر۔ ایک بیضوی منحنی جوڑا (یا اس کے بجائے، جوڑی کی مخصوص شکل جسے ہم یہاں تلاش کریں گے؛ جوڑی کی دوسری قسمیں بھی ہیں، حالانکہ ان کی منطق کافی ملتی جلتی ہے) ایک نقشہ ہے �2×�1→��، جہاں:
- �1 ایک بیضوی وکر ہے، جہاں پوائنٹس شکل �2=�3+� کی ایک مساوات کو پورا کرتے ہیں، اور جہاں دونوں نقاط �� کے عناصر ہیں (یعنی وہ سادہ اعداد ہیں، ریاضی کے علاوہ سب کچھ بنیادی نمبر کے ماڈیول سے کیا جاتا ہے)
- �2 ایک بیضوی وکر ہے، جہاں پوائنٹس �1 جیسی مساوات کو پورا کرتے ہیں، سوائے اس کے جہاں نقاط (��)12 کے عناصر ہوں (یعنی یہ وہ سپر چارجڈ کمپلیکس نمبر ہیں جن کے بارے میں ہم نے اوپر بات کی ہے۔ ہم ایک نئے "جادوئی نمبر" کی وضاحت کرتے ہیں۔ " �، جس کی تعریف 12ویں ڈگری کے کثیر نام سے کی جاتی ہے جیسے �12−18⋅�6+82=0)
- �� شے کی وہ قسم ہے جس میں بیضوی وکر کا نتیجہ آتا ہے۔ منحنی خطوط میں جو ہم دیکھتے ہیں، �� ہے (��)12 (وہی سپر چارجڈ کمپلیکس نمبر جو �2 میں استعمال ہوتا ہے)
اہم خاصیت جس کو اسے پورا کرنا ضروری ہے وہ دو لکیری ہے، جس کا اس تناظر میں مطلب یہ ہے کہ:
- �(�,�+�)=�(�,�)⋅�(�,�)
- �(�+�,�)=�(�,�)⋅�(�,�)
دو دیگر اہم معیارات ہیں:
- موثر کمپیوٹیبلٹی (مثال کے طور پر، ہم تمام پوائنٹس کے مجرد لوگارتھمز کو لے کر اور ان کو ایک ساتھ ضرب دے کر ایک آسان جوڑا بنا سکتے ہیں، لیکن یہ حسابی طور پر اتنا ہی مشکل ہے جتنا کہ بیضوی وکر کرپٹوگرافی کو پہلی جگہ توڑنا، اس لیے اس کا شمار نہیں ہوتا)
- عدم انحطاط (یقینی طور پر، آپ صرف �(�,�)=1 کی وضاحت کر سکتے ہیں، لیکن یہ خاص طور پر مفید جوڑی نہیں ہے)
تو ہم یہ کیسے کریں گے؟
جوڑی بنانے کے فنکشنز کیوں کام کرتے ہیں اس کے پیچھے ریاضی کافی مشکل ہے اور اس میں کافی حد تک جدید الجبرا بھی شامل ہے جو ہم نے اب تک دیکھا ہے، لیکن میں ایک خاکہ فراہم کروں گا۔ سب سے پہلے، ہمیں a کے تصور کی وضاحت کرنے کی ضرورت ہے۔ پھٹا دینا، بنیادی طور پر بیضوی وکر پوائنٹس پر افعال کی نمائندگی کرنے کا ایک متبادل طریقہ۔ فنکشن کا ایک تقسیم کار بنیادی طور پر فنکشن کے زیرو اور انفینٹیز کو شمار کرتا ہے۔ یہ دیکھنے کے لیے کہ اس کا کیا مطلب ہے، آئیے چند مثالوں کو دیکھتے ہیں۔ آئیے ہم کچھ نکتہ درست کریں �=(��,��)، اور درج ذیل فنکشن پر غور کریں:
�(�،�)=�−��
تقسیم ہے [�]+[−�]−2⋅[�] (مربع بریکٹ اس حقیقت کو ظاہر کرنے کے لیے استعمال ہوتے ہیں جس کا ہم حوالہ دے رہے ہیں فنکشن کے زیرو اور انفینٹیز کے سیٹ میں نقطہ کی موجودگی، پوائنٹ P خود نہیں؛ [�]+[�] ہے۔ نوٹ وہی چیز جیسے [�+�])۔ استدلال حسب ذیل ہے:
- فعل � پر صفر کے برابر ہے، چونکہ � is ��، تو �−��=0
- فنکشن −� پر صفر کے برابر ہے، کیونکہ −� اور � ایک ہی � کوآرڈینیٹ کا اشتراک کرتے ہیں۔
- فنکشن لامحدودیت پر جاتا ہے جیسا کہ � لامحدودیت میں جاتا ہے، لہذا ہم کہتے ہیں کہ فنکشن لامحدود کے برابر ہے۔ ایک تکنیکی وجہ ہے کہ اس لامحدودیت کو دو بار شمار کرنے کی ضرورت ہے، لہذا � −2 کی "ضرب" کے ساتھ شامل ہو جاتا ہے (منفی کیونکہ یہ انفینٹی ہے نہ کہ صفر، دو اس ڈبل گنتی کی وجہ سے)۔
تکنیکی وجہ تقریباً یہ ہے: کیونکہ وکر کی مساوات �3=�2+� ہے، � سے لامحدود “1.5 گنا تیز” تک جاتی ہے تاکہ �2 کو �3 کے ساتھ برقرار رکھا جا سکے۔ لہذا، اگر ایک لکیری فنکشن میں صرف � شامل ہوتا ہے تو اسے ضرب 2 کی لامحدودیت کے طور پر ظاہر کیا جاتا ہے، لیکن اگر اس میں � شامل ہوتا ہے تو اسے ضرب 3 کی لامحدودیت کے طور پر دکھایا جاتا ہے۔
اب، ایک "لائن فنکشن" پر غور کریں:
��+��+�=0
جہاں �، � اور � کا انتخاب احتیاط سے کیا گیا ہے تاکہ لائن پوائنٹس � اور � سے گزرے۔ بیضوی منحنی خطوط کا اضافہ کیسے کام کرتا ہے (سب سے اوپر کا خاکہ دیکھیں)، اس کا مطلب یہ بھی ہے کہ یہ −�−� سے گزرتا ہے۔ اور یہ � اور � دونوں پر منحصر لامحدودیت تک جاتا ہے، لہذا تقسیم [�]+[�]+[−�−�]−3⋅[�] ہو جاتا ہے۔
ہم جانتے ہیں کہ ہر "ریشنل فنکشن" (یعنی نقطہ کے نقاط پر صرف +،−، ⋅ اور / آپریشنز کی ایک محدود تعداد کا استعمال کرتے ہوئے ایک فنکشن کی وضاحت) منفرد طور پر کچھ تقسیم کرنے والے سے مطابقت رکھتی ہے، مستقل سے ضرب تک (یعنی۔ اگر دو افعال � اور � کا ایک ہی تقسیم ہے، تو �=�⋅� کچھ مستقل � کے لیے)۔
کسی بھی دو فنکشنز � اور � کے لیے، �⋅� کا ڈیوائزر � اور � کے ڈیوائزر کے برابر ہے (ریاضی کی نصابی کتابوں میں، آپ دیکھیں گے (�⋅�)=(�)+(�))، تو مثال کے طور پر اگر �(�,�)=��−�، تو (�3)=3⋅[�]+3⋅[−�]−6⋅[�]؛ � اور −� اس حقیقت کے حساب سے "ٹرپل گنتی" ہیں کہ �3 ان پوائنٹس پر 0 کے قریب پہنچتا ہے "تین گنا تیزی سے" ایک خاص ریاضیاتی معنوں میں۔
نوٹ کریں کہ ایک نظریہ ہے جو کہتا ہے کہ اگر آپ کسی فنکشن کے تقسیم کار سے "مربع بریکٹ کو ہٹاتے ہیں"، تو پوائنٹس کو �([�]+[�]+[−�−�]−3⋅[ تک جوڑنا چاہیے۔ �] واضح طور پر فٹ بیٹھتا ہے، جیسا کہ �+�−�−�−3⋅�=�)، اور کوئی بھی تقسیم کار جس میں یہ خاصیت ہے وہ فنکشن کا تقسیم کنندہ ہے۔
اب، ہم ٹیٹ جوڑیوں کو دیکھنے کے لیے تیار ہیں۔ مندرجہ ذیل افعال پر غور کریں، جو ان کے تقسیم کاروں کے ذریعے بیان کیے گئے ہیں:
- (��)=�⋅[�]−�⋅[�]، جہاں � �1 کا حکم ہے، یعنی۔ �⋅�=� کسی � کے لیے
- (��)=�⋅[�]−�⋅[�]
- (�)=[�+�]-[�]-[�]+[�]
اب آئیے پروڈکٹ کو دیکھتے ہیں ��⋅��⋅��۔ تقسیم کرنے والا ہے:
�⋅[�]−�⋅[�]+�⋅[�]−�⋅[�]+�⋅[�+�]−�⋅[�]−�⋅[�]+�⋅[�]
جو صاف طور پر آسان بناتا ہے:
�⋅[�+�]−�⋅[�]
نوٹ کریں کہ یہ تقسیم بالکل اسی شکل کا ہے جو اوپر �� اور �� کے لیے تقسیم کرنے والا ہے۔ لہذا، ��⋅��⋅��=��+�۔
اب، ہم ایک طریقہ کار متعارف کراتے ہیں جسے "فائنل ایکسپوینشنیشن" مرحلہ کہا جاتا ہے، جہاں ہم اوپر والے اپنے فنکشنز (��,��، وغیرہ) کا نتیجہ لیتے ہیں اور اسے پاور �=(�12−1)/�، جہاں �12−1 ضرب گروپ کی ترتیب ہے (��)12 (یعنی کے لیے کوئی بھی �∈(��)12،�(�12−1)=1)۔ نوٹ کریں کہ اگر آپ اس کفایت کو کسی بھی نتیجے پر لاگو کرتے ہیں۔ پہلے ہی � کی قوّت پر اٹھایا گیا ہے، آپ کو �12−1 کی قوت کا ایک کفایت ملتا ہے، تو نتیجہ 1 میں بدل جاتا ہے۔ اس لیے، حتمی کفارہ کے بعد، �� منسوخ ہو جاتا ہے اور ہمیں ���⋅���=( ��+�)�۔ آپ کے لیے کچھ دوطرفہ ہے۔
اب، اگر آپ ایک ایسا فنکشن بنانا چاہتے ہیں جو دونوں دلائل میں دو لکیری ہو، تو آپ کو spookier ریاضی میں جانے کی ضرورت ہے، جہاں براہ راست کسی قدر کا �� لینے کے بجائے، آپ a کا �� لیتے ہیں۔ پھٹا دینا، اور یہیں سے مکمل "ٹیٹ جوڑی" آتی ہے۔ کچھ اور نتائج کو ثابت کرنے کے لیے آپ کو "لکیری مساوات" اور "ویل ریپروسیٹی" جیسے تصورات سے نمٹنا ہوگا، اور خرگوش کا سوراخ وہاں سے آگے بڑھتا ہے۔ آپ ان سب پر مزید پڑھنے کا مواد حاصل کر سکتے ہیں۔ یہاں اور یہاں.
ٹیٹ پیئرنگ کے ترمیم شدہ ورژن کے نفاذ کے لیے، جسے بہترین ایٹ پیرنگ کہا جاتا ہے، یہاں دیکھ کر. کوڈ نافذ کرتا ہے۔ ملر کا الگورتھم، جو اصل میں حساب کرنے کے لیے درکار ہے۔
نوٹ کریں کہ حقیقت میں اس طرح کا جوڑا بنانا کسی حد تک ایک ملی جلی نعمت ہے: ایک طرف، اس کا مطلب یہ ہے کہ وہ تمام پروٹوکول جو ہم جوڑیوں کے ساتھ کر سکتے ہیں ممکن ہو جاتے ہیں، لیکن اس کا مطلب یہ بھی ہے کہ ہمیں بیضوی منحنی خطوط کے بارے میں زیادہ محتاط رہنا ہوگا۔ ہم استعمال کرتے ہیں.
ہر بیضوی وکر کی ایک قدر ہوتی ہے جسے an کہا جاتا ہے۔ سرایت ڈگری; بنیادی طور پر، سب سے چھوٹی � اس طرح کہ ��−1 � کا ایک ضرب ہے (جہاں � میدان کے لیے استعمال کیا جاتا ہے اور � منحنی ترتیب ہے)۔ اوپر والے فیلڈز میں، �=12، اور روایتی ECC کے لیے استعمال کیے جانے والے فیلڈز میں (یعنی جہاں ہم جوڑیوں کی پرواہ نہیں کرتے ہیں)، ایمبیڈنگ کی ڈگری اکثر بہت بڑی ہوتی ہے، یہاں تک کہ جوڑیوں کا حساب لگانا کمپیوٹیشنل طور پر نا ممکن ہوتا ہے۔ تاہم، اگر ہم محتاط نہیں ہیں تو ہم ایسی فیلڈز بنا سکتے ہیں جہاں �=4 یا یہاں تک کہ 1۔
اگر �=1، تو بیضوی منحنی خطوط کے لیے "مجرد لوگارتھم" کا مسئلہ (بنیادی طور پر، بازیافت � صرف نقطہ کو جانتے ہوئے �=�⋅�، وہ مسئلہ جسے آپ کو بیضوی وکر نجی کلید کو "کریک" کرنے کے لیے حل کرنا پڑتا ہے) کو کم کیا جا سکتا ہے۔ اسی طرح کے ریاضی کے مسئلے میں ��، جہاں مسئلہ بہت آسان ہو جاتا ہے (اسے کہا جاتا ہے۔ MOV حملہ); 12 یا اس سے زیادہ کی ایمبیڈنگ ڈگری کے ساتھ منحنی خطوط کا استعمال اس بات کو یقینی بناتا ہے کہ یہ کمی یا تو دستیاب نہیں ہے، یا جوڑا بنانے کے نتائج پر مجرد لاگ کے مسئلے کو حل کرنا کم از کم اتنا ہی مشکل ہے جتنا کسی عوامی کلید سے نجی کلید کو بازیافت کرنا "عام طریقہ" (یعنی۔ حسابی طور پر ناقابل عمل)۔ فکر نہ کرو؛ اس مسئلے کے لیے تمام معیاری وکر کے پیرامیٹرز کو اچھی طرح سے چیک کیا گیا ہے۔
zk-SNARKs کیسے کام کرتے ہیں اس کی ریاضی کی وضاحت کے لیے دیکھتے رہیں، جلد آرہا ہے۔
جائزہ لینے اور تصحیح کرنے کے لیے کرسچن ریٹویسنر، ایریل گیبیزن (زکیش سے) اور الفریڈ مینیزز کا خصوصی شکریہ۔
- SEO سے چلنے والا مواد اور PR کی تقسیم۔ آج ہی بڑھا دیں۔
- پلیٹو ڈیٹا ڈاٹ نیٹ ورک ورٹیکل جنریٹو اے آئی۔ اپنے آپ کو بااختیار بنائیں۔ یہاں تک رسائی حاصل کریں۔
- پلیٹوآئ اسٹریم۔ ویب 3 انٹیلی جنس۔ علم میں اضافہ۔ یہاں تک رسائی حاصل کریں۔
- پلیٹو ای ایس جی۔ کاربن، کلین ٹیک، توانائی ، ماحولیات، شمسی، ویسٹ مینجمنٹ یہاں تک رسائی حاصل کریں۔
- پلیٹو ہیلتھ۔ بائیوٹیک اینڈ کلینیکل ٹرائلز انٹیلی جنس۔ یہاں تک رسائی حاصل کریں۔
- بلاک آفسیٹس۔ ماحولیاتی آفسیٹ ملکیت کو جدید بنانا۔ یہاں تک رسائی حاصل کریں۔
- ماخذ: افلاطون ڈیٹا انٹیلی جنس.