1 00:00:00,000 --> 00:00:04,010 У овом одељку, желим да вам дам неколико примера шифара тока, које се користе у пракси. 2 00:00:04,010 --> 00:00:07,072 Почећу од два стара примера, који не би 3 00:00:07,072 --> 00:00:11,017 требало да се користе у новим системима. Међутим, и даље су доста заступљени, 4 00:00:11,017 --> 00:00:14,164 тако да само желим да напоменем њихова имена, тако да би вам били познати ови концепти. 5 00:00:14,164 --> 00:00:19,087 Прва шифра тока о којој желим да вам говорим је RC4, која је развијена 6 00:00:19,087 --> 00:00:23,429 1987. Желим само да вам дам њен уопштени опис, 7 00:00:23,429 --> 00:00:27,818 а онда ћемо да говоримо о њеним слабостима. RC4 има као улаз 8 00:00:27,818 --> 00:00:32,702 неку вредност променљиве дужине - семе; овде ћемо као пример да узмемо 9 00:00:32,702 --> 00:00:36,980 128 битова за семе, које се затим користи као кључ за шифру тока. 10 00:00:36,980 --> 00:00:41,738 Прво што уради јесте да прошири 128-битни тајни кључ на 2048 битова, 11 00:00:41,738 --> 00:00:46,382 који се користе као унутрашње стање генератора. Након што се уради 12 00:00:46,382 --> 00:00:51,197 ово проширење, извршава се врло једноставна петља, где сваки пролаз 13 00:00:51,197 --> 00:00:55,898 кроз петљу враћа као излаз један бајт. Тако да, у суштини, генератор може да се извршава 14 00:00:55,898 --> 00:01:00,653 колико год пута желите, и сваки пролаз даје један бајт. RC4 је заправо врло заступљен. 15 00:01:00,653 --> 00:01:05,205 Користи се уобичајено у HTTPS-у. 16 00:01:05,205 --> 00:01:11,888 Гугл га на пример користи у свом HTTPS-у. Користи се и у WEP-у који 17 00:01:11,888 --> 00:01:15,686 смо разматрали у претходном одељку, али ту се користи неправилно 18 00:01:15,686 --> 00:01:18,861 тако да није нимало безбедан. Током година, 19 00:01:18,861 --> 00:01:23,886 пронађене су неке слабости у RC4, тако да се препоручује да се у новим пројектима 20 00:01:23,886 --> 00:01:28,793 не користи, већ да се користи савремени псеудо-случајни генератор који ћемо да 21 00:01:28,793 --> 00:01:34,059 разматрамо при крају овог одељка. Споменућу само две његове слабости. 22 00:01:34,059 --> 00:01:39,561 Прва, која је у ствари мало чудна, ако погледате други бајт 23 00:01:39,561 --> 00:01:44,630 излаза RC4, испоставља се да је други бајт делимично пристрасан. Када би RC4 био потпуно 24 00:01:44,630 --> 00:01:49,780 случајан, вероватноћа да други бајт буте 0 25 00:01:49,780 --> 00:01:54,744 била би тачно 1 / 256. Постоји 256 могућих бајтова, тако да вероватноћа 26 00:01:54,744 --> 00:01:59,646 да буде 0 треба да буде 1 / 256. Испоставља се да је за RC4 ова вероватноћа 27 00:01:59,646 --> 00:02:04,486 у ствари 2 / 256, што значи да ако користите RC4 да шифрујете 28 00:02:04,486 --> 00:02:09,574 поруку, постоји извесна вероватноћа да се други бајт уопште не шифрује. Другим речима, 29 00:02:09,574 --> 00:02:14,575 биће ХОR-ован са 0 са два пута већом вероватноћом него што треба да буде. 30 00:02:14,575 --> 00:02:19,436 Значи 2 / 256 уместо 1 / 256. Узгред треба да кажем да не постоји 31 00:02:19,436 --> 00:02:22,849 ништа посебно везано за други бајт. Испоставља се да су први и трећи бајт 32 00:02:22,849 --> 00:02:27,818 такође пристрасни. Тако да постоји препорука, да ако се користи RC4, 33 00:02:27,818 --> 00:02:32,800 треба да се занемати првих 256 бајтова излаза, и да се 34 00:02:32,800 --> 00:02:37,246 излаз генератора користи почев од бајта 257. Првих пар бајтова 35 00:02:37,246 --> 00:02:41,241 је пристрасно, тако да их само занемарите. 36 00:02:41,241 --> 00:02:48,482 Други напад који је откривен, јесте да ако погледате врло дугачак излаз из RC4, 37 00:02:48,482 --> 00:02:53,863 постоји повећана вероватноћа да се добије низ 00. Другим речима, 38 00:02:53,863 --> 00:02:58,970 постоји мало већа вероватноћа да се добије ових 16 битова (2 бајта) 0, 0, него што би требало. 39 00:02:58,970 --> 00:03:03,948 Да је RC4 сасвим насумичан, вероватноћа да се појави 00 била би тачно (1 / 256) на 2. 40 00:03:03,948 --> 00:03:08,556 Испоставља се да је RC4 делимично пристрасан, тако да вероватноћа износи (1 / 256) на 3. 41 00:03:08,556 --> 00:03:13,718 Ова пристрасност се појављује тек након излаза дужине неколико гигабајта података. 42 00:03:13,718 --> 00:03:18,634 Ипак, овако нешто може да се користи како би се предвидео генератор 43 00:03:18,634 --> 00:03:23,120 и свакако може да послужи да би се разликовао излаз генератора 44 00:03:23,120 --> 00:03:28,097 од истински случајног низа. Та чињеница да се 00 појављује чешће него што би требало 45 00:03:28,097 --> 00:03:32,414 је показатељ разлике. У последњем одељку већ смо говорили 46 00:03:32,414 --> 00:03:36,313 о нападима који користе везу између кључева, који су били уперени на WEP, а који показују 47 00:03:36,313 --> 00:03:41,078 да ако се користе блиско повезани кључеви, тада је могуће 48 00:03:41,078 --> 00:03:45,732 да се дође до полазног кључа. Дакле то су слабости које су уочене у RC4, тако да 49 00:03:45,732 --> 00:03:50,217 се препоручује да нови системи не користе RC4, већ да уместо тога користе 50 00:03:50,217 --> 00:03:54,421 савремене псеудо-насумичне генераторе. Други пример који желим да вам дам је 51 00:03:54,421 --> 00:03:59,131 врло слаба шифра тока која се користи код шифровања двд филмова. Када купите 52 00:03:59,131 --> 00:04:03,504 двд у радњи, сам филм се шифрује коришћењем шифре тока која се назива 53 00:04:03,504 --> 00:04:07,933 систем за кодирање садржаја, CSS. CSS се показао као врло слаба шифра тока, 54 00:04:07,933 --> 00:04:12,523 која лако може да се пробије, и ја желим да вам покажем како ради алгоритам напада. 55 00:04:12,523 --> 00:04:16,894 Одрадићемо овај пример да бисте видели како изгледа алгоритам напада, 56 00:04:16,894 --> 00:04:21,435 али постоје многи системи који користе управо овај напад да декриптују 57 00:04:21,435 --> 00:04:25,749 шифроване двд-јеве. CSS шифра тока заснива се на нечему што воле пројектанти хардвера. 58 00:04:25,749 --> 00:04:30,291 Развијена је да буде хардверска шифра тока, 59 00:04:30,291 --> 00:04:34,491 која се лако хардверски примењује, а заснива се на механизму регистра са 60 00:04:34,491 --> 00:04:38,749 линијским повратним померањем. Ово је регистар 61 00:04:38,749 --> 00:04:43,801 који се састоји од једнобитних поља. 62 00:04:43,801 --> 00:04:49,046 Постоје нека поља, не сва, која називамо доточним пољима, 63 00:04:49,046 --> 00:04:54,134 а њихове вредности се доводе у ХОR, 64 00:04:54,134 --> 00:04:59,053 а затим се на сваки циклус клока, регистар помера на десно. Последњи бит отпада 65 00:04:59,053 --> 00:05:04,345 а нови први бит постаје излаз из овог ХОR-а. 66 00:05:04,345 --> 00:05:08,703 Видите да је ово једноставан механизам за примену, и заузима врло мало транзистора. 67 00:05:08,703 --> 00:05:13,622 Само померај удесно, последњи бит отпада, а први бит постаје 68 00:05:13,622 --> 00:05:18,541 ХОR претходних битова. Дакле почетна вредност - семе - код овог регистра је 69 00:05:18,541 --> 00:05:23,460 заправо његово почетно стање. 70 00:05:23,650 --> 00:05:28,538 На њему се заснива више шифара тока. Ево и неких примера. 71 00:05:28,538 --> 00:05:33,362 Рекли смо да двд шифровање користи два оваква регистра. То ћу да вам покажем за који тренутак. 72 00:05:33,362 --> 00:05:38,060 GSM шифровање садржи два алгоритма, А51 и А52, 73 00:05:38,060 --> 00:05:43,456 који користе 3 регистра померања. Bluetooth шифровање садржи алгоритам Е0, такође 74 00:05:43,456 --> 00:05:48,534 шифру тока, са 4 регистра. Испоставља се да су сви они доста слаби, 75 00:05:48,534 --> 00:05:53,245 и да заиста не би требало да се ослања на њих ради шифровања саобраћаја, 76 00:05:53,245 --> 00:05:56,705 али су сви уграђени у хардвер, тако да је сада мало теже да се измени то што хардвер ради. 77 00:05:56,705 --> 00:06:01,047 Најједноставнији од њих, CSS, може јако згодно да се нападне, 78 00:06:01,047 --> 00:06:05,459 тако да хајде да вам покажем како се изводи овај напад. 79 00:06:05,459 --> 00:06:11,073 Кључ за CSS је 5-бајтни, тј. 40-битни, 5 х 8 је 40 битова. 80 00:06:11,073 --> 00:06:15,587 Ограничили су се на 40 битова зато што је двд шифровање развијено 81 00:06:15,587 --> 00:06:19,941 у време када је прописима извоза из САД био дозвољен само извоз 82 00:06:19,941 --> 00:06:25,086 алгоритама за шифровање где је кључ само 40 битова. Тако да су пројектанти CSS-а били 83 00:06:25,086 --> 00:06:30,206 ограничени на јако, јако кратке кључеве. Њихов поступак је следећи: 84 00:06:30,206 --> 00:06:35,398 користе се два регистра померања, један 17-битни, 85 00:06:35,398 --> 00:06:40,806 и други 25-битни, 86 00:06:40,806 --> 00:06:46,647 нешто дужи. Њима се почетна вредност задаје 87 00:06:46,647 --> 00:06:51,870 на следећи начин. Дакле кључ изгледа овако. 88 00:06:51,870 --> 00:06:57,669 Почне се са јединицом, која се придодаје на прва два бајта кључа. 89 00:06:57,669 --> 00:07:02,947 А то је почетно стање регистра померања. 90 00:07:02,947 --> 00:07:08,256 И другом регистру померања се почетно стање задаје на сличан начин. 91 00:07:08,256 --> 00:07:14,012 Јединица придружена на последња 3 бајта кључа, 92 00:07:14,012 --> 00:07:19,889 што се спушта као почетно стање регистра. Можете да видите да су прва два бајта 93 00:07:19,889 --> 00:07:25,411 - 16 битова, плус почетни, то је укупно 17 битова, а за други регистар померања 94 00:07:25,411 --> 00:07:31,217 24 бита плус један - то је 25 битова. Примећујете да смо искористили свих 5 битова кључа. 95 00:07:31,217 --> 00:07:36,881 Затим се ови регистри померања покрећу у осам циклуса, тако да се њима добија 96 00:07:36,881 --> 00:07:42,333 по 8 излазних битова. Излази пролазе кроз овај сабирач који извршава 97 00:07:42,333 --> 00:07:48,197 сабирање по модулу 256. Дакле ово је блок сабирања по модулу 256. Постоји још једна 98 00:07:48,197 --> 00:07:54,325 техничка ствар која се извршава - додаје се пренесени бит 99 00:07:54,325 --> 00:07:59,723 из претходног блока. Али то није тако важно. 100 00:07:59,723 --> 00:08:04,761 Дакле примећујете да у сваком блоку радимо сабирање по модулу 256 101 00:08:04,761 --> 00:08:09,982 да бисмо занемарили бит преноса, мада се он у ствари додаје као 0 или 1 у збир 102 00:08:09,982 --> 00:08:15,147 у наредном блоку. Тако да се у сваком пролазу добија по један бајт. 103 00:08:15,147 --> 00:08:20,411 Затим се овај бајт наравно користи, у XOR-у са одговарајућим 104 00:08:20,411 --> 00:08:25,167 бајтом филма који се шифрује. Тако да је ово врло једноставна шифра тока, 105 00:08:25,167 --> 00:08:29,986 потребно је врло мало хардвера за имплементирање. Извршава се брзо, чак и на 106 00:08:29,986 --> 00:08:35,830 јефтином хардверу, и шифрује филмове. Шифра се лако пробија 107 00:08:35,830 --> 00:08:41,222 у времену оквирно 2 на 17. Да вам покажем како. 108 00:08:41,222 --> 00:08:45,734 Претпоставимо да пресретнете филм, овде имамо рецимо 109 00:08:45,734 --> 00:08:50,647 шифрован филм који желите да дешифрујете, и будући да је шифрован 110 00:08:50,647 --> 00:08:55,279 немате никакву представу о томе шта је овде. Међутим, само захваљујући томе 111 00:08:55,279 --> 00:08:59,970 што двд шифровање користи MPEG датотеке, ви знате префикс 112 00:08:59,970 --> 00:09:04,250 отвореног текста, на пример можда је ово 20 бајтова. Дакле знамо да 113 00:09:04,250 --> 00:09:08,589 ако извршите ХОR ових двеју ствари, 114 00:09:08,589 --> 00:09:13,523 добијате почетни одељак од PRG-а. Дакле добићете 115 00:09:13,523 --> 00:09:18,472 првих 20 бајтова излаза из CSS-a. 116 00:09:18,472 --> 00:09:23,986 Дакле ево шта ћемо да урадимо. Имамо првих 20 бајтова излаза. 117 00:09:23,986 --> 00:09:31,405 Урадимо сада следеће. Покушамо свих 2 на 17 могућих вредности за први 118 00:09:31,405 --> 00:09:37,088 регистар померања. Дакле 2 на 17 могућих вредности. За сваку вредност, 119 00:09:37,088 --> 00:09:42,622 за сваку од ових 2 на 17 почетних вредности регистра, одрадићемо пролазак 120 00:09:42,622 --> 00:09:47,953 кроз регистар за 20 бајтова. Дакле добијамо 20 бајтова од овог 121 00:09:47,953 --> 00:09:53,284 првог регистра, за сваки од 2 на 17 могућих почетних вредности. 122 00:09:53,284 --> 00:09:58,615 Сетите се да имамо пун излаз из CSS-a. Тако да можемо 123 00:09:58,615 --> 00:10:03,814 да узмемо овај излаз, и да га одузмемо од 20 бајтова 124 00:10:03,814 --> 00:10:08,928 које смо добили из првог регистра, тако да ако је наш погодак за почетно стање првог регистра 125 00:10:08,928 --> 00:10:14,042 исправан, оно што добијемо је првих 20 бајтова излаза 126 00:10:14,042 --> 00:10:19,222 из другог регистра. Зато што је то оно што је по дефиницији излаз из CSS система. 127 00:10:19,222 --> 00:10:24,501 Испоставља се да је посматрајући 20-бајтни низ, врло лако 128 00:10:24,501 --> 00:10:29,763 да се закључи да ли је овај 20-бајтни низ потекао од 25-битног регистра померања или не. 129 00:10:29,763 --> 00:10:33,561 Ако није, онда знамо да је наша претпоставка за 17-битни регистар померања била 130 00:10:33,561 --> 00:10:37,416 погрешна, и тада прелазимо на следећи покушај за регистар, 131 00:10:37,416 --> 00:10:41,904 па на следећи, итд. Све док коначно не погодимо право почетно стање 132 00:10:41,904 --> 00:10:46,937 17-битног регистра померања, а тада заправо добијамо 133 00:10:46,937 --> 00:10:51,969 да 20 бајтова које смо узели као кандидате за излаз 25-битног регистра 134 00:10:51,969 --> 00:10:56,936 јесу заиста могући излаз из 25-битног регистра. А тада, не само да смо 135 00:10:56,936 --> 00:11:02,164 открили право почетно стање за 17-битни регистар, већ смо открили 136 00:11:02,164 --> 00:11:07,523 и право почетно стање за 25-битни регистар. А тада можемо да предвидимо 137 00:11:07,523 --> 00:11:12,796 преостале излазе из CSS-a, и наравно, користећи ово, можемо да дешифрујемо остатак филма. 138 00:11:12,796 --> 00:11:17,565 Можемо да откријемо преостали отворени текст. 139 00:11:17,565 --> 00:11:22,335 О овоме смо и раније говорили. Испричао сам ово мало брже, али надам се 140 00:11:22,335 --> 00:11:27,331 да је било јасно. Такође ћемо да урадимо вежбу за домаћи над овом врстом шифара тока 141 00:11:27,331 --> 00:11:31,444 тако да ћете да стекнете представу како раде ови алгоритми напада. 142 00:11:31,444 --> 00:11:36,018 И требало би још да напоменем да сада постоје многи системи са отвореним софтвером 143 00:11:36,018 --> 00:11:41,453 који заправо користе овај начин рада да декриптују податке шифроване CSS-ом. 144 00:11:41,453 --> 00:11:45,888 Сада када смо видели две слабе шифре, пређимо на боље примере; заправо 145 00:11:45,888 --> 00:11:49,370 бољи псеудо-насумични генератори потичу од такозваног еСтрим пројекта. Ово је пројекат 146 00:11:49,370 --> 00:11:55,556 који је завршен у 2008-ој, и њиме је квалификовано 5 различитих шифара тока, 147 00:11:55,556 --> 00:12:00,207 али ћу овде да вам представим само једну. Пре свега, параметри за 148 00:12:00,207 --> 00:12:04,029 ове шифре тока се мало разликују од оног на шта смо до сада навикли. 149 00:12:04,029 --> 00:12:08,340 Дакле ове шифре тока као и обично имају семе. Али поред тога, имају и такозвану. 150 00:12:08,340 --> 00:12:12,821 привремену вредност, видећемо како се она користи за који тренутак. 151 00:12:12,821 --> 00:12:17,487 Дакле имамо два улаза: семе и привремену вредност, коју ћемо ускоро да објаснимо. 152 00:12:17,487 --> 00:12:21,274 Наравно добија се јако велики излаз, n је 153 00:12:21,274 --> 00:12:26,603 много, много веће него s. Под привременом вредношћу подразумевам вредност која 154 00:12:26,603 --> 00:12:31,218 неће бити поновљена докле год је кључ исти. Ускоро ћу то мало темељније да 155 00:12:31,218 --> 00:12:35,400 објасним. За сада, само је посматрајте као јединствену вредност која се не 156 00:12:35,400 --> 00:12:40,527 понавља све док је вредност кључа иста. Једном када имате псеудо-насумични генератор (ПНГ), 157 00:12:40,527 --> 00:12:45,357 са којим шифрујете, добијате шифру тока као и раније, осим што сада, као што видите, 158 00:12:45,357 --> 00:12:49,955 ПНГ узима као улазне вредности и кључ и привремену вредност. Уз својство 159 00:12:49,955 --> 00:12:56,350 да се пар (k, r), дакле (кључ, привремена вредност), никад, никад не понавља. 160 00:12:56,350 --> 00:13:03,096 Никад се не користи више него једном. Суштина је у томе, да кључ може да се поново употреби, 161 00:13:03,096 --> 00:13:09,710 зато што привремена вредност чини пар јединственим, зато што се k и r заједно 162 00:13:09,710 --> 00:13:16,135 користе само једном. Пар је јединствен. Дакле привремена вредност је згодна досетка 163 00:13:16,135 --> 00:13:21,541 која нас поштеђује тога да прелазимо на нови кључ сваки пут. Конкретан пример 164 00:13:21,541 --> 00:13:26,000 из еСтрима који желим да вам покажем је Салса 20. 165 00:13:26,000 --> 00:13:30,292 То је шифра тока која је развијена како за софтверску тако и за хардверску 166 00:13:30,292 --> 00:13:33,385 примену. Ово је занимљиво. Разумели сте да су неке шифре тока 167 00:13:33,385 --> 00:13:38,763 развијене за софтвер, као RC4. Све што се врши њоме је развијено на такав начин 168 00:13:38,763 --> 00:13:42,689 да софтверску примену чини брзом, док су неке друге шифре тока развијене 169 00:13:42,689 --> 00:13:48,143 за хардвер, на пример CSS, која користи регистар померања нарочито развијен 170 00:13:48,143 --> 00:13:50,963 да хардверску примену учини јефтином. Добра ствар код Салсе је 171 00:13:50,963 --> 00:13:55,008 што је развијена на такав начин, да осим што је лака за примену у хардверу, њена 172 00:13:55,008 --> 00:13:59,747 софтверска примена је такође јако брза. Да вам објасним како Салса ради. Салса 173 00:13:59,747 --> 00:14:05,130 узима 128-битне или 256-битне кључеве. Објаснићу вам 128-битну верзију. 174 00:14:05,130 --> 00:14:11,244 Ово је семе. Затим се узима и привремена вредност, као и раније, која је 175 00:14:11,244 --> 00:14:15,425 у овом случају 64 бита. И ствара се велики излаз. Како ово 176 00:14:15,425 --> 00:14:21,060 заправо ради? Сама функција је одређена на следећи начин. За дате 177 00:14:21,060 --> 00:14:26,378 вредности кључа и привремене вредности, ствара се јако дугачак, псеудонасумични 178 00:14:26,378 --> 00:14:31,222 низ, које год дужине је потребно. А то ћу чини користећи ову функцију коју ћу да означим 179 00:14:31,222 --> 00:14:35,653 са H. Функција Н има три улаза. Кључ, тј. семе k, 180 00:14:35,653 --> 00:14:40,498 привремену вредност r, и бројач који се повећава из корака у корак. Дакле иде 181 00:14:40,498 --> 00:14:45,263 од нуле, до 1, 2, 3, 4, докле год је потребно. Значи, 182 00:14:45,263 --> 00:14:49,956 одређујући вредност за Н за ове k, r и растући бројач, добијамо 183 00:14:49,956 --> 00:14:54,882 низ који је оне дужине коју хоћемо. Све што имам да урадим јесте да опишем како функција 184 00:14:54,882 --> 00:14:59,460 Н ради. Хајде да то и урадимо. Она ради на следећи начин. 185 00:14:59,460 --> 00:15:04,693 Почнемо тако што проширимо стања на прилично велику вредност, 64-бајтну, 186 00:15:04,693 --> 00:15:10,156 на следећи начин. Поставимо константу на почетак, 187 00:15:10,156 --> 00:15:15,552 т0, ово је 4 бајта, 4-бајтна константа, 188 00:15:15,552 --> 00:15:20,611 Салса вам задаје вредност за т0. Затим стављамо k које је 189 00:15:20,611 --> 00:15:25,467 16 бајта. Затим ставимо још једну константу. Поново, ово је 4 бајта. 190 00:15:25,467 --> 00:15:30,795 Као што сам рекао, ова константа има унапред задату вредност. Затим ставимо 191 00:15:30,795 --> 00:15:37,435 привремену вредност, која је 8 бајта. Затим ставимо индекс - то је бројач - 0, 192 00:15:37,435 --> 00:15:43,063 1, 2, 3, 4, који заузима још 8 бајта. Затим ставимо још једну константу, 193 00:15:43,063 --> 00:15:49,056 т2, која заузима још 4 бајта. Затим поново ставимо кључ, ово је додатних 194 00:15:49,056 --> 00:15:54,714 16 бајтова. Најзад стављамо и трећу константу, т3, која је 195 00:15:54,714 --> 00:15:59,948 4-бајтна. Као што само рекао, сабравши ово имамо укупно 64 196 00:15:59,948 --> 00:16:05,249 бајта. Дакле проширили смо кључ, привремену вредност и бројач до 64 197 00:16:05,249 --> 00:16:10,886 бајта. Значи кључ се јавља два пута. А затим применимо 198 00:16:10,886 --> 00:16:16,321 функцију, назваћу је малим словом h. Дакле применимо ову функцију h, 199 00:16:16,321 --> 00:16:21,659 а она је 1-на-1, дакле додељује 64-бајтну вредност за 64-бајтни улаз. 200 00:16:21,659 --> 00:16:26,005 Она је потпуно иверзибилна. Дакле функција h је 201 00:16:26,005 --> 00:16:30,260 иверзибилна функција. То значи да за задати улаз добијамо један излаз, и за задати 202 00:16:30,260 --> 00:16:34,906 излаз добијамо улаз. Развијена је нарочито на такав начин да буде, као прво, лака 203 00:16:34,906 --> 00:16:39,553 за примену у хардверу, а као друго, на х86 је нарочито лака за примену зато што 204 00:16:39,553 --> 00:16:44,199 х86 има SSE2 скуп наредби, који подржава све операције потребне 205 00:16:44,199 --> 00:16:48,622 за ову функцију. Она је врло, врло брза. Захваљујући томе, Салса је јако брза 206 00:16:48,622 --> 00:16:52,764 шифра тока. Ово се затим извршава поново, и поново, и поново. Дакле врши 207 00:16:52,764 --> 00:16:57,744 се ова функција h поново и добије још 64 бајта. И тако даље, 208 00:16:57,744 --> 00:17:05,318 ово се одради 10 пута. Дакле све ово овде се понавља 10 пута, 209 00:17:05,318 --> 00:17:17,961 дакле применити h 10 пута. Само по себи, ово и није тако насумично. 210 00:17:17,961 --> 00:17:22,144 Неће да изгледа насумично зато што, као што сам рекао, H је потпуно иреверзибилна. 211 00:17:22,144 --> 00:17:25,521 Имајући коначни излаз, лако је да се обрне h и да се врати 212 00:17:25,521 --> 00:17:31,831 до изворног улаза и провери да ли улаз има праву грађу. Зато се изврши још једна 213 00:17:31,831 --> 00:17:36,979 ствар, а то је да се изврши XOR над улазом и коначним излазом. У ствари, 214 00:17:36,979 --> 00:17:42,405 ово није XOR већ збир. Врши се сабирање реч по 215 00:17:42,405 --> 00:17:47,762 реч. Имамо 64 бајта, сабирамо реч по реч, 4 бајта 216 00:17:47,762 --> 00:17:52,980 у истом кораку, и коначно добијамо излаз од 64 бајта, и то је то. То је цели 217 00:17:52,980 --> 00:17:57,175 псеудо-насумични генератор. Дакле то је цела функција h. 218 00:17:57,175 --> 00:18:01,758 Као што сам објаснио, цела ова конструкција овде јесте функција Н. Она се рачуна 219 00:18:01,758 --> 00:18:06,009 тако што се бројач i повећава од 0 на 1, 2, 3 итд. 220 00:18:06,009 --> 00:18:10,408 То вам даје псеудо-насумични низ који је оне дужине која вам треба. 221 00:18:10,408 --> 00:18:15,325 Не постоје значајни напади на ово. Безбедност овог система је 222 00:18:15,325 --> 00:18:20,371 јако близу 2 на 128. Видећемо шта то значи нешто касније. 223 00:18:20,371 --> 00:18:25,417 То је јако брза шифра тока, и хардверски и софтверски. Колико 224 00:18:25,417 --> 00:18:30,431 можемо да видимо, изгледа непредвидиво као што је и захтев за шифру тока. 225 00:18:30,431 --> 00:18:34,797 Треба да напоменем да пројекат еСтрим има 5 шифара тока попут 226 00:18:34,797 --> 00:18:39,395 ове. Одабрао сам Салсу зато што ми делује најелегантније. Али могу да вам дам 227 00:18:39,395 --> 00:18:44,053 неке вредности перформанси. Овде можете да видите вредности перформанси за 228 00:18:44,053 --> 00:18:48,768 машину типа х86, на 2.2 гигахерца. И можете да видите да је RC4 заправо најспорији. 229 00:18:48,768 --> 00:18:53,017 Зато што он и не користи заправо предности хардвера, 230 00:18:53,017 --> 00:18:57,475 јер обавља само бајтне операције. Тако да има много изгубљених циклуса. 231 00:18:57,475 --> 00:19:01,182 Али кандидати еСтрима, како Салса тако и овај 232 00:19:01,182 --> 00:19:05,202 други кандидат, Сосеманук (треба рећи да су ово еСтрим финалисти, 233 00:19:05,202 --> 00:19:09,588 шифре тока које је одобрио еСтрим пројекат), као што видите 234 00:19:09,588 --> 00:19:13,712 постигли су значајну стопу. Ово је 643 мегабајта у секунди 235 00:19:13,712 --> 00:19:18,150 на овој архитектури, више него довољно за један филм, ово су у ствари прилично упечатљиве 236 00:19:18,150 --> 00:19:22,432 стопе. Дакле, сада сте видели примере двеју старих шифара тока које не би требало 237 00:19:22,432 --> 00:19:26,661 да се користе, као и нападе на ове шифре. Видели сте како изгледају савремене шифре тока 238 00:19:26,661 --> 00:19:30,480 са привременом вредношћу. И видите вредности перформански за ове 239 00:19:30,480 --> 00:19:34,546 савремене шифре тока, тако да ако вам буде била потребна шифра тока, можете да користите неку 240 00:19:34,546 --> 00:19:37,991 од финалиста еСтрима, на пример Салсу.