-
Пре него што пређемо на градиво техничке природе, желим да вам дам кратак
-
преглед о чему се заправо ради у криптографији и о њеним различитим областима.
-
Срж криптографије је наравно безбедна комуникација која се у суштини
-
састоји из два дела. Први део је успостављање тајног кључа
-
а други део безбедно комуницирање помоћу дељеног кључа. Већ смо рекли да се
-
успостављање тајног кључа своди на слање порука између Алисе и Боба
-
тако да на крају овог протокола постоји заједнички кључ о коме
-
су се обоје сложили, заједнички кључ k, и да, осим заједничког кључа,
-
Алиса зна да разговара са Бобом и Боб зна да разговара са Алисом.
-
Али сироти нападач који прислушкује овај разговор нема никакву представу о томе
-
шта је вредност заједничког кључа. Касније ћемо у течају да видимо како се ово постиже.
-
Једном када имају заједнички кључ, они желе да размењују поруке безбедно коришћењем кључа,
-
па ћемо да говоримо о начинима шифровања који им омогућавају да то чине
-
на такав начин да нападач не може да открије које поруке се размењују.
-
Осим тога, нападач не може да се меша у саобраћај а да не буде примећен.
-
Другим речима, ови начини шифровања омогућавају како тајност тако и
-
веродостојност. Али криптографија омогућава још много, много више него
-
ове две ствари. И желео бих да вам дам пар примера за ово. Први пример који
-
желим да вам дам је такозвани дигитални потпис. Дигитални потпис је
-
у суштини попут потписа у природном свету. Када у природном
-
свету потпишете документ, ставили сте свој потпис на њега,
-
и ваш потпис је увек исти. Увек стављате исти
-
потпис на све документе које желите да потпишете. У дигиталном свету, ово
-
није могуће, јер када би нападач прибавио макар само један документ који сам ја потписао,
-
он би могао да исече и залепи мој потпис на неки други документ који можда нисам
-
желео да потпишем. Тако да једноставно није могуће да у дигиталном свету
-
мој потпис буде исти за све документе које желим да потпишем. Тако да ћемо
-
у другом делу течаја да говоримо о томе како се праве дигитални потписи.
-
То је заиста занимљива примитива, и видећемо како се управо то ради.
-
Да вам наговестим, дигитални потписи се добијају
-
у функцији садржаја који се потписује. Тако да нападач који
-
покушава да копира мој потпис са једног документа на други не може да успе у томе,
-
зато што потпис на новом документу није одговарајућа функција
-
података у новом документу, и због тога потпис неће бити потврђен. Као што сам рекао,
-
касније ћемо да видимо како се управо добијају дигитални потписи, а затим ћемо
-
да докажемо да су такве конструкције безбедне. Још једна примена криптографије коју
-
сам желео да споменем, јесте анонимна комуникација. Замислите да корисник
-
Алиса жели да се обрати неком серверу за ћаскање, Бобу. И, можда жели да разговара о
-
неком медицинском стању, и жели да то учини анонимно, тако да сервер
-
не зна ко је она. Постоји стандардни поступак, који се назива
-
микснет, који омогућава Алиси да комуницира преко јавне интернет мреже са Бобом преко
-
низа посредника, тако да на крају комуникације Боб нема представу о томе са ким
-
је управо разговарао. Микснет ради тако што Алиса шаље своје поруке
-
Бобу преко низа посредника, ове поруке се шифрују
-
и дешифрују тако да Боб нема представу о томе са ким је разговарао, а сами посредници
-
не знају чак ни то да Алиса разговара са Бобом, или још уопштеније
-
ко разговара са ким. Занимљивост везана за овај анонимни
-
канал комуникације је што је ово обострано. Другим речима,
-
чак иако Боб нема представу са ким разговара, он може да одговори Алиси и
-
Алиса ће да добије те поруке. Када имамо анонимну комуникацију, можемо да надоградимо
-
друге механизме приватности. Желим да вам дам један пример који се зове анонимна
-
дигитална готовина. Приметите да када у природном свету имам долар,
-
могу да уђем у књижару и купим књигу, и трговац не би знао
-
ко сам ја. Питање је да ли можемо да имамо то исто у
-
дигиталном свету. Алиса у дигиталном свету може да има дигитални долар,
-
дигитални новчић од једног долара. И можда жели да потроши тај новац на неку куповину преко
-
мреже, рецимо у мрежној књижари. Желимо да постигнемо то да
-
када Алиса потроши свој новчић у књижари, књижара не може да зна
-
ко је Алиса. Тако да омогућавамо исту анонимност коју имамо приликом коришћења праве готовине.
-
Проблем је што у дигиталном свету, Алиса може да узме свој новчић
-
од једног долара, и пре него што га потроши, може да направи његове дупликате.
-
Тако да уместо да има само један новчић,
-
сада има три новчића, и они су сви истоветни наравно,
-
тако да је ништа не спречава да узме ове копије новчића
-
и потроши их код других трговаца. Тако да се поставља питање како се омогућава анонимна
-
дигитална готовина, а да се при томе спречи да Алиса више пута потроши
-
исти новчић код различитих трговаца. У извесном смислу овде постоји парадокс, зато што је
-
анонимност у противречности са безбедношћу - ако имамо анонимну готовину, ништа не може
-
да спречи Алису да не потроши исти новчић више пута, а зато што је новчић
-
анониман, немамо начин да утврдимо ко је починио превару. Тако да је питање
-
како да се разреши ова противречност. Испоставља се да је ово сасвим изводљиво.
-
Касније ћемо да говоримо и о анонимној дигиталној готовини. Само да вам наговестим,
-
све што треба да урадимо је да обезбедимо да ако Алиса потроши новчић
-
једном, нико не зна ко је она, али ако га потроши више него једном,
-
њен идентитет се разоткрива и она је подложна
-
законској одговорности. То је дакле начин на који се постиже анонимна дигитална готовина
-
и ми ћемо касније током течаја да видимо како се она спроводи.
-
Још једна примена криптографије везана је са још апстрактнијим протоколима,
-
али пре него што пређем на уопштене резулате, желим да вам дам два примера.
-
Први пример је везан за гласачке системе. Проблем гласања је следећи:
-
рецимо да постоје две странке, странка 0 и странка 1. Гласачи гласају за ове странке.
-
Тако на пример, овај гласач је могао да гласа за странку 0, овај за
-
странку 1, итд. Тако да је на овим изборима странка 0 добила 3 гласа а странка 1
-
је добила 2 гласа. Победник на изборима је наравно странка 0.
-
Али мало уопштеније, победник на изборима је странка која добије већину
-
гласова. Проблем гласања састоји се у следећем. Гласачи би желели да
-
се преброји већина гласова, али на такав начин да се ништа друго
-
не открива о њиховим појединачним гласовима. Поставља се питање како да се ово постигне?
-
Да бисмо ово постигли, увешћемо изборно седиште које ће да нам помогне у
-
пребројавању већинских гласова, али ће да сачува тајност гласача. Свака странка ће
-
да пошаље изборном седишту своје шифроване гласове
-
на такав начин да на крају избора, изборно седиште може да
-
преброји и да као излаз победника избора. Међутим, осим победника
-
избора, ништа се друго не открива о појединачним гласачима - појединачни гласови
-
у сваком погледу остају потпуно приватни. Наравно изборно седише такође треба да
-
потврди да на пример гласач има право гласа, и да је гласао
-
само једанпут. Али осим тог податка, изборно седиште и
-
остатак света нису сазнали ништа друго из гласова гласача осим
-
резултата избора. Ово је дакле пример протокола који обухвата 6
-
странака. У овом случају постоји 5 гласача у једном изборном седишту.
-
Ове странке броје гласове између себе. И на крају бројања, резултат
-
избора је познат, али ништа друго није откривено о појединачним улазима.
-
Слични проблем јавља се и код приватних аукција.
-
Тада сваки купац има сопствену понуду коју је спреман да плати. И претпоставимо
-
да је механизам аукције који се користи онај који називамо Викрејевом аукцијом, када
-
је победник онај купац који је понудио највише.
-
Али свота коју победник плаћа је заправо друга највећа понуда. Дакле он плаћа
-
другу највећу понуду. Ово је стандардни механизам аукције, познат као
-
Викрејева аукција. Оно што ми желимо да постигнемо јесте да омогућимо учесницима
-
да израчунају ко је понудио највише и колико треба да плати,
-
али да осим тога све остале информације о појединачним понудама
-
остану тајне. Тако да на пример, стварна количина новца коју је понудио купац са највећом
-
понудом, треба да остане тајна. Једина ствар која треба да је објави је друга највећа понуда
-
и идентитет купца са највећом понудом. Ово ћемо опет да постигнемо
-
тако што ћемо да уведемо седиште аукције, и, на сличан начин, свако
-
ће да пошаље своју шифровану понуду аукцијском седишту. Оно ће
-
да одреди идентитет победника и другу
-
највишу понуду, али осим ових двеју вредности, ништа друго се не открива о
-
појединачним понудама. Ово је у ствари пример много општијег проблема,
-
названог безбедни вишестраначки прорачун. Да вам објасним о чему се ради код
-
вишестраначког прорачуна. У општем случају, учесници имају тајни
-
улаз према себи. Тако да у случају избора, улази би били
-
гласови. У случају аукције, улази би били тајне понуде. А затим,
-
оно што желе да ураде јесте да прорачунају неку врсту функције својих улаза.
-
Још једном, у случају избора, функција јесте већина. У случају
-
аукције, функција је други највећи број између х1
-
до х4. И поставља се питање, како то могу да ураде, тако да вредност
-
функције буде откривена, али да се не открије ништа друго о појединачним гласовима.
-
Показаћу вам глупи, небезбедни начин да се ово уради. Увешћемо
-
странку од поверења. Овај поверљиви опуномоћеник сакупља појединачне
-
улазе, и обећава да ће појединачне улазе учинити тајним, тако да ће само он
-
да зна шта су они. И затим објављује вредност функције
-
свету. Замисао је да вредност функције постане јавна,
-
али да се ништа друго не открије о појединачним улазима. Али наравно, имате овог
-
поверљивог опуномоћеника, и ако он из неког разлога није
-
од поверења, имате проблем. Тако да постоји врло битна теорема у
-
криптографији, и стварно је изненађујућа, која гласи да који год
-
прорачун желели да извршите, коју год функцију F желели да прорачунате, ако можете
-
да је прорачунате са поверљивим опуномоћеником, можете и без њега.
-
Објаснићу вам шта ово значи, на високом нивоу. У суштини, сада ћемо
-
да се отарасимо опуномоћеника. Странке неће да шаљу
-
своје улазе опуномоћенику. У ствари, више неће да постоји
-
опуномоћеник у систему. Уместо тога, странке ће да
-
разговарају међусобно коришћењем неког протокола, таквог да на крају овог протокола
-
одједном вредност функције свима постаје позната, а да ипак
-
ништа друго осим вредности функције није откривено. Другим речима,
-
појединачни улази остају тајни, али нема опуномоћеника, постоји
-
само начин да се међусобно разговара тако да се открије коначни излаз.
-
Ово је врло општи резултат, и изненађујуће је да је ово уопште изводљиво.
-
А заправо јесте, и при крају часа ћемо заправо да видимо како да
-
ово постигнемо. Постоје неке примене криптографије
-
које не могу да разврстам другачије осим што ћу да кажем да су једноставно чаробне.
-
Даћу вам два таква примера. Први пример је такозвано приватно измештање прорачуна.
-
Даћу вам пример Гугл претраге само да вам представим у чему је ствар.
-
Замислите да Алиса има упит који жели да изда. Испоставља се да
-
постоје нарочите шеме шифровања такве да Алиса може да пошаље свој шифровани
-
упит Гуглу. А затим, због особина шеме за шифровање,
-
Гугл може да врши прорачун над шифрованим вредностима, а да при томе не зна
-
вредности отвореног текста. Дакле Гугл може да изврши свој гломазан алгоритам претраге
-
над шифрованим упитом и добије шифроване резултате. Гугл ће да пошаље
-
шифроване резултате натраг Алиси. Алиса ће да дешифрује и тада ће да добије
-
резултате. Чаролија у свему томе је да је Гугл видео само шифровани облик њених упита
-
и ништа више. И тако, Гугл у складу с тим нема представу о томе шта је у ствари Алиса
-
тражила, а ипак Алиса је сазнала баш оно што је
-
желела да сазна. Дакле, ово је врста чаробних шифрованих шема, оне су
-
јако скорашње, ово је нови изум од пре две или три године,
-
који ће да нам омогући да вршимо прорачуне над шифрованим подацима, иако заправо
-
не знамо шта је садржано под шифром. Пре него што пожурите да имплементирате ово,
-
требало би да вас упозорим да је ово у овој тачки развоја само теорија,
-
у том смислу што би за извршавање Гугл упита над шифрованим подацима било потребно
-
милијарду година. Упркос томе, сама чињеница да је ово изводљиво је врло
-
изненађујућа, и заиста врло корисна за релативно једноставне прорачуне.
-
Видећемо неке примене овог мало касније. Друга чаробна примена коју сам
-
желео да вам покажем је такозвано нула знање. Конкретно, говорићу ћу вам
-
о нечему што се зове доказ знања са нула знањем.
-
Ево о чему се ради: постоји неки број n, који је Алиси познат.
-
Овај број добијен је као производ два велика проста броја. Замислите да
-
имамо овде два проста броја, р и q. Можете да их оба схватите као 1000-цифрене бројеве.
-
И вероватно знате да је множење два 1000-цифрена броја прилично једноставно.
-
Али ако вам дам само њихов производ, његово разлагање на чиниоце је
-
у ствари прилично тешко. Искористићемо ту чињеницу да је разлагање на чиниоце
-
тешко да бисмо изградили криптосистеме са јавним кључем у другој половини течаја.
-
Алиса има овај број n, и такође зна чиниоце
-
од n. Боб има само број n, а не зна разлагање на чиниоце.
-
Чаробна ствар у вези са доказом знања са нула знањем је та,
-
што Алиса може да докаже Бобу да зна разлагање броја n на чиниоце, она заправо може да
-
понуди овај доказ Бобу, који он може да провери, и да буде уверен да Алиса зна
-
чиниоце броја n, а да Боб ништа не сазна о чиниоцима р
-
и q, и ово може да се докаже. Боб не сазнаје ништа
-
о чиниоцима р и q. Ово тврђење је заправо врло, врло општеважеће.
-
Овде се не ради само о томе да се докаже разлагање n на чиниоце. За скоро сваку слагалицу
-
за коју желите да докажете да имате њено решење, можете да то докажете при нула знању.
-
Значи ако имате укрштеницу коју сте решили - можда укрштеница и није најбољи пример -
-
али ако имате судоку слагалицу, на пример, за коју желите
-
да докажете да сте је решили, можете то да докажете Бобу на такав начин, да Боб не сазна
-
ништа о решењу, а да ипак буде уверен да заиста имате
-
решење ове слагалице. То су биле те чаробне примене.
-
Последња ствар коју сам желео да кажем је да је савремена криптографија јако
-
строга наука. Сваки појам који будемо описали,
-
следиће три јако строга корака, и ова три корака ћемо да видимо
-
поново и поново и поново, тако да желим да вам покажем шта су они. Прва ствар
-
коју ћемо да урадимо када представимо нову примитиву као што је дигитални потпис,
-
јесте да опишемо шта је тачно модел претње. То јест, шта нападач
-
може да уради да би напао дигитални потпис, и који је његов циљ приликом
-
фалсификовања. Дакле ми ћемо да одредимо шта то тачно значи да потпис
-
буде немогућ за фалсификовање. Дигитални потпис
-
наводим само као пример. За сваку примитиву коју ћемо да опишемо, ми ћемо
-
да тачно одредимо шта је модел претње. Затим ћемо да предложимо конструкцију
-
а затим и да докажемо да сваки нападач који успе да нападне
-
конструкцију под овим моделом претње, може да реши неки
-
тежак задатак који је у позадини. Сходно томе, ако је задатак јако тежак, тиме
-
доказујемо да ниједан нападач не може да пробије ову конструкцију под овим моделом претње.
-
Ова три корака су заправо врло важна. У случају
-
потписа, одредићемо шта то значи да потпис буде немогућ за фалсификовање, затим
-
ћемо да понудимо конструкцију, а затим ћемо да потврдимо да свако ко може да пробије нашу
-
конструкцију, може и да подели цели број на чиниоце, што се сматра
-
тешким задатком. Пратићемо ова три корака,
-
и онда ћете да видите како се ово добија.
-
Ово је крајовог одељка. У следећем одељку ћемо да разговарамо о историји
-
криптографије.