-
Намера ми је да вам у следећих неколико одељака покажем да ако користимо безбедни PRG,
-
добијамо безбедну шифру тока. Пре свега морамо да дефинишемо
-
шта подразумевамо под безбедношћу шифре тока? Кад год дефинишемо безбедност,
-
увек је дефинишемо у смислу тога шта нападач може да уради, и шта
-
покушава да уради. У вези са шифрама тока, сетите се да се оне користе искључиво
-
са једнократним кључем, и услед тога највише што нападач икад може да види
-
јесте један шифрат шифрован коришћењем кључем који користимо. Дакле
-
ограничавамо нападачеву могућност на прибављање само једног шифрата.
-
У ствари, касније ћемо да дозволимо нападачу да уради много, много више,
-
али за сада ћемо да му дамо само један шифрат. И желимо да видимо
-
шта подразумевамо под безбедношћу шифре? Прва дефиниција
-
која нам пада на памет, јесте да можда желимо да захтевамо да нападач
-
не може да прибави тајни кључ. Дакле на основу шифрата
-
не треба да будете у стању да прибавите тајни кључ. Али то је лоша дефиниција
-
зато што, погледајте следећу сјајну шифру, где шифрујемо
-
поруку коришћењем кључа k тако што једноставно избацимо поруку.
-
Наравно ово је сјајна шифра, не ради ништа са поруком
-
осим што шифрат избаци као саму поруку. Ово није нарочито добро шифровање;
-
међутим, на основу шифрата, тј. поруке, сироти нападач
-
не може да прибави кључ, зато што му кључ није познат. Услед тога ова шифра,
-
која очигледно није безбедна, била би сматрана безбедном под овим
-
захтевима безбедности. Дакле оваква дефиниција не би ваљала.
-
Дакле прибављање тајног кључа је погрешан начин да се дефинише безбедност. Следеће што
-
можемо да покушамо је да кажемо да можда нападача није брига
-
за тајни кључ, већ га заправо занима отворени текст. Можда би требало
-
да нападачу буде тешко да дође до целокупног отвореног текста. Али чак и то
-
није довољно зато што, посматрајмо следећи начин шифровања. Рецимо
-
да код овог шифровања узимамо две поруке, ја ћу да користим
-
ове две линије да означим спајање двеју порука, m0 || m1 значи
-
спајање m0 и m1. Рецимо да ова шифра даје
-
m0 као отворену, и спаја то са шифром од m1. Можда чак и
-
коришћењем једнократне бележнице. Дакле овде се нападачу даје један
-
шифрат, а његов циљ је да дође до целокупног отвореног текста. Али
-
сироти нападач то не може да учини зато што, можда смо шифровали m1 коришћењем
-
једнократне бележнице, тако да нападач не може да дође до m1 зато што, знамо да је
-
једнократна бележница безбедна када се користи код само једног шифрата. Дакле ова конструкција
-
би задовољила дефиницију, али нажалост ово очигледно није безбедно
-
шифровање, зато што је процурило пола отвореног текста.
-
m0 је потпуно доступно нападачу, тако да, мада не може да дође до
-
целокупног отвореног текста, могао би да поврати већину отвореног текста, а то очигледно
-
није безбедно. Наравно већ знамо решење за ово, говорили смо
-
о Шеноновој дефиницији савршене безбедности, где је Шенонова идеја била
-
да када нападач пресретне шифрат, не треба да сазна никакву
-
информацију о отвореном тексту. Не треба чак ни да сазна ни један бит
-
отвореног текста, нити сме да му буде могуће да предвиди
-
мали део отвореног текста; никакву информацију о отвореном тексту.
-
Подсетимо се укратко Шеноновог појма савршене безбедности
-
рекли смо да шифра има савршену безбедност
-
ако, када имамо две поруке исте дужине, расподела
-
шифрата - ако одаберемо насумично кључ и посматрамо расподелу
-
шифрата, ако шифрујемо m0, добијамо потпуно исту расподелу као када
-
шифрујемо m1. Наслућујемо овде да ако нападач посматра шифрат,
-
не зна да ли је потекао из расподеле која је последица шифровања
-
са m0 или из расподеле која је последица шифровања са m1.
-
Услед тога, он не може да одреди да ли смо шифровали m0 или m1. И то важи за све
-
поруке истих дужина, и захваљујући томе сироти нападач не зна
-
која порука је била шифрована. Наравно већ смо рекли да је ова дефиниција
-
превише јака, у смислу да захтева врло дугачке кључеве, и ако шифра има кратке кључеве
-
никако не може да задовољи ову дефиницију. Конкретно, шифра тока
-
не може да задовољи ову дефиницију. Покушајмо да мало ослабимо ову дефиницију,
-
сетимо се претходног одељка. Можемо да кажемо да уместо да захтевамо
-
да две расподеле буду потпуно истоветне, ми захтевамо да
-
две расподеле буду рачунски нераспознатљиве. Другим речима, сироти,
-
ефикасни нападач не може да разликује две расподеле иако
-
расподеле могу да буду врло различите. На основу узорка
-
једне и друге расподеле, нападач не може да каже
-
из које расподеле је добио узорак. Испоставља се да је ова дефиниција
-
скоро одговарајућа, али је и даље мало прејака, и даље не може да се задовољи,
-
дакле морамо да додамо још једно ограничење, а то је да, уместо да кажемо да ова
-
дефиниција треба да важи за свако m0 и m1, она треба да важи само за парове m0, m1
-
које нападач може да изложи. То нас у ствари
-
доводи до дефиниције семантичке безбедности. Још једном, ово је семантичка
-
безбедност за једнократне кључеве, другим речима, када нападач добија само један
-
шифрат. Дакле дефинишемо семантичку безбедност тако што дефинишемо два огледа,
-
оглед 0 и оглед 1. У општем случају, посматраћемо
-
их као оглед (b), где b може да буде 0 или 1.
-
Оглед се дефинише на следећи начин, имамо нападача који
-
покушава да разбије систем - нападач А, који је аналоган статистичким тестовима
-
у свету псеудослучајних генератора. Изазивач ради
-
следеће, постоје два изазивача, али они
-
су толико слични, да можемо да их опишемо као истог изазивача који у једном случају
-
узима на улазу битове постављене на 0, а у другом случају
-
постављене на 1. Да вам покажем шта изазивач ради. Најпре
-
он бира случајно кључ, а затим нападач
-
избацује две поруке, m0 и m1. Ово је јавни
-
пар порука, за које нападач жели да буде изазван, и као и обично, не
-
покушавамо да сакријемо дужину порука, захтевамо да буду једнаке дужине.
-
Тада изазивач избаци шифровану m0
-
или шифровану m1, у огледу 0 изазивач избацује
-
шифровану m0, а у огледу 1 шифровану m1.
-
У томе је разлика између огледа.
-
Нападач покушава да погоди да ли је добио шифровану m0
-
или шифровану m1. Ево мало ознака. Дефинишимо
-
догађај Wb као догађај када за оглед b нападач избацује 1.
-
Дакле то је такав догађај, да у огледу 0 W0 значи да
-
је нападач избацио 1, а у огледу 1 W1 значи да је нападач избацио 1.
-
Сада можемо да дефинишемо предност овог нападача, и кажемо да је
-
предност семантичке безбедности нападача А над шемом Е
-
разлика између вероватноћа ова два догађаја. Другим речима
-
посматрамо да ли се нападач понаша различито када добије
-
шифровану m0 у односу на то када добије шифровану m1. Желим да будем
-
сигуран да је ово јасно, па ћу да поновим. Дакле у огледу 0 добио
-
је шифровану m0, а у огледу 1 шифровану m1,
-
и сада нас занима да ли нападач избацује 1 или не,
-
у овим огледима. Ако у оба огледа нападач избацује 1 са
-
истом вероватноћом, то значи да нападач није могао да разликује
-
два огледа. Оглед 0 изгледа нападачу исто
-
као оглед 1, зато што у оба случаја враћа 1 са истом вероватноћом.
-
Међутим, ако нападач може да избаци 1 у једном огледу са значајно
-
различитом вероватноћом него у другом огледу, тада је нападач
-
могао да разликује ова два огледа. Да искажемо ово
-
формалније, предност, зато што је то разлика двеју
-
вероватноћа, предност је број између 0 и 1. Ако је предност
-
блиска нули, то значи да нападач није био у стању да разликује
-
оглед 0 од огледа 1. Међутим ако је предност блиска јединици,
-
то значи да је нападач био у стању да разликује оглед 0 од
-
огледа 1, што у ствари значи да је био у стању да разликује шифровање
-
m0 од шифровања m1. Дакле то је наша дефиниција, у ствари,
-
то је само дефиниција предности, а дефиниција је управо
-
оно што бисте и очекивали, кажемо да је шема симетричног шифровања
-
семантички безбедна, ако за све "ефикасне" нападаче,
-
ако је за све ефикасне нападаче предност занемарљива. Другим речима,
-
не постоји ефикасан нападач који може да разликује шифровање m0 од шифровања m1,
-
и, тиме се каже, понављам, да за ове две
-
поруке нападач је био у стању да прикаже да није био у стању да разликује
-
ове две расподеле. Желим да вам покажем, ово је заправо врло
-
елегантна дефиниција, не мора да тако изгледа одмах, али желим да вам покажем неке
-
последице ове дефиниције, а видећете зашто је ова дефиниција таква каква јесте.
-
Погледајмо неке примере. Први пример је - претпоставимо
-
да имамо разбијену шему шифровања, другим речима, претпоставимо да имамо нападача А
-
који некако, добивши шифрат, увек може да открије бит најмање
-
тежине из отвореног текста. Дакле добивши шифру од m0, овај нападач
-
може да добије бит најмање тежине у m0. Ово је јако лоша
-
шема шифровања, зато што одаје бит најмање тежине из
-
отвореног текста самим шифратом. Желим да вам покажем да ова шема није
-
семантички безбедна, чиме се показује да ако систем јесте семантички
-
безбедан, не постоји нападач ове врсте. Погледајмо зашто овај систем
-
није семантички безбедан. Ми ћемо да користимо
-
нашег нападача, који може да открије битове најмање тежине, ми ћемо да
-
га користимо да разбијемо семантичку безбедност, то јест да разликујемо
-
оглед 0 од огледа 1. Ево шта ћемо да урадимо.
-
Ми смо алгоритам В, а овај алгоритам В ће да користи
-
алгоритам А у свом телу. Дакле прво што ће да се деси је,
-
наравно изазивач ће да одабере насумични кључ, и прво што ће да се деси је
-
да ћемо да избацимо две поруке,
-
а које ће да имају различите битове најмање тежине.
-
Једна ће да се завршава са 0, а друга са 1.
-
И шта ће сада изазивач да уради? Он ће да нам да
-
шифровање било од m0 било од m1, у зависности од тога да ли смо у огледу 0
-
или у огледу 1. А тада ћемо само да проследимо овај шифрат нападачу,
-
дакле нападачу А. А које је својство нападача А? Добивши шифрат,
-
нападач А може да нам каже који је бит најмање тежине отвореног текста.
-
Другим речима, нападач ће да избаци бит најмање тежине од m0 или m1,
-
а то је практично бит b. И затим ћемо само да
-
избацимо то као наш погодак, назовимо то b'. Дакле овим
-
се описује семантичка безбедност нападача. А ви ми кажите шта се предност
-
над семантичком безбедношћу код овог нападача? Па погледајмо: у огледу 0, која је
-
вероватноћа да нападач В избацује 1? Дакле у огледу 0 се увек
-
добија шифровање од m0, и зато нападач А увек избацује
-
бит најмање тежине од m0, а то је увек 0. У огледу
-
0, В увек избацује 0. Дакле вероватноћа да ће да избаци 1 је нула.
-
Међутим у огледу 1, добијамо шифровану m1. Дакле колико је вероватно да ће
-
нападач В да избаци 1 у огледу 1? Па, увек ће да избаци 1,
-
због својства алгоритма А. И услед тога, предност је практично 1.
-
Дакле то је велика предност, највећа што може да буде. Што значи да је овај
-
нападач потпуно разбио систем. Дакле под семантичком
-
безбедношћу, просто сазнавање бита најмање тежине је довољно да потпуно
-
разбије систем - под дефиницијом семантичке безбедности. Занимљива ствар
-
овде је наравно да се не ради само о биту најмање тежине,
-
у ствари, било који бит поруке, на пример, бит највеће тежине,
-
седми бит, можда XOR свих битова поруке, итд,
-
било каква информација, било који бит отвореног текста који може да
-
се сазна, значио би да систем није семантички безбедан.
-
Дакле све што нападач треба да уради јесте да се појави са две поруке,
-
m0 и m1, које су такве да је код једне од њих, то што сазнаје има вредност 0,
-
а код друге има вредност 1. На пример, А је сазнао XOR
-
битова поруке - тада m0 и m1 само треба да имају
-
различити XOR свих битова у поруци, и нападач А би могао
-
да разбије семантичку безбедност. Практично ако је шифра
-
семантички безбедна, никаква информација се не открива
-
ефикасном нападачу. То је управо и појам савршене тајности, али
-
примењен само на ефикасне нападаче уместо на све нападаче.
-
Следеће што желим да вам покажем је да је једнократна бележница
-
семантички безбедна, и боље би било да јесте, зато што је
-
и више од тога, она је савршено безбедна. Погледајмо зашто ово важи.
-
Још једном посматрамо овакве огледе, дакле претпоставимо да нападач претендује
-
да разбије семантичку безбедност једнократне бележнице. Он ће најпре
-
да избаци две поруке, m0 и m1, исте дужине.
-
Шта добија као изазов? Добија или шифровану
-
m0 или шифровану m1, под једнократном бележницом.
-
И покушава да разликује ове две могуће шифрате које добија.
-
У огледу 0, добија шифровану m0, а у огледу 1, добија
-
шифровану m1. Поставља се питање, која је предност нападача А
-
над једнократном бележницом? Подсећам вас да је својство једнократне бележнице
-
да је k XOR m0 са расподелом истоветном са k XOR m1.
-
Другим речима, ово су потпуно подударне расподеле.
-
То је својство XOR - ако XOR-ујемо случајни
-
кључ k са било чим, m0 или m1, добијамо униформну расподелу.
-
Дакле у оба случаја алгоритам А добија на улазу потпуно исту расподелу. Можда
-
униформну расподелу шифрата. И зато ће да се понаша на потпуно
-
исти начин у оба случаја, зато што добија потпуно исту расподелу на улазу.
-
Следи да је његова предност 0, што значи да једнократна бележница јесте семантички
-
безбедна. Занимљиво је то што, не само што је семантички безбедна,
-
већ је семантички безбедна за све нападаче. Не морамо чак да се ограничимо
-
на ефикасне нападаче. Нема нападача, колико год паметан био, који
-
би могао да разликује k XOR m0 од k XOR m1, зато што су ове две
-
расподеле истоветне. Добро, дакле једнократна бележница је семантички безбедна.
-
Тиме смо завршили са дефиницијом семантичке безбедности, и следеће што ћемо
-
да докажемо је да из безбедности PRG-а следи да је шифра тока
-
семантички безбедна.