Shamir's Secret Sharing Scheme

Մտածեք մի սցենար, որտեղ դուք պետք է ապահովեք բանկային պահոց: Այն համարվում է բացարձակ անառիկ առանց բանալի, որը ձեզ տրվում է աշխատանքի հենց առաջին օրը։ Ձեր նպատակն է ապահով պահել բանալին:

Ենթադրենք, դուք որոշել եք բանալին միշտ ձեզ մոտ պահել՝ անհրաժեշտության դեպքում ապահովելով մուտք դեպի պահեստ: Բայց դուք արագ կհասկանաք, որ նման լուծումը գործնականում այնքան էլ մեծ չէ, քանի որ ձեր ֆիզիկական ներկայությունը պահանջվում է ամեն անգամ, երբ բացում եք պահեստը: Ի՞նչ կասեք այն արձակուրդի մասին, որը ձեզ խոստացել էին։ Բացի այդ, հարցն ավելի վախեցնող է. իսկ եթե կորցնեիք ձեր միակ բանալին:

Հաշվի առնելով ձեր արձակուրդը, դուք որոշում եք պատճենել բանալին և այն վստահել մեկ այլ աշխատակցի: Այնուամենայնիվ, հասկանում եք, որ սա նույնպես իդեալական չէ։ Կրկնապատկելով բանալիների քանակը՝ դուք նաև կրկնապատկում եք բանալիների գողության հավանականությունը:

Հուսահատության մեջ դուք ոչնչացնում եք կրկնօրինակը և որոշում եք բուն բանալին կիսով չափ կիսել: Այժմ դուք կարող եք մտածել, որ երկու վստահելի մարդիկ, որոնք ունեն առանցքային բեկորներ, պետք է ֆիզիկապես ներկա գտնվեն բանալին հավաքելու և պահոցը բացելու համար: Սա նշանակում է, որ գողը պետք է գողանա երկու կտոր, ինչը երկու անգամ ավելի դժվար է, քան մեկ բանալի գողանալը: Այնուամենայնիվ, դուք շուտով հասկանում եք, որ այս սխեման շատ ավելի լավ չէ, քան ընդամենը մեկ բանալի, քանի որ եթե ինչ-որ մեկը կորցնում է կես բանալին, ամբողջական բանալին չի կարող վերականգնվել:

Խնդիրը կարող է լուծվել մի շարք լրացուցիչ բանալիների և կողպեքների միջոցով, բայց այս մոտեցումը արագ կպահանջի շատ բանալիներ և կողպեքներ. Դուք որոշում եք, որ իդեալական դիզայնը կլինի բանալին կիսելն այնպես, որ անվտանգությունն ամբողջությամբ չհենվի մեկ անձի վրա: Դուք նաև եզրակացնում եք, որ բեկորների քանակի համար պետք է լինի որոշակի շեմ, որպեսզի եթե մեկ հատվածը կորչի (կամ եթե մարդ մեկնում է արձակուրդ), ամբողջ բանալին մնա գործունակ:

Ինչպես կիսվել գաղտնիքով

Հիմնական կառավարման այս սխեմայի մասին Ադի Շամիրը մտածեց 1979 թվականին, երբ նա հրապարակեց իր աշխատանքը «Ինչպես կիսվել գաղտնիքով». Հոդվածում հակիրճ բացատրվում է այսպես կոչված Shamir's Secret Sharing Scheme շեմի սխեման՝ գաղտնի արժեքը (օրինակ՝ ծածկագրային բանալի) արդյունավետորեն բաժանելու համար Shamir's Secret Sharing Scheme մասեր. Հետո, երբ և միայն երբ գոնե Shamir's Secret Sharing Scheme - ից Shamir's Secret Sharing Scheme մասերը հավաքվում են, դուք հեշտությամբ կարող եք վերականգնել գաղտնիքը Shamir's Secret Sharing Scheme.

Անվտանգության տեսանկյունից այս սխեմայի կարևոր հատկությունն այն է, որ հարձակվողը չպետք է բացարձակապես որևէ բան իմանա, եթե նա առնվազն չունի Shamir's Secret Sharing Scheme մասեր. Նույնիսկ ներկայությունը Shamir's Secret Sharing Scheme մասերը չպետք է որևէ տեղեկատվություն տրամադրեն: Մենք կոչում ենք այս գույքը իմաստային անվտանգություն.

Բազմանդամների ինտերպոլացիա

Շամիրի շեմի սխեման Shamir's Secret Sharing Scheme կառուցված հայեցակարգի շուրջ բազմանդամ ինտերպոլացիա. Եթե ​​դուք ծանոթ չեք այս հայեցակարգին, ապա այն իրականում բավականին պարզ է: Իրականում, եթե դուք երբևէ գծել եք կետերը գրաֆիկի վրա և այնուհետև դրանք միացրել եք գծերով կամ կորերով, դուք արդեն օգտագործել եք այն:

Shamir's Secret Sharing Scheme
Երկու կետերի միջոցով կարելի է գծել 2-րդ աստիճանի անսահմանափակ թվով բազմանդամներ։ Դրանցից միակը ընտրելու համար անհրաժեշտ է երրորդ կետ։ Նկարազարդում: Wikipedia

Դիտարկենք առաջին աստիճանով բազմանդամը, Shamir's Secret Sharing Scheme. Եթե ​​ցանկանում եք այս ֆունկցիան գծել գրաֆիկի վրա, քանի՞ միավոր է ձեզ անհրաժեշտ: Դե, մենք գիտենք, որ սա գծային ֆունկցիա է, որը կազմում է ուղիղ, և դրա համար անհրաժեշտ է առնվազն երկու կետ: Այնուհետև դիտարկեք XNUMX աստիճանով բազմանդամ ֆունկցիան, Shamir's Secret Sharing Scheme. Սա քառակուսի ֆունկցիա է, ուստի գրաֆիկը գծելու համար պահանջվում է առնվազն երեք կետ: Ի՞նչ կասեք երրորդ աստիճանով բազմանդամի մասին: Առնվազն չորս միավոր. Եվ այլն, և այլն:

Այս հատկության իսկապես հետաքրքիր բանն այն է, որ հաշվի առնելով բազմանդամ ֆունկցիայի աստիճանը և առնվազն Shamir's Secret Sharing Scheme միավորներ, մենք կարող ենք լրացուցիչ միավորներ ստանալ այս բազմանդամ ֆունկցիայի համար: Մենք անվանում ենք այս լրացուցիչ կետերի էքստրապոլացիա բազմանդամ ինտերպոլացիա.

Գաղտնիք հորինելը

Երևի արդեն հասկացել եք, որ հենց այստեղ է գործում Շամիրի խելացի սխեման: Ասենք մեր գաղտնիքը Shamir's Secret Sharing Scheme - Ից Shamir's Secret Sharing Scheme. Մենք կարող ենք շրջվել Shamir's Secret Sharing Scheme դեպի գրաֆիկի մի կետ Shamir's Secret Sharing Scheme և ստացիր աստիճանով բազմանդամ ֆունկցիա Shamir's Secret Sharing Scheme, որը բավարարում է այս կետը։ Հիշեցնենք, որ Shamir's Secret Sharing Scheme կլինի մեր պահանջվող բեկորների շեմը, ուստի, եթե շեմը սահմանենք երեք ֆրագմենտի, մենք պետք է ընտրենք XNUMX աստիճանով բազմանդամ ֆունկցիա:

Մեր բազմանդամը կունենա ձև Shamir's Secret Sharing SchemeՈրտեղ Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme - պատահականորեն ընտրված դրական ամբողջ թվեր: Մենք պարզապես կառուցում ենք աստիճանով բազմանդամ Shamir's Secret Sharing Scheme, որտեղ ազատ գործակիցը Shamir's Secret Sharing Scheme -Սա է մեր գաղտնիքը Shamir's Secret Sharing Scheme, և յուրաքանչյուր հաջորդի համար Shamir's Secret Sharing Scheme պայմաններով կա պատահականորեն ընտրված դրական գործակից: Եթե ​​վերադառնանք սկզբնական օրինակին և ենթադրենք, որ Shamir's Secret Sharing Scheme, ապա ստանում ենք ֆունկցիան Shamir's Secret Sharing Scheme.

Այս պահին մենք կարող ենք միացնելով բեկորներ առաջացնել Shamir's Secret Sharing Scheme եզակի ամբողջ թվեր մեջ Shamir's Secret Sharing SchemeՈրտեղ Shamir's Secret Sharing Scheme (որովհետև դա մեր գաղտնիքն է): Այս օրինակում մենք ցանկանում ենք բաժանել չորս բեկորներ երեքի շեմով, այնպես որ մենք պատահականորեն միավորներ ենք ստեղծում Shamir's Secret Sharing Scheme և մեկական միավոր ուղարկիր չորս վստահելի մարդկանցից յուրաքանչյուրին՝ բանալին պահապաններին: Այդ մասին մենք էլ մարդկանց տեղյակ ենք պահում Shamir's Secret Sharing Scheme, քանի որ սա համարվում է հանրային տեղեկատվություն և անհրաժեշտ է վերականգնման համար Shamir's Secret Sharing Scheme.

Գաղտնիքի վերականգնում

Մենք արդեն քննարկել ենք բազմանդամների ինտերպոլացիայի հայեցակարգը և թե ինչպես է այն ընկած Շամիրի շեմային սխեմայի հիմքում։ Shamir's Secret Sharing Scheme. Երբ չորս հոգաբարձուներից որևէ մեկը ցանկանում է վերականգնել Shamir's Secret Sharing Scheme, նրանց միայն պետք է ինտերպոլացիա անել Shamir's Secret Sharing Scheme իր յուրահատուկ կետերով։ Դա անելու համար նրանք կարող են որոշել իրենց միավորները Shamir's Secret Sharing Scheme և հաշվարկել Լագրանժի ինտերպոլացիայի բազմանդամը՝ օգտագործելով հետևյալ բանաձևը. Եթե ​​ծրագրավորումը ձեզ համար ավելի պարզ է, քան մաթեմատիկան, ապա pi-ն ըստ էության օպերատոր է for, որը բազմապատկում է բոլոր արդյունքները, իսկ սիգմա է for, որը գումարում է ամեն ինչ:

Shamir's Secret Sharing Scheme

Shamir's Secret Sharing Scheme

Ի Shamir's Secret Sharing Scheme մենք կարող ենք լուծել այն այսպես և վերադարձնել մեր սկզբնական բազմանդամ ֆունկցիան.

Shamir's Secret Sharing Scheme

Քանի որ մենք դա գիտենք Shamir's Secret Sharing Scheme, վերականգնում Shamir's Secret Sharing Scheme արված պարզապես.

Shamir's Secret Sharing Scheme

Օգտագործելով անապահով ամբողջ թվային թվաբանություն

Չնայած մենք հաջողությամբ կիրառել ենք Շամիրի հիմնական գաղափարը Shamir's Secret Sharing Scheme, մնացել ենք մի խնդրի առաջ, որը մինչ այժմ անտեսել ենք։ Մեր բազմանդամ ֆունկցիան օգտագործում է անապահով ամբողջ թվային թվաբանություն։ Նկատի ունեցեք, որ յուրաքանչյուր լրացուցիչ կետի համար, որը հարձակվողը ստանում է մեր ֆունկցիայի գրաֆիկի վրա, այլ կետերի համար ավելի քիչ հնարավորություններ կան: Դուք կարող եք դա տեսնել ձեր սեփական աչքերով, երբ բազմանդամ ֆունկցիայի համար ավելացող միավորներ եք գծում՝ օգտագործելով ամբողջ թվաբանությունը: Սա հակաարդյունավետ է մեր հայտարարած անվտանգության նպատակին, քանի որ հարձակվողը պետք է բացարձակապես ոչինչ իմանա այնքան ժամանակ, քանի դեռ չի ունեցել առնվազն Shamir's Secret Sharing Scheme բեկորներ.

Ցույց տալու համար, թե որքան թույլ է ամբողջ թվային թվաբանական սխեման, դիտարկենք մի սցենար, որտեղ հարձակվողը ստացել է երկու միավոր Shamir's Secret Sharing Scheme և գիտի հանրային տեղեկատվություն, որ Shamir's Secret Sharing Scheme. Այս տեղեկություններից նա կարող է եզրակացնել Shamir's Secret Sharing Scheme, հավասար է երկուսի և միացրեք հայտնի արժեքները բանաձևի մեջ Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Այնուհետև հարձակվողը կարող է գտնել Shamir's Secret Sharing Scheme, հաշվելով Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Քանի որ մենք սահմանել ենք Shamir's Secret Sharing Scheme Որպես պատահականորեն ընտրված դրական ամբողջ թվեր, հնարավոր է սահմանափակ թվով Shamir's Secret Sharing Scheme. Օգտագործելով այս տեղեկությունը՝ հարձակվողը կարող է եզրակացնել Shamir's Secret Sharing Scheme, քանի որ 5-ից մեծ ցանկացած բան կարող է անել Shamir's Secret Sharing Scheme բացասական. Պարզվում է, որ դա ճիշտ է, քանի որ մենք որոշել ենք Shamir's Secret Sharing Scheme

Այնուհետև հարձակվողը կարող է հաշվարկել հնարավոր արժեքները Shamir's Secret Sharing Schemeփոխարինելով Shamir's Secret Sharing Scheme в Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Սահմանափակ տարբերակներով Shamir's Secret Sharing Scheme պարզ է դառնում, թե որքան հեշտ է ընտրել և ստուգել արժեքները Shamir's Secret Sharing Scheme. Այստեղ ընդամենը հինգ տարբերակ կա:

Խնդրի լուծում անապահով ամբողջ թվային թվաբանությամբ

Այս խոցելիությունը վերացնելու համար Շամիրն առաջարկում է օգտագործել մոդուլային թվաբանություն՝ փոխարինելով Shamir's Secret Sharing Scheme մասին Shamir's Secret Sharing SchemeՈրտեղ Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme - բոլոր պարզ թվերի բազմությունը:

Եկեք արագ հիշենք, թե ինչպես է աշխատում մոդուլային թվաբանությունը: Սլաքներով ժամացույցը ծանոթ հասկացություն է: Նա օգտագործում է ժամացույց, որը Shamir's Secret Sharing Scheme. Հենց որ ժամացույցը անցնում է տասներկուսին, այն վերադառնում է մեկի: Այս համակարգի հետաքրքիր հատկությունն այն է, որ պարզապես ժամացույցին նայելով՝ մենք չենք կարող եզրակացնել, թե քանի պտույտ է կատարել ժամացույցի սլաքը: Այնուամենայնիվ, եթե մենք իմանանք, որ ժամացույցը անցել է 12 չորս անգամ, մենք կարող ենք ամբողջությամբ որոշել անցած ժամերի քանակը՝ օգտագործելով պարզ բանաձևը. Shamir's Secret Sharing SchemeՈրտեղ Shamir's Secret Sharing Scheme մեր բաժանարարն է (այստեղ Shamir's Secret Sharing Scheme), Shamir's Secret Sharing Scheme գործակիցն է (քանի անգամ է բաժանարարը մտնում սկզբնական թվի մեջ առանց մնացորդի, այստեղ Shamir's Secret Sharing Scheme), և Shamir's Secret Sharing Scheme մնացորդն է, որը սովորաբար վերադարձնում է մոդուլային օպերատորի զանգ (այստեղ Shamir's Secret Sharing Scheme) Այս բոլոր արժեքների իմացությունը թույլ է տալիս մեզ լուծել հավասարումը Shamir's Secret Sharing Scheme, բայց եթե բաց թողնենք գործակիցը, մենք երբեք չենք կարողանա վերականգնել սկզբնական արժեքը։

Մենք կարող ենք ցույց տալ, թե ինչպես է դա բարելավում մեր սխեմայի անվտանգությունը՝ կիրառելով սխեման մեր նախորդ օրինակին և օգտագործելով Shamir's Secret Sharing Scheme. Մեր նոր բազմանդամ ֆունկցիան Shamir's Secret Sharing Scheme, և նոր կետերը Shamir's Secret Sharing Scheme. Այժմ առանցքային պահապանները կարող են ևս մեկ անգամ օգտագործել բազմանդամ ինտերպոլացիա՝ մեր ֆունկցիան վերականգնելու համար, միայն թե այս անգամ գումարման և բազմապատկման գործողությունները պետք է ուղեկցվեն մոդուլային կրճատմամբ։ Shamir's Secret Sharing Scheme (օրինակ Shamir's Secret Sharing Scheme).

Օգտագործելով այս նոր օրինակը՝ ենթադրենք, որ հարձակվողը սովորել է այս նոր կետերից երկուսը. Shamir's Secret Sharing Scheme, և հանրային տեղեկատվություն Shamir's Secret Sharing Scheme. Այս անգամ հարձակվողը, հիմնվելով իր ունեցած ողջ տեղեկատվության վրա, դուրս է բերում հետևյալ գործառույթները, որտեղ Shamir's Secret Sharing Scheme բոլոր դրական ամբողջ թվերի բազմությունն է, և Shamir's Secret Sharing Scheme ներկայացնում է մոդուլի գործակիցը Shamir's Secret Sharing Scheme.

Shamir's Secret Sharing Scheme

Հիմա մեր հարձակվողը կրկին գտնում է Shamir's Secret Sharing Scheme, հաշվարկելով Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Հետո նորից փորձում է Shamir's Secret Sharing Schemeփոխարինելով Shamir's Secret Sharing Scheme в Shamir's Secret Sharing Scheme:

Shamir's Secret Sharing Scheme

Այս անգամ նա լուրջ խնդիր ունի. Բանաձևում բացակայող արժեքներ Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme. Քանի որ կան այս փոփոխականների անսահման թվով համակցություններ, նա չի կարող լրացուցիչ տեղեկություններ ստանալ։

Անվտանգության նկատառումներ

Շամիրի գաղտնի փոխանակման սխեման հուշում է անվտանգությունը տեղեկատվության տեսության տեսանկյունից. Սա նշանակում է, որ մաթեմատիկան դիմացկուն է նույնիսկ անսահմանափակ հաշվողական հզորությամբ հարձակվողի դեմ: Այնուամենայնիվ, շղթան դեռ պարունակում է մի քանի հայտնի խնդիրներ:

Օրինակ, Շամիրի սխեման չի ստեղծում բեկորներ, որոնք պետք է ստուգվեն, այսինքն՝ մարդիկ կարող են ազատորեն ներկայացնել կեղծ բեկորներ և խոչընդոտել ճիշտ գաղտնիքի վերականգնմանը։ Բավարար տեղեկություններ ունեցող թշնամական բեկոր պահողը կարող էր նույնիսկ փոխել մեկ այլ բեկոր Shamir's Secret Sharing Scheme ձեր հայեցողությամբ: Այս խնդիրը լուծվում է օգտագործելով Գաղտնի փոխանակման ստուգելի սխեմաներ, ինչպիսին է Ֆելդմանի սխեման։

Մյուս խնդիրն այն է, որ ցանկացած հատվածի երկարությունը հավասար է համապատասխան գաղտնիքի երկարությանը, ուստի գաղտնիքի երկարությունը հեշտ է որոշել: Այս խնդիրը կարելի է լուծել մանրուքներով լիցքավորում գաղտնիք կամայական թվերով մինչև ֆիքսված երկարություն։

Վերջապես, կարևոր է նշել, որ մեր անվտանգության մտահոգությունները կարող են դուրս գալ բուն դիզայնից: Իրական աշխարհի կրիպտոգրաֆիկ հավելվածների համար հաճախ կա կողային ալիքի հարձակումների վտանգ, որտեղ հարձակվողը փորձում է օգտակար տեղեկատվություն կորզել հավելվածի կատարման ժամանակից, քեշից, խափանումներից և այլն: Եթե ​​դա մտահոգիչ է, մշակման ընթացքում պետք է զգույշ ուշադրություն դարձնել պաշտպանիչ միջոցների կիրառմանը, ինչպիսիք են գործառույթները և մշտական ​​ժամանակի որոնումները, հիշողությունը սկավառակի վրա պահելու կանխումը և մի շարք այլ նկատառումներ, որոնք դուրս են այս հոդվածի շրջանակներից:

Դեմո

On այս էջը Կա Շամիրի գաղտնի փոխանակման սխեմայի ինտերակտիվ ցուցադրություն: Ցուցադրություն՝ հիմնված գրադարանի վրա ssss-js, որն ինքնին հայտնի ծրագրի JavaScript պորտն է ՍԱՊԾ. Նկատի ունեցեք, որ հաշվարկելով մեծ արժեքներ Shamir's Secret Sharing Scheme, Shamir's Secret Sharing Scheme и Shamir's Secret Sharing Scheme կարող է մի քիչ տևել:

Source: www.habr.com

Добавить комментарий