Шамирдің құпия бөлісу схемасы

Банк қоймасын қамтамасыз ету қажет сценарийді қарастырыңыз. Бұл сізге жұмыстың бірінші күнінде берілетін кілтсіз мүлдем алынбайды деп саналады. Сіздің мақсатыңыз кілтті қауіпсіз сақтау.

Қажет болса, жадқа қолжетімділікті қамтамасыз ете отырып, кілтті әрқашан өзіңізбен бірге ұстауды шештіңіз делік. Бірақ сіз мұндай шешімнің іс жүзінде жақсы масштабталмағанын тез түсінесіз, өйткені қойманы ашқан сайын сіздің физикалық қатысуыңыз қажет. Сізге уәде етілген демалыс ше? Сонымен қатар, сұрақ одан да қорқынышты: егер сіз жалғыз кілтіңізді жоғалтып алсаңыз ше?

Сіздің демалысыңызды ескере отырып, сіз кілттің көшірмесін жасап, оны басқа қызметкерге тапсыруды шешесіз. Дегенмен, бұл да идеал емес екенін түсінесіз. Кілттердің санын екі есе көбейту арқылы сіз кілттерді ұрлау мүмкіндігін де екі есе арттырасыз.

Амалсыздан сіз көшірмелерді жойып, бастапқы кілтті екіге бөлуді шешесіз. Енді кілтті жинап, қойманы ашу үшін кілт фрагменттері бар екі сенімді адам физикалық түрде қатысуы керек деп ойлайсыз. Бұл ұрыға екі бөлікті ұрлау керек дегенді білдіреді, бұл бір кілтті ұрлаудан екі есе қиын. Дегенмен, көп ұзамай сіз бұл схеманың бір кілтке қарағанда әлдеқайда жақсы емес екенін түсінесіз, себебі біреу жарты кілтті жоғалтып алса, толық кілтті қалпына келтіру мүмкін емес.

Мәселені қосымша кілттер мен құлыптар сериясымен шешуге болады, бірақ бұл тәсіл тез қажет болады много кілттер мен құлыптар. Қауіпсіздік бір адамға ғана сенбеуі үшін кілтті ортақ пайдалану идеалды дизайн болады деп шешесіз. Сондай-ақ, егер бір фрагмент жоғалса (немесе адам демалысқа шықса) барлық кілт жұмыс істеп тұруы үшін фрагменттердің саны үшін белгілі бір шек болуы керек деген қорытындыға келдіңіз.

Құпиямен қалай бөлісуге болады

Негізгі басқару схемасының бұл түрі туралы Ади Шамир 1979 жылы өз жұмысын жариялаған кезде ойлаған «Құпияны қалай бөлісуге болады». Мақалада қысқаша деп аталатындар түсіндіріледі Шамирдің құпия бөлісу схемасы құпия мәнді (мысалы, криптографиялық кілт) тиімді бөлуге арналған шекті схема Шамирдің құпия бөлісу схемасы бөліктері. Содан кейін, кем дегенде қашан және қашан Шамирдің құпия бөлісу схемасы -дан Шамирдің құпия бөлісу схемасы бөлшектер жиналған, сіз құпияны оңай қалпына келтіре аласыз Шамирдің құпия бөлісу схемасы.

Қауіпсіздік тұрғысынан, бұл схеманың маңызды қасиеті - шабуылдаушы, егер кем дегенде, егер ол болмаса, мүлдем ештеңе білмеуі керек. Шамирдің құпия бөлісу схемасы бөліктері. Тіпті болуы Шамирдің құпия бөлісу схемасы бөліктері ешқандай ақпарат бермеуі керек. Біз бұл қасиет деп атаймыз семантикалық қауіпсіздік.

Полиномдық интерполяция

Шамир шекті схемасы Шамирдің құпия бөлісу схемасы тұжырымдамасы төңірегінде құрылған полиномдық интерполяция. Егер сіз бұл тұжырымдамамен таныс болмасаңыз, бұл өте қарапайым. Шындығында, егер сіз графиктегі нүктелерді салып, содан кейін оларды сызықтармен немесе қисықтармен байланыстырсаңыз, сіз оны бұрыннан қолдандыңыз!

Шамирдің құпия бөлісу схемасы
Екі нүкте арқылы 2-дәрежелі көпмүшелердің шексіз санын салуға болады. Олардың ішінен жалғызын таңдау үшін үшінші нүкте қажет. Иллюстрация: Уикипедия

Бірінші дәрежелі көпмүшені қарастырайық, Шамирдің құпия бөлісу схемасы. Бұл функцияны графикке салғыңыз келсе, сізге қанша нүкте қажет? Біз бұл сызықты құрайтын сызықтық функция екенін білеміз, сондықтан оған кемінде екі нүкте қажет. Әрі қарай, екінші дәрежелі көпмүшелік функцияны қарастырыңыз, Шамирдің құпия бөлісу схемасы. Бұл квадраттық функция, сондықтан графикті салу үшін кемінде үш нүкте қажет. Үшінші дәрежелі көпмүше туралы не деуге болады? Кем дегенде төрт ұпай. Және тағы басқалар.

Бұл қасиет туралы шынымен керемет нәрсе, полиномдық функцияның дәрежесін ескере отырып және кем дегенде Шамирдің құпия бөлісу схемасы нүктелер болса, біз осы көпмүшелік функция үшін қосымша нүктелерді шығара аламыз. Бұл қосымша нүктелерді экстраполяция деп атаймыз полиномдық интерполяция.

Құпия ойлап табу

Шамирдің ақылды схемасы осы жерде іске асатынын түсінген боларсыз. Сырымызды айтайық Шамирдің құпия бөлісу схемасы Мүмкін Шамирдің құпия бөлісу схемасы. Біз бұра аламыз Шамирдің құпия бөлісу схемасы графиктегі нүктеге Шамирдің құпия бөлісу схемасы және дәрежесі бар көпмүшелік функцияны шығарыңыз Шамирдің құпия бөлісу схемасы, бұл осы тармақты қанағаттандырады. Естеріңізге сала кетейік Шамирдің құпия бөлісу схемасы біздің қажетті фрагменттердің табалдырығы болады, сондықтан шекті үш фрагментке орнатсақ, екінші дәрежелі көпмүшелік функцияны таңдауымыз керек.

Біздің көпмүшенің пішіні болады Шамирдің құпия бөлісу схемасықайда Шамирдің құпия бөлісу схемасы и Шамирдің құпия бөлісу схемасы — кездейсоқ таңдалған оң бүтін сандар. Біз жай ғана дәрежесі бар көпмүшені құрастырамыз Шамирдің құпия бөлісу схемасы, мұндағы бос коэффициент Шамирдің құпия бөлісу схемасы - Бұл біздің құпиямыз Шамирдің құпия бөлісу схемасы, және одан кейінгілердің әрқайсысы үшін Шамирдің құпия бөлісу схемасы кездейсоқ таңдалған оң коэффициент бар. Егер біз бастапқы мысалға оралсақ және оны болжасақ Шамирдің құпия бөлісу схемасы, содан кейін функцияны аламыз Шамирдің құпия бөлісу схемасы.

Осы кезде біз қосылу арқылы фрагменттерді жасай аламыз Шамирдің құпия бөлісу схемасы ішіндегі бірегей бүтін сандар Шамирдің құпия бөлісу схемасықайда Шамирдің құпия бөлісу схемасы (себебі бұл біздің құпиямыз). Бұл мысалда біз үш табалдырықпен төрт фрагментті таратқымыз келеді, сондықтан біз кездейсоқ нүктелерді жасаймыз Шамирдің құпия бөлісу схемасы және кілтті сақтаушы төрт сенімді адамға бір ұпайдан жіберіңіз. Оны да халыққа хабарлаймыз Шамирдің құпия бөлісу схемасы, өйткені бұл жалпыға ортақ ақпарат болып саналады және қалпына келтіру үшін қажет Шамирдің құпия бөлісу схемасы.

Құпияны қалпына келтіру

Біз көпмүшелік интерполяция түсінігін және оның Шамирдің шекті схемасының негізінде жатқанын жоғарыда талқыладық. Шамирдің құпия бөлісу схемасы. Төрт сенімді тұлғаның үшеуі қалпына келтіргісі келгенде Шамирдің құпия бөлісу схемасы, олар тек интерполяциялау керек Шамирдің құпия бөлісу схемасы өзіндік ерекше нүктелері бар. Ол үшін олар өз ұпайларын анықтай алады Шамирдің құпия бөлісу схемасы және келесі формула арқылы Лагранж интерполяциясының көпмүшелігін есептеңіз. Егер бағдарламалау сізге математикаға қарағанда түсінікті болса, онда pi мәні оператор болып табылады for, ол барлық нәтижелерді көбейтеді, ал сигма for, ол бәрін қосады.

Шамирдің құпия бөлісу схемасы

Шамирдің құпия бөлісу схемасы

жанында Шамирдің құпия бөлісу схемасы біз оны осылай шеше аламыз және бастапқы полиномдық функциямызды қайтара аламыз:

Шамирдің құпия бөлісу схемасы

Өйткені біз мұны білеміз Шамирдің құпия бөлісу схемасы, қалпына келтіру Шамирдің құпия бөлісу схемасы қарапайым орындалды:

Шамирдің құпия бөлісу схемасы

Қауіпті бүтін арифметиканы пайдалану

Біз Шәмірдің негізгі идеясын сәтті қолдандық Шамирдің құпия бөлісу схемасы, осы уақытқа дейін назардан тыс қалдырған мәселе қалды. Біздің көпмүшелік функциямыз қауіпті бүтін арифметиканы пайдаланады. Біздің функцияның графигінде шабуылдаушы алатын әрбір қосымша нүкте үшін басқа нүктелер үшін аз мүмкіндіктер бар екенін ескеріңіз. Бүтін арифметика арқылы көпмүшелік функция үшін нүктелердің көбеюін сызған кезде мұны өз көзіңізбен көруге болады. Бұл біздің мәлімдеген қауіпсіздік мақсатымызға кері әсер етеді, өйткені шабуылдаушы ең болмағанда қолында ештеңе білмеуі керек Шамирдің құпия бөлісу схемасы фрагменттері.

Бүтін арифметикалық схеманың қаншалықты әлсіз екенін көрсету үшін шабуылдаушы екі ұпай алған сценарийді қарастырыңыз. Шамирдің құпия бөлісу схемасы және бұл туралы қоғамдық ақпаратты біледі Шамирдің құпия бөлісу схемасы. Осы мәліметтерден ол қорытынды шығара алады Шамирдің құпия бөлісу схемасы, екіге тең және белгілі мәндерді формулаға қосыңыз Шамирдің құпия бөлісу схемасы и Шамирдің құпия бөлісу схемасы.

Шамирдің құпия бөлісу схемасы

Содан кейін шабуылдаушы таба алады Шамирдің құпия бөлісу схемасы, санау Шамирдің құпия бөлісу схемасы:

Шамирдің құпия бөлісу схемасы

Біз анықтағандықтан Шамирдің құпия бөлісу схемасы кездейсоқ таңдалған оң бүтін сандар ретінде мүмкін болатын саны шектеулі Шамирдің құпия бөлісу схемасы. Осы ақпаратты пайдалана отырып, шабуылдаушы қорытынды жасай алады Шамирдің құпия бөлісу схемасы, өйткені 5-тен жоғары кез келген нәрсе жасайды Шамирдің құпия бөлісу схемасы теріс. Біз анықтағандықтан, бұл рас болып шықты Шамирдің құпия бөлісу схемасы

Содан кейін шабуылдаушы ықтимал мәндерді есептей алады Шамирдің құпия бөлісу схемасыауыстыру Шамирдің құпия бөлісу схемасы в Шамирдің құпия бөлісу схемасы:

Шамирдің құпия бөлісу схемасы

Шектеулі опциялармен Шамирдің құпия бөлісу схемасы мәндерді таңдау және тексеру қаншалықты оңай екені белгілі болады Шамирдің құпия бөлісу схемасы. Мұнда тек бес нұсқа бар.

Қауіпті бүтін арифметикамен есепті шешу

Бұл осалдықты жою үшін Шамир модульдік арифметиканы ауыстыруды ұсынады Шамирдің құпия бөлісу схемасы туралы Шамирдің құпия бөлісу схемасықайда Шамирдің құпия бөлісу схемасы и Шамирдің құпия бөлісу схемасы — барлық жай сандар жиыны.

Модульдік арифметика қалай жұмыс істейтінін тез еске түсірейік. Қолдары бар сағат - бұл таныс ұғым. Ол сағатты пайдаланады Шамирдің құпия бөлісу схемасы. Сағат тілі он екіден өткен соң бірден бірге қайтады. Бұл жүйенің қызықты қасиеті - сағатқа қарап, сағат тілі қанша айналым жасағанын анықтай алмаймыз. Алайда, егер сағат тілі 12 төрт рет өткенін білсек, қарапайым формула арқылы өткен сағат санын толық анықтауға болады. Шамирдің құпия бөлісу схемасықайда Шамирдің құпия бөлісу схемасы біздің бөлгішіміз (мұнда Шамирдің құпия бөлісу схемасы), Шамирдің құпия бөлісу схемасы коэффициент болып табылады (бөлінгіш бастапқы санға қалдықсыз қанша рет түседі, мұнда Шамирдің құпия бөлісу схемасы), және Шамирдің құпия бөлісу схемасы әдетте модуль операторының шақыруын қайтаратын қалдық (мұнда Шамирдің құпия бөлісу схемасы). Барлық осы мәндерді білу бізге теңдеуді шешуге мүмкіндік береді Шамирдің құпия бөлісу схемасы, бірақ егер біз коэффициентті жіберіп алсақ, біз ешқашан бастапқы мәнді қалпына келтіре алмаймыз.

Алдыңғы мысалға схеманы қолдану және пайдалану арқылы бұл схемамыздың қауіпсіздігін қалай жақсартатынын көрсете аламыз. Шамирдің құпия бөлісу схемасы. Біздің жаңа көпмүшелік функциямыз Шамирдің құпия бөлісу схемасы, және жаңа нүктелер Шамирдің құпия бөлісу схемасы. Енді негізгі сақтаушылар функциямызды қайта құру үшін полиномдық интерполяцияны тағы бір рет пайдалана алады, тек осы жолы қосу және көбейту амалдары модульді азайтумен бірге жүруі керек. Шамирдің құпия бөлісу схемасы (мысалы Шамирдің құпия бөлісу схемасы).

Осы жаңа мысалды пайдалана отырып, шабуылдаушы осы екі жаңа тармақты білді делік, Шамирдің құпия бөлісу схемасы, және қоғамдық ақпарат Шамирдің құпия бөлісу схемасы. Бұл жолы шабуылдаушы өзінің барлық ақпаратына сүйене отырып, келесі функцияларды шығарады, мұнда Шамирдің құпия бөлісу схемасы барлық натурал сандар жиыны және Шамирдің құпия бөлісу схемасы модуль коэффициентін көрсетеді Шамирдің құпия бөлісу схемасы.

Шамирдің құпия бөлісу схемасы

Енді біздің шабуылдаушы қайтадан табады Шамирдің құпия бөлісу схемасы, есептеу Шамирдің құпия бөлісу схемасы:

Шамирдің құпия бөлісу схемасы

Содан кейін ол қайтадан тырысады Шамирдің құпия бөлісу схемасыауыстыру Шамирдің құпия бөлісу схемасы в Шамирдің құпия бөлісу схемасы:

Шамирдің құпия бөлісу схемасы

Бұл жолы оның ауыр проблемасы бар. Формула жоқ мәндер Шамирдің құпия бөлісу схемасы, Шамирдің құпия бөлісу схемасы и Шамирдің құпия бөлісу схемасы. Бұл айнымалылардың комбинацияларының шексіз саны болғандықтан, ол ешқандай қосымша ақпаратты ала алмайды.

Қауіпсіздікті қарастыру

Шамирдің құпия бөлісу схемасы ұсынады ақпарат теориясы тұрғысынан қауіпсіздік. Бұл математиканың тіпті шектеусіз есептеу қабілеті бар шабуылдаушыға да төзімді екенін білдіреді. Дегенмен, схема әлі де бірнеше белгілі мәселелерді қамтиды.

Мысалы, Шамирдің схемасы жасамайды тексерілетін үзінділер, яғни адамдар жалған фрагменттерді еркін ұсынып, дұрыс құпияны қалпына келтіруге кедергі жасай алады. Жеткілікті ақпараты бар дұшпандық фрагментті сақтаушы тіпті өзгерту арқылы басқа фрагментті де жасай алады Шамирдің құпия бөлісу схемасы өз қалауыңыз бойынша. Бұл мәселе көмегімен шешіледі тексерілетін құпия бөлісу схемалары, мысалы, Фельдман схемасы.

Тағы бір мәселе, кез келген фрагменттің ұзындығы сәйкес құпияның ұзындығына тең, сондықтан құпияның ұзындығын анықтау оңай. Бұл мәселені тривиальды жолмен шешуге болады төсеу белгіленген ұзындыққа дейін ерікті сандармен құпия.

Соңында, біздің қауіпсіздік мәселелері дизайнның өзінен тыс болуы мүмкін екенін ескеру маңызды. Шынайы криптографиялық қолданбалар үшін шабуылдаушы қолданбаның орындалу уақытынан, кэштеуден, бұзылулардан және т.б. пайдалы ақпаратты алуға тырысатын бүйірлік арналық шабуылдар қаупі жиі кездеседі. Егер бұл алаңдаушылық тудырса, әзірлеу кезінде функциялар мен тұрақты уақыттағы іздеулер, жадтың дискіге сақталуына жол бермеу және осы мақаланың ауқымынан тыс басқа да бірқатар мәселелер сияқты қорғаныс шараларын қолдануды мұқият қарастырған жөн.

Демо

туралы Бұл бет Шамирдің құпия бөлісу схемасының интерактивті көрсетілімі бар. Кітапханаға негізделген демонстрация ssss-js, ол өзі танымал бағдарламаның JavaScript порты болып табылады ssss. Үлкен мәндерді есептеуді ескеріңіз Шамирдің құпия бөлісу схемасы, Шамирдің құпия бөлісу схемасы и Шамирдің құпия бөлісу схемасы біраз уақыт алуы мүмкін.

Ақпарат көзі: www.habr.com

пікір қалдыру