-
Прошле недеље, проучили смо теорију бројева која нам је потребна за шифровање јавним кључем.
-
Ове недеље ћемо да применимо ово знање, и да саградимо
-
неколико безбедних шема за шифровање јавним кључем. Али најпре ћемо да дефинишемо шта је
-
шифровање јавним кључем, и шта значи да ово шифровање буде безбедно.
-
Да вас подсетим да у шеми са шифровањем јавним кључем,
-
постоји алгоритам шифровања који је обично означен са Е, и постоји алгоритам дешифровања
-
који означавамо са D. Међутим, овде алгоритам шифровања узима
-
јавни кључ, али алгоритам дешифровања узима тајни кључ. Овај пар се зове пар кључева.
-
Јавни кључ се користи за шифровање, а тајни за
-
дешифровање порука. У овом случају порука m је шифрована
-
јавним кључем, а излаз је шифрат с. И слично томе,
-
шифрат се потхрањује алгоритму дешифровања, и, користећи тајни кључ,
-
излаз из алгоритма дешифровања је изворна порука m. Шифровање јавним кључем
-
има пуно примена. Прошле недеље смо видели класичну примену
-
а то је успостављане сесије, наиме, размена кључева, и за сада посматрамо размену кључева
-
која је безбедна само од прислушкивања. Ако се сећате како овај протокол ради,
-
Алиса би произвела пар јавни кључ - тајни кључ,
-
послала би јавни кључ Бобу, Боб би произвео случајно х,
-
које ће да служи као њихова заједничка тајна, а затим би послао шифровано х Алиси,
-
шифровано њеним јавним кључем. Алиса може да дешифрује, поврати х, и сада обоје
-
имају заједнички кључ х који могу да користе да безбедно комуницирају међусобно.
-
Нападач може да види само јавни кључ,
-
х шифровано под јавним кључем, на основу којег не би требало да може да дође до
-
било каквих података о х. Дефинисаћемо тачније шта то значи
-
не бити у стању да сазнате било шта о х. Шифровање јавним кључем има
-
у ствари много других примена. На пример, јако је корисно код
-
неинтерактивних апликација. Рецимо сетите се система е-поште.
-
Овде Боб жели да пошаље писмо Алиси, и када га пошаље, писмо прелази од
-
једног предајника писама до другог, све док коначно не стигне до Алисе, када га она
-
дешифрује. Систем е-поште је развијен за неку врсту
-
немеђудејствујућих окружења, где Боб шаље писмо, и Алиса треба да прими то писмо,
-
а да при томе не треба да комуницира са Бобом да би га дешифровала.
-
Дакле у овом случају, због одсуства међудејства, не постоји прилика
-
да се успостави заједнички тајни кључ између Алисе и Боба. У овом случају,
-
Боб би послао писмо шифровано коришћењем Алисиног јавног кључа.
-
Дакле он шаље писмо; било ко на свету може да пошаље шифровано писмо Алиси,
-
коришћењем њеног јавног кључа. Када Алиса прими ово писмо, користи
-
свој тајни кључ да дешифрује шифрат и поврати отворени текст поруке.
-
Наравно мана оваквог система је што Боб треба да некако
-
прибави Алисин јавни кључ. За сада претпостављамо да Боб већ има
-
Алисин јавни кључ, а касније, заправо када будемо говорили
-
о дигиталним потписима, видећемо да ово може да се обави врло делотворно
-
коришћењем управљања јавним кључем, дакле, кажем, на ово ћемо да се вратимо нешто касније.
-
Основна ствар коју овде треба да запамтите је да се шифровање јавним кључем
-
користи за успостављање сесија. Ово је врло често у вебу, када се шифровање јавним кључем
-
користи за успостављање безбедног кључа између веб прегледача и веб сервера.
-
Шифровање јавним кључем је такође јако корисно код неинтерактивних апликација,
-
када било ко на свету, неинтерактивно, треба да пошаље поруку Алиси,
-
може да шифрује поруку користећи Алисин јавни кључ, а Алиса може да је дешифрује
-
и поврати отворени текст. Да вас подсетим мало детаљније
-
шта је систем за шифровање јавним кључем. Састоји се из три алгоритма, G, E и D.
-
G је алгоритам за стварање кључа, који у основи
-
ствара пар кључева, јавни и тајни. Као што је овде записано, G нема
-
улазне вредности, мада у стварности G заправо има једну улазну величину, такозвани
-
безбедоносни параметар, којим се одређује дужина кључева који се стварају
-
алгоритмом. Затим постоје алгоритам шифровања, као и обично, он узима
-
јавни кључ и поруку и производи шифрат, и алгоритам дешифровања,
-
који узима одговарајући тајни кључ и шифрат и производи одговарајућу поруку.
-
Као и обично, због усаглашености, кажемо да ако шифрујемо поруку под
-
датим јавним кључем, и затим је дешифрујемо одговарајућим тајним кључем, треба да
-
добијемо изворну поруку. А сада, шта значи за шифовање јавним кључем да буде безбедно?
-
Почећу од дефинисања безбедности од прислушкивања.
-
А затим ћемо да дефинишемо безбедност од активних напада.
-
Безбедност од прислушкивања дефинишемо јако слично као у симетричном случају,
-
који смо видели прошле недеље, зато ћу ово да пређем јако брзо.
-
Нападачка игра се дефинише на следећи начин. Дефинисали смо ова два огледа,
-
оглед нула и један. У оба огледа, изазивач
-
ствара пар од јавног и тајног кључа. Он ће да преда јавни кључ
-
нападачу. Нападач ће да избаци две поруке, m0 и m1,
-
исте дужине, и да добије натраг било шифровану m0 или
-
шифовану m1. У огледу 0 он добија шифровану m0, а у огледу 1,
-
шифровану m1. А затим нападач треба да каже
-
коју је добио - да ли је добио шифровану m0 или m1?
-
Дакле то је игра, нападач добија само један шифрат. То се поклапа
-
са нападом прислушкивања, када је нападач једноставно прислушкивао тај шифрат с.
-
А његов циљ је да каже да ли је шифрат с шифровање од m0 или од m1.
-
Није дозвољено никакво петљање у сам шифрат с за сада. Као и обично, кажемо да је
-
шема за шифровање јавним кључем семантички безбедна, ако нападач не може
-
да разликује оглед 0 од огледа 1. Другим речима, не може да каже
-
да ли је добио шифровање од m0 или од m1. Пре него што пређемо
-
на активне нападе, желим да напоменем у каквом су односу дефиниција коју смо
-
управо видели, и дефиниција безбедности од прислушкивања за симетричне шифре.
-
Ако се сећате, када смо говорили о безбедности од прислушкивања за симетричне шифре,
-
разликовали смо случај када је кључ коришћен једном, и случај када је
-
коришћен више пута. У ствари, видели смо да постоји јасна
-
разлика. На пример, једнократна бележница је безбедна ако се кључ користи само једном
-
за шифровање једне поруке, али није безбедна ако се кључ користи за шифровање
-
више порука. Имали смо две различите дефиниције, ако се сећате, имали смо дефиницију
-
за једнократну безбедност, и посебну дефиницију, која је
-
строжа, када је кључ коришћен више пута. Дефиниција коју сам вам показао на претходном
-
слајду је јако слична дефиницији једнократне безбедности
-
симетричних шифара. Заправо се испоставља да, код шифровања јавним кључем,
-
ако је систем безбедан под једнократним кључем, он је безбедан и под вишекратним кључем.
-
Другим речима, не морамо да изричито дамо нападачу могућност да
-
захтева шифровање порука по избору, зато што би он могао да створи
-
та шифровања и сам. Он располаже јавним кључем, и сходно томе може да самостално
-
шифрује коју год поруку жели. Из тога произилази да се сваки пар јавног и тајног кључа
-
у извесном смислу користи за шифровање више порука, зато што је нападач
-
могао да шифрује много, много порука по свом избору
-
коришћењем датог јавног кључа који смо му дали у првом кораку. Последица тога је
-
да је дефиниција једнократне безбедности довољна да подразумева вишекратну безбедност,
-
због чега овај појам називамо нераспознавањем под нападом са произвољним
-
отвореним текстом. Ово је само мања напомена којом објашњавамо зашто нам у поставци за јавно
-
шифровање не треба сложенија дефиниција да обухватимо
-
безбедност од прислушкивања. Сада када смо разумели ову безбедност,
-
погледајмо моћније противнике који могу да почине активне нападе.
-
Конкретно, погледајмо пример е-поште. Овде имамо нашег пријатеља Боба
-
који жели да пошаље писмо својој пријатељици Каролини. Каролина има
-
налог на Г-мејлу. Ово ради тако што се писмо шаље
-
Г-мејл серверу, шифровано. Г-мејл сервер дешифрује писмо, погледа ко је прималац,
-
и затим, ако је прималац Каролина,
-
прослеђује писмо Каролини. Ако је прималац нападач,
-
прослеђује писмо нападачу. Ово личи на прави начин рада Г-мејла,
-
зато што би пошиљалац послао писмо шифровано путем SSL-a Г-мејл серверу,
-
сервер би отклонио SSL и проследио писмо
-
одговарајућем примаоцу. Претпоставимо сада да Боб шифрује писмо коришћењем система
-
који омогућава нападачу да мења шифрат непримећен.
-
На пример, замислимо да је писмо шифровано коришћењем бројача, или нечим сличним.
-
Тада када нападач пресретне писмо, он може да промени примаоца,
-
тако да је прималац сада нападач@gmail.com, а знамо да је код
-
бројача ово врло лако да се уради. Нападач зна да је
-
писмо упућено Каролини, занима га само тело писма.
-
Лако може да промени примаоца писма на нападач@gmail.com, и сада када сервер
-
прими писмо, он га дешифрује, види да је прималац наводно нападач,
-
и прослеђује писмо нападачу. И сада нападач може
-
да прочита тело писма које је било упућено Каролини.
-
Ово је класичан пример активног напада, и приметићете да је нападач овде могао
-
да дешифрује сваки шифрат где је прималац "за: нападач".
-
Дакле сваки шифрат где отворени текст почиње речима "за: нападач".
-
Дакле циљ нам је да развијемо системе са јавним кључем који су безбедни, чак и ако нападач може
-
да мења шифрат и дешифрује извесне шифрате. Још једном желим да нагласим
-
да је овде циљ нападача да добије тело поруке.
-
Нападач већ зна да је писмо намењено Каролини. Све што је морао да уради је
-
да промени примаоца. Овај напад мењањем шифрата подстиче
-
дефинисање безбедности под произвољним шифратом. Ово је у ствари стандард за појам
-
безбедности код шифровања јавним кључем. Да вам објасним како се овде врши напад.
-
Као што сам рекао, циљ нам је да направимо системе који су безбедни под овим врло затвореним
-
појмом шифровања. Дакле имамо шему шифровања (G, E, D). Рецимо
-
да је дефинисана над простором порука и шифрата (М, С), и као и обично
-
дефинисаћемо два огледа, оглед 0 и 1.
-
Дакле b нам говори да ли изазивач имплементира оглед 0 или 1.
-
Изазивач почиње тако што ствара јавни кључ и тајни кључ, а затим даје
-
јавни кључ нападачу. Сада нападач може да каже: "Ево ти гомила
-
шифрата, молим да ми их дешифрујеш." Дакле овде нападач подноси
-
шифрат с1, и добија дешифровање шифрата с1, наиме m1.
-
Може да ово уради опет и опет, дакле подноси шифрат с2, и добија дешифровање
-
а то је m2, шифрат с3, и добија дешифровање m3, и тако даље.
-
Коначно нападач каже: "Завршили смо са фазом упита", и сада
-
подноси две поруке подједнаке дужине, m0 и m1 као и обично,
-
и прима као одговор шифрат с, који је шифровано
-
m0 или m1, у зависности од тога да ли смо у огледу 0 или 1.
-
Сада нападач може да настави да издаје упите у виду
-
шифрата. Дакле може да настави да издаје захтеве за дешифровањем. Дакле он поднесе
-
шифрат, и добије дешифровање шифрата, али наравно
-
мора да постоји ограничење. Када би нападач могао да поднесе произвољни шифрат,
-
наравно да би могао да добије изазов. Само би требало да поднесе
-
шифрат с из изазова као упит који треба да се дешифрује. И биће му речено
-
да ли је у фази изазова добио шифроване m0 или m1.
-
Зато овде стављамо ограничење, које каже да нападач може да поднесе било који
-
шифрат осим шифрата изазова. Дакле нападач
-
може да затражи дешифровање било којег шифрата по свом избору
-
осим шифрата изазова. Али и поред тога што су му дата сва ова дешифровања, и даље
-
не би требало да може да каже да ли му је враћена шифрована m0
-
или m1. Примећујете да је ово јако затворена дефиниција, која
-
даје нападачу већу моћ од оне коју смо видели на претходном слајду. Претходно је
-
нападач могао само да дешифрује поруке у којима је отворени текст почињао речима
-
"за: нападач". Овде, кажемо да нападач може да дешифрује произвољни шифрат,
-
докле год је он различит од шифрата изазова, с. А његов циљ
-
је да каже да ли је шифрат изазова шифровање од m0
-
или од m1. Као и обично, ако то не може, другим речима,
-
ако је његово понашање у огледу 0 исто као и понашање у огледу 1,
-
дакле ако није успео да разликује шифровање од m0 од шифровања од m1,
-
иако је имао сву ову моћ, тада кажемо да је систем безбедан
-
под произвољним шифратима - ССА безбедан. Понекад постоји акроним
-
за ову нераспознатљивост под нападом произвољним шифратима, али ја ћу да
-
кажем само ССА безбедан. Погледајмо сада како ово обухвата пример са е-поштом који смо видели
-
раније. Дакле претпоставимо да је систем шифровања који се користи такав, да имајући
-
само шифру поруке, нападач може да промени примаоца
-
од Алисе на, рецимо, Чарлија. Ево како тада добијамо ССА игру.
-
У првом кораку, нападач наравно добија јавни кључ. А тада нападач
-
издаје две поруке исте дужине, наиме у првој поруци,
-
тело је 0, а у другој 1. Али обе поруке су
-
намењене Алиси. Као одговор, он добија шифрат изазова, с.
-
Дакле сада имамо наш шифрат изазова с. Сада нападач
-
користи своју способност да промени примаоца.
-
Он ће да пошаље шифрат с', где је с' шифрована
-
порука Чарлију, чије је тело управо тело изазова, b. Дакле ако се сећате, b
-
је или 0 или 1. Пошто је отворени текст различит, знамо да
-
и шифрат мора да буде различит. Дакле с' мора да буде различито
-
од шифрата изазова, с. Дакле с' мора да буде различито од с.
-
Сходно томе, изазивач мора да дешифрује, у складу да дефиницијом ССА игре.
-
Изазивач мора да дешифрује било који шифрат који није једнак шифрату
-
изазова. Дакле изазивач дешифрује, и даје нападачу m'.
-
Дакле дао је нападачу b, и сада нападач може да избаци вредност за b
-
и да добије игру, са предношћу 1. Дакле предност код овакве шеме је 1.
-
Дакле једноставно зато што је нападач могао да промени у шифрату изазова
-
примаоца поруке, то му омогућава да победи у ССА игри са
-
предношћу 1. Дакле као што сам рекао, безбедност под произвољним шифратом је управо
-
исправни појам безбедности за системе шифровања јавним кључем.
-
Ово је јако занимљив појам - иако нападач има могућност
-
да дешифрује све што пожели, осим шифрата изазова, он и даље не може
-
да открије који је шифрат изазова. Дакле циљ до краја ове целине
-
и заправо и следеће јесте да изградимо ССА безбедне системе.
-
Изузетно је што је ово могуће, и показаћу вам
-
како се то ради. У ствари ССА системи које ћемо да изградимо
-
су управо они који се користе у стварности. Сваки пут када је неки систем покушао да примени
-
неки механизам шифровања јавним кључем који није био ССА безбедан, неко би пронашао
-
напад и успевао да га разбије. Видећемо неке примере ових напада
-
у неколико следећих одељака.