Сада када смо видели неколико примера историјских шифри, које су све са значајним слабостима, прећи ћемо на другу тему и говорићемо о много боље осмишљеним шифрама. Али пре тога, желим да прецизније одредим појам шифре. Пре свега, шифра се у ствари састоји од два алгоритма. Постоје алгоритам за шифровање и за дешифровање. Међутим, шифра се дефинише са три елемента. Ту је скуп свих могућих кључева, који ћу да означим словом К, и понекад ћу да га називам простором кључева - скуп свих могућих кључева. Затим ту је скуп свих могућих порука, и скуп свих могућих шифрованих текстова. Значи ова тројка на неки начин одређује околину над којом се дефинише шифра. Сама шифра је пар ефикасних алгоритама Е и D. Е је алгоритам за шифровање; D је алгоритам за дешифровање. Наравно, Е узима кључеве и поруке, и враћа шифроване текстове - шифрате. Алгоритам за дешифровање узима кључеве и шифрате, а враћа поруке. Једини захтев је да ови алгоритми буду доследни. Ово својство се назива "исправност". Значи за сваку поруку из простора порука, и за сваки кључ у простору кључева, мора да важи, да ако шифрујем поруку кључем k и дешифрујем користећи овај исти кључ, треба да добијем првобитну поруку. Дакле ова једначина назива се једначином доследности, и она мора да важи за сваку шифру, иначе не би било могуће дешифровање. Желим да нагласим да је реч "ефикасан" под наводницима, зато што она може да има различито значење. За оне више окренуте ка теорији, "ефикасан" значи извршава се у полиномном времену, тј. алгоритми Е и D извршиви су у полиномној временској зависности од величине улаза. За оне окренуте ка пракси, "ефикасан" значи извршив у оквиру задатог времена. На пример, алгоритам Е треба да обради гигабајт података за мање од једног минута. У сваком случају, реч "ефикасан" обухвата оба ова виђења, и можете да је тумачите како вам више одговара. Ја ћу и у наставку да је користим под наводницима; као што сам рекао, ако више нагињете ка теорији сматрајте да се односи на полиномно време, иначе, на задато временско ограничење. Следеће што желим да напоменем, тиче се алгоритма Е. Најчешће је ово алгоритам насумичних вредности; то јест приликом шифровања порука, алгоритам Е узима случајне битове, и користи ове битове да шифрује поруке које му се прослеђују. Са друге стране, алгоритам за дешифровање увек је алгоритам са утврђеним излазима. То значи да за исте вредности кључа и шифрата увек даје исти излаз, независно од било какве насумичности која постоји у алгоритму. Сада када мало боље схватамо појам шифре, желим да вам дам први пример безбедне шифре. Зове се "једнократна бележница". Развио ју је Вернам почетком 20-тог века. Пре него што објасним начин рада ове шифре, хајде да користећи праву терминологију кажемо шта овде видимо. Простор порука за Вернамову шифру - једнократну бележницу - је исти као и простор шифрата, а то је једноставно скуп свих низова бинарних бројева дужине n. То значи, свих низова битова знакова 0 и 1. Простор кључева је исти као простор порука, што је такође скуп свих n-битних бинарних низова. Дакле, кључ код једнократне бележнице јесте насумично изабран низ битова, дужине која је иста као дужина поруке која треба да се шифрује. Сада када смо видели чиме је дефинисана шифра, можемо да видимо како ради, што је у ствари врло једноставно. Шифрати, који су производ шифровања поруке одређеним кључем, добијају се операцијом XOR над овим двема вредностима: К XOR М. Подсетимо се ознаке за операцију XOR. XOR значи збир по модулу 2. Ако узмем рецимо поруку 0110111, и неки кључ, нпр. 1011001, када шифрујем поруку на овај начин, све што треба је да израчунам XOR ове две вредности. Другим речима, одрадим збир по модулу 2, бит по бит; и добијем: 1101110. Ово је шифрат. Како ћу да дешифрујем? У ствари, поновим исту операцију. Шифрат се дешифрује овим истим кључем. Извршим операцију XOR над кључем и шифратом. Све што остаје је да потврдимо да је задовољен захтев за доследношћу. Сада ћу да урадим ово поступно, а у будуће ћу да претпоставим да вам је познато. Дакле желимо да се уверимо да дешифровањем шифрата, шифрованог одређеним кључем, обавезно добијам поруку m. Да видимо... Посматрам шифрат над k и m. По дефиницији ово је k XOR m. А шта представља дешифровање вредности k XOR m? То је k XOR (k XOR m). А будући да је XOR збир по модулу 2, сабирање је асоцијативно, дакле ово је исто што и (k XOR k) XOR m, а као што знате (k XOR k) је нула, а нула XOR било која вредност је само m. Овим смо показали да је једнократна бележница шифра, али ово нам ништа не говори о безбедности шифре. Прећи ћемо на безбедност за који час, али пре тога, само једно питање, да будемо сигурни да се разумемо. Рецимо да вам је дата порука m, и шифрат те поруке, коришћењем једнократне бележнице. Све што знате је порука и шифрат. Моје питање за вас је, знајући пар m и с, да ли можете да откријете кључ који је коришћен приликом добијања с на основу m? Надам се да сви уочавате да је, у ствари, знајући поруку и шифрат, врло лако добити вредност кључа. Конкретно, кључ је једноставно m XOR с. Ако вам није очигледно, видећемо зашто је то тако, мало касније. Једнократна бележница је одлична што се тиче перформанси, све што се извршава је XOR операција између кључа и поруке, дакле ово је врло, врло брза шифра за рад са врло великим порукама. Нажалост, у пракси је тешко примењива. Разлог за то је што су кључеви исте дужине као и порука. Значи ако Алиса и Боб желе безбедну комуникацију, тј. Алиса жели да пошаље поруку Бобу, пре него што почне са слањем поруке, она мора да пошаље Бобу кључ, који је исте дужине као и порука. Али, ако постоји начин да пошаље Бобу тајни кључ исте дужине као и порука, може лепо да тим начином пошаље и саму поруку. Дакле чињеница да је кључ исте дужине као и порука, је прилично незгодна, и чини овај начин шифрирања јако тешким за примену. Мада ћемо да видимо да је замисао иза једнократне бележнице врло корисна, а ово ћемо да покажемо мало касније. А сада да се задржимо мало на безбедности. Поставља се очигледно питање: зашто је једнократна бележница безбедна? Зашто је ово добра шифра? Да бисмо одговорили на ово питање, најпре морамо да видимо шта је то уопште безбедна шифра, шта чини шифру безбедном? Да бисмо се бавили безбедношћу шифара, морамо да се позабавимо најпре теоријом информације. Заправо, прва особа која се озбиљно бавила питањем безбедности шифара, јесте чувени отац теорије информације, Клод Шенон, који је још 1949. објавио познати рад, у којем је проучавао безбедност једнократне бележнице. Замисао иза Шенонове дефиниције безбедности је следећа: у основи, ако је све што стоји на располагању сам шифрат, на основу њега не сме ништа да се сазна о отвореном тексту. Другим речима, шифрат не сме да открива никакву информацију о отвореном тексту. И видите сада зашто је неко ко је изумео теорију информације могао да дође до овог појма, зато што је неопходно да се искаже, формално објасни, шта у ствари представља информација о отвореном тексту. Сада ћу да вам покажем Шенонову дефиницију, најпре ћу да је испишем полако. Рецимо да имамо шифру (Е, D) одређену над тројком (K, M, C) као и раније. K, M, и C одређују простор кључева, простор порука и простор шифрата. Шифра има савршену тајност ако важи следеће: за сваке две поруке m0 и m1, у простору порука, при чему је једини захтев за ове две поруке да буду исте дужине (видећемо зашто је потребан овај услов за који час) и за сваки шифрат, у простору шифрата, дакле за сваки пар порука и за сваки шифрат, мора да важи, да је вероватноћа да се шифровањем m0 са k добија c, иста као и вероватноћа да се шифровањем m1 са k добија c. Дакле вероватноћа да шифровањем m1 добијемо с је потпуно иста као и вероватноћа да шифровањем m0 добијемо с. Дакле да ово важи за кључеве чија је расподела равномерна у простору кључева. Користићу ознаку к са стрелицом са малим r изнад да означим чињеницу да је к променљива са насумичном вредношћу која је равномерно узоркована у простору К. Ово је главни садржај Шенонове дефиниције. Хајде да размислимо мало о томе шта се овом дефиницијом каже. Дакле шта значи да су ове две вероватноће једнаке? То значи да ако сам ја нападач и пресретнем одређени шифрат с, тада је у ствари, вероватноћа да је овај шифрат шифра за m0, иста као и вероватноћа да је он шифра за m1. Зато што су ове две вероватноће једнаке. Дакле ако је све што имам шифрат с, тада ја никако не могу да знам да ли је шифрат потекао од m0 или од m1, јер је, понављам, вероватноћа да се добије с иста за обе ове поруке. Овде поново имамо дефиницију. И сада само желим да ово поново запишем мало прецизније. Дакле ако имам на располагању неки шифрат, не могу на основу тога да тврдим од које поруке потиче m0 или m1. Штавише, ово важи за све поруке, за сваки пар порука. И не само да не могу да разликујем да ли је шифрат добијен од m0 или m1, не знам ни да ли потиче од m2, m3, m4, m5, зато што све оне имају исту вероватноћу да се од њих добије с. То значи, да приликом шифровања порука једнократном бележницом, чак и најмоћнији декриптор, колико год паметан био, не може да сазна ништа о отвореном тексту на основу шифрата. Да кажемо ово на још један начин, не постоји напад који је усмерен само на шифрат на шифру са савршеном тајношћу. Напади који су усмерени само на шифрат нису једини постојећи напади - постоје друге врсте напада, којима је подложна оваква шифра. Сада када смо разумели појам савршене тајности, поставља се питање, да ли је могуће направити шифру са овом особином? Испоставља се да једнократна књижница има савршену тајност. Желим и да вам изведем доказ за ово, то је уједно и Шенонов први резултат, доказ је једноставан, тако да хајде да га одмах изведемо. Потребно је да протумачимо шта то значи, та вероватноћа Pr (Е(k, m0) = с). Није тешко да се види да за сваку поруку и за сваки шифрат, вероватноћа да се шифровањем m кључем k добија с, при чему се, по дефиницији, кључ бира насумице, представља количник броја кључева из скупа К, таквих да ако шифрујем m са k добијам с, подељених са укупним бројем могућих кључева. То је вероватноћа да ако одаберем насумице неки кључ, он ће да преслика m у с. To je практично број кључева који пресликавају m у с, кроз укупни број кључева. Претпоставимо сада да имамо шифру такву да за све поруке и све шифрате, важи да ако погледам овај број, број k из скупа К, таквих да је Е(k, m) = с другим речима, посматрам број кључева који пресликавају m у с; претпоставимо да је овај број нека константа. Рецимо да је то 2, 3, 10 или 15. Рецимо да је то константна вредност. У том случају, према дефиницији, за свако m0 и m1 и за свако с, ова вероватноћа мора да буде иста, зато што је именилац исти, бројилац исти, нека константа, и из тога следи да је и вероватноћа увек иста за свако m и с. Дакле ако је ово тачно, шифра мора да има савршену тајност. Да видимо сада шта можемо да кажемо о овој величини за једнократну бележницу. Питање за вас је, ако имате на располагању шифрат и поруку, колико једнократних кључева постоји, који пресликавају поруку m у с? Другим речима, колико кључева постоји, таквих да је m XOR k = c? Надам се да сте одговорили да је један. Да видимо и зашто: За једнократну бележницу, израз Е(k, m) = c, по дефиницији значи да је k XOR m = c. Али то такође значи да мора да је m XOR с = k. Ово смо добили тако што смо извршили XOR обе стране са m. Из овога произилази, да је за једнократну бележницу, број кључева у К, таквих да је E(k, m) = c, једноставно 1, и то важи за све поруке и шифрате. Тако да, на основу претходно реченог, произилази да једнократна бележница има савршену тајност. Овим је доказ завршен. Ово је врло једноставна лема. Међутим, иако је толико једноставно да се она докаже, из овог доказа произилази јако моћан закључак. Ово у ствари значи да за једнократну бележницу не постоји напад који се ослања само на шифрат. Дакле за разлику од шифре замене, или Вижнерове шифре, или шифарског диска, које су све могле да буду разбијене нападом који се ослања само на шифрат, код једнократне бележнице, како смо доказали, ово једноставно није могуће. На основу шифрата, ништа се не сазнаје о отвореном тексту. Али, као што видимо, ово није крај приче. То јест, јесмо ли завршили? Будући да смо открили начин да шифрирамо тако да декриптор не може да открије ништа о нашој поруци, можда смо дакле завршили са течајем? Али заправо, као што ћемо да видимо, постоје и други напади. У ствари, једнократна бележница и није тако безбедна шифра. Постоје други могући напади, које ћемо ускоро да видимо. Наглашавам поново ову чињеницу, да и поред савршене тајности, не произилази да је једнократна бележница безбедна шифра. Али, као што смо рекли, код једнократне бележнице незгодно је то што је тајни кључ јако дугачак. Ако постоји начин да се тајни кључ безбедно пренесе другој страни, онда може тим истим начином да се саопшти и сама порука другој страни, а у том случају уопште нам и не треба шифра. Дакле, још једном, проблем је то што једнократна бележница има јако дуги кључ, и намеће се питање да ли постоје друге шифре које имају савршену тајност, али много, много краће кључеве? Лоша вест је то што је Шенон, након што је доказао да једнократна бележница има савршену тајност, доказао и теорему да свака шифра која има савршену тајност, мора да има на располагању најмање исти број кључева као и број порука које се обрађују шифром. То значи, да ако шифра има савршену тајност, тада број кључева, то јест дужина кључа мора да буде већа или једнака дужини поруке. Заправо, пошто једнократна бележница задовољава овај услов код једнакости, она је у ствари оптимална шифра која има савршену тајност. Дакле једнократна бележница је занимљива шифра, али јако тешка за примену, због дугачних кључева. Сам појам савршене тајности, иако врло занимљив, говори нам у суштини да шифре које су згодне за примену не могу да буду безбедне. Али, као што смо напоменули, сама замисао која је у основи једнократне бележнице је јако добра. А у следећој лекцији ћемо да видимо, како да на основу ње направимо применљив систем.