హే హబ్ర్!
В
వ్యాసంలోని ఈ భాగంలో, థ్రెషోల్డ్ సంతకాలను ఉపయోగించే మరొక విధానాన్ని మేము నిశితంగా పరిశీలిస్తాము.
కొంచెం క్రిప్టోగ్రఫీ
థ్రెషోల్డ్ సంతకాలు ఎలా పని చేస్తాయో అర్థం చేసుకోవడానికి, మీరు కొద్దిగా ప్రాథమిక క్రిప్టోగ్రఫీని అర్థం చేసుకోవాలి. మేము రెండు కాన్సెప్ట్లను ఉపయోగిస్తాము: స్కేలర్లు లేదా కేవలం సంఖ్యలు, వీటిని మనం చిన్న అక్షరాలతో సూచిస్తాము (x, y) మరియు దీర్ఘవృత్తాకార వక్రరేఖపై పాయింట్లు, మేము పెద్ద అక్షరాలతో సూచిస్తాము.
థ్రెషోల్డ్ సంతకాల యొక్క ప్రాథమికాలను అర్థం చేసుకోవడానికి, కొన్ని ప్రాథమిక విషయాలు కాకుండా, దీర్ఘవృత్తాకార వక్రతలు ఎలా పని చేస్తాయో మీరు అర్థం చేసుకోవలసిన అవసరం లేదు:
-
దీర్ఘవృత్తాకార వక్రరేఖపై పాయింట్లను స్కేలార్ ద్వారా జోడించవచ్చు మరియు గుణించవచ్చు (మేము స్కేలార్ ద్వారా గుణించడాన్ని సూచిస్తాము xG, సంజ్ఞామానం అయినప్పటికీ Gx సాహిత్యంలో కూడా తరచుగా ఉపయోగిస్తారు). స్కేలార్ ద్వారా కూడిక మరియు గుణకారం యొక్క ఫలితం దీర్ఘవృత్తాకార వక్రరేఖపై ఒక బిందువు.
-
పాయింట్ మాత్రమే తెలుసు G మరియు స్కేలార్తో దాని ఉత్పత్తి xG లెక్కించబడదు x.
మేము బహుపది భావనను కూడా ఉపయోగిస్తాము p(x) డిగ్రీల k-1. ప్రత్యేకించి, మేము ఈ క్రింది బహుపదాల ఆస్తిని ఉపయోగిస్తాము: మనకు విలువ తెలిస్తే p(x) దేనికైనా k వివిధ x (మరియు దీని గురించి మాకు మరింత సమాచారం లేదు p(x)), మనం లెక్కించవచ్చు p(x) ఎవరికైనా x.
ఆసక్తికరంగా, ఏదైనా బహుపది కోసం p(x) మరియు వక్రరేఖపై కొంత పాయింట్ Gఅర్థం తెలుసుకోవడం p(x)G దేనికైనా k వివిధ అర్థాలు x, మనం కూడా లెక్కించవచ్చు p(x)G దేనికైనా x.
థ్రెషోల్డ్ సంతకాలు ఎలా పని చేస్తాయి మరియు యాదృచ్ఛిక సంఖ్యలను రూపొందించడానికి వాటిని ఎలా ఉపయోగించాలి అనే వివరాలను తెలుసుకోవడానికి ఇది తగినంత సమాచారం.
థ్రెషోల్డ్ సంతకాలపై యాదృచ్ఛిక సంఖ్య జనరేటర్
అని చెప్పుకుందాం n పాల్గొనేవారు యాదృచ్ఛిక సంఖ్యను రూపొందించాలనుకుంటున్నారు మరియు ఎవరైనా పాల్గొనాలని మేము కోరుకుంటున్నాము k సంఖ్యను రూపొందించడానికి వాటిలో తగినంత ఉన్నాయి, కానీ దాడి చేసేవారు నియంత్రించే విధంగా k-1 లేదా అంతకంటే తక్కువ మంది పాల్గొనేవారు ఉత్పత్తి చేయబడిన సంఖ్యను అంచనా వేయలేరు లేదా ప్రభావితం చేయలేరు.
అటువంటి బహుపది ఉందనుకుందాం p(x) డిగ్రీల k-1 మొదటి పాల్గొనేవారికి ఏమి తెలుసు p (1), రెండవది తెలుసు p(2), మరియు మొదలైనవి (n-వ తెలుసు p(n)) కొంత ముందుగా నిర్ణయించిన పాయింట్ కోసం కూడా మేము ఊహిస్తాము G ప్రతి ఒక్కరికీ తెలుసు p(x)G అన్ని విలువల కోసం x. మేము పిలుస్తాము p(i) "ప్రైవేట్ భాగం" iపాల్గొనే వ్యక్తి (ఎందుకంటే మాత్రమే iపాల్గొనేవారికి ఆమె తెలుసు), మరియు p(i)G "ప్రజా భాగం" i-వ పార్టిసిపెంట్ (ఎందుకంటే పాల్గొనే వారందరికీ ఆమె తెలుసు). మీకు గుర్తున్నట్లుగా, జ్ఞానం p(i)G పునరుద్ధరించడానికి సరిపోదు p(i)
అటువంటి బహుపదిని సృష్టించడం తద్వారా మాత్రమే i-మొదటి పాల్గొనేవారికి మరియు అతని వ్యక్తిగత భాగం ఎవరికీ తెలియదు - ఇది ప్రోటోకాల్ యొక్క అత్యంత క్లిష్టమైన మరియు ఆసక్తికరమైన భాగం, మరియు మేము దానిని క్రింద విశ్లేషిస్తాము. ప్రస్తుతానికి, మనకు అటువంటి బహుపది ఉందని మరియు పాల్గొనే వారందరికీ వారి ప్రైవేట్ భాగాలు తెలుసునని అనుకుందాం.
యాదృచ్ఛిక సంఖ్యను రూపొందించడానికి అటువంటి బహుపదిని మనం ఎలా ఉపయోగించవచ్చు? ప్రారంభించడానికి, మనకు ఇంతకు ముందు జనరేటర్కి ఇన్పుట్గా ఉపయోగించని కొన్ని స్ట్రింగ్ అవసరం. బ్లాక్చెయిన్ విషయంలో, చివరి బ్లాక్ యొక్క హాష్ h అటువంటి లైన్ కోసం మంచి అభ్యర్థి. ఉపయోగించి యాదృచ్ఛిక సంఖ్యను సృష్టించాలని పాల్గొనేవారిని అనుమతించండి h విత్తనం వంటిది. పాల్గొనేవారు ముందుగా మారతారు h ఏదైనా ముందే నిర్వచించిన ఫంక్షన్ని ఉపయోగించి వక్రరేఖపై ఒక బిందువుకు:
H = scalarToPoint(h)
అప్పుడు ప్రతి పాల్గొనేవారు i లెక్కించి ప్రచురిస్తుంది హాయ్ = p(i)H, వారికి తెలుసు కాబట్టి వారు ఏమి చేయగలరు p(i) మరియు H. బహిర్గతం Hప్రైవేట్ కాంపోనెంట్ని రీస్టోర్ చేయడానికి ఇతర పార్టిసిపెంట్లను నేను అనుమతించను ith పార్టిసిపెంట్, కాబట్టి ఒక సెట్ ప్రైవేట్ కాంపోనెంట్లను బ్లాక్ నుండి బ్లాక్కు ఉపయోగించవచ్చు. అందువల్ల, దిగువ వివరించిన ఖరీదైన బహుపది జనరేషన్ అల్గారిథమ్ని ఒకసారి మాత్రమే అమలు చేయాలి.
ఉన్నప్పుడు k పాల్గొనేవారు శవపరీక్ష చేయబడ్డారు హాయ్ = p(i)H, ప్రతి ఒక్కరూ లెక్కించగలరు Hx = p(x)H అందరి కోసం x మేము చివరి విభాగంలో చర్చించిన బహుపదాల ఆస్తికి ధన్యవాదాలు. ఈ సమయంలో, పాల్గొనే వారందరూ లెక్కిస్తారు H0 = p(0)H, మరియు ఇది ఫలితంగా వచ్చే యాదృచ్ఛిక సంఖ్య. ఎవరికీ తెలియదని దయచేసి గమనించండి p(0), అందువలన లెక్కించేందుకు ఏకైక మార్గం p(0)H – ఇది ఇంటర్పోలేషన్ p(x)H, ఎప్పుడు మాత్రమే సాధ్యమవుతుంది k విలువలు p(i)H తెలిసిన. ఏదైనా చిన్న పరిమాణంలో తెరవడం p(i)H గురించి ఎటువంటి సమాచారాన్ని అందించదు p(0)H.
ఎగువన ఉన్న జనరేటర్ మనకు కావలసిన అన్ని లక్షణాలను కలిగి ఉంది: దాడి చేసేవారు మాత్రమే నియంత్రిస్తారు k-1 పాల్గొనేవారు లేదా అంతకంటే తక్కువ వ్యక్తులు ముగింపుపై సమాచారం లేదా ప్రభావం కలిగి ఉండరు, అయితే ఏదైనా k పాల్గొనేవారు ఫలిత సంఖ్యను మరియు ఏదైనా ఉపసమితిని లెక్కించవచ్చు k పాల్గొనేవారు ఎల్లప్పుడూ ఒకే విత్తనం కోసం ఒకే ఫలితానికి వస్తారు.
మేము పైన జాగ్రత్తగా నివారించిన ఒక సమస్య ఉంది. ఇంటర్పోలేషన్ పని చేయడానికి, విలువ చాలా ముఖ్యం Hi ఇది ప్రతి పాల్గొనేవారిచే ప్రచురించబడింది i అది నిజంగా అదే p(i)H. తప్ప ఎవరూ లేనందున i-వ పాల్గొనేవారికి తెలియదు p(i), తప్ప ఎవరూ i-పాల్గొనేవారు దానిని ధృవీకరించలేరు Hi వాస్తవానికి సరిగ్గా లెక్కించబడుతుంది మరియు ఖచ్చితత్వం యొక్క క్రిప్టోగ్రాఫిక్ రుజువు లేకుండా Hనేను దాడి చేసే వ్యక్తి ఏదైనా విలువను ఇలా ప్రచురించవచ్చు హి మరియు యాదృచ్ఛిక సంఖ్య జనరేటర్ యొక్క అవుట్పుట్ను ఏకపక్షంగా ప్రభావితం చేస్తుంది:
మొదటి పార్టిసిపెంట్ పంపిన H_1 యొక్క విభిన్న విలువలు వేర్వేరు H_0కి దారితీస్తాయి
సరైనదని నిరూపించడానికి కనీసం రెండు మార్గాలు ఉన్నాయి Hi, మేము బహుపది యొక్క ఉత్పత్తిని విశ్లేషించిన తర్వాత వాటిని పరిశీలిస్తాము.
బహుపది తరం
చివరి విభాగంలో మనకు అటువంటి బహుపది ఉందని భావించాము p(x) డిగ్రీల k-1 పాల్గొనేవాడు i తెలుసు p(i), మరియు ఈ విలువ గురించి మరెవరికీ ఎటువంటి సమాచారం లేదు. తదుపరి విభాగంలో, ముందుగా నిర్ణయించిన పాయింట్ కోసం మనకు అది కూడా అవసరం G అందరికీ తెలుసు p(x)G అందరి కోసం x.
ఈ విభాగంలో స్థానికంగా ప్రతి పాల్గొనే వ్యక్తికి కొంత ప్రైవేట్ కీ ఉందని మేము ఊహిస్తాము xi, ప్రతి ఒక్కరికీ సంబంధిత పబ్లిక్ కీ తెలుసు Xi.
ఒక బహుపది జనరేషన్ ప్రోటోకాల్ క్రింది విధంగా ఉంది:
-
ప్రతి పాల్గొనేవారు i స్థానికంగా ఏకపక్ష బహుపదిని సృష్టిస్తుంది pi(x) డిగ్రీ k-1. అప్పుడు వారు ప్రతి పాల్గొనేవారిని పంపుతారు j అంటే pi(j), పబ్లిక్ కీతో గుప్తీకరించబడింది Xj. అందువలన మాత్రమే i-వ и j-వ పాల్గొనేవారికి తెలుసు pi(j) పాల్గొనేవాడు i బహిరంగంగా కూడా ప్రకటిస్తుంది pi(j)G అందరి కోసం j от 1 కు k కలుపుకొని.
-
పాల్గొనే వారందరూ ఎంచుకోవడానికి కొంత ఏకాభిప్రాయాన్ని ఉపయోగిస్తారు k బహుపదాలు ఉపయోగించబడే పాల్గొనేవారు. కొంతమంది పాల్గొనేవారు ఆఫ్లైన్లో ఉండవచ్చు కాబట్టి, మేము అందరి వరకు వేచి ఉండలేము n పాల్గొనేవారు బహుపదాలను ప్రచురిస్తారు. ఈ దశ ఫలితం ఒక సెట్ Z కనీసం కలిగి ఉంటుంది k దశ (1)లో సృష్టించబడిన బహుపది.
-
పాల్గొనేవారు తమకు తెలిసిన విలువలను నిర్ధారించుకోండి pi(j) బహిరంగంగా ప్రకటించిన వాటికి అనుగుణంగా ఉంటుంది pi(j)G. ఈ దశ తర్వాత Z ప్రైవేట్గా ప్రసారం చేయబడిన బహుపదిలు మాత్రమే pi(j) బహిరంగంగా ప్రకటించిన వాటికి అనుగుణంగా ఉంటుంది pi(j)G.
-
ప్రతి పాల్గొనేవారు j దాని ప్రైవేట్ భాగాన్ని లెక్కిస్తుంది p(j) మొత్తంగా pi(j) అందరికీ i в Z. ప్రతి పాల్గొనేవారు కూడా అన్ని విలువలను లెక్కిస్తారు p(x)G మొత్తంగా pi(x)G అన్నింటికి i в Z.
అది గమనించండి p(x) – ఇది నిజంగా బహుపది k-1, ఎందుకంటే ఇది వ్యక్తి యొక్క మొత్తం pi(x), వీటిలో ప్రతి ఒక్కటి డిగ్రీ యొక్క బహుపది k-1. అప్పుడు, ప్రతి పాల్గొనే సమయంలో గమనించండి j తెలుసు p(j), గురించి వారికి సమాచారం లేదు p(x) కోసం x ≠ జె. నిజమే, ఈ విలువను లెక్కించడానికి, వారు ప్రతిదీ తెలుసుకోవాలి pi(x), మరియు పాల్గొనేంత వరకు j ఎంచుకున్న బహుపదిలలో కనీసం ఒకదాని గురించి తెలియదు, వాటి గురించి తగినంత సమాచారం లేదు p(x)
ఇది చివరి విభాగంలో అవసరమైన మొత్తం బహుపది ఉత్పత్తి ప్రక్రియ. పైన ఉన్న 1, 2 మరియు 4 దశలు చాలా స్పష్టమైన అమలును కలిగి ఉన్నాయి. కానీ 3వ దశ అంత సామాన్యమైనది కాదు.
ప్రత్యేకంగా, మేము ఎన్క్రిప్టెడ్ అని నిరూపించగలగాలి pi(j) నిజంగా ప్రచురించిన వాటికి అనుగుణంగా ఉంటుంది pi(j)G. మేము నిరూపించలేకపోతే, దాడి చేసేవాడు i బదులుగా చెత్త పంపవచ్చు pi(j) పాల్గొనేవారికి j, మరియు పాల్గొనేవారు j అసలు అర్థాన్ని పొందలేరు pi(j), మరియు దాని ప్రైవేట్ భాగాన్ని లెక్కించలేరు.
అదనపు సందేశాన్ని సృష్టించడానికి మిమ్మల్ని అనుమతించే క్రిప్టోగ్రాఫిక్ ప్రోటోకాల్ ఉంది ప్రూఫ్i(j), అంటే ఎవరైనా పాల్గొనేవారు, కొంత విలువను కలిగి ఉంటారు e, అలాగే ప్రూఫీ(జె) и pi(j)G, దానిని స్థానికంగా ధృవీకరించవచ్చు e - ఇది నిజంగా pi(j), పార్టిసిపెంట్ కీతో ఎన్క్రిప్ట్ చేయబడింది j. దురదృష్టవశాత్తు, అటువంటి సాక్ష్యం యొక్క పరిమాణం చాలా పెద్దది మరియు ప్రచురించాల్సిన అవసరం ఉంది O(nk) అటువంటి సాక్ష్యాలను ఈ ప్రయోజనం కోసం ఉపయోగించలేరు.
అని నిరూపించే బదులు pi(j) అనుగుణంగా ఉంటుంది pi(j)G మేము బహుపది జనరేషన్ ప్రోటోకాల్లో చాలా ఎక్కువ సమయాన్ని కేటాయించగలము, ఈ సమయంలో పాల్గొనే వారందరూ అందుకున్న ఎన్క్రిప్ట్ను తనిఖీ చేస్తారు pi(j), మరియు డీక్రిప్ట్ చేయబడిన సందేశం పబ్లిక్కు అనుగుణంగా లేకుంటే pi(j)G, వారు అందుకున్న గుప్తీకరించిన సందేశం తప్పు అని క్రిప్టోగ్రాఫిక్ రుజువును ప్రచురించారు. సందేశం అని నిరూపించండి కాదు అనుగుణంగా ఉంటుంది pi(G) సరిపోలుతుందని నిరూపించడం కంటే చాలా సులభం. ప్రతి పార్టిసిపెంట్ అటువంటి సాక్ష్యాలను రూపొందించడానికి కేటాయించిన సమయంలో కనీసం ఒక్కసారైనా ఆన్లైన్లో కనిపించాలని మరియు అలాంటి రుజువును ప్రచురించినట్లయితే, అదే కేటాయించిన సమయంలో అది ఇతర పాల్గొనే వారందరికీ చేరుతుందనే భావనపై ఆధారపడుతుందని గమనించాలి.
ఈ వ్యవధిలో పాల్గొనే వ్యక్తి ఆన్లైన్లో కనిపించకపోతే మరియు అతని వద్ద కనీసం ఒక తప్పు భాగం ఉంటే, ఆ నిర్దిష్ట పార్టిసిపెంట్ తదుపరి సంఖ్య ఉత్పత్తిలో పాల్గొనలేరు. ప్రోటోకాల్, అయితే, కనీసం ఉంటే ఇప్పటికీ పని చేస్తుంది k కేవలం సరైన భాగాలను స్వీకరించిన పాల్గొనేవారు లేదా నిర్ణీత సమయంలో సరికాని రుజువును వదిలివేయగలిగారు.
H_i యొక్క ఖచ్చితత్వానికి రుజువులు
ప్రచురితమైన దాని ఖచ్చితత్వాన్ని ఎలా నిరూపించాలనేది చర్చించవలసిన చివరి భాగం Hనేను, అవి హాయ్ = p(i)H, తెరవకుండా p(i)
విలువలను గుర్తుంచుకుందాం H, G, p(i)G పబ్లిక్ మరియు అందరికీ తెలిసిన. ఆపరేషన్ స్వీకరించండి p(i) తెలుసుకోవడం p(i)G и G వివిక్త లాగరిథమ్ అని పిలుస్తారు, లేదా dlog, మరియు మేము దానిని నిరూపించాలనుకుంటున్నాము:
dlog(p(i)G, G) = dlog(Hi, H)
బహిర్గతం లేకుండా p(i). అటువంటి రుజువుల కోసం నిర్మాణాలు ఉన్నాయి, ఉదాహరణకు
ఈ డిజైన్తో, ప్రతి పాల్గొనే వారితో పాటు Hi డిజైన్ ప్రకారం ఖచ్చితత్వం యొక్క రుజువును పంపుతుంది.
యాదృచ్ఛిక సంఖ్యను రూపొందించిన తర్వాత, దానిని రూపొందించిన వారు కాకుండా పాల్గొనేవారు తరచుగా ఉపయోగించాల్సి ఉంటుంది. అటువంటి పాల్గొనేవారు, నంబర్తో పాటు, అన్నింటినీ పంపాలి Hi మరియు సంబంధిత సాక్ష్యం.
ఒక పరిశోధనాత్మక పాఠకుడు అడగవచ్చు: చివరి యాదృచ్ఛిక సంఖ్య కనుక H0, మరియు p(0)G – ఇది పబ్లిక్ సమాచారం, ప్రతి వ్యక్తికి రుజువు ఎందుకు అవసరం Hనేను, దానికి బదులుగా రుజువు ఎందుకు పంపకూడదు
dlog(p(0)G, G) = dlog(H0, H)
సమస్య ఏమిటంటే Schnorr ప్రోటోకాల్ ఉపయోగించి అటువంటి రుజువు సృష్టించబడదు ఎందుకంటే ఎవరికీ విలువ తెలియదు p (0), రుజువుని సృష్టించడానికి అవసరం, మరియు ఇంకా ఏమిటంటే, మొత్తం యాదృచ్ఛిక సంఖ్య జనరేటర్ ఈ విలువ ఎవరికీ తెలియదు అనే వాస్తవంపై ఆధారపడి ఉంటుంది. అందువల్ల అన్ని విలువలను కలిగి ఉండటం అవసరం Hi మరియు సరైనదని నిరూపించడానికి వారి వ్యక్తిగత సాక్ష్యం H0.
ఏది ఏమైనప్పటికీ, దీర్ఘవృత్తాకార వక్రరేఖలపై పాయింట్లపై కొంత ఆపరేషన్ జరిగితే, అది గుణకారానికి అర్థపరంగా సారూప్యంగా ఉంటుంది, సరైనదానికి రుజువు H0 అల్పమైనది, మేము దానిని నిర్ధారించుకుంటాము
H0 × G = p(0)G × H
ఎంచుకున్న వక్రరేఖ మద్దతు ఇస్తే
ముగింపులో
ఈ వ్యాసం సాంకేతిక బ్లాగ్ సిరీస్లో భాగం
ప్రోటోకాల్ కోడ్ తెరిచి ఉంది, మా అమలు రస్ట్లో వ్రాయబడింది, దానిని కనుగొనవచ్చు
NEAR కోసం డెవలప్మెంట్ ఎలా ఉంటుందో మీరు చూడవచ్చు మరియు ఆన్లైన్ IDEలో ప్రయోగాలు చేయవచ్చు
మీరు రష్యన్లోని అన్ని వార్తలను ఇక్కడ అనుసరించవచ్చు
До!
మూలం: www.habr.com